// Global Vars
var xmlPath = null;
var xslPath = null;

function loadXMLDoc(fname)
{
	var xmlDoc;
	// code for IE
	if (window.ActiveXObject)
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation
	&& document.implementation.createDocument)
	{
		if(navigator.userAgent.indexOf("Safari") > -1){
			xmlDoc = new XMLHttpRequest();	
			if (xmlDoc != null) {
				xmlDoc.open("GET", fname, false);
				xmlDoc.send(null);				
				return xmlDoc.responseXML;
			}else {
				alert("Your browser does not support XML HTTP");
			}		
		}else{
			xmlDoc=document.implementation.createDocument("","",null);	
		}
	}else{
		alert('Your browser cannot handle this script');
	}
	xmlDoc.async=false;
	xmlDoc.load(fname);
	
	return(xmlDoc);
}

function displayResult(xmlDoc,xslDoc,year,brand,model,modelCd,container,submodel)
{
	xml=loadXMLDoc(xmlDoc);
	xsl=loadXMLDoc(xslDoc);
	// code for IE
	if (window.ActiveXObject)
	{				
		// Load your XSL
		var objXSLT = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXSLT.async = false;
		objXSLT.load(xslDoc);

		// create a compiled XSL-object
		var objCompiled = new ActiveXObject("MSXML2.XSLTemplate");
		objCompiled.stylesheet = objXSLT.documentElement;
			
		// create XSL-processor
		var objXSLProc = objCompiled.createProcessor();

		// Load your XML
		var objXML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXML.async = false;
		objXML.load(xmlDoc);

		// input for XSL-processor
		objXSLProc.input = objXML;
		objXSLProc.addParameter("brand", brand);
		objXSLProc.addParameter("year", year);
		objXSLProc.addParameter("model", model);
		if(submodel != undefined) {
			objXSLProc.addParameter("submodel", submodel);
		}

		// transform
		objXSLProc.transform();		
		document.getElementById(container).innerHTML = objXSLProc.output;		
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xsl);
		
		xsltProcessor.setParameter(null,"year",year);
		xsltProcessor.setParameter(null,"brand",brand);
		xsltProcessor.setParameter(null,"model",model);
		if(submodel != undefined) {
			xsltProcessor.setParameter(null,"submodel",submodel);
		}
		
		resultDocument = xsltProcessor.transformToFragment(xml,document);
		document.getElementById(container).appendChild(resultDocument);		
	}
	validateFlags();	
	addSubmodelFragment(brand,modelCd,year,submodel);
	addFeaturesButtons(year,brand)
	startPhotoGallery();
}


function displayshopByResult(xslDoc,brand,container,sortVar)
{
	xml=loadXMLDoc("/xml/shopBy/shopBy.xml");
	xsl=loadXMLDoc(xslDoc);
	xmlPath = "/xml/shopBy/shopBy.xml";
	xslPath = xslDoc;
	// code for IE
	if (window.ActiveXObject)
	{				
		// Load your XSL
		var objXSLT = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXSLT.async = false;
		objXSLT.load(xslDoc);

		// create a compiled XSL-object
		var objCompiled = new ActiveXObject("MSXML2.XSLTemplate");
		objCompiled.stylesheet = objXSLT.documentElement;
			
		// create XSL-processor
		var objXSLProc = objCompiled.createProcessor();

		// Load your XML
		var objXML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXML.async = false;
		objXML.load("/xml/shopBy/shopBy.xml");

		// input for XSL-processor
		objXSLProc.input = objXML;
		objXSLProc.addParameter("brand", brand);
		objXSLProc.addParameter("sortVar", sortVar);

		// transform
		objXSLProc.transform();		
		document.getElementById(container).innerHTML = objXSLProc.output;
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xsl);

		xsltProcessor.setParameter(null,"brand",brand);
		xsltProcessor.setParameter(null,"sortVar",sortVar);
		
		resultDocument = xsltProcessor.transformToFragment(xml,document);
		document.getElementById(container).appendChild(resultDocument);
	}
	document.getElementById("footnotes").style.display = "block";
}


function changeSort(sortVar,brand,container)
{ 
	var id = sortVar == "" ? "brand" : sortVar;
	window.altFuelsSortVar = id;
	var element = document.getElementById(id);
	if(element.className.indexOf("active") < 0){
		document.getElementById("footnotes").style.display = "none";
		xml=loadXMLDoc(xmlPath);
		xsl=loadXMLDoc(xslPath);
		// code for IE	
		if (window.ActiveXObject)
		{				
			// Load your XSL
			var objXSLT = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
			objXSLT.async = false;
			objXSLT.load(xslPath);
	
			// create a compiled XSL-object
			var objCompiled = new ActiveXObject("MSXML2.XSLTemplate");
			objCompiled.stylesheet = objXSLT.documentElement;
				
			// create XSL-processor
			var objXSLProc = objCompiled.createProcessor();
	
			// Load your XML
			var objXML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
			objXML.async = false;
			objXML.load(xmlPath);
	
			// input for XSL-processor
			objXSLProc.input = objXML;
			objXSLProc.addParameter("brand", brand);
			objXSLProc.addParameter("sortVar", sortVar);
	
			// transform
			objXSLProc.transform();		
			document.getElementById(container).innerHTML = objXSLProc.output;
		}
		// code for Mozilla, Firefox, Opera, etc.
		else if (document.implementation && document.implementation.createDocument)
		{
			xsltProcessor=new XSLTProcessor();
			xsltProcessor.importStylesheet(xsl);
			
			xsltProcessor.setParameter(null,"brand",brand);
			xsltProcessor.setParameter(null,"sortVar",sortVar);
			
			resultDocument = xsltProcessor.transformToFragment(xml,document);
	
			document.getElementById(container).style.visibility="hidden";
			document.getElementById(container).innerHTML = "";		
			document.getElementById(container).appendChild(resultDocument);
			document.getElementById(container).style.visibility="visible";
		}
		document.getElementById("footnotes").style.display = "block";
	} // End If active class
}

function addFeaturesButtons(year,brand)
{
	xml=loadXMLDoc("/xml/refreshMMC.xml");
	xsl=loadXMLDoc("/templates/featuresAndSpecs.xml");
	
	var submodelCD = document.getElementById("modelDescription").getElementsByTagName("span");
	
	// code for IE
	if (window.ActiveXObject)
	{				
		// Load your XSL
		var objXSLT = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXSLT.async = false;
		objXSLT.load("/templates/featuresAndSpecs.xml");

		// create a compiled XSL-object
		var objCompiled = new ActiveXObject("MSXML2.XSLTemplate");
		objCompiled.stylesheet = objXSLT.documentElement;
			
		// create XSL-processor
		var objXSLProc = objCompiled.createProcessor();

		// Load your XML
		var objXML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXML.async = false;
		objXML.load("/xml/refreshMMC.xml");

		// input for XSL-processor
		objXSLProc.input = objXML;
		objXSLProc.addParameter("year", year);
		objXSLProc.addParameter("brand", brand);
		objXSLProc.addParameter("submodel", submodelCD[0].innerHTML);
		objXSLProc.addParameter("model", submodelCD[1].innerHTML);

		// transform
		objXSLProc.transform();		
		document.getElementById("featuresButtonsTop").innerHTML = "";
		document.getElementById("featuresButtonsTop").innerHTML = objXSLProc.output;
		document.getElementById("featuresButtonsBottom").innerHTML = "";
		document.getElementById("featuresButtonsBottom").innerHTML = document.getElementById("featuresButtonsTop").innerHTML;
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xsl);
		
		xsltProcessor.setParameter(null,"year",year);
		xsltProcessor.setParameter(null,"brand",brand);
		xsltProcessor.setParameter(null,"submodel",submodelCD[0].innerHTML);
		xsltProcessor.setParameter(null,"model",submodelCD[1].innerHTML);
		
		document.getElementById("featuresButtonsTop").innerHTML = "";
		document.getElementById("featuresButtonsBottom").innerHTML = "";
		resultDocument = xsltProcessor.transformToFragment(xml,document);				
		document.getElementById("featuresButtonsTop").appendChild(resultDocument);	
		document.getElementById("featuresButtonsBottom").innerHTML = document.getElementById("featuresButtonsTop").innerHTML;
		
	}
	if(document.getElementById("featuresButtonsBottom").innerHTML != ""){
		var lastBTN = document.getElementById("featuresButtonsBottom").getElementsByTagName("ul");
		lastBTN[0].className = "toolsBTN lastBTNTools"; 	
	}
	//addParamToFeatures(submodelCD[0].innerHTML, year);		
	addParamToFeatures(submodelCD[0].innerHTML, year);
}

//function addParamToFeatures(submodel){
function addParamToFeatures(submodel, year){
	var chromeLink = "http://prod3.gmautobuilder.com/BuildYourOwnFleet/FeaturesAndSpecs";
	var byoLink = "http://prod3.gmautobuilder.com/BuildYourOwnFleet/";
	var zipCookie = cookieValue("zipCookie");
	var btnLinksTop = document.getElementById("featuresButtonsTop").getElementsByTagName("a");
	var btnLinksBottom = document.getElementById("featuresButtonsBottom").getElementsByTagName("a");
	/**/if (year == null) { var year = features[submodel]["year"]; }/**/
	
	if(features[submodel]){		
		for(var i = 0; i < btnLinksTop.length; i++){
			//btnLinksTop[i].href = i == 0 ? chromeLink + "?" + "year=" + features[submodel]["year"] + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"] : byoLink + "?" + "year=" + features[submodel]["year"] + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"];
			btnLinksTop[i].href = i == 0 ? chromeLink + "?" + "year=" + year + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"] : byoLink + "?" + "year=" + year + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"];
			//btnLinksBottom[i].href = i == 0 ? chromeLink + "?" + "year=" + features[submodel]["year"] + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"] : byoLink + "?" + "year=" + features[submodel]["year"] + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"];
			btnLinksBottom[i].href = i == 0 ? chromeLink + "?" + "year=" + year + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"] : byoLink + "?" + "year=" + year + "&mmc=" + features[submodel]["mmc"] + "&modelname=" + features[submodel]["submodelName"];
		}
	}
	if(zipCookie && zipCookie > -1){		
		for(var i = 0; i < btnLinksTop.length; i++){		
			btnLinksTop[i].href += "&zipcode=" + zipCookie;
			btnLinksBottom[i].href += "&zipcode=" + zipCookie;			
		}
	}		
}

function addSubmodelFragment(brand,model,year,submodel)
{
	
	xml=loadXMLDoc("/xml/shopBy/shopBy.xml");
	xsl=loadXMLDoc("/templates/submodelFragment.xml");

	// code for IE
	if (window.ActiveXObject)
	{				
		// Load your XSL
		var objXSLT = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXSLT.async = false;
		objXSLT.load("/templates/submodelFragment.xml");

		// create a compiled XSL-object
		var objCompiled = new ActiveXObject("MSXML2.XSLTemplate");
		objCompiled.stylesheet = objXSLT.documentElement;
			
		// create XSL-processor
		var objXSLProc = objCompiled.createProcessor();

		// Load your XML
		var objXML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
		objXML.async = false;
		objXML.load("/xml/shopBy/shopBy.xml");

		// input for XSL-processor
		objXSLProc.input = objXML;
		objXSLProc.addParameter("brand", brand);
		objXSLProc.addParameter("model", model);
		objXSLProc.addParameter("year", year);
		if(submodel != undefined) {
			objXSLProc.addParameter("submodel", submodel);
		}

		// transform
		objXSLProc.transform();		
		document.getElementById("submodelContainer").innerHTML = "";
		document.getElementById("submodelContainer").innerHTML = objXSLProc.output;
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xsl);

		xsltProcessor.setParameter(null,"brand",brand);
		xsltProcessor.setParameter(null,"model",model);
		xsltProcessor.setParameter(null,"year",year);
		if(submodel != undefined) {
			xsltProcessor.setParameter(null,"submodel",submodel);
		}
		
		document.getElementById("submodelContainer").innerHTML = "";
		resultDocument = xsltProcessor.transformToFragment(xml,document);		
		document.getElementById("submodelContainer").appendChild(resultDocument);
	}
	if(document.getElementById("submodelContainer").innerHTML != "")
		document.getElementById("submodelContainer").style.height = "10px";
	else
		document.getElementById("submodelContainer").style.display = "none";
}

function changeActiveTab(id){
	var elements = document.getElementById("divSortButtonsUL").getElementsByTagName("a");
	
	for(var i=0; i < elements.length; i++){
		if(elements[i].id == id){
			elements[i].className = "active";
		}else{
			elements[i].className = "";
		}
	}	
}

function hideShowElements(container){
	var elements = document.getElementById(container).getElementsByTagName("li");
	
	for(var i=0; i < elements.length; i++){
		if(elements[i].style.visibility=="visible" || elements[i].style.visibility=="")
			elements[i].style.visibility="hidden";
		else
			elements[i].style.visibility="visible";		
	} 			
}

function startPhotoGallery(){
	var browserName=navigator.appName; 
	if(document.getElementById("photoCarouselExterior") && document.getElementById("photoCarouselInterior")){
		var exteriorElement = document.getElementById("photoCarouselExterior").getElementsByTagName("li");
		var interiorElement = document.getElementById("photoCarouselInterior").getElementsByTagName("li");
		var widthFirstUL;
		var widthSecondUL;
		if(exteriorElement.length > 0){
			widthFirstUL = 88* exteriorElement.length;
			document.getElementById("photoCarouselExterior").style.width = widthFirstUL + "px";
			if(exteriorElement.length < 6){
				document.getElementById("Exterior").className="nextImageExteriorDisable";
			}
			classActive(exteriorElement[0].firstChild);
			
		}
		if(interiorElement.length > 0){
			widthSecondUL = 88* interiorElement.length;
			document.getElementById("photoCarouselInterior").style.width = widthSecondUL + "px";
			if(interiorElement.length < 6)
				document.getElementById("Interior").className="nextImageInteriorDisable";
		}
		if(exteriorElement.length == 0 && interiorElement.length == 0 ){
			document.getElementById("photoGallery").innerHTML="<div class=\"contentText\">Comming Soon...</div>";
		}
		if(exteriorElement.length > 0 && interiorElement.length == 0 ){
			document.getElementById("photoCarouselInterior").parentNode.style.display="none";
		}
	}else
		document.getElementById("photoGallery").innerHTML="<div class=\"contentText\">Comming Soon...</div>";
}
function trackingFuel(idFuel){
	if(document.getElementById(idFuel).className != "active"){
		s_pageName=tracking[idFuel]["s_pageName"];
		s_prop1=tracking[idFuel]["s_prop1"];
		s_prop2=tracking[idFuel]["s_prop2"];
		s_prop3=tracking[idFuel]["s_prop3"];
		s_prop4=tracking[idFuel]["s_prop4"];
		s_prop25=tracking[idFuel]["s_prop25"];
		s_linkName=" ";
		otherLinks("e",s_linkName, true, this.href); 
	}
}

