$(document).ready(function(){
	
	MakeModelInit();
	
	// Google maps
	if ($('.googlemaps').length) {
		loadGoogleMapsScript('loadMap');
	}
});

// MakeModelList

var oMakeModelList;
var eSearchMakeID;
var eSearchModelID;
var eSearchForm;


function MakeModelInit() {
	
	if (!(typeof MakeModelList == 'object' && MakeModelList instanceof Array)) {
		return false;
	}
	
	oMakeModelList = new Object();
	var aHTMLMakes = ['<option value="">Any Make</option>'];
	
	for (var i = 0; i+2 < MakeModelList.length; i += 3) {
		
		if (typeof MakeModelList[i] != 'number' ||
			typeof MakeModelList[i+1] != 'string' ||
			!(typeof MakeModelList[i+2] == 'object' && MakeModelList[i+2] instanceof Array)) {
			
			oMakeModelList = null;
			return false;	
		}
		
		oMakeModelList[MakeModelList[i]] = {
			'name': MakeModelList[i+1],
			'models': {}
		};
		
		aHTMLMakes.push('<option value="' + MakeModelList[i] + '">' + MakeModelList[i+1] + '</option>');
		
		for (var j = 0; j+1 < MakeModelList[i+2].length; j += 2) {
			
			if (typeof MakeModelList[i+2][j] != 'number' ||
				typeof MakeModelList[i+2][j+1] != 'string') {
				
				oMakeModelList = null;
				return false;	
			}
			
			oMakeModelList[MakeModelList[i]]['models'][MakeModelList[i+2][j]] = MakeModelList[i+2][j+1];
		}
	}
	
	eSearchMakeID = $('#searchMakeID');
	eSearchModelID = $('#searchModelID');
	eSearchForm = eSearchMakeID.parents('form');
	
	eSearchMakeID.html(aHTMLMakes.join('')).change(MakeModelMakeChange).change();
	eSearchForm.submit(MakeModelMakeSubmit);
			
	return true;
}

function MakeModelMakeChange() {
	
	var iValue = eSearchMakeID.val();
	
	if (typeof oMakeModelList[iValue] == 'undefined') {
		eSearchModelID.attr('disabled', 'disabled');		
	}
	else {
		eSearchModelID.removeAttr('disabled');
		
		var aHTMLModels = ['<option value="">Any Model</option>'];
		
		for (i in oMakeModelList[iValue]['models']) {
			aHTMLModels.push('<option value="' + i + '">' + oMakeModelList[iValue]['models'][i] + '</option>');
		}
		
		eSearchModelID.html(aHTMLModels.join(''));
	}
}

function MakeModelMakeSubmit() {
	
	if (eSearchMakeID.val() != '') {
		eSearchForm.find('.form-search > input[name=xMakeID]').val(eSearchMakeID.val());
		eSearchForm.find('.form-search > input[name=make]').val(eSearchMakeID.children('option:selected').text());
	}
	else {
		eSearchForm.find('.form-search > input[name=xMakeID]').val('');
		eSearchForm.find('.form-search > input[name=make]').val('');
	}
	
	if (eSearchModelID.val() != '') {
		eSearchForm.find('.form-search > input[name=xModelID]').val(eSearchModelID.val());
		eSearchForm.find('.form-search > input[name=model]').val(eSearchModelID.children('option:selected').text());
	}
	else {
		eSearchForm.find('.form-search > input[name=xModelID]').val('');
		eSearchForm.find('.form-search > input[name=model]').val('');
	}
	
	return true;
}

// Map

function loadMap() {
	
	$('.googlemaps').each(function(index, el){
		
		var container = $(el);
		var latLng = new google.maps.LatLng(container.attr('lat'), container.attr('lng'));
	
		var mapOptions = {
			zoom: parseInt(container.attr('zoom')),
			center: latLng,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			scrollwheel: false
		};
	
		var map = new google.maps.Map(el, mapOptions);	
		
		var marker = new google.maps.Marker({
			position: latLng,
			map: map
		});		
	});
}

function loadGoogleMapsScript(callback) {
	var script = document.createElement("script");
	script.type = "text/javascript"; 	
	script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=" + callback;
	document.body.appendChild(script);
}

// Slide show

var eSlideshow;
var eSlideshowImageBackground;
var eSlideshowImageForeground;
var iSlideshowDelay = 9000; 

function slideshowInit() {
	 	
	eSlideshow = $('#slideshow');
	
	if (!eSlideshow) {
		return false;
	}
   	
	eSlideshowImageBackground = eSlideshow.children('.background');	
	eSlideshowImageForeground = eSlideshow.children('.foreground');
	
	for (var j = 0; j < aSlides.length; j++) {
		$.preloadImage(aSlides[j].image);
	}
	
	setTimeout(slideshowNext, iSlideshowDelay);
}

function slideshowGetIndex(i) {
	
	return (i + aSlides.length) % aSlides.length;
}

function slideshowNext() {
	slideshowShow(iSlideCurrent+1);
	
	setTimeout(slideshowNext, iSlideshowDelay);
}

function slideshowShow(i) {
	
	i = slideshowGetIndex(i);
	
	if (iSlideCurrent == i) {
		return;
	}
	
	eSlideshowImageBackground.attr('src', aSlides[i].image);

	eSlideshowImageForeground.fadeOut(700, function() {
		slideshowSetContent(i);
		eSlideshowImageForeground.show();
	});
 	
   	iSlideCurrent = i;
}

function slideshowSetContent(i) {
	
	i = slideshowGetIndex(i);
	eSlideshowImageForeground.attr('src', aSlides[i].image);
}

// Image preload

jQuery.preloadImage = function(src) {
	jQuery("<img>").attr("src", src);
}

jQuery.preloadImages = function() {
	jQuery.each (arguments,function (e) {
		jQuery("<img>").attr("src", this);
	});
}
