
// ajax loading display
function loading(id) {
	var f = document.getElementById(id);
	if(f!=null)
	{
		if(id=='enlarge_image')
		{
			f.innerHTML = '<img src="/images/ajax-loading.gif" border="0" style="padding-top:128px;" />';
		}
		else
		{
			f.innerHTML = '<img src="/images/ajax-loading.gif" border="0" />';
		}
	}
}

var disappeardelay=250  //menu disappear speed onMouseout (in miliseconds)
var enableanchorlink=0 //Enable or disable the anchor link when clicked on? (1=e, 0=d)
var hidemenu_onclick=1 //hide menu when user clicks within menu? (1=yes, 0=no)

/////No further editting needed

var ie5=document.all
var ns6=document.getElementById&&!document.all

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}

function showhide(obj, e, visible, hidden){
if (ie5||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
obj.visibility=visible
else if (e.type=="click")
obj.visibility=hidden
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var topedge=ie5 && !window.opera? iecompattest().scrollTop : window.pageYOffset
var windowedge=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
}
}
return edgeoffset
}

function dropdownmenu_jeera_blade(obj, e, dropmenuID){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
if (typeof dropmenuobj!="undefined") //hide previous menu
dropmenuobj.style.visibility="hidden"
clearhidemenu()
if (ie5||ns6){
obj.onmouseout=delayhidemenu
dropmenuobj=document.getElementById(dropmenuID)
if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
dropmenuobj.onmouseover=clearhidemenu
dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
showhide(dropmenuobj.style, e, "visible", "hidden")
dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")+2
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
}
return clickreturnvalue()
}

function dropdownmenu(ro, obj, e, dropmenuID){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
if (typeof dropmenuobj!="undefined") //hide previous menu
dropmenuobj.style.visibility="hidden"
clearhidemenu()
if (ie5||ns6){
obj.onmouseout=delayhidemenu
dropmenuobj=document.getElementById(dropmenuID)
if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
dropmenuobj.onmouseover=clearhidemenu
dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
showhide(dropmenuobj.style, e, "visible", "hidden")
dropmenuobj.x=getposOffset(ro, "left")-135
dropmenuobj.y=getposOffset(ro, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
}
return clickreturnvalue()
}

function clickreturnvalue(){
if ((ie5||ns6) && !enableanchorlink) return false
else return true
}

function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function dynamichide(e){
if (ie5&&!dropmenuobj.contains(e.toElement))
delayhidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
delayhidemenu()
}

function delayhidemenu(){
delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay)
}

function clearhidemenu(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}

/****************************************************************************************************
  INSTALLMENTS CALCULATOR ON VEHICLE DETAIL PAGE
  Copyright Dealer.com Websystems
	paymentcalculator.js
	author: ///o-o\\\
	Notes:
	History:
		created 12.29.2000
		last modified: 7.09.2007 by wick
		ported to -legacy:  08.Feb.2008, Randy Morey
****************************************************************************************************/
var calcForm;
var verbage = "Call";
var defaultRate = "6.9";

function initialize( formName ) {
	calcForm = (formName==null)?document.forms[0]:document.forms[formName];
	calcForm.rate.value=defaultRate;
	populate(calculate());
}

function initializePaymentCalculator( formName ) {
	calcForm = (formName==null)?document.forms[0]:document.forms[formName];
	var cashTrade=calcForm.cash_trade.value;
	if (cashTrade.indexOf("%") != "-1") {
		price = normalize(calcForm.price.value);
		cashTrade = Math.floor((price * ( parseInt(cashTrade) / 100) ) / 100) * 100;
		calcForm.cash_trade.value = cashTrade;
	}
	calcForm.rate.value = defaultRate || '';
}

function populate( moPay ) {
	calcForm = document.getElementById('calcForm');
	if(calcForm.rate.value=="" || calcForm.rate.value=="0.") {return;}
//	if(parseFloat(calcForm.rate.value)<=0) {return;}
	if( moPay=="0.00" && parseInt(calcForm.price.value)==0 ) {
		calcForm.cash_trade.disabled=true;
		calcForm.retail.disabled=true;
		calcForm.rate.disabled=true;
		calcForm.term.disabled=true;
		calcForm.monthlypayment.value=0;
		calcForm.monthlypayment.disabled=true;
		calcForm.price.value=verbage;
		calcForm.retail.value=verbage;
		calcForm.monthlypayment.value=verbage;
		return;
	} else if( calcForm.cash_trade.value.indexOf("-") != -1 || new Number(normalize(calcForm.cash_trade.value)) < 0 ){
		alert("Your down payment must be greater than zero.\nIf you have any questions, feel free to contact us via email.\nThank You.");
		return;
	}
	calcForm.cash_trade.disabled=false;
	calcForm.retail.disabled=false;
	calcForm.rate.disabled=false;
	calcForm.term.disabled=false;
	calcForm.monthlypayment.disabled=false;
	calcForm.monthlypayment.value = moPay;
}

function rePopulate( maxTerms )
{
	clearSelector( "term" );
	populateTerms( maxTerms );
}

var price;
var retail;
function calculate()
{
	//if(calcForm.rate.value=="" || calcForm.rate.value=="0" || calcForm.rate.value=="0.") {return;}
	calcForm = document.getElementById('calcForm');
	if(calcForm.rate.value=="" ) {return;}
	// update prices and monthly payment
	price = normalize(calcForm.price.value) - normalize(calcForm.cash_trade.value);
	retail = normalize(calcForm.retail.value) - normalize(calcForm.cash_trade.value);
	rate = calcForm.rate.value/100;
	term = calcForm.term.options[calcForm.term.selectedIndex].value;

  if( rate == 0 ){
		pay = new String(price/term);
  }
	else {
		var monthIntRate = rate / 12;
		ratePlus = eval(monthIntRate+1);
		pow = Math.pow( ratePlus, term );
		pay = new String( ( price ) / (( 1 - (1/pow)) / monthIntRate) );
	}

	//if( parseFloat(calcForm.cash_trade.value)>parseFloat( calcForm.price.value.replace(",","") ) ) {calcForm.cash_trade.value=calcForm.price.value;}
	if( pay == "NaN" ) return verbage;
	else if( pay<0) return 0;
	return format(pay);
}

function populateTerms( max,sel,interval,customTerms ) {
// in case required function params are missing
  if (!customTerms) { customTerms = ''; }
  if (!interval) { interval = 12; }

	var i = 0;
	if (customTerms != '') {
		var terms = customTerms.split(',');
		for (var j = (terms.length - 1); j >= 0 ; j--) {
			calcForm.term.options[i++] = new Option(terms[j]+' mo.',terms[j]);
		}
	}
	else {
		for (var j = max; j >= 12; (j -= interval)) {
			calcForm.term.options[i++] = new Option(j+' mo.',j);
		}
	}
	calcForm.term.value = sel;	// AFAIK, doing a value assignment works in all modern browsers
}

function clearSelector( who ) {
  // needs to cleanup all select objects below 'who'
  var start = 0;
  var end = calcForm.elements[who].options.length;
  if( end < start )
		return false;
  for( i=end; i>=start; i-- ){
		calcForm.elements[who].options[i] = null;
  }
}

function normalize( value ) {
  if( value == null || value == "" ) {
    value = 0;
  } else {
    value = value.replace(/,/, "");
    value = value.replace(/$/, "");
  }
  return value;
}


function format( str ) {
  var fraction;
	numerals = new String(str);
  index = numerals.indexOf(".");
	if( index != -1 ){
		fraction = numerals.substring( index, index+3 );
		numerals = numerals.substring( 0, index );
	}

  ln = numerals.length;
  beg = numerals.substring( 0, ln-3 );
  end = numerals.substring( ln-3 );

  retVal=beg+((ln>3)?",":"")+end+((fraction==null)?".00":fraction);

	return retVal;
}

function calculatePurchasingPower() {
	var purchasingPower;
	var monthlyPayment = calcForm.affordableMonthlyPayment.value;
	var cashTrade      = parseFloat( 0 + calcForm.cash_trade.value );
	var rate           = calcForm.rate.value / 1200;
	var term           = calcForm.term.value;

	if( rate == 0 )
		purchasingPower = ( monthlyPayment * term ) + cashTrade;
	else
		purchasingPower = monthlyPayment * ( ( 1 - ( 1 / Math.pow( 1 + rate, term ) ) ) / rate ) + cashTrade;

	return format( purchasingPower );
}

function populatePurchasingPower( moPay ) {
	if(calcForm.rate.value=="" || calcForm.rate.value=="0.") {return;}
	if( moPay=="NaN.00"  ) {
		calcForm.purchasingPower.value=0;
		calcForm.purchasingPower.disabled=true;
		calcForm.purchasingPower.value=verbage;
		return;
	} else if( calcForm.cash_trade.value.indexOf("-") != -1 || new Number(normalize(calcForm.cash_trade.value)) < 0 ){
		alert("Your down payment must be greater than zero.\nIf you have any questions, feel free to contact us via email.\nThank You.");
		return;
	}
	calcForm.purchasingPower.disabled=false;
	calcForm.purchasingPower.value = moPay;
}

function doBoth() {
	populate( calculate() );
	populatePurchasingPower( calculatePurchasingPower() );
}

function calcdisp()
{
	var divRef = document.getElementById('paymentImg');
	var mpay = document.forms['calcForm'].monthlypayment.value.toString().replace(/([\d,]{5})\.\d{2}$/,'$1');
	document.getElementById('monthlypayment').value = mpay;
	var mhtml = 'Your monthly installment is: $' + mpay;	
	divRef.innerHTML = mhtml;
	if(mpay!="Call")
	{
		document.getElementById('emailMonthlyEstimate').style.display='block';
	}
}

function isEmailValid(v)
{
	var filter=/^.+@.+\..{2,3}$/;
	return filter.test(v);
}

function sendestimationtofriendvalidation(theForm)
{
	if(theForm.friend_email.value=="" || !isEmailValid(theForm.friend_email.value))
	{
		alert("Enter a valid email address");	
		theForm.friend_email.focus();
		return false;
	}
	return true;
}
function ShowTab( s, h )
{
	$( h ).hide();
	$( s ).show();

	$( 'link-' + s ).setStyle({backgroundImage:'none'});
	$( 'link-' + s ).setStyle({backgroundColor:'#fff'});
	$( 'link-' + s ).setStyle({fontWeight:'bold'});
	$( 'link-' + h ).setStyle({backgroundImage:'url(/images/new/bg_tab.jpg)'});
}