var compareVehicleA = new Object();
var compareVehicleB = new Object();
var compareVehicleC = new Object();
var isNew_List = '';
var compareVehicleSelectedTab = "Overview";
var gCompareMoveInterval;
var gCompareListCount = 0;
var gIsManufacturerShowroomVehicle = false;
var gloadTrim2 = new Object();
var gloadTrim3 = new Object();
var glastTrimLoaded = 1;
var isTracking = false;
var __minRowCount = 6;
var gIscomparableImagesLoaded = false;

function navigateTo(loc, whichVehicle){
	var oVehicle = getVehicle(whichVehicle);
	var locUri = new Uri(loc);
	var condition =(vehicleIsNew(oVehicle.year) ? '1' : '3');
	locUri.setQueryValue('condition', condition);
	locUri.setQueryValue('makeID', oVehicle.makeID);
	locUri.setQueryValue('make', oVehicle.makeName);
	locUri.setQueryValue('model', convertSingleQuote(oVehicle.modelName));
	locUri.setQueryValue('year', oVehicle.year);
	locUri.setQueryValue('trimID', oVehicle.trimID);
	locUri.setQueryValue('zip', oVehicle.zip);
	locUri.setQueryValue('smodel', oVehicle.shortModel);
	
	location.href = locUri.toString();
}

function vehicleIsNew(year){
	if(isNew_List.search(String(year)) == -1)
		return false;
	return true;
}

function showTabContent(t, c){
	turnOnTab(t);
    document.getElementById(c).className="dataContainer";
}

function tabsOff(){
	turnOffTabsLong('OverviewTab', 'OverviewContainer');
	turnOffTabsLong('SpecificationsTab', 'SpecificationsContainer');
	turnOffTabsLong('FeaturesTab', 'FeaturesContainer');
	turnOffTabsLong('SafetyTab', 'SafetyContainer');
	turnOffTabsLong('AdvantagesTab', 'AdvantagesContainer');
	turnOffTabsLong('JDPowerTab', 'JDPowerContainer');
}

function getComparableTrims(){
	var url = "/_webServices/CompareRequests.asmx/ListComparableTrims";
	var trimIDs = getTrimIDs();
	var requestData = "trimID1=" + trimIDs[0] + "&trimID2=" + trimIDs[1];
	gO('comparableVehiclesContainer').innerHTML = ''
	gIscomparableImagesLoaded = false;
	MakeXMLHttpRequestCall(url, requestData, false, null, null, populateComparableTrims, null);
}

function doOverviewSelect(){
	var trimIDs = getTrimIDs();
	if(trimIDs[0] != '' || trimIDs[1] != '' || trimIDs[2] != ''){
		var url = "/_webServices/CompareRequests.asmx/GetComparisonOverview";
		var requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[1] + "&trim3ID=" + trimIDs[2];
		MakeXMLHttpRequestCall(url, requestData, true, null, null, populateDataContainer, 'OverviewContainer');
		tabsOff();
		showTabContent('OverviewTab', 'OverviewContainer')
		compareVehicleSelectedTab = "Overview";
	}else{
		alert('Please select at least one vehicle.');
	}
}

function doSpecificationsSelect(){
	var url = "/_webServices/CompareRequests.asmx/GetComparisonSpecifications";
	var trimIDs = getTrimIDs();
	if(trimIDs[0] != '' || trimIDs[1] != '' || trimIDs[2] != ''){
		var requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[1] + "&trim3ID=" + trimIDs[2];
		MakeXMLHttpRequestCall(url, requestData, true, null, null, populateDataContainer, 'SpecificationsContainer');
		tabsOff();
		showTabContent('SpecificationsTab', 'SpecificationsContainer')
		compareVehicleSelectedTab = "Specifications";
	}else{
		alert('Please select at least one vehicle.');
	}
}

function doFeaturesSelect(){
	var url = "/_webServices/CompareRequests.asmx/GetComparisonFeatures";
	var trimIDs = getTrimIDs();
	if(trimIDs[0] != '' || trimIDs[1] != '' || trimIDs[2] != ''){
		var requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[1] + "&trim3ID=" + trimIDs[2];
		MakeXMLHttpRequestCall(url, requestData, true, null, null, populateDataContainer, 'FeaturesContainer');
		tabsOff();
		showTabContent('FeaturesTab', 'FeaturesContainer')	
		compareVehicleSelectedTab = "Features";
	}else{
		alert('Please select at least one vehicle.');
	}
}

function doSafetySelect(){
	var trimIDs = getTrimIDs();
	if(trimIDs[0] != '' || trimIDs[1] != '' || trimIDs[2] != ''){
		var url = "/_webServices/CompareRequests.asmx/GetSafetyOverview";
		var requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[1] + "&trim3ID=" + trimIDs[2];
		MakeXMLHttpRequestCall(url, requestData, true, null, null, populateDataContainer, 'SafetyContainer');
		tabsOff();
		showTabContent('SafetyTab', 'SafetyContainer')
		compareVehicleSelectedTab = "Safety";
	}else{
		alert('Please select at least one vehicle.');
	}
}

function doJdpowerSelect()
{
	var trimIDs = getTrimIDs();
	if(trimIDs[0] != '' || trimIDs[1] != '' || trimIDs[2] != ''){
		var url = "/_webServices/CompareRequests.asmx/GetJDPowerRatings";
		var requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[1] + "&trim3ID=" + trimIDs[2];
		MakeXMLHttpRequestCall(url, requestData, true, null, null, populateDataContainer, 'JDPowerContainer');
		tabsOff();
		showTabContent('JDPowerTab', 'JDPowerContainer')
		compareVehicleSelectedTab = "Jdpower";
	}else{
		alert('Please select at least one vehicle.');
	}
}

function doAdvantagesSelect(){
	var url = "/_webServices/CompareRequests.asmx/GetAdvantagesComparisonData";
	var trimIDs = getTrimIDs();
	if((trimIDs[0] != '' && trimIDs[1] != '') || (trimIDs[0] != '' && trimIDs[2] != ''))
	{
		if((trimIDs[1] != '' && (trimIDs[0] != trimIDs[1]))  || (trimIDs[2] != '' &&(trimIDs[0] != trimIDs[2])))
		{
			var requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[1];
			var vehicle1 = eval("compareVehicle" + getContainerVehicleLetter(1));
			var vehicle2 = eval("compareVehicle" + getContainerVehicleLetter(2));
			var vehicle3 = eval("compareVehicle" + getContainerVehicleLetter(3));
			if(vehicle1 && vehicle1.trimID && vehicle2 && vehicle2.trimID){
				MakeXMLHttpRequestCall(url, requestData, false, null, null, populateAdvantagesContainer, [vehicle1, vehicle2, false, 2]);
				if(vehicle3 && vehicle3.trimID){
					requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[2];
					MakeXMLHttpRequestCall(url, requestData, false, null, null, populateAdvantagesContainer, [vehicle1, vehicle3, true, 3]);
				}
			}else if(vehicle1 && vehicle1.trimID && vehicle3 && vehicle3.trimID){
				requestData = "trim1ID=" + trimIDs[0] + "&trim2ID=" + trimIDs[2];
				MakeXMLHttpRequestCall(url, requestData, true, null, null, populateAdvantagesContainer, [vehicle1, vehicle3, false, 3]);
			}
			tabsOff();
			showTabContent('AdvantagesTab', 'AdvantagesContainer');
			compareVehicleSelectedTab = "Advantages";
		}
		else
		{
		    showInvalidCompareOptionMessage('You have not selected a valid compare option.\nPlease make sure you have a vehicle in position 1 as your primary vehicle\nand at least one other vehicle defined or a different trim for a given vehicle.'); //Refactored:  Please do not change.  Print Page overrides this function.
		}
	}
	else
	{
	    showInvalidCompareOptionMessage('You have not selected a valid compare option.\nPlease make sure you have a vehicle in position 1 as your primary vehicle\nand at least one other vehicle defined.'); //Refactored:  Please do not change.  Print Page overrides this function.
	}
}

//This function is overridden in comparePrint page:  Please do not remove.
function showInvalidCompareOptionMessage(message)
{
    alert(message);
}

function doTrackComparisonChange()
{
	if(s)
	{
		s.products = gvhxProducts;
		var modelIDs = getModelIDs();
		for(var index = 0;index < modelIDs.length;index++)
		{
			if(modelIDs[index] && modelIDs[index].length > 0)
			{
				if(s.products.length > 0)
					s.products += ', ';
				s.products += 'Comparison Position '+ (index + 1) +';'+ modelIDs[index] +';1';
			}
		}
		if(isTracking)
			s.t();
		isTracking = true;
	}
}

function insertHeaderDiv(string, container)
{
	var divRow = document.createElement("DIV");
	divRow.className = "";
	
	var div = document.createElement("DIV");
	div.className = 'dataHeaderLeft';
	div.appendChild(document.createTextNode(string));

	divRow.appendChild(div);
	for(i = 0; i < 3; i ++)
	{
		var fillerDiv = document.createElement("DIV");
		fillerDiv.className = 'dataHeader';
		divRow.appendChild(fillerDiv);
		
	}
	
	gO(container).appendChild(divRow);
}

function insertRowDiv(label, trim1, trim2, trim3, rowOn, container){
	var sOn;
	rowOn ? sOn = 'On' : sOn = 'Off';
    
	var div = document.createElement("div");
	div.className = "dataContainerRow";
	
	var divLeft = document.createElement("div");
	divLeft.className = "dataRow" + sOn + "Left";
	divLeft.appendChild(document.createTextNode(label));
	div.appendChild(divLeft);
	
	var div1 = document.createElement("div");
	div1.className = "dataRow" + sOn + "1";

	div.appendChild(addStarsOrNotAvailable(trim1,div1));
		
	div.appendChild(div1);

	var div2 = document.createElement("div");
	div2.className = "dataRow" + sOn + "2";

	div.appendChild(addStarsOrNotAvailable(trim2,div2));

	div.appendChild(div2);
	
	var div3 = document.createElement("div");
	div3.className = "dataRow" + sOn + "3";

	div.appendChild(addStarsOrNotAvailable(trim3,div3));
			
	gO(container).appendChild(div);	

}

function addStarsOrNotAvailable(trim, div)
{
	if(trim != null && trim.contains('*'))
	{
		for (var st = 0; st < trim.length; st++)
		{
		    if (st >= 5)
		        break;
			var star = document.createElement("img");
			star.className = "safetyStar";
			star.setAttribute("src","/!.gif");
			div.appendChild(star);
		}
		if (trim.length >= 5)
		{ 
		    var txt = document.createElement("span");
		    txt.innerText = ' '+ trim.substring(5);
		    div.appendChild(txt);
		}
	}
	else
	{
		if(trim!=null)
		{
			div.appendChild(document.createTextNode(trim));	
		}
		else
		{
			div.appendChild(document.createTextNode("Not Available"));
		}	
	}
	return div;
}

function populateComparableTrims(response)
{
	if(!gIscomparableImagesLoaded && response && response.object)
	{
		var objectCount = response.object.length -1;
		var listTemplate = gO('comparableVehiclesContainer');
		for(oc = 0; oc < objectCount; oc++)
		{
			var childNode = document.createElement("div");
			var imageNodeDiv = document.createElement("div");
			var imageNode = document.createElement("img");
			var textNodeDiv = document.createElement("div");
			var imageNodeHrefNode = document.createElement("a");
			var textNodeHrefNode = document.createElement("a");
			var href = 'javascript:loadVehicleFromList("' + response.object[oc].Make + '", "' + response.object[oc].MakeID + 
				'", "' + response.object[oc].Model + '", "' + response.object[oc].Year + '", "' + response.object[oc].ComparableCode + 
				'", "' + response.object[oc].ShortModel + '")';		

					
			childNode.className = "comparableVehicleListItem";
			

			//setting the image section of the node				
			imageNodeHrefNode.href = href;
			imageNodeDiv.className = "link";
			imageNode.className = "comparableVehicleListImage";
			imageNode.src = compareVehicleA.noImageImage;
			if(response.object[oc].ImageLocation)
			{
				if(response.object[oc].ImageLocation.search("chrome") != -1)
				{
					imageNode.src = compareVehicleA.chromeImageServer.replace('"', '\'') + response.object[oc].ImageLocation;
				}
				else if(response.object[oc].ImageLocation.search("evox") != -1)
				{
					imageNode.src = compareVehicleA.evoxImageServer.replace('"', '\'') + response.object[oc].ImageLocation;
				}
				else
				{
					imageNode.src = compareVehicleA.imageServer.replace('"', '\'') + response.object[oc].ImageLocation;
				}
			}
			imageNodeDiv.appendChild(imageNode);
			imageNodeHrefNode.appendChild(imageNodeDiv);
			
			//settung the text for the node
			textNodeHrefNode.className = "blueLink";
			textNodeHrefNode.href = href;
			textNodeDiv.appendChild(document.createTextNode(response.object[oc].Year + " " + response.object[oc].Make));
			textNodeDiv.appendChild(document.createElement("br"));
			textNodeDiv.appendChild(document.createTextNode(response.object[oc].ShortModel + " >>"));
			textNodeHrefNode.appendChild(textNodeDiv);
			
			gCompareListCount += 1;
			
			//appending the children to the perant node	
			imageNodeDiv.appendChild(imageNode);
			childNode.appendChild(imageNodeHrefNode);
			childNode.appendChild(textNodeHrefNode);
			listTemplate.appendChild(childNode);
		}
		gIscomparableImagesLoaded = true;
	}
}

function resizeComparableList(){
	var vehicle1 = eval("compareVehicle" + getContainerVehicleLetter(1));
	var vehicle2 = eval("compareVehicle" + getContainerVehicleLetter(2));
	var vehicle3 = eval("compareVehicle" + getContainerVehicleLetter(3));
	gO('comparableVehiclesListContainer').className = "comparableVehiclesListContainer";
	gO('comparableVehiclesListHeader').className = "comparableVehiclesListHeader";
	gO('compareListHeaderText').className = "compareListText";
	if((vehicle1 && vehicle1.trimID) && (vehicle2 && vehicle2.trimID) && (vehicle3 && vehicle3.trimID))
	{
		gO('comparableVehiclesListContainer').className = "vsHidden";
	}
	else if((vehicle1 && vehicle1.trimID) && (vehicle2 && vehicle2.trimID))
	{
		gO('comparableVehiclesListContainer').className = "comparableVehiclesListContainerShort";
		gO('comparableVehiclesListHeader').className = "comparableVehiclesListHeaderShort";
		gO('compareListHeaderText').className = "compareListTextShort";
	}
	else if(vehicle2 && vehicle2.trimID)
	{
		gO('comparableVehiclesListContainer').className = "comparableVehiclesListContainerShort";
		gO('comparableVehiclesListHeader').className = "comparableVehiclesListHeaderShort";
		gO('compareListHeaderText').className = "compareListTextShort";
	}
	else if(vehicle3 && vehicle3.trimID)
	{
		gO('comparableVehiclesListContainer').className = "comparableVehiclesListContainerShortMiddle";
		gO('comparableVehiclesListHeader').className = "comparableVehiclesListHeaderShort";
		gO('compareListHeaderText').className = "compareListTextShort";
	}
	if(!(vehicle1 && vehicle1.trimID))
	{
		gO('comparableVehiclesListContainer').className = "vsHidden";
	}
	gO('comparableVehiclesContainer').style.left = '0px';
}

function populateDataContainer(response, containerName){
	if(response && response.object)
	{
		var vehicle1 = eval("compareVehicle" + getContainerVehicleLetter(1));
		var vehicle2 = eval("compareVehicle" + getContainerVehicleLetter(2));
		var vehicle3 = eval("compareVehicle" + getContainerVehicleLetter(3));
		gO(containerName).innerHTML = '';
		var header = '';
		var rowOn = false;
		var label = '';
		var trim1 = '';
		var trim2 = '';
		var trim3 = '';
		var definitionCode = '';
		var rowCount = 0;
		for(n = 0; n < response.object.length; n++)
		{
			if(response.object[n].Header != header){
				rowOn = false;
				insertHeaderDiv(response.object[n].Header, containerName);
				header = response.object[n].Header;
			}
			
			label = response.object[n].Label;
			if(vehicle1 && vehicle1.trimID) trim1 = response.object[n].Trim1;
			if(vehicle2 && vehicle2.trimID) trim2 = response.object[n].Trim2;
			if(vehicle3 && vehicle3.trimID) trim3 = response.object[n].Trim3;
			if(containerName == "JDPowerContainer") 
			{
			    if(response.object[n].DefinitionCode != null) definitionCode = response.object[n].DefinitionCode;
			    jdPowerItem = JDPowerContent.TrimItem();
                jdPowerItem.header = header;
                jdPowerItem.definitionCode = definitionCode;
                jdPowerItem.label = label;
			    jdPowerItem.trim1 = trim1;
			    jdPowerItem.trim2 = trim2;
			    jdPowerItem.trim3 = trim3
			    JDPowerContent.InsertRow(jdPowerItem, rowOn, containerName);
			}
			else
			{
			    insertRowDiv(label, trim1, trim2, trim3, rowOn, containerName);
			}
			rowOn = !rowOn;
			rowCount++;
		}
		
		if(containerName == "JDPowerContainer") 
		{
		    insertHeaderDiv("Scoring Legend", containerName);
		    var lengendDiv = JDPowerContent.JDPowerScoringLegend(containerName);
		    JDPowerContent.JDPowerInfoAndDisclaimer(lengendDiv);
		}
		
		if(rowCount < __minRowCount){
			for(var i = 0; i <= __minRowCount - rowCount; i++){
				insertRowDiv("", "", "", "", rowOn, containerName);
			}
		}
	}
	else alert('Error! Please try later.');
	delete response;
}

function insertAdvantagesHeaderDiv(string, container)
{
	var div = document.createElement("div");
	div.className = "advantagesHeaderTemplate";
	
	var divdataHeaderLeft = document.createElement("div");
	divdataHeaderLeft.className = "dataHeaderLeft";
	div.appendChild(divdataHeaderLeft);
	
	var divAdvantageHeader = document.createElement("div");
	
	divAdvantageHeader.className = "advantagesHeader";
	divAdvantageHeader.appendChild(document.createTextNode(string));
	div.appendChild(divAdvantageHeader);
	
	gO(container).appendChild(div);
}

function insertAdvantagesRowDiv(label, text, rowOn, container){
	var sOn;
	rowOn ? sOn = 'On' : sOn = 'Off';
	
	var div = document.createElement("div");
	div.className = 'advantagesRow' + sOn + 'Template';
	
	var dataRowLeft = document.createElement("div");
	dataRowLeft.className = 'dataRow' + sOn + 'Left';
	dataRowLeft.appendChild(document.createTextNode(label));
	div.appendChild(dataRowLeft);
	
	var advantagesDataRow = document.createElement("div");
	advantagesDataRow.className = 'advantagesDataRow' + sOn;
	advantagesDataRow.appendChild(document.createTextNode(text));
	div.appendChild(advantagesDataRow);
	
	gO(container).appendChild(div);
}

function populateAdvantagesContainer(response, args){
	if(response && response.object)
	{
		if(!args[2]) gO('AdvantagesContainer').innerHTML = '';
		var header = '';
		var rowOn = false;
		var label = '';
		var text = '';
		var headerText = '';
		
		headerText = buildHeader(args)
		insertAdvantagesHeaderDiv(headerText, 'AdvantagesContainer');
		for(n = 0; n < response.object.length; n++)
		{
			if(response.object[n].comparisonResultType != "Tie" && response.object[n].comparisonResultType != "CannotCalculate"){
				label = formatChromeRuleDescription(response.object[n].ruleDescription);
				text = response.object[n].naturalLanguageDescription;
				insertAdvantagesRowDiv(label, text, rowOn, 'AdvantagesContainer');
				rowOn = !rowOn;
			}
		}
	}
	else
	{
		if(response.object == null)
		{
			gO('AdvantagesContainer').innerHTML = '';
			insertAdvantagesHeaderDiv('', 'AdvantagesContainer');
			insertAdvantagesRowDiv('', 'There are no compariable advantage for the vehilces selected.', rowOn, 'AdvantagesContainer');
		}
		else
		{
			alert('Error! Please try later.');
		}
	} 
	delete response;
}

//OVERRODE in comparisonPrint.aspx
function buildHeader(args)
{
    var headerText = args[0].year + " " + args[0].makeName + " " + convertSingleQuote(args[0].modelName) + "  compared with  ";
		headerText += args[1].year + " " + args[1].makeName + " " + convertSingleQuote(args[1].modelName);
	return headerText;
}

function formatChromeRuleDescription(s){
	var result = '';
	var sLength = 0;
	if(s != null){
		var text = new String(s);
		var arr = text.split(/[A-Z]/);
		if(arr.length){
			var subs = new String(arr[0]);
			arr[0] = String(subs.charAt(0)).toUpperCase() + subs.substr(1);
			for(i in arr){
				if(typeof(arr[i]) != "function"){
					sLength += arr[i].length;
					result += arr[i]
					if(i != arr.length){
						result += " " + text.charAt(sLength);
						++sLength;
					}
				}
			}
		}
	}
	return result;
}

function printRollOver()
{
	var oVehicleA = getVehicle("A");
	var oVehicleB = getVehicle("B");
	var oVehicleC = getVehicle("C");
	var href = "";
	var locUri = new Uri(JDPowerContent.Definition.ComparePrintPath);	
	var condition = (vehicleIsNew(oVehicleA.year)?'1':'3');
  var trimID = new Array(3);
  trimID = getTrimIDs();
	
	make1 = oVehicleA.year + " " +  oVehicleA.makeName + " " + oVehicleA.modelName;
	make2 = oVehicleB.year + " " +  oVehicleB.makeName + " " + oVehicleB.modelName;
	make3 = oVehicleC.year + " " +  oVehicleC.makeName + " " + oVehicleC.modelName;

	locUri.setQueryValue('trima', trimID[0]);
	locUri.setQueryValue('trimb', trimID[1]);
	locUri.setQueryValue('trimc', trimID[2]);
	locUri.setQueryValue('trimaName', make1);
	locUri.setQueryValue('trimbName', make2);
	locUri.setQueryValue('trimcName', make3);
 
	href = locUri.toString();
  window.open (href, "PrintComaprison","location=1,status=1,scrollbars=1, width=800,height=600"); 
  OmnitureTrackingClick("Compare Page Print Clicked");
}

function getTrimIDs(){
	var trimIDs = new Array(3);
	var cVehicle1 = eval("compareVehicle" + getContainerVehicleLetter(1));
	var cVehicle2 = eval("compareVehicle" + getContainerVehicleLetter(2));
	var cVehicle3 = eval("compareVehicle" + getContainerVehicleLetter(3));
	cVehicle1 && cVehicle1.trimID ? trimIDs[0] = cVehicle1.trimID : trimIDs[0] = '';
	cVehicle2 && cVehicle2.trimID ? trimIDs[1] = cVehicle2.trimID : trimIDs[1] = '';
	cVehicle3 && cVehicle3.trimID ? trimIDs[2] = cVehicle3.trimID : trimIDs[2] = '';
	return trimIDs;
}

function getModelIDs(){
	var modelIDs = new Array(3);
	var cVehicle1 = eval("compareVehicle" + getContainerVehicleLetter(1));
	var cVehicle2 = eval("compareVehicle" + getContainerVehicleLetter(2));
	var cVehicle3 = eval("compareVehicle" + getContainerVehicleLetter(3));
	cVehicle1 && cVehicle1.modelID ? modelIDs[0] = cVehicle1.modelID : modelIDs[0] = '';
	cVehicle2 && cVehicle2.modelID ? modelIDs[1] = cVehicle2.modelID : modelIDs[1] = '';
	cVehicle3 && cVehicle3.modelID ? modelIDs[2] = cVehicle3.modelID : modelIDs[2] = '';
	return modelIDs;
}

function change(containerNumber, doRepopulate){
	var whichVehicle = getContainerVehicleLetter(containerNumber);
	var oVehicle = getVehicle(whichVehicle);
	gO("imageContainer" + whichVehicle).className = "vsHidden";
	var mfrLink = gO("ManufacturerShowroomLink" + whichVehicle)
	if(mfrLink)
		mfrLink.className = "vsHidden";
	gO("vsContainer" + whichVehicle).className = "imageContainer";
	gO("VehicleActions" + whichVehicle).className = "vsHidden";
	hideSubHeader(oVehicle.container, whichVehicle);
	gO("VehicleImage" + whichVehicle).src = "/!.gif";
	removeVehicle(whichVehicle, doRepopulate);
	if(doRepopulate) repopulateTab();
}

function moveRight(i, doRepopulate){
	var whichVehicle = getContainerVehicleLetter(i);
	var swapVehicle = getContainerVehicleLetter(Number(i) + 1)
	var oVehicle = getVehicle(whichVehicle);
	var oSvehicle = eval("compareVehicle" + swapVehicle);
	if(i == 1 && !(oSvehicle && oSvehicle.trimID)){
		alert('You cannot swap your compare vehicle with an empty container.');
	}else{
		var oVehicleDiv = gO("CompareVehicle" + whichVehicle);
		var oSvehicleDiv = gO("CompareVehicle" + swapVehicle);
		gO("CompareVehicleContainer" + i).appendChild(oSvehicleDiv);
		gO("CompareVehicleContainer" + (Number(i) + 1)).appendChild(oVehicleDiv);
		if(oSvehicle && oSvehicle.trimID){
			loadSubHeader(i, swapVehicle);
		}else{
			hideSubHeader(i, swapVehicle);
		}
		if(oVehicle && oVehicle.trimID){
			loadSubHeader(Number(i) + 1, whichVehicle);
		}else{
			hideSubHeader(Number(i) + 1, whichVehicle);
		}
		oSvehicle.container = i;
		oVehicle.container = Number(i) + 1;
		if(doRepopulate) repopulateTab();
	}
}

function moveLeft(i, doRepopulate){
	var whichVehicle = getContainerVehicleLetter(i);
	var swapVehicle = getContainerVehicleLetter(Number(i) - 1)
	var oVehicle = getVehicle(whichVehicle);
	var oSvehicle = eval("compareVehicle" + swapVehicle);
	var oVehicleDiv = gO("CompareVehicle" + whichVehicle);
	var oSvehicleDiv = gO("CompareVehicle" + swapVehicle);
	gO("CompareVehicleContainer" + i).appendChild(oSvehicleDiv);
	gO("CompareVehicleContainer" + (Number(i) - 1)).appendChild(oVehicleDiv);
	if(oSvehicle && oSvehicle.trimID){
		loadSubHeader(i, swapVehicle);
	}else{
		hideSubHeader(i, swapVehicle);
	}
	if(oVehicle && oVehicle.trimID){
		loadSubHeader(Number(i) - 1, whichVehicle);
	}else{
		hideSubHeader(Number(i) - 1, whichVehicle);
	}
	oSvehicle.container = i;
	oVehicle.container = Number(i) - 1;
	if(doRepopulate) repopulateTab();
}

function repopulateTab(){
	if((compareVehicleA && compareVehicleA.trimID) || (compareVehicleB && compareVehicleB.trimID) || (compareVehicleC && compareVehicleC.trimID)){
		eval("do" + compareVehicleSelectedTab + "Select()");
		resizeComparableList();
	}else{
		gO(compareVehicleSelectedTab + 'Container').innerHTML = '';
		insertHeaderDiv('', compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
		insertRowDiv('', '', '', '', false, compareVehicleSelectedTab + 'Container');
	}
}

function changeCompareVehicle(){
	getComparableTrims();
	var oVehicle = getVehicle(getContainerVehicleLetter(1));
	vsSelectorVehicle.make = oVehicle.makeID;
	vsSelectorVehicle.makeName = oVehicle.makeName;
	vsSelectorVehicle.modelName = convertSingleQuote(oVehicle.modelName);
	vsSelectorVehicle.year = oVehicle.year;
	setTimeout('refreshAds()', 50);
}

function removeVehicle(whichVehicle, doRepopulate){
	var oVehicle = getVehicle(whichVehicle);
	with(oVehicle){
		delete trimID;
		delete trimName;
		delete makeName;
		delete makeID;
		delete modelName;
		delete year;
		delete modelID
	}
	if(doRepopulate) repopulateTab();
	var oContainer = gO('ManufacturerShowroomLink' + whichVehicle + 'Container');
	oContainer.innerHTML = '';
	oContainer.className = 'manufacturerShowroomLink hidden';
	getComparableTrims();
}

function clearAll(){
	isTracking=false;
	moveLeft(2);
	isTracking=false;
	moveLeft(3);
	isTracking=false;
	change(3, false);
	isTracking=false;
	moveLeft(3);
	isTracking=false;
	change(3, true);
	isTracking=false;
	moveLeft(2);
	isTracking=false;
	moveLeft(3);
	change(3, true);
	changeCompareVehicle();
}

function hideSubHeader(i, whichVehicle){
	var oVehicle = getVehicle(whichVehicle);
	gO("ContainerSubMove" + i).className = "vsHidden";
	gO("ContainerSubChange" + i).className = "vsHidden";
	gO("ContainerSubHeaderOn" + i).className = "vsHidden";
	gO("ContainerClose" + i).className = "vsHidden";
	gO("ContainerSubHeaderOff" + i).className = "containerSubHeader";
	gO("VehicleModelHeader" + whichVehicle).innerHTML = "";
}

function getContainerVehicleLetter(i){
	if(compareVehicleA.container == String(i))
		return "A";
	if(compareVehicleB.container == String(i))
		return "B";
	if(compareVehicleC.container == String(i))
		return "C";
	return "";
}

function loadTrimsFromURL(){
	glastTrimLoaded = glastTrimLoaded + 1;
	if(glastTrimLoaded == 2 && gloadTrim2 && gloadTrim2.makename){
		isTracking = false;
		loadVehicleFromList(gloadTrim2.makename, gloadTrim2.makeid, gloadTrim2.model, gloadTrim2.year, gloadTrim2.comparableCode, gloadTrim2.shortModel);
		gloadTrim2.loaded = true;
	}
	if(glastTrimLoaded == 3 && gloadTrim3 && gloadTrim3.makename){
		isTracking = false;
		loadVehicleFromList(gloadTrim3.makename, gloadTrim3.makeid, gloadTrim3.model, gloadTrim3.year, gloadTrim3.comparableCode, gloadTrim3.shortModel);
		gloadTrim3.loaded = true;
	}
}

function loadVehicleFromList(makename, makeid, model, year, comparableCode, shortModel){
	var whichVehicle = getNextEmptyContainerVehicleLetter();
	var oVehicle = getVehicle(whichVehicle);
	vsSelectorVehicle.make = makeid;
	vsSelectorVehicle.makeName = makename;
	vsSelectorVehicle.model = model;
	vsSelectorVehicle.smodel = shortModel
	vsSelectorVehicle.year = year;
	var condition = '0';
	if(vehicleIsNew(year))
		condition = '1';
	oVehicle.makeID = vsSelectorVehicle.make;
	oVehicle.makeName = vsSelectorVehicle.makeName;
	oVehicle.modelName = convertSingleQuote(vsSelectorVehicle.model);
	oVehicle.shortModel = convertSingleQuote(vsSelectorVehicle.smodel);
	oVehicle.year = vsSelectorVehicle.year;
	
	
	
	gO("vsContainer" + whichVehicle).className = "vsHidden";
	gO("VehicleActions" + whichVehicle).className = "vehicleActionsContainer";
	loadSubHeader(oVehicle.container, whichVehicle);
	var url = "/_webServices/CompareRequests.asmx/GetTrimsByMakeModelYearCompareCodeAndCondition";
	var requestData = "makeName=" + encodeURIComponent(vsSelectorVehicle.makeName) + "&modelName=" + encodeURIComponent(vsSelectorVehicle.model) + "&year=" + vsSelectorVehicle.year;
	requestData += "&compareCode=" + comparableCode + "&iCondition=" + condition;
	MakeXMLHttpRequestCall(url, requestData, false, null, null, writeTrimsDDL, [gO(oVehicle.trimSelectorClientID), whichVehicle]);
}

function loadCompareVehicle(trimSelectorID, whichVehicle){
	var oVehicle = getVehicle(whichVehicle);
	oVehicle.makeID = vsSelectorVehicle.make;
	oVehicle.makeName = vsSelectorVehicle.makeName;
	oVehicle.modelName = convertSingleQuote(vsSelectorVehicle.modelName);
	oVehicle.shortModel = convertSingleQuote(vsSelectorVehicle.smodel);
	oVehicle.year = vsSelectorVehicle.year;
	gO("vsContainer" + whichVehicle).className = "vsHidden";
	gO("VehicleActions" + whichVehicle).className = "vehicleActionsContainer";
	loadSubHeader(oVehicle.container, whichVehicle);
	populateTrimDdl(gO(trimSelectorID), whichVehicle);
	return false;
}

function getNextEmptyContainerVehicleLetter(){
	for(i=1; i<4; i++){
		var s = getContainerVehicleLetter(i);
		oVehicle = eval("compareVehicle" + s);
		if(!(oVehicle && oVehicle.trimID)){
			return s;
		}
	}
}

function loadSubHeader(i, whichVehicle){
	var oVehicle = getVehicle(whichVehicle);
	gO("ContainerSubHeaderOff" + i).className = "vsHidden";
	gO("ContainerClose" + i).className = "containerClose";
	gO("ContainerSubMove" + i).className = "subHeaderMove";
	gO("ContainerSubChange" + i).className = "subHeaderChange";
	gO("ContainerSubHeaderOn" + i).className = "containerSubHeader";
	gO("VehicleModelHeader" + whichVehicle).innerHTML = "";
	gO("VehicleModelHeader" + whichVehicle).appendChild(document.createTextNode(oVehicle.year + " " + oVehicle.makeName + " " + convertSingleQuote(oVehicle.modelName)));
	clearCompareVehicleSelection(whichVehicle);
}

function populateTrimDdl(o, whichVehicle){
	var url = "/_webServices/CompareRequests.asmx/GetTrimsByMakeIDAndModelNameAndYear";
	var requestData = "makeID=" + encodeURIComponent(vsSelectorVehicle.make) + "&modelName=" + encodeURIComponent(vsSelectorVehicle.model) + "&year=" + vsSelectorVehicle.year;
	MakeXMLHttpRequestCall(url, requestData, false, null, null, writeTrimsDDL, [o, whichVehicle]);
}

function writeTrimsDDL(response, args)
{
	var oVehicle = getVehicle(args[1]);
	if(response && response.object)
	{
		args[0].options.length = 0;
		var len = response.object.length - 1;
		var count = 0;
		for(n = 0; n < len; n++)
		{
			if(response.object[n].FullTrimName != "Unknown")
			{
				args[0].options[count] = new Option(response.object[n].FullTrimName, response.object[n].ID);
				count ++;
			}
		}		oVehicle.shortModel = response.object[n-1].ShortModel;
		oVehicle.modelID = response.object[len].modelID;
		args[0].className='dd_model';
	}
	else alert('Error! Please try later.');
	delete response;
	loadTrim(args[0], args[1]);
	
	if(!gloadTrim3.loaded && gloadTrim3 && gloadTrim3.makename)
		loadTrimsFromURL(glastTrimLoaded);
}

function getVehicleImage(oImage, trimID, whichVehicle){
	var url = "/_webServices/CompareRequests.asmx/GetVehicleImageByTrim";
	var oVehicle = getVehicle(whichVehicle);
	var requestData = "trimID=" + oVehicle.trimID;
	MakeXMLHttpRequestCall(url, requestData, true, null, null, showImage, [oImage, whichVehicle]);
}

function showImage(response, args){
	if(response && response.xml)
	{
		doc = response.xml;
		var root = doc.documentElement;
		if(root != null){
			if(root.hasChildNodes()){
				var a = root.childNodes[0].nodeValue.split('|');
				args[0].className = a[0];
				args[0].src = a[1];
			}
		}
	}else{
		args[0].src = "/!.gif";
	}
	delete response;
	gO("imageContainer" + args[1]).className = "imageContainer";
	if(gIsManufacturerShowroomVehicle)
		gO("ManufacturerShowroomLink" + args[1]).className = "manufacturerShowroomLink";
}

function assignShowroomLink(response, whichVehicle){
	if(response && response.object){
	
		var o = response.object;
			
		var is = new s_gi(s_account)
		is.events = 'event18';
		is.products = o.showroomName +' Showroom Impression;;;event18=1';
		is.tl(null,'o',is.products);
		
		var link = document.createElement("A");
		link.href= o.micrositeUrl;
		link.onclick = new Function('var ls = new s_gi(s_account);ls.events=\'purchase\';ls.products = \';'+ o.showroomName +' Showroom Click Through\';ls.linkTrackVars = \'events,products\';ls.linkTrackEvents = \'purchase\';ls.tl(this,\'o\',ls.products);');
		link.innerHTML = o.adtag;
		var oContainer = gO('ManufacturerShowroomLink' + whichVehicle + 'Container');
		oContainer.innerHTML = '';
		oContainer.appendChild(link);
		oContainer.className = 'manufacturerShowroomLink';
	}
}

function loadCompareTrim(trimddl, whichVehicle){
	var oTrim = gO(trimddl);
	var oVehicle = getVehicle(whichVehicle);
	loadTrim(oTrim, whichVehicle);
	if(oVehicle.container == '1')
		getComparableTrims();
}

function checkVisibleLinks(oVehicle, whichVehicle){
	if(vehicleIsNew(oVehicle.year)){
		gO("newVehicleLinks" + whichVehicle).className = "";
	}else{
		gO("newVehicleLinks" + whichVehicle).className = "vsHidden";
	}
	//getShowroomLink(oVehicle, whichVehicle);
}

function getShowroomLink(oVehicle, whichVehicle){
	var url = "/_webServices/CompareRequests.asmx/GetManufaturerShowroom";
	var requestData = "trimID=" + oVehicle.trimID;
	MakeXMLHttpRequestCall(url, requestData, true, null, null, assignShowroomLink, whichVehicle);
}

function getVehicle(whichVehicle){
	return eval("compareVehicle" + whichVehicle);
}

function loadTrim(oTrim, whichVehicle){
	var oVehicle = getVehicle(whichVehicle);
	var oImage = gO("VehicleImage" + whichVehicle);
	oVehicle.trimID = oTrim.options[oTrim.selectedIndex].value;
	oVehicle.trimName = oTrim.options[oTrim.selectedIndex].text;
	getVehicleImage(oImage, oVehicle.trimID, whichVehicle);
	checkVisibleLinks(oVehicle, whichVehicle);
	repopulateTab();
	getComparableTrims();
	doTrackComparisonChange();
	setTimeout('refreshAds()', 50);
}

var scrollLeftInterval;
var scrollRightInterval;
var scrollAmount = 10;
var scrollContainerWidth = 0;
var _scrollContentsWidth = 0;
var _imageCount = 0;
var _imageWidth = 80;
var _rowCount = 1;

function doScrollLeft(){
	scrollLeftInterval = setInterval('moveCompareLeft()', 50);
}

function doScrollRight(){
	scrollRightInterval = setInterval('moveCompareRight()', 50);
}

function ScrollContentsWidth()
{
	scrollContainerWidth = gO('compareListHeaderText').className == "compareListTextShort" ? 70 : 165;
	
	_imageCount = 0;
	for(var i = 0; i < gO("comparableVehiclesContainer").childNodes.length; i++){
		if(gO("comparableVehiclesContainer").childNodes[i].className == "comparableVehicleListItem")
			_imageCount++;
	}
	
	if(_rowCount != 0)
		_imageCount = Math.ceil(_imageCount / _rowCount);
	_scrollContentsWidth = _imageCount * _imageWidth;

	if(_imageCount < 5)
	{
		scrollContainerWidth = gO('compareListHeaderText').className == "compareListTextShort" ? (_scrollContentsWidth - ((5 - _imageCount) * 45)) : 320;
	}
	if(_scrollContentsWidth < scrollContainerWidth)
		_scrollContentsWidth = scrollContainerWidth;
	return _scrollContentsWidth;
}

function moveCompareLeft(){
	var i = Number(gO('comparableVehiclesContainer').style.left.replace('px', ''));
	gO('comparableVehiclesContainer').style.left = (i + scrollAmount) + 'px';
	if(Number(gO('comparableVehiclesContainer').style.left.replace('px', '')) > 0){
		clearInterval(scrollLeftInterval);
		gO('comparableVehiclesContainer').style.left = '0px';
	}
}

function moveCompareRight()
{
	var i = Number(gO('comparableVehiclesContainer').style.left.replace('px', ''));
	gO('comparableVehiclesContainer').style.left = (i - scrollAmount) + 'px';
	if(Number(gO('comparableVehiclesContainer').style.left.replace('px', '')) < scrollContainerWidth - ScrollContentsWidth()){
		clearInterval(scrollRightInterval);
		gO('comparableVehiclesContainer').style.left = (scrollContainerWidth - ScrollContentsWidth()) + 'px';
	}
}
function stopMoveCompare(){
	clearInterval(scrollRightInterval);
	clearInterval(scrollLeftInterval);
}

function jdpowerOmnitureClick(linkName, url)
{
	jdpowerWindow = window.open(url, "JDPower", "toolbar=no,scrollbars=yes,resizable=yes,status=yes");
	jdpowerWindow.focus();
	
	var omniture=s_gi(s_account);
	omniture.events = 'purchase';
	omniture.products = ';JDPower ' + linkName;
	omniture.linkTrackVars = 'events, products';
	omniture.linkTrackEvents = 'purchase';	
	omniture.tl(this,'o', omniture.products);	
}

