// JavaScript Document

$(window).addEvent('load', function() {
  if (global.siteSpeed == 'low'){
     var cmyA= $('changeYearLink');
     var cmyDiv= $('currentModelYears');
     cmyA.setProperty('href', '#');

     cmyA.addEvent('click', function() {
       cmyA.setStyle('visibility', 'hidden');
       cmyDiv.setStyle('visibility', 'visible');
     });

     cmyDiv.addEvent('click', function() {
       cmyDiv.setStyle('visibility', 'hidden');
       cmyA.setStyle('visibility', 'visible');
     });
  }
})
	function hideAndShow(hideElement, showElement){
		document.getElementById(hideElement).style.display = "none";
		document.getElementById(showElement).style.display = "block";
	}

	function showOffers(){
		changeDisplay('linksInfo', 'none');
		changeDisplay('showOffers', 'none');
		changeDisplay('closeOffers', 'block');
		changeDisplay('incentives', 'block');
	}

	function hideOffers(){
		changeDisplay('linksInfo', 'block');
		changeDisplay('closeOffers', 'none');
		changeDisplay('showOffers', 'block');
		changeDisplay('incentives', 'none');
	}

	function showMonthly(){
		changeDisplay('zipRegionInfo', 'none');
		changeDisplay('offers', 'none');
		changeDisplay('linksInfo', 'none');
		changeDisplay('monthlyPay', 'block');
	}

	function hideMonthly(){
		changeDisplay('zipRegionInfo', 'block');
		changeDisplay('offers', 'block');
		changeDisplay('linksInfo', 'block');
		changeDisplay('monthlyPay', 'none');
	}

	function validateNumberFormat(domObj){
		var regEx =  /(^\d+$)|(^\d+\.$)|(^\d+\.\d{1}$)|(^\d+\.\d{2}$)/;
		var str = domObj.value;
		if(domObj.id !== object){
			decimal = '';
			object = domObj.id;
		}
		if(regEx.test(str)){
			decimal = str;
		} else{
			if(str === ''){
				domObj.value = '';
				decimal = '';
			} else {
				domObj.value = decimal;
			}
		}
		var size = /(^\d+\.\d{2}$)/;
		if (size.test(str)){
			domObj.setAttribute('maxLength', str.length);
		} else {
			domObj.setAttribute('maxLength', 8);
		}
	}
	var decimal = '';
	var object = '';

	function isDecimalNumberKey(evt){
	   var charCode = (evt.which) ? evt.which : evt.keyCode
	   if (charCode > 31 && (charCode < 48 || charCode > 57)){
			if (navigator.appName != 'Microsoft Internet Explorer'){
				if (charCode == 46 && evt.target.value.search(/\./) == -1){
					return true;
				} else {
					return false;
				}
			} else if(charCode == 46 && evt.srcElement.value.search(/\./) == -1){
					return true;
			} else {
				return false;
			}
	   }
	   return true;
	}
	function calculateMonthlyPay(MsrpLow, MsrpHigh){
		if(!checkFields_Calculate()){
			return;
		}
		var aprInputObj = document.getElementById("aprInput").value;
		var termInputObj = document.getElementById("termInput").value;
		var tradeinInputObj = document.getElementById("tradeinInput").value;
		var downPymtInputObj = document.getElementById("downPymtInput").value;

		var aprReal = (aprInputObj/100)/12;
		var resultLow= (MsrpLow-downPymtInputObj-tradeinInputObj)*((aprReal*(Math.pow((1+aprReal),termInputObj)))/((Math.pow((1+aprReal),termInputObj))-1));
		var resultHigh= (MsrpHigh-downPymtInputObj-tradeinInputObj)*((aprReal*(Math.pow((1+aprReal),termInputObj)))/((Math.pow((1+aprReal),termInputObj))-1));
		//var result= '$'+ resultLow.toFixed(2) + ' - ' + '$' + resultHigh.toFixed(2) + '/mo  ';
		//From: $415/mo. for 60 mo. with $3,395.50 down payment and 2.9% APR
		var result = 'From: '+'$'+ resultLow.toFixed(2)+'/mo. for '+termInputObj+' mo. with $'+downPymtInputObj+' down payment and '+aprInputObj+'% APR';
		document.getElementById('calculateMonthlyPay').style.display = "none";
		var subPriceObj = document.getElementById("subPrice");
		subPriceObj.style.display="";
		//alert(result+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#\" onclick=hideAndShow(\"mrsp\",\"monthlyPay\")>Edit Terms</a>");
		subPriceObj.innerHTML=result+"<a href=\"#\" onclick=javascript:showMonthly()>Edit Terms</a>";
		hideMonthly();
	}
	function checkFields_Calculate(){
		var missinFieldsMessage="All Fields are requires.<br/>Please enter a value for:<br/><ul>";
		var missingField = true;
		if ((document.getElementById('aprInput').value=="")||(document.getElementById('aprInput').value==null)){
			missinFieldsMessage= missinFieldsMessage + "<li>APR</li>";
			missingField = false;
		}
		if (document.getElementById('aprInput').value>100){
			missinFieldsMessage= "APR should be less than 100";
			missingField = false;
		}
		if ((document.getElementById('termInput').value=="")||(document.getElementById('termInput').value==null)){
			missinFieldsMessage= missinFieldsMessage + "<li>Term Length</li>";
			missingField = false;
		}
		if ((document.getElementById('tradeinInput').value=="")||(document.getElementById('tradeinInput').value==null)){
			missinFieldsMessage= missinFieldsMessage + "<li>Trade-In Value</li>";
			missingField = false;
		}
		if ((document.getElementById('downPymtInput').value=="")||(document.getElementById('downPymtInput').value==null)){
			missinFieldsMessage= missinFieldsMessage + "<li>Down Payment</li>";
			missingField = false;
		}
		if(!missingField){
			missinFieldsMessage= missinFieldsMessage + "</ul>";
			document.getElementById('emptyFieldsMessage').innerHTML=missinFieldsMessage;
			hideAndShow('frmMonthlyPay','emptyFieldsMessage');
			changeDisplay('emptySubmit', 'block');
		}

		return missingField;
	}

	function isNumberKey(evt){
	   var charCode = (evt.which) ? evt.which : evt.keyCode
	   if (charCode > 31 && (charCode < 48 || charCode > 57))
	      return false;

	   return true;
	}

	function changeDisplay(element, show){
		document.getElementById(element).style.display = show;
	}

	function showRegions(){
		if(document.frmOffer.offersInput.value.length == 5){
			//hideAndShow('frmOffer','regionsInfo');
			document.getElementById("bShowRegion").value="Update";
			changeDisplay('linksInfo', 'none');
			document.getElementById("offersInputR").value = document.getElementById("offersInput").value;
			document.getElementById("zipCode").value = document.getElementById("offersInput").value;
			document.getElementById("submitOffers").style.display = "none";
			getNextCOStep('offersInput','zipcode');
		}
	}

	//Insert CO (makeRequest())
	function insertOffer(){
		checkModel(document.getElementById("model").value);
		document.getElementById("zipCode").value = document.getElementById("offersInput").value;
		var zipCodeT = document.getElementById("offersInputR").value;
		var regionT = document.getElementById("region").value;
		var yearT = document.getElementById("year").value;
		var makeT = document.getElementById("make").value;
		var modelT = document.getElementById("model").value;
		var trimT = document.getElementById("trim").value;
		makeRequest(BASE_CONTEXT + "/pages/overview/displayCO.do?zipCode="+zipCodeT+"&region="+regionT+"&year="+yearT+"&make="+makeT.toLowerCase()+"&model="+modelT+"&trim="+trimT,"parseOffersComplete","xml","offerLoadFail");
	}

	/************Parse Offers**********/
	function parseOffersComplete(xmlDoc){
		var NA = "Not Availible";
		var error = xmlDoc.getElementsByTagName("error");
		if(error.length>0){
			//messageFailVehicle(VEHICLE_PARSE_ERROR);
			return;
		}
		data = new Array();
		try{
			data[0] = xmlDoc.getElementsByTagName('brand').item(0).childNodes.item(0).data;
		}catch(e){
			data[0] = NA;
		}
		try{
			data[1] = xmlDoc.getElementsByTagName('apr36').item(0).childNodes.item(0).data;
		}catch(e){
			data[1] = NA;
		}
		try{
			data[2] = xmlDoc.getElementsByTagName('apr48').item(0).childNodes.item(0).data;
		}catch(e){
			data[2] = NA;
		}
		try{
			data[3] = xmlDoc.getElementsByTagName('apr60').item(0).childNodes.item(0).data;
		}catch(e){
			data[3] = NA;
		}
		try{
			data[4] = xmlDoc.getElementsByTagName('apr72').item(0).childNodes.item(0).data;
		}catch(e){
			data[4] = NA;
		}
		try{
			data[5] = xmlDoc.getElementsByTagName('aprDisc').item(0).childNodes.item(0).data;
		}catch(e){
			data[5] = NA;
		}
		try{
			data[6] = xmlDoc.getElementsByTagName('bonusCash').item(0).childNodes.item(0).data;
		}catch(e){
			data[6] = NA;
		}
		try{
			data[7] = xmlDoc.getElementsByTagName('bonusEndDate').item(0).childNodes.item(0).data;
		}catch(e){
			data[7] = NA;
		}
		try{
			data[8] = xmlDoc.getElementsByTagName('cashAllowance').item(0).childNodes.item(0).data;
		}catch(e){
			data[8] = NA;
		}
		try{
			data[9] = xmlDoc.getElementsByTagName('cashAllowanceEndDate').item(0).childNodes.item(0).data;
		}catch(e){
			data[9] = NA;
		}
		try{
			data[10] = xmlDoc.getElementsByTagName('cashDisclaim').item(0).childNodes.item(0).data;
		}catch(e){
			data[10] = NA;
		}
		try{
			data[11] = xmlDoc.getElementsByTagName('dealerCash').item(0).childNodes.item(0).data;
		}catch(e){
			data[12] = NA;
		}
		try{
			data[13] = xmlDoc.getElementsByTagName('desc').item(0).childNodes.item(0).data;
		}catch(e){
			data[13] = NA;
		}
		try{
			data[14] = xmlDoc.getElementsByTagName('gmacBonus').item(0).childNodes.item(0).data;
		}catch(e){
			data[14] = NA;
		}
		try{
			data[15] = xmlDoc.getElementsByTagName('gmacEndDate').item(0).childNodes.item(0).data;
		}catch(e){
			data[15] = NA;
		}
		try{
			data[16] = xmlDoc.getElementsByTagName('totalCash').item(0).childNodes.item(0).data;
		}catch(e){
			data[16] = NA;
		}
		showOffersDetail(data);
	}

	function showOffersDetail(data){
		hideAndShow('regionsInfo','offers');
		var exp = "";
		var cashAllowance = "";
		var bonusCash = "";
		var apr = "";
		var aprMonths = "";
		var aprText = "";
		var result = "";
		var temp = "";

		//if BonusCash != "0" or ""
		if(data[8] != "" || data[8] != "$0"){
			cashAllowance = "<li>" + data[8] + " Cash Allowance (" + data[10] +")</li>";
			bonusCash = "<li>" + data[6] + " Bonus Cash</li>";
		}else if(data[16] != "" || data[16] != "$0") {
			cashAllowance = "<li>" + data[16] + " Cash Allowance (" + data[10] +")</li>";
		}

		//Apr36 = data[1], Apr48 = data[2], Apr60 = data[3], Apr72 = data[4]
		if(data[1] ==  data[2] && data[2] == data[3] && data[3] == data[4]){
			apr = data[4];
			aprMonths = "72";
		}else if(data[1] == data[2] && data[2] == data[3] && data[3] != data[4]){
			apr = data[3];
			aprMonths = "60";
		}else if( data[1] ==  data[2] && data[2] != data[3]){
			apr = data[2];
			aprMonths = "48";
		}else{
			apr = data[1];
			aprMonths = "36";
		}

		if(apr != ""){
			aprText = "<li>As low as "+ apr +"% APR ("+data[5]+") for "+ aprMonths +" months for qualified buyers</li>";
		}
		result = "<p>Price including offers (exp." + data[7] + ")</p><a id='showOffers' href='javascript:showOffers();'>See Offers Details V</a><a id='closeOffers' href='javascript:hideOffers();' style='display:none; margin-left:160px;'>Close</a><div id='incentives' style='display:none;'>"+ cashAllowance;
		if(cashAllowance != ""){
			if(bonusCash != ""){
				result = result + "<span>AND</span>" + bonusCash;
			}
			result = result + "<span>OR</span>"
		}
		result = result + aprText;
		if(bonusCash != ""){
			result = result + "<span>AND</span>" + bonusCash;
		}
		document.getElementById("offers").innerHTML = result + "</div>";
		changeDisplay('linksInfo', 'block');
	}

	//Fail Ajax Request for Offers
	function offerLoadFail(){
		document.getElementById("offers").innerHTML = "";
	}

	//Fix Regions
	function changeRegionOffer(region){
		switch(region){
			case "SOUTH CENTRAL":
				region = "southcentral";
				break;
			case "NORTH CENTRAL":
				region = "northcentral";
				break;
			case "NORTH CENTRAL - WEST":
				region = "northcentralwest";
				break;
			case "NORTH CENTRAL - EAST":
				region = "northcentraleast";
				break;
			default:
				region = region.toLowerCase();
				break;
		}
		return region;
	}

	//Fix model and trim
	function checkModel(model){
		switch(model){
			case "g6sedan":
				document.getElementById("model").value = "G6";
				document.getElementById("trim").value = "Sedan";
				break;
		}
	}
///////////////////////////////////////////////////////////////////////
//////////////////////////Overview promotiles//////////////////////////
//////////////////////////////////////////////////////////////////////
//-->

function setTile(){
  var info = document.getElementById("MO_Tiles").getElementsByTagName("li");
  var random = parseInt(Math.random() * (info.length));
  random=random+1;
  document.getElementById("MO_Tile"+random).className = 'showImage';
  /*document.getElementById("MO_Tile"+random).style.display='block';
  var aux = info[random].getElementsByTagName("span");
  var anchor = '<a href="'+aux[0].innerHTML+'"><img src="'+aux[1].innerHTML+'" alt="PromoTile" /></a>';
  document.getElementById(imageContainer).innerHTML = anchor;
  document.getElementById("pWellFeatures").style.cursor = "pointer";

  document.getElementById("offersInput").onclick = function(){showhideZip();};
  document.getElementById("offersInput").onblur = function(){showhideZip();};
  document.getElementById("requestaBrochure").target = "_blank";*/
}

function setPromo(container,image){
  document.getElementById(container).style.background = "url("+image+")";
  document.getElementById(container).style.backgroundRepeat = "no-repeat";
}

function changeLowerPromo(container,textContainer){
  var info = document.getElementById("lowerPromoInfo").getElementsByTagName('a');
  var random = parseInt(Math.random() * (info.length - 1));
  var anchor = '<a href="'+info[random]+'" target="_blank"><div id="'+container+'" class="lowerPromo"><span id="'+textContainer+'">'+info[random].innerHTML+'</span></div></a>';
  document.getElementById(container).parentNode.innerHTML = anchor;
}

function showhideZip(){
  var zip = 'Zip';
  obj = document.getElementById("offersInput");
  if (obj.value == zip) obj.value="";
  else
    if (obj.value.trim() == "") obj.value=zip;
}