var filtersArray = null;

Drupal.fl_data_engine_grid =
{
	'oSettings'    : {},
	'jPickerStart' : null,
	'jPickerEnd'   : null,
	
	
	'Init': function (mContext)
	{
		this.oSettings = Drupal.settings.fl_data_engine_grid ||
		{
			'theme_path': 'sites/visitstpeteclearwater.com/themes/visitstpeteclearwater',
			'filters'   : [],
			'start_date': 0,//Math.round((new Date()).getTime() / 1000),
			'end_date'  : 0//Math.round((new Date()).getTime() / 1000)
		};
		
		filtersArray = this.oSettings.filters;
		
		var dStart = (iStart = this.oSettings.start_date) ? new Date(iStart * 1000) : false;
		var dEnd = (iEnd = this.oSettings.end_date) ? new Date(iEnd * 1000) : false;
		var aFilters = (this.GetFilters() || '').split('|');
		var sThemePath = this.oSettings.theme_path;
		
		if (aFilters.length)
		{
			for (i in aFilters) { $('#' + aFilters[i]).attr('checked', true); }
		}
		
		this.jPickerStart = $('#start_datepicker').datepicker
		({
			dateFormat       : 'MM dd, yy',
			altField         : '#db-start-date',
			altFormat        : 'yy-mm-dd',
			showOn           : 'button',
			buttonText       : 'Choose a date',
			buttonImage      : '/' + sThemePath + '/images/datepicker.gif',
			buttonImageOnly  : true,
			hideIfNoPrevNext : true,
			minDate          : 0,
			//defaultDate      : dStart,
			onSelect         : function (sDate, oInstance)
			{
				var dStart  = new Date(sDate);
				var iStart  = dStart.getTime();
				var dEnd    = Drupal.fl_data_engine_grid.jPickerEnd.datepicker('getDate');
				var iEnd    = dEnd.getTime();
				var bVirgin = $('#end_datepicker').val() == '(end)';
				
				(iEnd < iStart || bVirgin) && Drupal.fl_data_engine_grid.jPickerEnd.datepicker('setDate', dStart);
			}
		});
		
		if (dStart) { this.jPickerStart.datepicker('setDate', dStart); }
		else { this.jPickerStart.val('(start)'); }
		
		this.jPickerEnd = $('#end_datepicker').datepicker
		({
			dateFormat       : 'MM dd, yy',
			altField         : '#db-end-date',
			altFormat        : 'yy-mm-dd',
			showOn           : 'button',
			buttonText       : 'Choose a date',
			buttonImage      : '/' + sThemePath + '/images/datepicker.gif',
			buttonImageOnly  : true,
			hideIfNoPrevNext : true,
			minDate          : 0,
			//defaultDate      : dEnd,
			onSelect         : function (sDate, oInstance)
			{
				var dStart = Drupal.fl_data_engine_grid.jPickerStart.datepicker('getDate');
				var iStart = dStart.getTime();
				var dEnd = new Date(sDate);
				var iEnd = dEnd.getTime();
				var bVirgin = $('#start_datepicker').val() == '(start)';
				
				(iStart > iEnd || bVirgin) && Drupal.fl_data_engine_grid.jPickerStart.datepicker('setDate', dEnd);
			}
		});
		
		if (dEnd) { this.jPickerEnd.datepicker('setDate', dEnd); }
		else { this.jPickerEnd.val('(end)'); }
		
		//$("input[type=checkbox]").prettyCheckboxes();
		
		$('.dropdown-filters .checkall').each(function ()
		{
			$(this).click(function ()
			{
				$(this).parents('fieldset').find('input[type=checkbox]').attr('checked', $(this).is(':checked'));
			});
		});
		
		$('.dropdown-filter-legend').bind('click', function (e) { return Drupal.fl_data_engine_grid.mmgShowhidden_filter(this); });
		$('div.dropdown-filters').bind('mouseleave', function(e) { return Drupal.fl_data_engine_grid.mmgClosehidden_filter(this); });
		
		$('#submit-listings .submit').bind('click', function() { return Drupal.fl_data_engine_grid.pageGridResultsAjax(''); });
		$('#submit-deals .submit').bind('click', function() { return Drupal.fl_data_engine_grid.pageDealResultsAjax(''); });
		$('#submit-events .submit').bind('click', function() { return Drupal.fl_data_engine_grid.pageEventResultsAjax(''); });
	
		//pagination link event handler
		//$('.node-type-fl-data-engine-grid a.grid-pagination').bind('click', function() { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); });
		//$('.node-type-fl-data-engine-deals-grid .grid-pagination').bind('click', function() { return Drupal.fl_data_engine_grid.pageDealResultsAjax(this); });
		//$('.node-type-fl-data-engine-events-grid .grid-pagination').bind('click', function() { return Drupal.fl_data_engine_grid.pageEventResultsAjax(this); });
		
		$('.sort-gridresults-link').bind('click', function () { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); });
		$('.next-gridresults-link, .prev-gridresults-link, .size-gridresults-link').bind('click', function () { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); });
		$('.next-grid-deal-results-link, .prev-grid-deal-results-link, .size-grid-deal-results-link').bind('click', function () { return Drupal.fl_data_engine_grid.pageDealResultsAjax(this); });
		$('.next-grid-event-results-link, .prev-grid-event-results-link, .size-grid-event-results-link').bind('click', function () { return Drupal.fl_data_engine_grid.pageEventResultsAjax(this); });
		//$('.prev-gridresults-link').bind('click', function () { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); }); });
		//$('.prev-grid-deal-results-link').bind('click', function (){ return Drupal.fl_data_engine_grid.pageDealResultsAjax(this);	});
		//$('.prev-grid-event-results-link').bind('click', function (){ return Drupal.fl_data_engine_grid.pageEventResultsAjax(this); });
		$('#grid-compare-button').bind('click', function () { return Drupal.fl_data_engine_grid.GridCompareAjax(); });
		$('.deals-grid-item a.morelink').bind('click', function() { trackDealClick(); });
		
		if ($('#submit-listings').length) { return this.pageGridResultsAjax(''); }
		if ($('#submit-deals').length) { return this.pageDealResultsAjax(''); }
		if ($('#submit-events').length) { return this.pageEventResultsAjax(''); }
	},
	
	'LeadingZeros': function (iVal, iPlaces)
	{
		var sVal = iVal.toString();
		
		for (iPlace = sVal.length; iPlace < iPlaces; iPlace++) { sVal = '0' + sVal; }
		
		return sVal;
	},
	
	'DateFormat': function (dValue)
	{
		var aMonths =
		[
			'January', 'February', 'March', 'April',
			'May', 'June', 'July', 'August',
			'September', 'October', 'November', 'December'
		];
		
		return aMonths[dValue.getMonth()] + ' ' + this.LeadingZeros(dValue.getDate(), 2) + ', ' + dValue.getFullYear();
	},
	
	'ParseQueryString': function (eLink)
	{
		var aUrl = eLink.href.split('?');
		var aQueriesA = aUrl[1].split('&');
		var aQueriesB = Array();
		
		for (iIndex in aQueriesA)
		{
			aTemp = aQueriesA[iIndex].split('=');
			aQueriesB[aTemp[0]] = aTemp[1];
		}
		
		return aQueriesB;
	},
	
	'SetFilters': function (sFilters)
	{
		$.cookie('fl_data_engine_current_filters', sFilters);
		$.cookie('fl_data_engine_current_filters_page', document.location)
	},
	
	'GetFilters': function ()
	{
		var sFilters = $.cookie('fl_data_engine_current_filters');
	
		if
		(
			$.cookie('fl_data_engine_current_filters_page') != document.location &&
			!$('BODY.section-listings .listing-moreinfo').length
		){	
			$.cookie('fl_data_engine_current_filters', null);
			$.cookie('fl_data_engine_current_filters_page', null);
			return '';
		}
		
		return sFilters;
	},
	
	'GridCompareAjax': function ()
	{
		var toCompare = Array();
		var sSupertagGroupID = $('#supertag_group').val();
		var sSupertag_compare_filter_1 = $('#supertag_compare_filter_1').val();
		var sSupertag_compare_filter_2 = $('#supertag_compare_filter_2').val();
		var sSupertag_compare_filters = sSupertag_compare_filter_1 + '|' + sSupertag_compare_filter_2;
		var allFilters = '';
		
		$('.grid-item').each(function()
		{
			if ($(this).find('.grid-item-compare-checkbox').is(':checked'))
			{
				toCompare.push($(this).find('.grid-item-list-id').val());
			}
		});
		
		if (toCompare.length > 1)
		{
			$('#listings-grid-results').html('');
			$('#listings-grid-results').addClass('loading_bg');
			var sUrl = '/listings/compare/' + toCompare + '/' + sSupertag_compare_filters;
			
			$.ajax
			({
				type     : 'get',
				url      : sUrl,
				dataType : 'script',
				success  : function(msg)
				{	
					$('#listings-grid-results').fadeOut(function()
					{
						$('#listings-grid-results').removeClass('loading_bg');
						$('.is-filter input:checked').each(function()
						{ 
							allFilters += '<div class="selected-filter-display">' + this.oSettings.filters[$(this).val()] + '</div>';
						});
						$('#listings-grid-results').removeClass('loading_bg');
						$('#listings-grid-results').html(msg);
						$('#grid-compare-results-inner .back-to-results').click(function() { return Drupal.fl_data_engine_grid.pageGridResultsAjax(''); });
					}
					).fadeIn();
				}
			});	
		} 
		else { alert('please choose at least 2 properties to compare'); }
		
		return false;
	},
	
	'pageGridResultsAjax': function (link)
	{
		$('#listings-grid-results').addClass('loading_bg');
		$('#listings-grid-results').html('');
		
		var iStart = 0;
		var nLimit = 12;
		var sSortOrder = '';
		
		if (tmpLimit = $('input#size').val()) { nLimit = tmpLimit; }
		
		if (link)
		{
			aQueries = this.ParseQueryString(link)
			iStart = parseInt(aQueries['start']);
			if (!iStart) { iStart = 0; }
			nLimit = aQueries['size'];
			sSortOrder = aQueries['sort'];
		}
		
		var aFilters = Array();
		$('.is-filter input:checked').each(function () { aFilters.push($(this).val()); });
		
		var sFilters = aFilters.join('|');
		var sSupertagGroup = $('#supertag_group').val();
		var sNodeNid = $('#node_nid').val();
		var sShowCompare = $('#show_compare').val();
		
		if (!sFilters.length) { sFilters = '*'; }
		
		/* get dates for jack rabbit search */
		var sDateRange = '';
		
		try
		{
			var sStartDate = $('#db-start-date').val();
			var sEndDate = $('#db-end-date').val();
			var isStartDate = false;
			var isEndDate = false;
			
			if (this.jPickerStart.val() != '(start)' && this.jPickerStart.val()) { isStartDate = true; }
			if (this.jPickerEnd.val() != '(end)' && this.jPickerEnd.val()) { isEndDate = true; }
			if ((sEndDate) || (isEndDate))
			{
				if (!sEndDate) { sEndDate = sStartDate; }
				else if (!sStartDate) { sStartDate = sEndDate; }
				
				var sDateRange = sStartDate + '|' + sEndDate;
			}
			if (!isEndDate && !isStartDate) { sDateRange = ''; }
		}
		catch (err) {}
	
		var sOnlyJackrabbit = '';
		
		if ($('#only_jackrabbit').attr('checked') || sDateRange)
		{
			sOnlyJackrabbit = '1';
			
			if (!sDateRange)
			{
				var currentTime = new Date();
				var currentMonth = currentTime.getMonth() + 1;
				var currentDay = currentTime.getDate();
				var currentYear = currentTime.getFullYear();
	
				var endTime = new Date();
				endTime.setDate(endTime.getDate() + 1);
				var endMonth = endTime.getMonth() + 1;
				var endDay = endTime.getDate();
				var endYear = endTime.getFullYear();
				
				var sDateRange = currentYear + '-' + currentMonth + '-' + currentDay + '|' + endYear + '-' + endMonth + '-' + endDay;
			}
		}	
		else { sOnlyJackrabbit = 'NULL'; }
		
		this.SetFilters(sFilters);
		
		if (!sDateRange) { sDateRange = 'NULL'; }
		
		var sRequest = '/fl_data_engine_grid/acc/search/' + sFilters + '/' + sSupertagGroup + '/html/' + iStart + '/' + nLimit + '/' + sNodeNid + '/' + sShowCompare + '/' + sOnlyJackrabbit + '/' + sDateRange + '/' + sSortOrder;
	
		if ((iStart <= 1) && (Drupal.settings.hotel_search_track == 'yes'))
		{		
			var sSiteCatStartDate = sStartDate;
			var sSiteCatEndDate = sEndDate;
			trackHotelGridSearch('hotelsSearch', sFilters, sSiteCatStartDate, sSiteCatEndDate);
		}
		
		return this.GridResultsAjaxFilter(sRequest);
	},
	
	
	'mmgClosehidden_filter': function (mLabel)
	{
		$(mLabel).hide('slow');
		$(mLabel).removeClass('opened');
	},
	
	'mmgShowhidden_filter': function (mLabel)
	{
		var jNext = $(mLabel).next();
		
		$('.dropdown-filters').removeClass('opened');
		jNext.addClass('opened');
		$('.dropdown-filters:not(.opened)').hide('slow');
		jNext.toggle('slow');
		
		return false;
	},
	
	'pageDealResultsAjax': function (link)
	{
		$('#listings-grid-results').html('');
		$('#listings-grid-results').addClass('loading_bg');
		
		var iStart = 0;
		var nLimit = 12;
		
		if (tmpLimit = $('input#size').val()) { nLimit = tmpLimit; }
		
		if (link)
		{
			aQueries = this.ParseQueryString(link)
			iStart = parseInt(aQueries['start']);
			nLimit = aQueries['size'];
		}
		
		var aFilters = Array();
		$('.is-filter input:checked').each(function() { aFilters.push($(this).val()); });
		
		var sStartDate = $('#db-start-date').val();
		var sEndDate = $('#db-end-date').val();
		
		if (sStartDate)
		{
			if (!sEndDate) { sEndDate = sStartDate; }
			sStartDate = 'sd' + sStartDate;
		}
		
		if (sEndDate)
		{
			sEndDate = 'ed' + sEndDate;
			
			if (!sStartDate) { sStartDate = 'sd' + sEndDate; }
		}
		
		aFilters.push(sStartDate);
		aFilters.push(sEndDate);
		
		var sFilters = aFilters.join('|');
		var sSupertagGroup = $('#supertag_group').val();
		var sNodeNid = $('#node_nid').val();
		
		if (!sFilters.length) { sFilters = '*'; }
		
		this.SetFilters(sFilters);
		
		var sRequest = '/fl_data_engine_grid/deal/search/' + sFilters + '/' + sSupertagGroup + '/html/' + iStart + '/' + nLimit + '/' + sNodeNid;
		
		return this.GridResultsAjaxFilter(sRequest);
	},
	
	'pageEventResultsAjax': function (link)
	{
		$('#listings-grid-results').html('');
		$('#listings-grid-results').addClass('loading_bg');
		
		var iStart = 0;
		var nLimit = 12;
		
		if (tmpLimit = $('input#size').val()) { nLimit = tmpLimit; }
		
		if (link)
		{
			aQueries = this.ParseQueryString(link)
			iStart = parseInt(aQueries['start']);
			nLimit = aQueries['size'];
		}
		
		var aFilters = Array();
		$('.is-filter input:checked').each(function() { aFilters.push($(this).val()); });
		
		var sStartDate = $('#db-start-date').val();
		var sEndDate = $('#db-end-date').val();
		
		if (sStartDate)
		{
			if(!sEndDate)
			{
				sEndDate = sStartDate;
				var sSiteCatEndDate = sStartDate;
			}
			sStartDate = 'sd' + sStartDate;
			var sSiteCatStartDate = sStartDate;
		}
		
		if (sEndDate)
		{
			sEndDate = 'ed' + sEndDate;
			var sSiteCatEndDate = sEndDate;
			
			if (!sStartDate)
			{
				sStartDate = 'sd' + sEndDate;
				var sSiteCatStartDate = sEndDate;
			}
		}	
		
		aFilters.push(sStartDate);
		aFilters.push(sEndDate);
		
		var sFilters = aFilters.join('|');
		var sSupertagGroup = $('#supertag_group').val();
		var sNodeNid = $('#node_nid').val();
		
		if (!sFilters.length) { sFilters = '*'; }
		
		this.SetFilters(sFilters);
		
		var sRequest = '/fl_data_engine_grid/evt/search/' + sFilters + '/' + sSupertagGroup + '/html/' + iStart + '/' + nLimit + '/' + sNodeNid;
		
		if (iStart <= 1) { trackEventGridSearch('eventsSearch', sFilters, sSiteCatStartDate, sSiteCatEndDate); }
		
		return this.GridResultsAjaxFilter(sRequest);
	},
	
	'GridResultsAjaxFilter': function (sRequest)
	{
		$.ajax
		({
			type     : 'GET',
			url      : sRequest,
			dataType : 'html',
			success  : function(msg)
			{
				var allFilters = '';
	
				$('#listings-grid-results').fadeOut(function()
				{
					$('#listings-grid-results').removeClass('loading_bg');
					
					$('.is-filter input:checked').each(function()
					{ 
						allFilters += '<div class="selected-filter-display">' + Drupal.fl_data_engine_grid.oSettings.filters[$(this).val()] + '</div>';
					});
					
					if (allFilters.length)
					{
						$('#curently-selected').html('<div class="selected-filter-display-title">You\'ve selected:</div> ' + allFilters);
						$('#currently-selected-outer').show();
					}
					else
					{
						$('#curently-selected').html('');
						$('#currently-selected-outer').hide();
					}
					
					$('#listings-grid-results').html(msg);
					
					/* Reset jquery click functions */
					$('.sort-options-container .dropdown-filter-legend').click(function () { return Drupal.fl_data_engine_grid.mmgShowhidden_filter(this); });
	
					$('.node-type-fl-data-engine-grids a.grid-pagination').click(function() { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); });
					$('.node-type-fl-data-engine-deals-grid .grid-pagination').click(function() { return Drupal.fl_data_engine_grid.pageDealResultsAjax(this); });
					$('.node-type-fl-data-engine-events-grid .grid-pagination').click(function() { return Drupal.fl_data_engine_grid.pageEventResultsAjax(this); });
					$('.sort-gridresults-link').click(function() { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this);	});
	
					$('.next-gridresults-link, .prev-gridresults-link, .size-gridresults-link ').click(function () { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); });
					//$('.prev-gridresults-link').click(function() { return Drupal.fl_data_engine_grid.pageGridResultsAjax(this); });
					$('.next-grid-deal-results-link, .prev-grid-deal-results-link, .size-grid-deal-results-link').click(function () { return Drupal.fl_data_engine_grid.pageDealResultsAjax(this); });
					//$('.prev-grid-deal-results-link').click(function(){ return Drupal.fl_data_engine_grid.pageDealResultsAjax(this); });
					$('.next-grid-event-results-link,.prev-grid-event-results-link, .size-grid-event-results-link').click(function () { return Drupal.fl_data_engine_grid.pageEventResultsAjax(this); });
					$('#grid-compare-button').click(function () { return Drupal.fl_data_engine_grid.GridCompareAjax(); });
					$('.deals-grid-item a.morelink').bind('click', function () { trackDealClick(); });
					Drupal.behaviors.initThickbox();
				}
				).fadeIn();
			}
		});
		
		return false;
	}
};

Drupal.behaviors.fl_data_engine_grid_init = function (mContext) { Drupal.fl_data_engine_grid.Init(mContext); }

