// Constructor for Vehicle Object 
	function Vehicle (modelYear, code, name, division) {
		this.modelYear = modelYear;
		this.code = code;
		this.name = name;
		this.division = division;
	}
	
	/* Functions */
	
	function initialize(){
		drawYearFormField();
		drawVehicleFormField(document.GetIncentives.txtYear.options[document.GetIncentives.txtYear.selectedIndex].value);
	}
	
	// Return 1st Dimension index of YearArray for specified year
	function getIndexFromYear( year ) {
		for (i=0; i < YearArray.length; i++) {
			if (YearArray[i] == eval(year)) return i;
		}
		alert ("Year " + year + " not found. Contact Administrator.");
		return -1;
	}

	function drawYearFormField() {	 
		 
		var size=0;
		for (i=0; i < modelYearArray.length; i++) {
			document.GetIncentives.txtYear.length=eval(++size);
			document.GetIncentives.txtYear.options[size-1].value = modelYearArray[i];
			document.GetIncentives.txtYear.options[size-1].text = modelYearArray[i];
			
			if (sYear.length>0 && modelYearArray[i].indexOf(sYear)!=-1){
				document.GetIncentives.txtYear.selectedIndex = i;
			}
		}		
	}
	
	function drawVehicleFormField(selectedModelYear, sSelectedValue) {
		var size=0;
		var selectedYear = selectedModelYear;
		 
		for (i=0; i < vehiclesArray.length; i++) {
			if( vehiclesArray[i].modelYear == selectedYear ) {
				document.GetIncentives.cboVehicle.length=eval(++size);
				document.GetIncentives.cboVehicle.options[size-1].value = vehiclesArray[i].code;
				document.GetIncentives.cboVehicle.options[size-1].text = vehiclesArray[i].name;
				 
				if(document.GetIncentives.cboVehicle.options[size-1].value == sSelectedValue){
					document.GetIncentives.cboVehicle.options[size-1].selected = true;
				}
			}
		}
	}

	function displayYears(sVehicleCode) {
	     
		for (i=0; i < numYears; i++) {
			for (j=0;j<vehiclesArray[i].length; j++) {
				document.GetIncentives.txtYear.options[i].value = modelYearArray[i];
			    document.GetIncentives.txtYear.options[i].text = modelYearArray[i];
				if (vehiclesArray[i][j].code == selectedVehicleCode) {
					document.GetIncentives.txtYear.options[i].selected = true;
				}	
			}
		}
		return;
	}
	
	// Update the Vehicle Select Box with Model Names for specified year	
	function displayVehicles(year) {
		var y=getIndexFromYear(year);
		var numVehicles = vehiclesArray[y].length; //Number of vehicles for year		
		document.GetIncentives.cboVehicle.length = numVehicles;
		
		for (i=0; i< numVehicles; i++) {
			document.GetIncentives.cboVehicle.options[i].value = vehiclesArray[y][i].code;
			document.GetIncentives.cboVehicle.options[i].text = vehiclesArray[y][i].name;
			if (selectedVehicleCode == vehiclesArray[y][i].code)
				document.GetIncentives.cboVehicle.options[i].selected = true;
		}
		return;
	}
	
	//Function to check the Vehicle Objects property and return the division that the vehicle belongs to.
	function adjustDivision(code) {
		var size=0;
		selectedVehicleCode = code;
		var done = false;
		var returnCode = '';
		
		for (i=0; i < numYears; i++) {
			
			for (j=0,done=false; j<vehiclesArray[i].length && !done; j++) {
				if (vehiclesArray[i][j].code == code) {
					returnCode = vehiclesArray[i][j].division;
					done = true;
				}	
			}
		}
		return returnCode;
	}
	
	function adjustModelYear(strActionType) {
		if (strActionType != 'LclEvents') {
			var d = document.GetIncentives;
			displayYears(d.specialoffer_model.options[d.specialoffer_model.selectedIndex].value);
		}
		return;
	}
	
	function getIncentive2(ServiceId, ModelYear, VehicleCode, Zip, Division) {
		// Parameters
		// ServiceId:   integer - Provided by Coolfire Interactive
		// ModelYear:   char    - formated YYYY
		// VehicleCode: char    - Six character vehiclecode provided by Coolfire Interactive
		// Zip:         char    - Five character Zip Code Form Field provided by User
		
		windowName = "Incentives";
		windowProperties = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=500,height=500,left=80,top=10";
		
		QueryString = "Vehicle=" + VehicleCode + "&ModelYear=" + ModelYear + "&Zip=" + Zip + "&Division=" + Division;
		CallServicePortal(ServiceId, QueryString, windowName, windowProperties);
	}
	
	/*
	function	(sRefBase) {
		if (!validateZIP(document.forms["GetIncentives"].txtZip.value)) {
			document.forms["GetIncentives"].txtZip.focus();
		} else if (document.forms["GetIncentives"].cboVehicle.value == "none") {
			alert("Please select a vehicle in order to proceed.");
			document.forms["GetIncentives"].cboVehicle.focus();
		} else {
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sVehicle = document.forms["GetIncentives"].cboVehicle.value
			if((sVehicle == "zephyr") || (sVehicle == "milan")) {
				sPage = "lease";
			} else {
				sPage = "buy";
			}
			sBrandReferrer = sRefBase;
			if(sBrand == "mercuryvehicles.com") {
				sBrandReferrer = sBrandReferrer + "_M"+ "_" + sVehicle +"SO_20060918";
			} else {
				sBrandReferrer = sBrandReferrer + "_L"+ "_" + sVehicle +"SO_20060918";
			}
			var sReferrer = document.forms["GetIncentives"].serviceID.value;
			var sDomain = document.forms["GetIncentives"].domain.value;
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sIncentivePage = "http://"+ sDomain +"." + sBrand + "/shoptools/incentives.asp?referrer=" + sReferrer + "&sReferrer=" + sBrandReferrer;
			//alert("sIncentivePage = " + sIncentivePage);
			document.forms["GetIncentives"].page.value = sPage;
			document.forms["GetIncentives"].action = sIncentivePage;
			document.forms["GetIncentives"].submit();
		}
	}
	
	function SubmitToISIS() {
		if (!validateZIP(document.forms["GetIncentives"].txtZip.value)) {
			document.forms["GetIncentives"].txtZip.focus();
		} else if (document.forms["GetIncentives"].cboVehicle.value == "none") {
			alert("Please select a vehicle in order to proceed.");
			document.forms["GetIncentives"].cboVehicle.focus();
		} else {
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sVehicle = document.forms["GetIncentives"].cboVehicle.value
			if((sVehicle == "zephyr") || (sVehicle == "milan")) {
				sPage = "lease";
			} else {
				sPage = "buy";
			}
			if(sBrand == "mercuryvehicles.com") {
				sBrandReferrer = "B_AARLandingPage_M"+ sVehicle +"Home_"+ sVehicle +"SO_20060915";
			} else {
				sBrandReferrer = "B_AARLandingPage_L"+ sVehicle +"Home_"+ sVehicle +"SO_20060915";
			}
			var sReferrer = document.forms["GetIncentives"].serviceID.value;
			var sDomain = document.forms["GetIncentives"].domain.value;
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sIncentivePage = "http://"+ sDomain +"." + sBrand + "/shoptools/incentives.asp?referrer=" + sReferrer + "&sReferrer=" + sBrandReferrer;
			//alert("sIncentivePage = " + sIncentivePage);
			document.forms["GetIncentives"].page.value = "lease";
			document.forms["GetIncentives"].action = sIncentivePage;
			document.forms["GetIncentives"].submit();
		}
	}
	
	function SubmitToISISFromLMAHomePage() {
		if (!validateZIP(document.forms["GetIncentives"].txtZip.value)) {
			document.forms["GetIncentives"].txtZip.focus();
		} else if (document.forms["GetIncentives"].cboVehicle.value == "") {
			alert("Please select a vehicle in order to proceed.");
			document.forms["GetIncentives"].cboVehicle.focus();
		} else {
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sVehicle = document.forms["GetIncentives"].cboVehicle.value
			if((sVehicle == "mkz") || (sVehicle == "milan")) {
				sPage = "lease";
			} else {
				sPage = "buy";
			}
			if(sBrand == "mercuryvehicles.com") {
				sBrandReferrer = "B_LMAPlan_M"+ sVehicle +"Home_"+ sVehicle +"SO_20060915";
			} else {
				sBrandReferrer = "B_LMAPlan_L"+ sVehicle +"Home_"+ sVehicle +"SO_20060915";
			}
			var sReferrer = document.forms["GetIncentives"].serviceID.value;
			var sDomain = document.forms["GetIncentives"].domain.value;
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sIncentivePage = "http://"+ sDomain +"." + sBrand + "/shoptools/incentives.asp?referrer=" + sReferrer + "&sReferrer=" + sBrandReferrer;
			//alert("sIncentivePage = " + sIncentivePage);
			document.forms["GetIncentives"].page.value = sPage;
			document.forms["GetIncentives"].action = sIncentivePage;
			document.forms["GetIncentives"].submit();
		}
	}
	
	function SubmitToISISFromLMHomePage() {
		if (!validateZIP(document.forms["GetIncentives"].txtZip.value)) {
			document.forms["GetIncentives"].txtZip.focus();
		} else if (document.forms["GetIncentives"].cboVehicle.value == "") {
			alert("Please select a vehicle in order to proceed.");
			document.forms["GetIncentives"].cboVehicle.focus();
		} else {
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sVehicle = document.forms["GetIncentives"].cboVehicle.value
			if((sVehicle == "mkz") || (sVehicle == "milan")) {
				sPage = "lease";
			} else {
				sPage = "buy";
			}
			if(sBrand == "mercuryvehicles.com") {
				sBrandReferrer = "B_LandingPage_M"+ sVehicle +"Home_"+ sVehicle +"SO_20060915";
			} else {
				sBrandReferrer = "B_LandingPage_L"+ sVehicle +"Home_"+ sVehicle +"SO_20060915";
			}
			var sReferrer = document.forms["GetIncentives"].serviceID.value;
			var sDomain = document.forms["GetIncentives"].domain.value;
			var sBrand = document.forms["GetIncentives"].brand.value;
			var sIncentivePage = "http://"+ sDomain +"." + sBrand + "/shoptools/incentives.asp?referrer=" + sReferrer + "&sReferrer=" + sBrandReferrer;
			//alert("sIncentivePage = " + sIncentivePage);
			document.forms["GetIncentives"].page.value = sPage;
			document.forms["GetIncentives"].action = sIncentivePage;
			document.forms["GetIncentives"].submit();
		}
	}
	
	function SubmitToISIS_2(sBrand, sVehicle) {
		if (!validateZIP2(document.forms["GetIncentives"].txtZip.value)) {
			document.getElementById("zip_error").style.color = "#FF0000";
			document.forms["GetIncentives"].txtZip.focus();
			bSubmit = false;
		} else {
			document.getElementById("zip_error").style.color = "#000000";
			bSubmit = true;
		}
		
		if(bSubmit) {
			document.getElementById("error_text").innerHTML = "Please be patient while we locate your incentives...";
			var sDomain = document.forms["GetIncentives"].domain.value;
			var sIncentivePage = "http://"+ sDomain +"." + sBrand + ".com/shoptools/incentives.asp";
			//alert("sIncentivePage = " + sIncentivePage);
			document.forms["GetIncentives"].cboVehicle.value = sVehicle;
			document.forms["GetIncentives"].action = sIncentivePage;
			document.forms["GetIncentives"].submit();
		}
	}
	*/
	
	function setHiddenValuesLMA(sVehicleName) {
		/*********************************************************
		Version: 2.0
		Date: 11-15-2004
		Desc: Sets special incentive code for selected vehicle
		***********************************************************/
		if((sVehicleName == "mkz") || (sVehicleName == "mkx") || (sVehicleName == "navigator") || (sVehicleName == "marklt") || (sVehicleName == "towncar") || (sVehicleName == "lincolnls") || (sVehicleName == "zephyr")) {
			document.GetIncentives.brand.value = "lincoln.com";
		} else {
			document.GetIncentives.brand.value = "mercuryvehicles.com";
		}
		document.GetIncentives.serviceID.value = "lmaplan";
	}
	
	function setHiddenValuesAAR(sVehicleName) {
		/*********************************************************
		Version: 2.0
		Date: 11-15-2004
		Desc: Sets special incentive code for selected vehicle
		***********************************************************/
		if((sVehicleName == "mkz") || (sVehicleName == "mkx") || (sVehicleName == "navigator") || (sVehicleName == "marklt") || (sVehicleName == "towncar") || (sVehicleName == "lincolnls") || (sVehicleName == "zephyr")) {
			document.GetIncentives.brand.value = "lincoln.com";
		} else {
			document.GetIncentives.brand.value = "mercuryvehicles.com";
		}
		document.GetIncentives.serviceID.value = "lincolnmercury";
	}
	
	function setVehiclesLMA(sModelYear) {
		var size=0;
		selectedModelYear = sModelYear;
		var done = false;
		for (i=0; i < numYears; i++) {
			for (j=0,done=false; j<VehicleArray[i].length && !done; j++) {
				if (VehicleArray[i][j].code == selectedModelYear) {
					document.GetIncentives.cboVehicle.length=eval(++size);
					document.GetIncentives.cboVehicle.options[size-1].value = VehicleArray[i][j];
					document.GetIncentives.cboVehicle.options[size-1].text = VehicleArray[i][j];
					done = true;
				}	
			}
		}
		return;
	}
		
	function setHiddenValues(sVehicleName) {
		/*********************************************************
		Version: 2.0
		Date: 11-15-2004
		Desc: Sets special incentive code for selected vehicle
		***********************************************************/
		/**
		if((sVehicleName == "zephyr") || (sVehicleName == "navigator") || (sVehicleName == "marklt") || (sVehicleName == "towncar") || (sVehicleName == "mkx") || (sVehicleName == "mkz")) {
			document.GetIncentives.brand.value = "lincoln.com";
		} else {
			document.GetIncentives.brand.value = "mercuryvehicles.com";
		}
		document.GetIncentives.serviceID.value = "lincolnmercury";
		**/
		displayYears(sVehicleName);
	}
	
	function chkSpecZip() {
		/*********************************************************
		Version: 1.0
		Date: 11-15-2004
		Desc: checks for valid zipcode in incentives application
		***********************************************************/
		if (!validateZIP(document.forms["GetIncentives"].zip.value)) {
			document.forms["GetIncentives"].zip.focus();
			return false;
		} else if (document.forms["GetIncentives"].vehicle.value == "none") {
			alert("Please select a vehicle in order to proceed.");
			document.forms["GetIncentives"].vehicle.focus();
			return false;
		} else {
			return true;
		}
	}
	
	function chkSpecZip2() {
		/***************************************************************
		Version: 1.0
		Date: 10-20-2006
		Desc: checks for valid zipcode on new vehicle selection form
		*****************************************************************/
		return true;
	}

// Content included from http://lmincentives.dealerconnection.com/ServicePortal/encode.js to address some performance issues inside the Ford network - SG
// May need to be updated from time to time.

// The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)
// See:  http://www.msc.cornell.edu/~houle/javascript/randomizer.html

function fnSvcPrtl(Event, Zip)
{
	var windowName = "Incentive";
//	var windowProperties = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=790,height=700,left=80,top=10";
	var windowProperties = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=500,height=550,left=80,top=10";
	var ServiceId; var strParms;
	if (Event == 'AOL_Monterey') {
	  ServiceId = '47'; strParms = 'Division=L&vehicle=115102&modelyear=2004&Zip='+Zip;
	}
	else {
	  return false;
	}

	CallServicePortal(ServiceId, strParms, windowName, windowProperties);
}


var browser = navigator.appName;
var appversion = navigator.appVersion;
var UpgradeBrowser=false;
var EncodedString = "";
rnd.today=new Date();
rnd.seed=rnd.today.getTime();

// Check for known Browser Configs that don't support winHndl.document.formname.submit()
if (browser == 'Microsoft Internet Explorer') 
{
	x=appversion.indexOf('MSIE');
	version=appversion.substring(x+5,x+8);
	if (eval(version) < 5)
	{
		UpgradeBrowser=true;
	}
}

function dispUpgradeBrowser(windowName)
{
	windowProperties = "toolbar=1,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=600,height=550";
	winHndl = window.open ("", windowName, windowProperties);
	winHndl = winHndl.document;
		
	winHndl.write("<html><head><title>Upgrade Browser</title><body>");
	winHndl.write("<br><br><br><div align=center>");
	winHndl.write("This page does not function properly with versions of <br>Microsoft Internet Explorer earlier than 5.0<br>");
	winHndl.write("Please upgrade your version of Internet Explorer<br><br>");
	winHndl.write("<a href='http://www.microsoft.com/windows/ie/downloads/default.asp'><img src='../ServicePortal/images/MSIE_Update.jpg' width=90 height=45 border=2 alt='IE Downloads'></a>");
	winHndl.write("<br><b>Click here to <br>download the latest version of IE!</b>");
	winHndl.write("</div></body></html>");	

	return;
}

function pad (val)
{	
	val = val.toString();
	 
	if (val.length < 2)
	{
		 val = "0"+val.toString();
	}
	
	return val.toString();
}
        
function CallServicePortal(ServiceId, QueryString, windowName, windowProperties)
{
	if (UpgradeBrowser)
	{
		dispUpgradeBrowser(windowName);
		return;
	}
		
	var AddVal;
	var datenow=new Date();
	
	MM = eval(datenow.getMonth() + 1);
	DD = datenow.getDate();
	YY = datenow.getYear().toString();
	hh = datenow.getHours();
	nn = datenow.getMinutes();
	ss = datenow.getSeconds();
	
	YY = YY.substring(2,4);
	
	message=pad(hh)+pad(DD)+pad(YY)+pad(MM)+pad(ss)+pad(nn);
		
	AddVal=((eval(message.substring(0,2))*3600+eval(message.substring(10,12))*60+eval(message.substring(8,10))) % 16) +1;
			
	DateKey=encode(message,0)
	AccessCode=encode("Coolfire Interactive - evitcaretnI eriflooC",AddVal)
	
	if (browser == 'Microsoft Internet Explorer')
	{
		winHndl = document;
		winHndl.write("<form method='post' action='http://lmincentives.dealerconnection.com/serviceportal/datekey.cfm?' name='serviceportal'>");
		winHndl.write("<input type='hidden' name='dk' value='"+DateKey+"'>");
		winHndl.write("<input type='hidden' name='ac' value='"+AccessCode+"'>");
		winHndl.write("<input type='hidden' name='si' value='"+ServiceId+"'>");
		winHndl.write("<input type='hidden' name='qs' value='"+QueryString+"'>");
		winHndl.write("</form>");
		winHndl.forms.serviceportal.submit();
	}
	else
	{
		var url = 'http://lmincentives.dealerconnection.com/ServicePortal/Datekey.cfm?dk='+DateKey+'&ac='+AccessCode+'&si='+ServiceId+'&'+QueryString;
		window.location.href=url;
	}


//	winHndl = window.open ("", windowName, windowProperties);
//	winHndl = winHndl.document;
//	
//	winHndl.write("<html><head><title>Incentives</title></head><body onload='document.serviceportal.submit();'>");
//	winHndl.write("<form method='post' action='http://lmincentives.dealerconnection.com/serviceportal/datekey.cfm' name='serviceportal'>");
//	winHndl.write("<input type='hidden' name='dk' value='"+DateKey+"'>");
//	winHndl.write("<input type='hidden' name='ac' value='"+AccessCode+"'>");
//	winHndl.write("<input type='hidden' name='si' value='"+ServiceId+"'>");
//	winHndl.write("<input type='hidden' name='qs' value='"+QueryString+"'>");
//	winHndl.write("</form>");
//	//winHndl.forms[0].submit();
//	//winHndl.serviceportal.submit();
//	winHndl.write("</body></html>");
//	winHndl.close();
}

function CallServicePortal2(ServiceId, QueryString, windowName, windowProperties)
{
	if (UpgradeBrowser)
	{
		dispUpgradeBrowser(windowName);
		return;
	}
		
	var AddVal;
	var datenow=new Date();
	MM = eval(datenow.getMonth() + 1);
	DD = datenow.getDate();
	YY = datenow.getYear().toString();
	hh = datenow.getHours();
	nn = datenow.getMinutes();
	ss = datenow.getSeconds();
	
	YY = YY.substring(2,4);
	
	message=pad(hh)+pad(DD)+pad(YY)+pad(MM)+pad(ss)+pad(nn);
		
	AddVal=((eval(message.substring(0,2))*3600+eval(message.substring(10,12))*60+eval(message.substring(8,10))) % 16) +1;
			
	DateKey=encode(message,0)
	AccessCode=encode("Coolfire Interactive - evitcaretnI eriflooC",AddVal)
	
	
	if (browser == 'Microsoft Internet Explorer')
	{
		document.serviceportal.dk.value = DateKey;
		document.serviceportal.ac.value = AccessCode;
		document.serviceportal.si.value = ServiceId;
		document.serviceportal.qs.value = QueryString;
		document.serviceportal.submit();
	}
	else
	{
		var url = 'http://lmincentives.dealerconnection.com/ServicePortal/Datekey.cfm?dk='+DateKey+'&ac='+AccessCode+'&si='+ServiceId+'&'+QueryString;
		window.location.href=url;
	}
} 

function rnd() {
        rnd.seed = (rnd.seed*9301+49297) % 233280;
        return rnd.seed/(233280.0);
}

function rand(number) {
        return Math.ceil(rnd()*number);
}

// end central randomizer.

function makeHex(n) { // only works on 0 to 256

 var Digits="0123456789ABCDEF";
 var LSN = Digits.charAt(n % 16);
 var MSN = Digits.charAt(n / 16);
 
 return MSN + LSN;
}

function encode (StringIn,AddVal)
{
	// if method == 1, set hidden field1 and return add value
	// if method ==2, set hidden field2
	
	a = 1;
	StringOut = "";
	
   while (1==1)
   {
   
	    RandLen = (rand(64) + 64);
	    if (RandLen > (StringIn.length - a)) 
		{
			RandLen = StringIn.length - a;
		}
	    
	    if (AddVal==0)
		{
		RandAdd = rand(16);
	    }
		else
		{
		RandAdd=AddVal;	
		}
		
		HexRandAdd = makeHex(RandAdd);
	    	    
		Minus = 0;
	    end = eval(a + RandLen - 1);
		var i;
		
		for(i=a-1;i<=end;i++)
		{
	        val=StringIn.charCodeAt(i);
	       	 
		    if ((val < 32) || (val > 126)) 
			{
	            Minus = Minus + 1;
	        }
			else
			{
	            val = makeHex(val + RandAdd);
	        	StringOut = StringOut + val;
			}
	    }
	    
	    HexRandLen = makeHex(RandLen + 1 - Minus);
	   	    
	    EncodedString = HexRandLen + HexRandAdd + StringOut;
	    
	    StringOut = "";
	    
	    a = a + RandLen;
		
   		if (a >= StringIn.length) 
		{
			break; // Exit While loop
		}	
		
	} // End While (true)
	
	return EncodedString;
	
} // End encode function
