// Constructor for Vehicle Object 
	function Vehicle (code, name, division) {
		this.code = code;
		this.name = name;
		this.division = division;
	}
	
	// Global Variables
	var numYears = 1;
	
	// Create One Dimensional Arrays of size 'numYears'
	var VehicleArray = new Array(eval(numYears));
	var YearArray = new Array(eval(numYears));
	var vcnt = 0;
	var selectedVehicleCode = "";
		
	for (i=0; i<numYears; i++) {
		YearArray[i] = eval(2006 - i);
	}
	 
	// For each Year, select the vehicle info needed to populate Select Control
	
	// Create a 2nd Dimension for each Year to hold vehicles
	VehicleArray[vcnt] = new Array();
	var ncnt=0;
	
	// Instaniate a new 2006 "Vehicle" and stuff it into the 2 Dim Array
	VehicleArray[vcnt][ncnt++]= new Vehicle("zephyr", "Lincoln Zephyr", "L");
	VehicleArray[vcnt][ncnt++]= new Vehicle("lincolnls", "Lincoln LS", "L");
	VehicleArray[vcnt][ncnt++]= new Vehicle("marklt", "Lincoln Mark LT", "L");
	VehicleArray[vcnt][ncnt++]= new Vehicle("navigator", "Lincoln Navigator", "L");
	VehicleArray[vcnt][ncnt++]= new Vehicle("towncar", "Lincoln Town Car", "L");
	vcnt++;
	
	// Create a 2nd Dimension for each Year to hold vehicles
	VehicleArray[vcnt] = new Array();
	var ncnt=0;
	
	// Instaniate a new 2005 "Vehicle" and stuff it into the 2 Dim Array
	//VehicleArray[vcnt][ncnt++]= new Vehicle("aviator", "Lincoln Aviator", "L");	
	//vcnt++;
	
	/* Functions */
	// 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 ("A\361o " + year + " no se encontr\363. Contacta al Administrador");
		return -1;
	}
	
	// Update Year Select Box with Avaiable Years for this Vehicle code
	function displayYears(sVehicleCode) {
		var size=0;
		selectedVehicleCode = sVehicleCode;
		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 == selectedVehicleCode) {
					document.GetIncentives.txtYear.length=eval(++size);
					document.GetIncentives.txtYear.options[size-1].value = YearArray[i];
					document.GetIncentives.txtYear.options[size-1].text = YearArray[i];
					done = true;
				}	
			}
		}
		return;
	}
	
	// Update the Vehicle Select Box with Model Names for specified year	
	function displayVehicles(year) {
		var y=getIndexFromYear(year);
		var numVehicles = VehicleArray[y].length; //Number of vehicles for year
		
		document.GetIncentives.cboVehicle.length = numVehicles;
		
		for (i=0; i< numVehicles; i++) {
			document.GetIncentives.cboVehicle.options[i].value = VehicleArray[y][i].code;
			document.GetIncentives.cboVehicle.options[i].text = VehicleArray[y][i].name;
			if (selectedVehicleCode == VehicleArray[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<VehicleArray[i].length && !done; j++) {
				if (VehicleArray[i][j].code == code) {
					returnCode = VehicleArray[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 setHiddenValues(sVehicleName) {
		/*********************************************************
		Version: 2.0
		Date: 11-15-2004
		Desc: Sets special incentive code for selected vehicle
		***********************************************************/
		displayYears(sVehicleName);
	}
	
	function specOfferForm() {
		if( !submitButtonChecked ) {
			submitButtonChecked = true;
			if (!IsZipCode(document.forms["GetIncentives"].zip.value)) {
				document.forms["GetIncentives"].zip.focus();
				txtZipError.innerHTML = "&nbsp;&nbsp;Please enter a valid zip code.";
				submitButtonChecked = false;
				return false;
			} else if (document.forms["GetIncentives"].vehicle.value == "none") {
				txtZipError.innerHTML = "";
				txtVehicleError.innerHTML = "&nbsp;&nbsp;Please select a vehicle.";
				document.forms["GetIncentives"].vehicle.focus();
				submitButtonChecked = false;
				return false;
			} else {
				txtZipError.innerHTML = "";
				txtVehicleError.innerHTML = "";
				metricsFunction( 'ExitTo','SpecialOffers' );
				getIncentive(document.GetIncentives.serviceID.value, document.GetIncentives.ModelYear.options[document.GetIncentives.ModelYear.selectedIndex].value, document.GetIncentives.vehicleCode.value, document.GetIncentives.zip.value, document.GetIncentives.brand.value )
				return false;
			}
		}
	}

	function getIncentive(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);
	}

	var submitButtonChecked = false;
	
// 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='http://www.lincoln.com/ServicePortal/images/MSIE_Update.jpg' width=90 height=45 border=2 alt='Descargas de Internet Explorer'></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
