	self.carscom = self.carscom || {};

	carscom.mkidh = "";
	carscom.mdidh = "";
	carscom.mdnmh = "";
	carscom.mknmh = "";
	carscom.searchTypeh = "85";
	carscom.cpoh = "false";
	carscom.nclph = "true";
	carscom.tracktypeh = "newcc";
	carscom.usedCpoMakes = new Array("Cadillac","Chevrolet","Dodge","GMC","Honda","Hummer","Nissan","Subaru","Toyota");
	carscom.toughCookie = grabCookie("searchClosed");  
    carscom.foo = {test:'yes'};
	
	// The trucksSessionInfo cookie is a duplicate of SessionInfo, except it handles subdomains
  document.cookie = "trucksSessionInfo=" + grabCookie("SessionInfo") + ";path=/;domain=" + location.hostname.match(/\.[\w\W]+\.\w{3}$/);
  document.cookie = "truckszipcode=" + grabCookie("zipcode") + ";path=/;domain=" + location.hostname.match(/\.[\w\W]+\.\w{3}$/);
		
	
	if (window.location.href.indexOf('for-sale') != -1 || window.location.href.indexOf('search') != -1) {
		carscom.toughCookie = "btn-slide";
	} 
	if (carscom.toughCookie == "btn-slide") {
		document.write('<style type="text/css">#search-module { display: none }</style>');
		$(".btn-slide").removeClass("active");
	}
	if (carscom.toughCookie == "btn-slide active") {
		document.write('<style type="text/css">#search-module { display: block }</style>');
		$(".btn-slide").addClass("active");
	}
	
	
	
function toggleNew(frm,source) {
	var aForm = eval("document."+frm);
	aForm.make.options.length = 0;
	aForm.model.options.length = 0;
	aForm.make.options[0] = new Option("Select a make");
	aForm.model.options[0] = new Option("Select a model");
	carscom.searchTypeh = "85";
	carscom.cpoh = "false";
	carscom.nclph = "true";
	carscom.tracktypeh = "newcc";
	populateMakesh(frm, source);
}
function toggleUsed(frm,source) {
	var aForm = eval("document."+frm);
	aForm.make.options.length = 0;
	aForm.model.options.length = 0;
	aForm.make.options[0] = new Option("Select a make");
	aForm.model.options[0] = new Option("Select a model");
	carscom.searchTypeh = "21";
	carscom.cpoh = "false";
	carscom.nclph = "false";
	carscom.tracktypeh = "usedcc";
	populateMakesh(frm, source);
}

function getMakeModelFromCookie() {
	//Fetches the make name and id, the model name and id from the cookie
var cks = document.cookie;
	var frm = cks.indexOf("trucksSessionInfo=");
	 if(frm != -1){
	 frm += 18;
	 var to = cks.indexOf(";",frm);
	 var value = unescape(cks.substring(frm,to)).replace(/\+/g," ");
	 frm = value.indexOf("mkid="); if(frm != -1){frm +=5; to = value.indexOf("|",frm); carscom.mkidh = value.substring(frm,to);}
	 frm = value.indexOf("mknm="); if(frm != -1){frm +=5; to = value.indexOf("|",frm); carscom.mknmh = value.substring(frm,to);}
	 frm = value.indexOf("mdnm="); if(frm != -1){frm +=5; to = value.indexOf("|",frm); carscom.mdnmh = value.substring(frm,to);}
	 frm = value.indexOf("mdid="); if(frm != -1){frm +=5; to = value.indexOf("|",frm); carscom.mdidh = value.substring(frm,to);}
	 }
}

function grabCookie(thecookie) {
	
	var cookieName = thecookie;
   	var allCookies = document.cookie;
   	var cookiePosition = allCookies.indexOf(cookieName + '=');
   	if(cookiePosition != -1){
		var cookiesLength = allCookies.length;
    	var valueStart = cookiePosition + cookieName.length + 1;
      	var valueEnd = allCookies.indexOf(';', valueStart);
		if (valueEnd == -1) {
			valueEnd = cookiesLength;
		}
    	cookieValue = allCookies.substring(valueStart, valueEnd);
		return cookieValue;
	}
}

function setMakeModelFromCookie() {

	getMakeModelFromCookie();
	if (document.cookie.indexOf("trucksSessionInfo=") != -1 && carscom.mknmh != undefined) {
		var newOrUsed = grabCookie('trucksNewUsed');
		// If the cookie is set to used or cpo, switch
		// Otherwise, default to new
		if (newOrUsed == 'used') {
			toggleUsed('truckWidgeth','usedRadio');
			document.truckWidgeth.sType[1].checked = true;
		} else if (newOrUsed == 'cpo') {
			selectUsedCpoOnly('truckWidgeth');
			document.truckWidgeth.sType[2].checked = true;
		} else { //This will catch new as well as no value from the trucksNewUsed cookie
			toggleNew('truckWidgeth','newRadio');
			document.truckWidgeth.sType[0].checked = true;
		} 
		
		if (grabCookie('truckszipcode') !== 'undefined') {
		document.truckWidgeth.zc.value = grabCookie('truckszipcode');
		}
		
	    // Choose the specified make if it isn't already selected
	    var makeSel = document.truckWidgeth.make;
		
		for (i=0; i < makeSel.options.length; i++)
	        {
	            if (makeSel.options[i].text == carscom.mknmh){ //'carscom.mknmh' comes from getMakeModelFromCookie()
	                makeSel.options[i].selected = true;
	            } 
	        }
			
		populateModelsh(carscom.mkidh,'truckWidgeth');

    }
}


function doMakesh(frm, source){

		if (source == "init") {
			var truckObj = mmyTrucksNew.split(',');
		}
		else if (source == "newRadio") {
			var truckObj = mmyTrucksNew.split(',');
		}
		else if (source == "usedRadio") {
			var truckObj = mmyTrucks.split(',');
		}
		
		var makes = new Array();
		var uniqueMakes = new Array();

		for (i=0;i<truckObj.length;i++){
		var vehicle = truckObj[i].split("|");
			makes.push(vehicle[1]+"|"+vehicle[3]);
		}
		makes.sort();
		for (i=0;i<makes.length;i++){
		if (makes[i] != makes[i-1]) uniqueMakes.push(makes[i]);
		}
		return uniqueMakes;
	}
	
function populateMakesh(frm, source){
		var aForm = eval("document."+frm);		
		var uniqueMakes = doMakesh(frm, source);
		if (aForm.make.options.length == 1) {
		for (i=0;i<uniqueMakes.length-1;i++){
			var aTruck = uniqueMakes[i].split("|");
			aForm.make.options[aForm.make.options.length] = new Option(aTruck[0],aTruck[1]);
			}
		}
}
function populateModelsh(make,frm){
		var models = new Array();
		var isCpo = false;
		var aForm = eval("document."+frm);
		
		if (frm == 'truckWidgeth') {
			if (document.truckWidgeth.sType[0].checked == true) {
				var truckObj = mmyTrucksNew.split(',');
			}
			else if (document.truckWidgeth.sType[1].checked == true) {
				var truckObj = mmyTrucks.split(',');
			}
			else if (document.truckWidgeth.sType[2].checked == true) {
				getCpoModelsForMake(frm);
				isCpo = true;
			}
		}
		
		if (isCpo == false) {
			var mdDrp = document.truckWidgeth.model;
	
			for (i=0;i<truckObj.length;i++){
				var vehicle = truckObj[i].split("|");
				var inArray = false;
				for (j=0;j<models.length;j++){
					if(models[j] == (vehicle[2]+"|"+vehicle[4])) inArray = true;
					}
				if(vehicle[3] == make && !inArray){
					models.push(vehicle[2]+"|"+vehicle[4]);
				}
			}
	
			models.sort();
			mdDrp.options.length = 0;
			for(i=0;i<models.length;i++){
				var aModel = models[i].split("|");
				mdDrp.options[mdDrp.options.length] = new Option(aModel[0],aModel[1]);
			}
			if (mdDrp.options.length == 0 ) {
				mdDrp.options[0] = new Option('Select a model');
			}
		}
			
		var modelSel = document.truckWidgeth.model;
		for (i=0; i < modelSel.options.length; i++) {
			if (modelSel.options[i].text == carscom.mdnmh) {
				modelSel.options[i].selected = true;
			} 
		}
		
		
	}
	

function prepFormh(frm){
	var d = eval("document."+frm);
	  	carscom.mdnmh = d.model.options[d.model.selectedIndex].text;
        carscom.mknmh = d.make.options[d.make.selectedIndex].text;
		
		if(carscom.mknmh =="") {
		alert("Please select a make."); return;
		}else if(carscom.mdnmh == "") {
		alert("Please select a model."); return;
		}else if(d.zc.value.length != 5 || isNaN(d.zc.value)) {
		alert ("Please enter a valid ZIP code."); return;
		}else{
		var neworused = "new";
		if (d.sType[0].checked == true) {
			neworused = "new";
		} else if (d.sType[1].checked == true) {
			neworused = "used";
		} else if (d.sType[2].checked == true) {
			neworused = "cpo";
		}
		
		document.cookie = "trucksNewUsed=" + neworused + ";path=/;domain=" + location.hostname.match(/\.[\w\W]+\.\w{3}$/);

		if (neworused == "new") {
		carscom.mkidh = d.make.options[d.make.selectedIndex].value;
		carscom.mdidh = d.model.options[d.model.selectedIndex].value;
		window.location = "/go/search/search.jsp?tracktype="+carscom.tracktypeh+"&searchType="+carscom.searchTypeh+"&mdnm="+carscom.mdnmh+"&mknm="+carscom.mknmh+"&mkid="+carscom.mkidh+"&mdid="+carscom.mdidh+"&zc="+d.zc.value+"&cpo="+carscom.cpoh+"&nclp="+carscom.nclph+"&rd=50&vehicleType=1&aff=trucks";
		} else {		
		window.location = "/go/search/search.jsp?tracktype="+carscom.tracktypeh+"&searchType="+carscom.searchTypeh+"&mdnm="+carscom.mdnmh+"&mknm="+carscom.mknmh+"&zc="+d.zc.value+"&cpo="+carscom.cpoh+"&nclp="+carscom.nclph+"&rd=50&vehicleType=1&aff=trucks";
		}

		}
	}
	
	
function getCpoModelsForMake(frm) {
	
	var dForm = eval("document."+frm);
	carscom.mknmh = dForm.make[dForm.make.selectedIndex].text;
	//var optIndx = frm.selectedIndex;
	if (carscom.mknmh == 'Mercedes-Benz') { //MB hack
		$.getJSON("http://www.cars.com/go/includes/mmy/_modelRetriever.jsp?makeid=31&callback=?", function(cpoModelsArray){ 
			dForm.model.options.length = 0;
			dForm.model.options[0] = new Option("All","");
			for (i=0;i<cpoModelsArray.length;i++){
			dForm.model.options[i] = new Option(cpoModelsArray[i],cpoModelsArray[i]); 
			}
			var modelSel = document.truckWidgeth.model;
			for (i=0; i < modelSel.options.length; i++) {
				if (modelSel.options[i].text == carscom.mdnmh) {
					modelSel.options[i].selected = true;
				} 
			}
		 });
	} else {
		$.getJSON("http://www.cars.com/go/includes/mmy/_modelRetriever.jsp?truck=true&makename="+carscom.mknmh+"&callback=?", function(cpoModelsArray){
			dForm.model.options.length = 0;
			dForm.model.options[0] = new Option("Select a model","");
			for (i=0;i<cpoModelsArray.length;i++){
			dForm.model.options[i] = new Option(cpoModelsArray[i],cpoModelsArray[i]); 
			}
			var modelSel = document.truckWidgeth.model;
			for (i=0; i < modelSel.options.length; i++) {
				if (modelSel.options[i].text == carscom.mdnmh) {
					modelSel.options[i].selected = true;
				} 
			}
		});
	}
} // end getCpoModelsForMake

function selectUsedCpoOnly(frm){
	var dForm = eval("document."+frm);
	carscom.searchTypeh = "59";
	carscom.cpoh = "true";
	carscom.nclph = "false";
	carscom.tracktypeh = "usedcc";
	dForm.make.options.length = 0;
	dForm.model.options.length = 0;
	dForm.model.options[0] = new Option("Select a model","");
	dForm.make.options[0] = new Option("Select a make","");
    var listLength = carscom.usedCpoMakes.length;
	for (i=0; i<listLength; i++){
		dForm.make.options[i+1] = new Option (carscom.usedCpoMakes[i],carscom.usedCpoMakes[i]);	
	}
}