$(function(){
	$('.datepicker').datepicker({ dateFormat: 'yy-mm-dd' });
	$('.tabs').tabs();

	prettyPhotoOpts = {
		opacity: 0.8,
		showTitle: false,
		modal: true
	};
	
	//initGMap();

	$('[rel^=prettyPhoto]').prettyPhoto(prettyPhotoOpts);
	$('a[href*="forms"]').prettyPhoto(prettyPhotoOpts);
	$('a[href*="youtube.com"]').prettyPhoto(prettyPhotoOpts);
	

	var WWW = $("#WWW").attr("content");
	$("#WWW").remove();

	$('.sf-menu').superfish({
		animation: {height:'show', opacity:'show'},
		speed: 250,
		autoArrows: false,
		dropShadows: false
	});
	
	$("#billboard").cycle({
		slideExpr: '.bg',
		timeout: 8000,
		delay: 0,
		speed: 1000,
		prev: '#cycle-prev',
		next: '#cycle-next'
	});
	
	$(".form-types a").click(function(e) {
		e.preventDefault();
		$(".form-types a").removeClass('selected');
		$(this).addClass('selected');
		
		href = $(this).attr("href");
		formType = href.substr(href.lastIndexOf('?')+1);
		
		$(this).parents('li').siblings().removeClass('strong').end().addClass("strong");
				
		$.post(WWW+'/@php/@forms/@control.php',{formType: formType}, function(msg) {
			$("form.contact").find(".form-fields").slideUp(function() { $(this).remove(); }).end().append(msg).slideDown();
			$.scrollTo('.form-types', 500);
		});
	});
	$(".ie7 .form-types a").add(".ie6 .form-types a").add(".ie8 .form-types a").unbind('click');
	
	$('.revealnext').click(function(e){
		e.preventDefault();
		if ($(this).next().css('display')=='none') {
			$(this).next().fadeIn('fast');
		} else {
			$(this).next().fadeOut('fast');
		}
	}).css({'cursor':'pointer'}).next().addClass('print').css({'display':'none'});
	
	$(".search .criteria select").change(function() {
	
		arrValues = $.map($(".search .criteria select"),function(el,i) {
			return $(el).val();
		});
		arrFields = $.map($(".search .criteria select"),function(el,i) {
			return $(el).attr('name');
		});
		lastChanged = $(this).attr("name");
		
		criteria = {};		
		$.each(arrFields,function(i,val) {
			criteria[val] = arrValues[i];
		});
		
		$.post(WWW+'/@php/@queries/filterSelect.php', {lastChanged: lastChanged, criteria: criteria}, function(msg) {
		  $.each(msg,function(i,val) {
		  	select = $(".search .criteria select[name="+i+"]");
		  	$(".search .criteria select[name="+i+"]").find('option:not(.default)').remove();
		  	$.each(val,function(k,v) {
		  		$opt = $('<option value="'+v.field.toLowerCase()+'">'+v.field+' ('+v.total+')</option>');
		  		if (v.field.toLowerCase() == criteria[i]) {
		  			// return select box to last selected value
		  			$opt.attr("selected","selected");
		  		}
		  		$opt.appendTo(select);
		  	});
		  });
		  $(".reset").show();
		}, 'json');
	});
	
	
	$(".gallery ul").jcarousel();
	
	
	
	$('.maintenance th').tooltip({ 
	    track: true, 
	    delay: 0, 
	    showURL: false, 
	    showBody: " - ", 
	    fade: 250, 
	    left: -125
	});
	$(".maintenance tr").hover(function() {
		$(this).addClass('hover');
	}, function() {
		$(this).removeClass('hover');
	});
	
	
	/* FORMS */
	
	$(".sort select").change(function() {
		if (!$(this).find(":selected").hasClass('default')) {
			$(this).parents("form").submit();
		}
	});
	
	
	/* FINANCE CALCULATOR */
	
	Number.prototype.formatMoney = function(c, d, t){
	var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
	 };
	
	$(".calculate").hide();
	
	$("#purchase").find('input,select').bind('blur click',calcPurchaseFinancing);
	$("#purchase").find('select').bind('change',calcPurchaseFinancing);
	
	$("#lease").find('input,select').bind('blur click',calcLease);
	$("#lease").find('select').bind('change',calcLease);
	
	function calcPurchaseFinancing() {
		$form = $("#purchase");
		principal = parseFloat($("[name=principal]",$form).val());
		tax = parseFloat($("#tax").attr("rel"));
		downpayment = parseFloat($("[name=downpayment]",$form).val());
		tradein = parseFloat($("[name=tradein]",$form).val());
		apr = parseFloat($("[name=apr]",$form).val());
		term = parseInt($("[name=term]",$form).val());
		
		if (isNaN(principal)) principal = 0;
		if (isNaN(downpayment)) downpayment = 0;
		if (isNaN(tradein)) tradein = 0;
		if (isNaN(apr)) apr = 0;
		if (isNaN(term)) term = 0;
		
		balanceToFinance = (principal * (1+tax)) - downpayment - tradein;		
		$(".balanceToFinance",$form).text('$'+balanceToFinance.formatMoney(2, '.', ','));
		
		if (apr != 0 && term != 0) {
			rate = (apr/100)/term;
			
			monthlyPayment = (balanceToFinance * rate) / (1 - Math.pow(1 + rate, -1 * term)) * (1+tax);
			
			$(".monthlyPayment",$form).text('$'+monthlyPayment.formatMoney(2, '.', ','));
		}
	}
	
	function calcLease() {
		$form = $("#lease");
		principal = parseFloat($("[name=principal]",$form).val());
		extra = parseFloat($("[name=extra]",$form).val());
		downpayment = parseFloat($("[name=downpayment]",$form).val());
		tradein = parseFloat($("[name=tradein]",$form).val());
		
		apr = parseFloat($("[name=apr]",$form).val());
		term = parseInt($("[name=term]",$form).val());
		residual = parseFloat($("[name=residual]",$form).val());
				
		if (isNaN(principal)) principal = 0;
		if (isNaN(extra)) extra = 0;
		if (isNaN(downpayment)) downpayment = 0;
		if (isNaN(tradein)) tradein = 0;
		if (isNaN(apr)) apr = 0;
		if (isNaN(term)) term = 0;
		
		balanceToFinance = principal + extra - downpayment - tradein;		
		$(".balanceToFinance",$form).text('$'+balanceToFinance.formatMoney(2, '.', ','));
		
		if (apr != 0 && term != 0 && residual != 0) {
			moneyFactor = apr / 2400;
			
			depreciationFee = (balanceToFinance - residual) / term;
			financeFee = (balanceToFinance + residual) * moneyFactor;
			
			monthlyPayment = (depreciationFee + financeFee);
			$(".monthlyPayment",$form).text('$'+monthlyPayment.formatMoney(2, '.', ','));
		}
	}
	
	$(".finance-calculator label").tooltip({ 
	    track: true, 
	    delay: 0, 
	    showURL: false, 
	    showBody: " - ", 
	    fade: 250,
	    left: -125
	});
	
	/* SLIDER */
	
	if (!$('html').hasClass('ie6') && !$('html').hasClass('ie7')) {
		$("div.slider:not(.active)").live('mouseenter',function(e) {
			$("div.slider").removeClass('active');
			
			if (!$.data(window,'sliderWidth')) {
				$.data(window,'sliderWidth',$(this).width());
				$.data(window,'sliderPad',75); // how many px on either side of the slider should be padded & protected from mouse movement?	
			}
			
			if (!$(this).data('ulWidth')) {
				ul = $(this).find("ul.slider");
				var lastLi = ul.find("li:last-child");			
				$(this).data('ulWidth',lastLi[0].offsetLeft + lastLi.width());
			}		
			
			if (!$(this).data('multiplier')) {
				var multiplier = (($(this).data('ulWidth')-$.data(window,'sliderWidth')) / ($.data(window,'sliderWidth') - $.data(window,'sliderPad')*2));
				$(this).data('multiplier',multiplier);
			}
			
			var pos = e.pageX - $(this).offset().left;				
			var left = (pos * $(this).data('multiplier')) - ($(this).data('multiplier') * $.data(window,'sliderPad'));
			
			if (pos >= $.data(window,'sliderPad') && pos <= $.data(window,'sliderWidth') - $.data(window,'sliderPad')) {
				$(this).scrollTo(left, 150, {axis:'x', onAfter: function() {
					$(this).addClass('active');
				}});
			} else {
				$(this).addClass('active');
			}
		});
		
		$("div.slider").css({overflow: 'hidden'}).mouseleave(function(e) {
			$(this).removeClass('active');
		});
		
		$("div.slider.active").live('mousemove',function(e) {
			var pos = e.pageX - $(this).offset().left;				
			var left = (pos * $(this).data('multiplier')) - ($(this).data('multiplier') * $.data(window,'sliderPad'));
			
			if (pos >= $.data(window,'sliderPad') && pos <= $.data(window,'sliderWidth') - $.data(window,'sliderPad')) {
				$(e.currentTarget).scrollLeft(left);
			}
		});
	} //endif
	
});

$(window).load(function() {
	// make these CSS changes after Google Maps load from initGmap()
	$("#map_canvas").children("div:last").css({
		top: '35px',
		left: '35px',
		zIndex: '123'
	}).end().children("div:eq(1)").css({
		bottom: '35px',
		left: '35px'
	}).end().children("div:eq(2)").css({
		bottom: '35px',
		right: '35px'
	});
});
