var inputFormState = "diabled";
function updateYear()
{
	// clear form elements
	vwDropMenu.clear("yearMenu");
	vwDropMenu.clear("modelMenu");
	vwDropMenu.clear("engineMenu");
	vwDropMenu.disable("yearMenu");
	vwDropMenu.disable("modelMenu");
	vwDropMenu.disable("engineMenu");
	disableForm();
	util.getNode("f_mileage").value = "";
	// start ajax request
	var request = createXMLHttpRequest();
	request.open("GET", "maintenance.xml", true);  
	request.onreadystatechange = function()
	{
		if (request.readyState == 4)
		{
			var xmlDoc = request.responseXML;
			//populate years dropdown
			var yearsArray = xmlDoc.getElementsByTagName('year');
			for (var i = 0; i < yearsArray.length; i++)
			{
				var xmlString = yearsArray[i].attributes.getNamedItem("value").value;
				vwDropMenu.addItem("yearMenu", xmlString, "javascript:updateModel("+xmlString+");");
			}
			vwDropMenu.display.update("yearMenu", "SELECT");
		}
		else{/*fail quietly*/}
	};
	request.send(null);
}
function updateModel(inYear)
{
	// clear form elements
	vwDropMenu.clear("modelMenu");
	vwDropMenu.clear("engineMenu");
	vwDropMenu.disable("engineMenu");
	disableForm();
	util.getNode("f_mileage").value = "";
	// start ajax request
	var request = createXMLHttpRequest();
	request.open("GET", "maintenance.xml", true);
	request.onreadystatechange = function()
	{
		if (request.readyState == 4)
		{
			var xmlDoc = request.responseXML;
			//populate models dropdown
			var yearsArray = xmlDoc.getElementsByTagName('year');
			for (var i = 0; i < yearsArray.length; i++)
			{
				if(yearsArray[i].attributes.getNamedItem("value").value == inYear)
				{
					var modelsArray = yearsArray[i].getElementsByTagName('model');
					for (var j = 0; j < modelsArray.length; j++)
					{
						var xmlString = modelsArray[j].attributes.getNamedItem("value").value;
						vwDropMenu.addItem("modelMenu", xmlString, "javascript:updateEngine("+inYear+", '"+xmlString+"');");
					}
				}
			}
			vwDropMenu.display.update("modelMenu", "SELECT");
		}
		else{/*fail quietly*/}
	};
	request.send(null);
}
function updateEngine(inYear, inModel)
{
	// clear form elements
	vwDropMenu.clear("engineMenu");
	disableForm();
	util.getNode("f_mileage").value = "";
	// start ajax request
	var request = createXMLHttpRequest();
	request.open("GET", "maintenance.xml", true);
	request.onreadystatechange = function()
	{
		if (request.readyState == 4)
		{
			var xmlDoc = request.responseXML;
			//populate engines dropdown
			var yearsArray = xmlDoc.getElementsByTagName('year');
			for (var i = 0; i < yearsArray.length; i++){
				if (yearsArray[i].attributes.getNamedItem("value").value == inYear)
				{
					var modelsArray = yearsArray[i].getElementsByTagName('model');
					for (var j = 0; j < modelsArray.length; j++)
					{
						if(modelsArray[j].attributes.getNamedItem("value").value == inModel)
						{
							var enginesArray = modelsArray[j].getElementsByTagName('engine');
							for(var k = 0; k < enginesArray.length; k++)
							{
								var xmlString = enginesArray[k].childNodes[0].nodeValue;
								vwDropMenu.addItem("engineMenu", xmlString, "javascript:enableForm();");
							}
							vwDropMenu.display.update("engineMenu", "SELECT");
						}
					}
				}
			}
		}
		else{/*fail quietly*/}
	};
	request.send(null);
}
function enableForm()
{
	if(inputFormState!="disabledError")
	{
		inputFormState = "enable";
		util.setStyle("f_mileage", "background", "#FFFFFF");
	}
	else
	{
		inputFormState = "error";
		util.setStyle("f_mileage", "background", "#005D93");
	}
}
function disableForm()
{
	if(inputFormState!="disableError")
	{
		inputFormState = "disable";
		util.setStyle("f_mileage", "background", "#ADADAD");
	}
}
function errorForm()
{
	if(inputFormState == "disable" || inputFormState == "disableError")
	{
		// show diabled
		inputFormState = "disable";
		util.setStyle("f_mileage", "background", "#ADADAD");
	}
	else
	{
		// show error
		inputFormState = "error";
		util.setStyle("f_mileage", "background", "#005D93");
	}
}
//======================================================================
// Oshyn code

function createXMLHttpRequest()
{
	if (typeof XMLHttpRequest != "undefined")
		return new XMLHttpRequest();
	else if (typeof ActiveXObject != "undefined")
		return new ActiveXObject("Microsoft.XMLHTTP");
	else
		throw new Error("XMLHttpRequest not supported");
}
function validate()
{
	var num = util.getNode("f_mileage").value.split(",").join("").split(".").join("");
	if(vwDropMenu.display.getValue("yearMenu") == "" || vwDropMenu.display.getValue("yearMenu") == "SELECT")
	{
		vwDropMenu.error("yearMenu");
		vwDropMenu.error("modelMenu");
		vwDropMenu.error("engineMenu");
		errorForm();
		pngpong.swapImage("f_errorMsg", "assets/images/errorMessage.png");
	}
	else if(vwDropMenu.display.getValue("modelMenu") == "" || vwDropMenu.display.getValue("modelMenu") == "SELECT")
	{
		vwDropMenu.error("modelMenu");
		vwDropMenu.error("engineMenu");
		errorForm();
		pngpong.swapImage("f_errorMsg", "assets/images/errorMessage.png");
	}
	else if(vwDropMenu.display.getValue("engineMenu") == "" || vwDropMenu.display.getValue("engineMenu") == "SELECT")
	{
		vwDropMenu.error("engineMenu");
		errorForm();
		pngpong.swapImage("f_errorMsg", "assets/images/errorMessage.png");
	}
	else if(util.getNode("f_mileage").value == "")
	{
		errorForm();
		pngpong.swapImage("f_errorMsg", "assets/images/errorMessage.png");
	}
	else if(isNaN(num))
	{
		errorForm();
		pngpong.swapImage("f_errorMsg", "assets/images/errorMessage.png");
	}
	else if(num > 100000)
	{
		<!--errorForm();-->
		<!--pngpong.swapImage("f_errorMsg", "assets/images/friendlyError.png");-->
		util.getNode("results").innerHTML = "<div class='friendlyError'>We're sorry but the maintenance schedule you requested for this Model and engine is not currently available online.</div>"
	}
	else
	{
		pngpong.swapImage("f_errorMsg", "assets/images/empty.png");
		enableForm();
		util.getNode("f_mileage").value = num;
		showResults();
	}
}
function showResults()
{
	util.getNode("results").innerHTML = '<div class="text_grey_dark r_next">Retrieving your schedule.</div>';
	// build live url when on server
	var xmlUrl = "/dealer/MaintenanceSchedulesQuery.do?year=";
	xmlUrl += vwDropMenu.display.getValue("yearMenu");
	xmlUrl += "&engineCode=" + vwDropMenu.display.getValue("engineMenu");
	xmlUrl += "&miles=" + calc();
	xmlUrl += "&carModel=" + vwDropMenu.display.getValue("modelMenu");
	var request = createXMLHttpRequest();
	request.open("GET", xmlUrl, true);
	request.onreadystatechange = function()
	{
		var itemCounter = 0;
		if (request.readyState == 4)
		{
			var xmlDoc = request.responseXML;
			var resultsData = "";
			var error_msg = "";
			var error_xml = "";
			var maintArray = "";
			var catchMaint = "";
			try{
				error_msg = xmlDoc.getElementsByTagName('error')[0].childNodes[0].firstChild.nodeValue.toLowerCase();
			}catch(e){}
			try{
				maintArray = xmlDoc.getElementsByTagName('maintenance');
			}catch(e){catchMaint = e;}
			if(error_msg == "no results" || catchMaint != "")
			{
				util.getNode("results").innerHTML = "<div class='friendlyError'>We're sorry but the maintenance schedule you requested for this Model and engine is not currently available online.</div>"
			}
			else
			{
				maintArry = xmlDoc.getElementsByTagName('maintenance');
				for (var i = 0; i < maintArray.length; i++)
				{
					var itemArray = maintArray[i].getElementsByTagName('item');
					for (var j = 0; j < itemArray.length; j++)
					{
						var descArray = itemArray[j].getElementsByTagName('description');
						for (var k = 0; k < descArray.length; k++)
						{
							var xmlString = descArray[k].childNodes[0].nodeValue;
							resultsData += '<div class="r_item">';
							resultsData += '<div id="item'+itemCounter+'" class="r_item_logo"></div>'
							resultsData += '<div class="r_item_text text_grey_dark">'
							resultsData += xmlString;
							resultsData += '</div></div>';
							itemCounter += 1;
						}
						var odoArray = itemArray[j].getElementsByTagName('odometer');
						for (var m = 0; m < odoArray.length; m++)
						{
							var milesArray = odoArray[m].getElementsByTagName('miles');
							for (var n = 0; n < milesArray.length; n++)
							{
								var nextMaintMiles = (1000 * milesArray[n].childNodes[0].nodeValue);
							}
						}
					}
				}
				var resultsString = '<div class="text_grey_dark r_next">Your next scheduled maintenance is at:</div><div class="text_blue r_mileage">';
				resultsString += util.addComma(nextMaintMiles) +  ' miles</div>';
				resultsString += '<div class="clear"></div>';
				resultsString += '<div><a class="r_completeSchedule" href="javascript:openCompleteSchedule();">';
				resultsString += '<div id="r_externalLink" class="r_externalLink"></div>View complete schedule</a></div>';
				resultsString += '<div class="text_blue r_itemsTitle">Items to be serviced:</div>';
				resultsString += '<div class="m_indent">';
				resultsString += resultsData;
				resultsString += '</div>';
				var col2String = '<div id="m_findADealer" class="m_findADealer"></div><div id="m_specialOffer" class="m_specialOffer"></div>';
				util.getNode("results").innerHTML = resultsString;
				util.getNode("m_col2").innerHTML = col2String;
				pngpong.serve("r_externalLink", "assets/images/icon_externalLink.png");
				if(dealersession.isDealerSession != true){
					pngpong.serveButtonUrl("m_findADealer", "/global/images/tout_findADealer_out.png", "/global/images/tout_findADealer_over.png", "/dealerlocator/en/us/");
				}else{
					pngpong.serveButtonUrl("m_findADealer", "/global/images/tout_contactDealer_out.gif", "/global/images/tout_contactDealer_over.gif", "http://"+dealersession.dealerDomain+"/ContactUsForm");
				}
				pngpong.serveButtonUrl("m_specialOffer", "/global/images/tout_specialOffer_out.png", "/global/images/tout_specialOffer_over.png", "/specialoffers/en/us/");
				for(var i=0; i<itemCounter; i++)
				{
					pngpong.serve("item"+i, "assets/images/icon_vwLogo.png");
				}
			}
		}
		else{
		//fail quietly
		}
	};
	request.send(null);
}
function openCompleteSchedule()
{
	var url = "/dealer/MaintenanceSchedulesQuery.do?year=" +vwDropMenu.display.getValue("yearMenu")+ "&engineCode=" +vwDropMenu.display.getValue("engineMenu")+ "&carModel=" +vwDropMenu.display.getValue("modelMenu")+ "&TEMPLATENAME=maintenanceComplete&output=print";
	var params = 'width=670,height=800,scrollbars=yes,location=yes';
	var completeSchedule = window.open(url, "completeSchedule", params);
}
function calc()
{
	var mi = util.getNode("f_mileage").value/1000;
	if((mi - Math.floor(mi)) > 0 || (mi-(mi%5)) == 0)
		return mi-(mi%5)+5;
	else
		return mi;
}
