/*******************************************************************************
* +--------------------------[ File Revision Info ]--------------------------+ *
* | $Revision::                                                           $: | *
* | $Date::                                                               $: | *
* | $Author::                                                             $: | *
* +--------------------------------------------------------------------------+ *
* | $Id::                                                                 $: | *
* +--------------------------------------------------------------------------+ *
*******************************************************************************/
var debugMap = false;

/************************* JQUERY ONLOAD ACTIONS *****************************/
var $jQ = jQuery.noConflict();

jQuery(document).ready(function() 
{
	var bindPageFilterBehaviors = function(scope) 
	{		
		// PAGE FILTER CLICK EVENT TO OPEN SPECIFIC FILTER FORM
		$jQ('.pageFilter').click(function() {

			// TOGGLES THE SPECIFIC FILTER DETAIL
			$filterType = $jQ(this).attr('id').substr('pageFilter'.length);
	
			if ($filterType == 'None')
			{
				// CLOSE POPUP IF IT HAPPENS TO BE OPEN
				$jQ('#pageFilterPopup').hide();	
				
				// 
				clearFilters();
				
				clearPageFilters();
				
				// REFRESH
				updatePageFilters();
			}
			else
			{
				// TOGGLE THIS FILTER
				if($jQ('#filterContent'+$filterType).css('display') == 'block')
				{
					$jQ('#filterContent'+$filterType).hide();
					$jQ('#pageFilterPopup').hide();	
				}
				else
				{
					$jQ('#filterContent'+$filterType).show();
					$jQ('#pageFilterPopup').show();	
				}
			}
		});

		// 
		$jQ('#allFilterSubmit').click(
			function()
			{
				$jQ('#pageFilterPopup').hide();
				$jQ('#filterContentSearch').hide();

				$jQ('#search').val($jQ('#searchField').val());
				$jQ('#state').val($jQ('#stateField').val());
				$jQ('#zip').val($jQ('#zipField').val());
				$jQ('#radius').val($jQ('#radiusField').val());
				$jQ('#type').val($jQ('#entityTypeField').val());
				$jQ('#sort').val($jQ('#entitySortByField').val());
				$jQ('#issues').val(getFilteredIssues());

				// REFRESH
				return updatePageFilters();
			}
		);
		
		// 
		$jQ('#allFilterCancel').click(
			function()
			{
				$jQ('#pageFilterPopup').hide();
				$jQ('#filterContentForm').hide();	
				
				clearFilters();
			}
		);
		
		// 
		$jQ('#allFilterReset').click(
			function()
			{
				clearFilters();
			}
		);
		
		// ISSUE TAG CLICK
		$jQ('.issueFilterInput').click(
			function()
			{
				if ($jQ(this).hasClass("filterActive"))
				{
					$jQ(this).removeClass("filterActive");
				}
				else
				{
					$jQ(this).addClass("filterActive");					
				}
			}
		);		
	};
	
	// STATE MAP EVENTS
	$jQ('.mapPiece').hover(
		function(){
			// display
			var $state = $jQ(this).attr('id').substr("map".length);

			$jQ('#map' + $state + '-img').css('display', 'block');
		},
		function(){
			// hide
			var $state = $jQ(this).attr('id').substr("map".length);

			$jQ('#map' + $state + '-img').css('display', 'none');
		}
	);
	
	$jQ('.mapPiece').click(
		function()
		{
			$state = $jQ(this).attr('id').substr("map".length);
		
			// CLEAR ALL PREVIOUS STATE FILTERS
			$jQ('.stateFilterInput').removeClass('filterActive');

			// ADD STATE FILTER FOR THIS CLICK
			$jQ('#stateFilterInput' + $state).addClass('filterActive');

			// HIDE STATE FIELD
			$jQ('#filterContentState').hide();
			$jQ('#pageFilterPopup').hide();

			// REFRESH
			updatePageFilters();
		}
	);

	// Now bind the Events
	bindPageFilterBehaviors();
});

// REMOVES ANY FILTERS
function clearFilters()
{	
	// CLEAR ISSUES
	$jQ('.issueFilterInput').removeClass('filterActive');

	// CLEAR STATES
	$jQ('#stateField').val('');

	// CLEAR SEARCH
	$jQ('#searchField').val('');
	
	// CLEAR ZIP
	$jQ('#zipField').val('');
	$jQ('#radiusField').val('');
	
	// CLEAR TYPE
	$jQ('.entityTypeField').val('');
	
	// CLEAR SORT
	$jQ('#entityTypeField').val('');
}

// REMOVES ANY FILTERS
function clearPageFilters()
{		
	// CLEAR START
	$jQ('#start').val('0');

	// CLEAR ALPHA
	$jQ('#alpha').val('');
	
	// CLEAR SEARCH
	$jQ('#search').val('');
	
	// CLEAR ZIP
	$jQ('#zip').val('');
	$jQ('#radius').val('');
	
	// CLEAR STATES
	$jQ('#state').val('');
	
	// CLEAR ISSUES
	$jQ('#issues').val('');
	
	// CLEAR TAGS
	$jQ('#tags').val('');
	
	// CLEAR TYPE
	$jQ('#type').val('');
	
	// CLEAR TYPE
	$jQ('#sort').val('');
}

// 
function updatePageFilters()
{
	$jQ('#start').val('0');	

	$jQ('#pageContainerForm').submit();
}

// GET FILTERS FORMATTED AS PARAM LIST FOR AJAX CALL
function getPageFilterParams($pageFilterType)
{	
	var $paramList = '';
	var $itemCount = 0;

	// ALPHA FILTERS
	if ($jQ('.alphaFilter.filterActive') && $pageFilterType != 'alpha')
	{
		var $alphaFilter = '';

		$jQ('.alphaFilter.filterActive').each(
			function ()
			{
				if ($itemCount++ > 0) $alphaFilter += ',';
				$alphaFilter += $jQ(this).attr('id').substr('alphaFilterInput'.length);
			}
		);
		if ($alphaFilter != '')
		{
			$paramList += '&alpha=' + $alphaFilter;
		}
	}
	
	// SEARCH FILTERS
	if ($jQ('#searchFilterInput').val() && $pageFilterType != 'search')
	{
		var $searchFilter = $jQ('#searchFilterInput').val();
		$paramList += '&search=' + $searchFilter;
	}

	// STATE FILTERS	
	if ($jQ('.stateFilterInput.filterActive') && $pageFilterType != 'state')
	{
		$paramList += '&state=' + getFilteredState();
	}
	
	// ZIP FILTERS
	if ($jQ('#filterZipInputZip').val() && $pageFilterType != 'zip')
	{		
		$zipFilter = $jQ('#filterZipInputZip').val();
		$zipRadiusFilter = $jQ('#filterZipInputZipRadius').val();
		$paramList += '&zip=' + $zipFilter + "&radius=" + $zipRadiusFilter;
	}
	
	// ISSUE FILTERS
	if ($jQ('.issueFilterInput.filterActive') && $pageFilterType != 'issueID')
	{
		$paramList += '&issueID=' + getFilteredIssues();
	}
	
	// DOMAIN FILTERS
	if ($jQ('#currentDomainID').val() && $pageFilterType != 'domainID')
	{
		$paramList += '&domainID=' + $jQ('#currentDomainID').val();
	}
	
	// SORT FILTERS
	if ($jQ('.filterContentSortBtn.filterSelected').attr('id') && $pageFilterType != 'sort')
	{
		$paramList += '&sort=' + $jQ('.filterContentSortBtn.filterSelected').attr('id').substr('filterContentSort'.length);
	}
	
	// TYPE FILTERS
	if ($jQ('.filterContentTypeBtn.filterSelected').attr('id') && $pageFilterType != 'type')
	{
		$paramList += '&type=' + $jQ('.filterContentTypeBtn.filterSelected').attr('id').substr('filterContentType'.length);
	}

	// PAGE TAGS FILTERS
	if ($jQ('#pageTags').val() && $pageFilterType != 'tags')
	{
		$paramList += '&tags=' + $jQ('#pageTags').val();
	}
	
	return $paramList;
}

// 
function getFilteredIssues()
{
	$itemCount = 0;
	var $issueFilter = '';
	
	$jQ('.issueFilterInput.filterActive').each(
		function()
		{
			if ($itemCount++ > 0) $issueFilter += ',';
			$issueFilter += $jQ(this).attr('id').substr('issueFilterInput'.length);
		}
	);
	
	return $issueFilter;
}

function getFilteredState()
{
	$itemCount = 0;
	var $stateFilter = '';

	$jQ('.stateFilterInput.filterActive').each(
		function()
		{
			if ($itemCount++ > 0) $stateFilter += ',';
			$stateFilter += $jQ(this).attr('id').substr('stateFilterInput'.length);
		}
	);
	
	return $stateFilter;
}

function getFilteredSort()
{
	$itemCount = 0;
	var $sortFilter = '';
	
	$jQ('.filterSelected').each(
		function()
		{
			if ($itemCount++ > 0) $sortFilter += ',';
			$sortFilter += $jQ(this).attr('id').substr('filterContentSort'.length);
		}
	);
	
	return $sortFilter;
}

function getFilteredType()
{
	$itemCount = 0;
	var $typeFilter = '';

	$jQ('.filterSelected').each(
		function()
		{
			if ($itemCount++ > 0) $typeFilter += ',';
			$typeFilter += $jQ(this).attr('id').substr('filterContentType'.length);
		}
	);
	return $typeFilter;	
}