var searchParams = new Object();
var resultsPerPage = 10;
var retryCount = 0;
var retryMax = 3;

$(function() {
	loadFormVars();
	getCookies();		
	//updateAllFilters();

	$('#carFilter #makemodel .container .item a').live('click', function(){
		var kv = $(this).attr('id').split("_");
		setKeyValue(kv[0], kv[1], $(this).text());
		updateMakeModel();
		return false;
	});

	$('#carFilter #makemodel .option').live('click', function(){
		var kv = $(this).attr('id').split("_");
		setKeyValue(kv[0], '');
		if(kv[0] == 'make')
		{
			setKeyValue('model', '');
			setKeyValue('badge', '');
		}
		if(kv[0] == 'model'){setKeyValue('badge', '')};
		updateMakeModel();
		return false;
	});
	
	$("#cities").autocomplete(cities, {
			matchContains: true,
			minChars: 0,
			formatItem: function(row, i, max) {
				return row.c + " " + row.p;
			},
			formatResult: function(row) {
				return row.c + " " + row.s;
			}
	});
	$("#cities").result(function(event, row) {
		setKeyValue('postcode', row.p);
		if((row.c).length > 12)
		{
			setKeyValue('location', row.c);
		}
		else
		{
			setKeyValue('location', row.c + ' ' + row.s + ' ' + row.p);
		}
		$('#location .container #cities').addClass('hidden');
		$('#location .container .tip').addClass('hidden');
		updateSelected('location', 'location');
		if($('#distance').val())
		{
			$('#distance').addClass('selected');
			$('#location .container .resetSelect').removeClass('hidden');
			updateAllFilters();
		}
	});
	$('#carFilter #location .option').live('click', function(){
		$('#location .selectedOptions .option').remove();
		setKeyValue('location', '');
		setKeyValue('postcode', '');
		$('#location .container #cities').val('');
		$('#distance').removeClass('selected');
		$('#location .container #cities').removeClass('hidden');
		$('#location .container .tip').removeClass('hidden');
		updateAllFilters();
		return false;
	});
	$("#distance").live('change', function() {
		setKeyValue('distance', $(this).val());
		if($(this).val()&&$('#location .container #cities').val())
		{
			$(this).addClass('selected');
			$('#location .container .resetSelect').removeClass('hidden');
		}
		else
		{
			$(this).removeClass('selected');
			$('#location .container .resetSelect').addClass('hidden');
		}
		if($('#location .container #cities').val())
		{
			updateAllFilters();
		}
	});
	$('#location .container .resetSelect').live('click', function(){
			resetSelect('#location .container .resetSelect', true);
	});

	$('#carFilter #bodystyle .container .item a').live('click', function(){
		var kv = $(this).attr('id').split("_");
		setKeyValue(kv[0], kv[1], $(this).text());
		$('#bodystyle .selectedOptions .option').remove();
		$('#bodystyle .container').removeClass('visible');
		updateSelected('bodystyle', 'bodyType');
		updateAllFilters();
		return false;
	});
	$('#carFilter #bodystyle .option').live('click', function(){
		$('#bodystyle .selectedOptions .option').remove();
		setKeyValue('bodyType', '');
		$('#bodystyle .container').addClass('visible');
		updateAllFilters();
		return false;
	});
	$('#carFilter #trans .container .item a').live('click', function(){
		var kv = $(this).attr('id').split("_");
		setKeyValue(kv[0], kv[1], $(this).text());
		$('#trans .selectedOptions .option').remove();
		$('#trans .container').removeClass('visible');
		updateSelected('trans', 'Transmission');
		updateAllFilters();
		return false;
	});
	$('#carFilter #trans .option').live('click', function(){
		$('#trans .selectedOptions .option').remove();
		setKeyValue('Transmission', '');
		$('#trans .container').addClass('visible');
		updateAllFilters();
		return false;
	});

	$('form.minmax select').change(function() {
		setSelect($(this), '', true);
	});	
	

	$('form.minmax .resetSelect').live('click', function(){
			resetSelect($(this), true);
	});




	$("#makemodel .viewAll a").live('click', function() {
		$("#carFilter #makemodel .lesspopular").fadeIn();
		$("#makemodel .viewAll").fadeOut('fast');
	});


	
});

function updateAllFilters()
{
	updateFilter('makemodel');
	if(searchParams['bodyType'])
	{
		$('#bodystyle .container .item').remove();
	}
	else
	{
		updateFilter('bodystyle');
	}
	if(searchParams['Transmission'])
	{
		$('#trans .container .item').remove();
	}
	else
	{
		updateFilter('trans');
	}
	initPagination('Top');
	
//	initPagination('Bottom');
}

function initPagination(loc)
{
	$("#pagination" + loc).css('display', 'none');
	$('#resultCount, #resultCount2').load('/cms/cars/resultCount.ajax', searchParams, function(){
		if($('#paginationCount').html() > resultsPerPage)
		{
			$("#pagination" + loc + " #pagination").pagination($('#paginationCount').html(), {
		    items_per_page:resultsPerPage,
		    num_display_entries:8,
	   		num_edge_entries:2,
				prev_text:"Prev",
				location: loc,
		 	  callback: goToPage
			});
		}
		else
		{
			goToPage(0);
		}
		$('#paginationTop #pagination').clone(true).appendTo('#paginationBottom');
	});

}

function doSearch(params, showPagination, vehicleID)
{
	$('#centercol #data #searchresultrows').remove();
	$('#centercol #data').addClass('largeloading');

	$('#centercol #data').load('/cms/cars/searchResults.ajax', params, function(){
		$(this).fadeIn('fast');
		$('html, body').animate({scrollTop: 0});
		$(this).removeClass('largeloading');
			
		if(showPagination && $('#paginationCount').html() > resultsPerPage)
		{
			$(".pagination").css('display', 'block');
		}
		if(!$('#centercol #data #searchresultrows').html())
		{
			_gaq.push(['_trackEvent', 'Error', navigator.userAgent, 'Timeout']);
			if(retryCount < retryMax)
			{
				$(".pagination").css('display', 'none');
				$('#centercol #data').addClass('largeloading');
				doSearch(params, showPagination, vehicleID);
			}
			retryCount++;
		}
		else
		{
			retryCount = 0;
	  	_gaq.push(['_trackPageview', '/search.html']);
	  }
	  if(vehicleID)
	  {
	  	minimiseVehicle(vehicleID);
			maximiseVehicle(vehicleID, galleryTab);
	  }
	});
	setCookies();
}

function goToPage(page_index, panel)
{
	if($(panel).parent().attr('id') == 'paginationTop' && $('#paginationBottom').html())
	{
		$('#paginationBottom #pagination').remove();
		$('#paginationTop #pagination').clone(true).appendTo('#paginationBottom');
	}
	if($(panel).parent().attr('id') == 'paginationBottom')
	{
		$('#paginationTop #pagination').remove();
		$('#paginationBottom #pagination').clone(true).appendTo('#paginationTop');
	}
	$(".pagination").css('display', 'none');
	setKeyValue('start', page_index * resultsPerPage);
	setKeyValue('perpage', resultsPerPage);
	doSearch(searchParams, true);
}

$('#sortBy').live('change', function(){
	setKeyValue('sortby', $(this).val());	
	_gaq.push(['_trackEvent', 'Sort', $(this).val(), 'Sort By']);
	$(".pagination").css('display', 'none');
	doSearch(searchParams, true);
});


function updateMakeModel()
{
	$('#makemodel .selectedOptions .option').remove();
	if (searchParams['make']){updateSelected('makemodel', 'make')};
	if (searchParams['model']){updateSelected('makemodel', 'model')};
	if (searchParams['badge'])
	{
		updateSelected('makemodel', 'badge');
		$('#makemodel .container').removeClass('visible');
	}
	else
	{
		$('#makemodel .container').addClass('visible');
	}
	updateAllFilters();
}


function setKeyValue(k, v){
	searchParams[k] = v;
}

function updateFilter(container)
{
	setKeyValue('filter', container);
	$('#' + container + ' .container').load('/cms/cars/populateFilter.ajax', searchParams, function(){
		$(this).hide().fadeIn(500);
	});
}

function updateSelected(container, k)
{
	$('<div class="option" id="' + k + '_"><a href="#">' + searchParams[k] + '</a></div>').appendTo('#' + container + ' .selectedOptions');
}

function setCookies()
{
	for(key in searchParams)
	{
		$.cookie('awload_' + key, searchParams[key], { path: '/', expires: 365 });
	}
}

function deleteCookies()
{
	var cookies = get_cookies_array();
	
	for(var name in cookies) {

		var match = /awload_/.test(name);
		if(match == true)
		{
			$.cookie(name, null);	
		}
	}
}

function getCookies()
{
	var cookies = get_cookies_array();
	
	for(var name in cookies) {

		var match = /awload_/.test(name);
		if((cookies[name] != 'undefined')&&(match == true))
		{
			var key = name.replace(/awload_/g,'')
			setKeyValue(key, cookies[name]);
		}
	}
	
	if(searchParams['postcode'])
	{
		$("#cities").val(searchParams['location']);
		$('#cities').addClass('hidden');
		$('#location .container .tip').addClass('hidden');
		updateSelected('location', 'location');
	}
	if(searchParams['distance'])
	{
		$("#distance").val(searchParams['distance']);
		if(searchParams['postcode'])
		{
			$("#distance").addClass('selected');
			$('#location .container .resetSelect').removeClass('hidden');
		}
	}
	if(searchParams['sortby'])
	{
		$('#sortBy').val(searchParams['sortby']);
	}
	
	if(searchParams['minPrice'])
	{
		setSelect($('form.minmax #minPrice'), searchParams['minPrice']);
	};
	if(searchParams['maxPrice']){setSelect($('form.minmax #maxPrice'), searchParams['maxPrice'])};
	if(searchParams['minYear']){setSelect($('form.minmax #minYear'), searchParams['minYear'])};
	if(searchParams['maxYear']){setSelect($('form.minmax #maxYear'), searchParams['maxYear'])};
	if(searchParams['minKms']){setSelect($('form.minmax #minKms'), searchParams['minKms'])};
	if(searchParams['maxKms']){setSelect($('form.minmax #maxKms'), searchParams['maxKms'])};
	if(searchParams['bodyType']){updateSelected('bodystyle', 'bodyType')};
	if(searchParams['Transmission']){updateSelected('trans', 'Transmission')};
	updateMakeModel();
	createFavourites();
} 
	function setSelect(select, newvalue, update)
	{
		if(newvalue){select.val(newvalue)};
		if(select.val())
		{
			select.addClass('selected');
			$(select).parent().find('.resetSelect').removeClass('hidden');
			setKeyValue(select.attr('id'), select.val());
		}
		if($(select).parent().attr('class') == 'min')
		{
			var id = $(select).parent().parent().find('div.max').find('select').attr('id');
			var selectToReset = '#' + $(select).parent().parent().parent().parent().attr('id') + ' div.max .resetSelect';
			validateMinMax(select.val(), $('#' + id).val(), selectToReset, update)
		}
		else
		{
			var id = $(select).parent().parent().find('div.min').find('select').attr('id');
			var selectToReset = '#' + $(select).parent().parent().parent().parent().attr('id') + ' div.min .resetSelect';
			validateMinMax($('#' + id).val(), select.val(), selectToReset, update)
		}
		if(update){updateAllFilters()};
	}

	function resetSelect(cross, update)
	{
		var select = $(cross).parent().find('select');
		select.val('').removeClass('selected');
		setKeyValue(select.attr('id'), '');
		$(cross).addClass('hidden');
		if(update){updateAllFilters()};
	}


	function validateMinMax(a, b, selectToReset, update)
	{
		if((a > 0)&&(b > 0)&&(a < b))
		{
			return true;
		}
		else
		{
			resetSelect(selectToReset, update);	
		}
	}






//	for(var x in searchParams)
//	{
//		if(searchParams[x])
//		{
//			console.log('xxx' + x + searchParams[x]);
//		}
//	}
