var enquiryParams = new Object();
var favParams = new Object();
var favStr;
var galleryTab = 0;
var enquiryTab = 3;
var map;


function createFavourites()
{
	restoreFavourites();
	saveFavourites();
}

$('#returnToSearch').live('click', function(){
	$('#sortBy').removeClass('hidden');
	$('#returnToSearch').addClass('hidden');
	$('#resultCount, #resultCount2').load('/cms/cars/resultCount.ajax', searchParams);
	doSearch(searchParams, true, true);
});

$('.showFav').live('click', function(){
	saveFavourites();
	$(".pagination").css('display', 'none');
	var params = { inList: favStr};
	$('#resultCount, #resultCount2').load('/cms/cars/resultCount.ajax', params, function(){
		$('#sortBy').addClass('hidden');
		$('#returnToSearch').removeClass('hidden');
	});
	doSearch(params, false, $(this).attr('id'));	
});

function saveFavourites()
{
	favStr = '';
	for(x in favParams)
	{
		if(favParams[x] == 1)
		{
			if(favStr)
			{
				favStr = favStr + ',' + x;
			}
			else
			{
				favStr = x;
			}
		}
		$.cookie('favs', favStr, { expires: 365 });
	}
}

function restoreFavourites()
{
	if($.cookie('favs'))
	{
		var ids = $.cookie('favs').split(",");

		if(ids.length)
		{
			$('#favContainer').load('/cms/cars/restoreFavourites.ajax', {ids: $.cookie('favs')}, function(){
				var validFavs = $('#ValidFavourites').text();
				var validIDs = validFavs.split("|");			
				for(i = 0; i < validIDs.length; i++)
				{
					if(ids[i] != 'undefined')
					{
						favParams[ids[i]] = 1;
					}
				}
				$('#favourites').slideDown(500);
			}); 
		}
	}	
}

function addToFavourites(id)
{
	favParams[id] = 1;
	var thumbSRC = $('#' + id + ' .photo .mainThumb').attr('src');
	$('#favourites #favContainer').append('<div id="' + id + '" class="favourite hidden"><div class="shortDesc"><a id="' + id + '" class="showFav" href="#">' + $('#' + id + '.searchResult #shortDesc').text() + '</a></div><img id="' + id + '" class="showFav" src="' + thumbSRC + '"><div class="price">'+ $('#' + id + '.searchResult #price').text() +'</div></div>');
	$('#favourites #favContainer #' + id).slideDown(500);
	saveFavourites();
	_gaq.push(['_trackEvent', 'Saved Vehicles', 'Add', id]);
}
function removeFromFavourites(id)
{
	favParams[id] = 0;
	$('#favourites #favContainer #' + id).slideUp(500, function(){$('#favourites #favContainer #' + id).remove()});
	saveFavourites();
	_gaq.push(['_trackEvent', 'Saved Vehicles', 'Remove', id]);
}



$('.favLink a').live('click', function(){
	$('#favourites').slideDown(500);
	var id = $(this).attr('id');
	if(favParams[id])
	{
		removeFromFavourites(id);
		$('.favLink #remove').addClass('hidden');
		$('.favLink #save').removeClass('hidden');
	}
	else
	{
		addToFavourites(id);
		$('.favLink #save').addClass('hidden');
		$('.favLink #remove').removeClass('hidden');
	}
	return false;
});

$('.thumbnails img').live('mouseenter', function(){
	$(this).css('opacity', 1);
});
$('.thumbnails img').live('mouseleave', function(){
	$(this).css('opacity', 0.5);
});
$('.thumbnails img').live('click', function(){
	$('#tabs').tabs('select', galleryTab);
	loadImage($(this).attr('id'));
  _gaq.push(['_trackPageview', '/image.html']);
});

$('.searchResult .photo').live('click', function(e){
	var vehicleID = $(this).parent().attr('ID');
	minimiseVehicle(vehicleID);
	maximiseVehicle(vehicleID, galleryTab);
	loadImage($('.thumbnails:first-child').attr('id'));
	return false;
});

$('.searchResult div.requestLocation').live('click', function(e){
	_gaq.push(['_trackEvent', 'Link', 'Click', 'Search Results Link']);
	var vehicleID = $(this).attr('ID');
	if(searchParams['ID'])
	{
		minimiseVehicle();
	}
	minimiseVehicle(vehicleID);
	maximiseVehicle(vehicleID, enquiryTab);
	return false;
});
$('.searchResult .enquire button.requestLocation').live('click', function(e){
	_gaq.push(['_trackEvent', 'Button', 'Click', 'Search Results Button']);
	var vehicleID = $(this).attr('ID');
	if(searchParams['ID'])
	{
		minimiseVehicle();
	}
	minimiseVehicle(vehicleID);
	maximiseVehicle(vehicleID, enquiryTab);
	return false;
});
$('.searchResult .fulldesc button.requestLocation').live('click', function(e){
	_gaq.push(['_trackEvent', 'Button', 'Click', 'Description Button']);
	var vehicleID = $(this).attr('ID');
	$('#' + vehicleID + ' #tabs').tabs('select', enquiryTab);
	return false;
});


$('.searchResult .description').live('click', function(e){
	var vehicleID = $(this).parent().attr('ID');
	if(searchParams['ID'] == vehicleID)
	{
		minimiseVehicle();
	}
	else
	{
		minimiseVehicle(vehicleID);
		maximiseVehicle(vehicleID, galleryTab);
	}
	return false;
});
$('.searchResult #tabs .closebutton').live('click', function(){
	var vehicleID = $(this).parent().attr('ID');
	minimiseVehicle();
	_gaq.push(['_trackEvent', 'Button', 'Click', 'Minimise Vehicle']);
});

function loadImage(imgSrc){
	$('#tabs #fragment-' + (galleryTab + 1) + ' #imgcontainer').addClass('largeloading');
	$('#tabs #fragment-' + (galleryTab + 1) + ' #imgcontainer img').fadeOut('slow').remove();

  var img = new Image();
  $(img).hide();
  $(img).load(function () {
    $('#tabs #fragment-' + (galleryTab + 1) + ' #imgcontainer').removeClass('largeloading').append(this);
		var h = $(this).height();
		var w = $(this).width();
    if(w > 600||h > 400)
    {
    	var wf = 600 / w;
    	var hf = 400 / h;
   		if(wf < hf)
   		{
    		$(this).width(600);
    		$(this).height(h * wf);
   		}
   		else
   		{
    		$(this).height(400);	
    		$(this).width(w * hf);
   		}
    }
    $(this).fadeIn(800);
  })
  .error(function () {

  })
  .attr('src', imgSrc);
}


function minimiseVehicle(vehicleID){
	var ID = searchParams['ID'];
	if(ID != vehicleID){
		$('#' + ID + '.searchResult').removeClass('selected');
		$('#' + ID + ' .thumbnails, #' + vehicleID + ' .photo').fadeOut();
		$('#' + ID + ' button.requestLocation').fadeIn();
		$('#' + ID + ' .thumbnails img').remove();
		$('#' + ID + ' .fulldesc').slideUp();
		$('#' + ID + ' #tabs').remove();
		$('#' + ID + ' .data, #' + ID + ' .photoCount, #' + ID + ' .price, #' + ID + ' .photo').fadeIn();
		setKeyValue('ID', vehicleID);
	}	
}


function maximiseVehicle(vehicleID, tab){
	_gaq.push(['_trackPageview', '/vehicle.html']);
	setEnquiryValue('VehicleID', vehicleID);
	setEnquiryValue('ID', vehicleID);
	setKeyValue('UserEmail', enquiryParams['UserEmail']);
	getEnquiryCookies();
	
	$('#' + vehicleID + '.searchResult').addClass('selected');
	$('#' + vehicleID + ' .spacer').removeClass('hidden');
	$('#' + vehicleID + ' .data').fadeOut();
	$('#' + vehicleID + ' .photoCount').fadeOut();
	$('.searchResult#' + vehicleID + ' .price').fadeOut();
	$('#' + vehicleID + ' button.requestLocation').fadeOut();

	$('#' + vehicleID + ' .fulldesc').load('/cms/cars/vehicle.ajax', enquiryParams, function(){
 		
		$('#' + vehicleID + ' .thumbnails').fadeIn('fast').load('/cms/cars/thumbnails.ajax', searchParams, function(){
			var imgMargin = 2;
			var imgCount = $(this).children().size(); 
			var imgWidth = (594 - (imgCount - 1) * imgMargin) / imgCount;
			if(imgWidth > 75){imgWidth = 75};
			$('#' + vehicleID + ' .thumbnails').css('height', 60 * (imgWidth / 75));
			$('#' + vehicleID + ' .thumbnails').slideDown();
			$('#' + vehicleID + ' .thumbnails img').css('width', imgWidth + 'px');
	
			var firstImage;
			$('#' + vehicleID + ' .thumbnails img').each(function(){
				if(!firstImage)
				{
					firstImage = $(this).attr('id');
					$('#' + vehicleID + ' .vehiclePic .thumbnail').append('<img src="' + $(this).attr('src') + '">');
					loadImage(firstImage);
				} 
			});
		});
		$('#' + vehicleID + ' #enquirycontainer').slideDown('fast').load('/cms/cars/enquiry.ajax', enquiryParams, function(){
			createEnquiryFormHZ();		
		});
			
		$('#' + vehicleID + ' #tabs').fadeIn('slow').tabs({
 		  select: function(event, ui) {
				switch (ui.panel.id)
				{
				case 'fragment-1':
				  _gaq.push(['_trackPageview', '/gallery.html']);
				  break;
				case 'fragment-2':
				  _gaq.push(['_trackPageview', '/description.html']);
				  break;
				case 'fragment-3':
				  _gaq.push(['_trackPageview', '/features.html']);
				  break;
				case 'fragment-4':
      		if(!$('#map').html())
      		{
						$('#map').html('<iframe id="googleMap" src="/cms/cars/map.html?lat=' + $('#mapLatitude').html() + '&lon=' + $('#mapLongitude').html() + '&name=' + $('#dealername').html() + '"></iframe>');
				  	_gaq.push(['_trackPageview', '/enquiry.html']);
      		}
      		else
      		{
				  	_gaq.push(['_trackPageview', '/seller.html']);
				  }
				  break;
				}


    	}

		});
		
		$('#' + vehicleID + ' #tabs').tabs('select', 1);
		var summaryHeight = $('#' + vehicleID + ' #tabs #fragment-2 #summary').height();
		var commentsHeight = $('#' + vehicleID + ' #tabs #fragment-2 #comments').height();
		var tabHeight = $('#' + vehicleID + ' #tabs').height();
		$('#' + vehicleID + ' #tabs .data .row div.comments').height(tabHeight - summaryHeight - 125);
		$('#' + vehicleID + ' #tabs').tabs('select', tab);
		createEnquiryForm();		
		if(favParams[vehicleID])
		{
			$('.favLink #remove').removeClass('hidden');
		}
		else
		{
			$('.favLink #save').removeClass('hidden');
		}
			
		$('#' + vehicleID + ' .spacer').addClass('hidden');
		$('#' + vehicleID + ' .fulldesc').slideDown('fast');

		var docOffset = $(this).parent().offset();
		var windowPosition = $('body').scrollTop();
		var docHeight = $(this).parent().height();
		docHeight = 658;
		var centered = ($(window).height() - docHeight ) / 2;
		var windowHeight = $(window).height();
		
		if((docOffset.top < windowPosition) || ((docOffset.top + docHeight + 100) > (windowPosition + windowHeight)))
		{
			$('html, body').animate({scrollTop: docOffset.top - centered});
		}

			
	});

}

$('.contactSeller').live('click', function(){
		$('#tabs').tabs('select', 3);
		return false;
	});
$('.contactSellerTab').live('click', function(){
		$('#tabs').tabs('select', 3);
	});

jQuery.fn.center = function () {
    this.css("position","absolute");
    this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
    this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
    return this;
}

function createEnquiryForm()
{
	$('#enquiryForm').validate({
		errorContainer: "#enquiryForm #errorContainer, #enquiryForm #errorAlert",
		errorLabelContainer: "#enquiryForm #errorLabels",
		errorClass: "invalidData",
   	wrapper: "p", onkeyup: false,
   	rules: {
      Username: "required",
      UserEmail: {
        required: true,
        email: true
      },
      PhoneNumber: "required"
    },
    messages: {
      Username: "Your name is required",
      UserEmail: {
        required: "Your email address is required",
        email: "A valid email address is required like name@domain.com"
      },
      PhoneNumber: {
      	required: "Your telephone number is required",
      	auphonenumber: "A valid Australian phone number is required (inc. area code)"
      },
    },
   	invalidHandler: function(form, validator) {
   		$('#enquiryForm #helpMessage').addClass('hidden');
   	},
   	showErrors: function(errorMap, errorList) {
			
			if(!this.numberOfInvalids())
			{
	   		$('#enquiryForm #helpMessage').removeClass('hidden');
	   	}
	   	else
	   	{
	   		$('#enquiryForm #helpMessage').addClass('hidden');
	   		_gaq.push(['_trackPageview', '/failed.html']);
	   		_gaq.push(['_trackEvent', 'Enquiry', 'Failure', 'Email: ' + $('#enquiryForm #UserEmail').val() + ' Phone: ' + $('#enquiryForm #PhoneNumber').val()]);
	   	}
			setAllEnquiryValues();
			setEnquiryCookies();
			this.defaultShowErrors();
		},
   	submitHandler: function() { 
			setAllEnquiryValues();
   		$('#enquiryResults').load('/cms/cars/submit.ajax', enquiryParams, function(){
   			//setEnquiryValue('UserMessage', '');
   			setEnquiryCookies();
			  if($('#enquiryID').html())
			  {
				  _gaq.push(['_trackPageview', '/success.html']);
				  _gaq.push(['_addTrans',
					   $('#enquiryID').html(),
					   'Used Car Enquiry', 
					   '9.00',
					   '0',
					   '0',
					   '', 
					   '', 
					   ''  
					]);
					_gaq.push(['_addItem',
					   $('#enquiryID').html(),
					   'U',       
					   'Used Car Enquiry', 
					   '',  
					   '9.00',
					   '1'    
					]);
					_gaq.push(['_trackTrans']);
				}
   		})
   	},
	});
}

function setAllEnquiryValues(){
	setEnquiryValue('Username', $('#enquiryForm #Username').val());
	setEnquiryValue('UserEmail', $('#enquiryForm #UserEmail').val());
	setEnquiryValue('PhoneNumber', $('#enquiryForm #PhoneNumber').val());
	setEnquiryValue('UserMessage', $('#enquiryForm #UserMessage').val());
	setEnquiryValue('src', searchParams['src']);
}

function setEnquiryValue(k, v){
	enquiryParams[k] = v;
}

function setEnquiryCookies()
{
	$.cookie('enq_UN', enquiryParams['Username'], { expires: 365 });
	$.cookie('enq_UE', enquiryParams['UserEmail'], { expires: 365 });
	$.cookie('enq_UP', enquiryParams['PhoneNumber'], { expires: 365 });
	$.cookie('enq_UM', enquiryParams['UserMessage'], { expires: 365 });
}

function getEnquiryCookies()
{
	if($.cookie('enq_UN')){setEnquiryValue('Username', $.cookie('enq_UN'))};
	if($.cookie('enq_UE')){setEnquiryValue('UserEmail', $.cookie('enq_UE'))};
	if($.cookie('enq_UE')){setKeyValue('UserEmail', $.cookie('enq_UE'))};
	if($.cookie('enq_UP')){setEnquiryValue('PhoneNumber', $.cookie('enq_UP'))};
	if($.cookie('enq_UM')){setEnquiryValue('UserMessage', $.cookie('enq_UM'))};
}

function loadGoogleMap()
{
	if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng($('#mapLatitude').html(), $('#mapLatitude').html()), 13);
    map.setUIToDefault();
  }
}




function createEnquiryFormHZ()
{
	$('#enquirycontainer #enquiryForm').validate({
		errorContainer: "#enquirycontainer #enquiryForm #messages",
		errorLabelContainer: "#enquirycontainer #enquiryForm #errorLabels",
		errorClass: "invalidData",
   	wrapper: "p", onkeyup: false,
   	rules: {
      Username: "required",
      UserEmail: {
        required: true,
        email: true
      },
      PhoneNumber: "required"
    },
    messages: {
      Username: "Your name is required",
      UserEmail: {
        required: "Your email address is required",
        email: "A valid email address is required like name@domain.com"
      },
      PhoneNumber: {
      	required: "Your telephone number is required",
      	auphonenumber: "A valid Australian phone number is required (inc. area code)"
      },
    },
   	showErrors: function(errorMap, errorList) {
			
			if(!this.numberOfInvalids())
			{
	   		$('#enquiryForm #helpMessage').removeClass('hidden');
	   	}
	   	else
	   	{
	   		$('#enquiryForm #helpMessage').addClass('hidden');
	   		_gaq.push(['_trackPageview', '/failed.html']);
	   		_gaq.push(['_trackEvent', 'Enquiry', 'Failure', 'Email: ' + $('#enquiryForm #UserEmail').val() + ' Phone: ' + $('#enquiryForm #PhoneNumber').val()]);
	   	}
			setAllEnquiryValues();
			setEnquiryCookies();
			this.defaultShowErrors();
		},
   	submitHandler: function() { 
			setAllEnquiryValues();
   		$('#enquiryResults').load('/cms/cars/submit.ajax', enquiryParams, function(){
				$('#enquiryForm').addClass('hidden');
				$('#tabs').tabs('select', enquiryTab);
	   		setEnquiryCookies();
			  if($('#enquiryID').html())
			  {
				  _gaq.push(['_trackPageview', '/success.html']);
				  _gaq.push(['_addTrans',
					   $('#enquiryID').html(),
					   'Used Car Enquiry', 
					   '9.00',
					   '0',
					   '0',
					   '', 
					   '', 
					   ''  
					]);
					_gaq.push(['_addItem',
					   $('#enquiryID').html(),
					   'U',       
					   'Used Car Enquiry', 
					   '',  
					   '9.00',
					   '1'    
					]);
					_gaq.push(['_trackTrans']);
				}
   		})
   	},
	});
}
