var sInitialCriteriaArr;

function jsInitialLoad()
{
	var oCriteria = document.getElementById("hidCriteria");
	//alert(oCriteria.value);
	sInitialCriteriaArr = oCriteria.value.split("§");
	for ( var i = sInitialCriteriaArr.length; i < 11; i ++ )
		sInitialCriteriaArr[i] = "";
	oCriteria.value = "§§§§§§§§§§";
	jsChain("Make");
}

function jsChain(id)
{
	//alert("jsChain(" + id + ")");
	if ( id != "Throttle" )   jsShowTable(id);
	switch( id )   {
		case "Make":
			if ( sInitialCriteriaArr[0] == "" )   {
				var xmlhttp = jsGetAjax();
				if ( !xmlhttp )   return;
				xmlhttp.onreadystatechange = function()
				{
					if( xmlhttp.readyState == 4 ) {
						jsPopulateSelect("Make", "Select Make...", xmlhttp.responseText, "");
					}
				}
				xmlhttp.open("GET","ajax_throttles.php?type=make",true);
				xmlhttp.send(null);
			}
			else {
				if ( sInitialCriteriaArr[1] == "" )
					jsPopulateSelect("Make", "Select Make...", sInitialCriteriaArr[0], "");
				else   {
					jsPopulateSelect("Make", "Select Make...", sInitialCriteriaArr[0], sInitialCriteriaArr[1]);
					jsShowTable("Year");
					jsChain("Year");
				}
			}
			break;
		case "Year":
			if ( sInitialCriteriaArr[2] == "" )   {
				var xmlhttp = jsGetAjax();
				if ( !xmlhttp )   return;
				xmlhttp.onreadystatechange = function()
				{
					if( xmlhttp.readyState == 4 ) {
						jsPopulateSelect("Year", "Select Year...", xmlhttp.responseText, "");
					}
				}
				xmlhttp.open("GET","ajax_throttles.php?type=year",true);
				xmlhttp.send(null);
			}
			else {
				if ( sInitialCriteriaArr[3] == "" )
					jsPopulateSelect("Year", "Select Year...", sInitialCriteriaArr[2], "");
				else   {
					jsPopulateSelect("Year", "Select Year...", sInitialCriteriaArr[2], sInitialCriteriaArr[3]);
					jsShowTable("Model");
					jsChain("Model");
				}
			}
			break;
		case "Model":
			if ( sInitialCriteriaArr[4] == "" )   {
				var xmlhttp = jsGetAjax();
				if ( !xmlhttp )   return;
				xmlhttp.onreadystatechange = function()
				{
					if( xmlhttp.readyState == 4 ) {
						jsPopulateSelect("Model", "Select Model...", xmlhttp.responseText, "");
					}
				}
				xmlhttp.open("GET","ajax_throttles.php?type=model",true);
				xmlhttp.send(null);
			}
			else {
				if ( sInitialCriteriaArr[5] == "" )
					jsPopulateSelect("Model", "Select Model...", sInitialCriteriaArr[4], "");
				else   {
					jsPopulateSelect("Model", "Select Model...", sInitialCriteriaArr[4], sInitialCriteriaArr[5]);
					jsShowTable("Engine");
					jsChain("Engine");
				}
			}
			break;
		case "Engine":
			if ( sInitialCriteriaArr[6] == "" )   {
				var xmlhttp = jsGetAjax();
				if ( !xmlhttp )   return;
				xmlhttp.onreadystatechange = function()
				{
					if( xmlhttp.readyState == 4 ) {
						jsPopulateSelect("Engine", "Select Engine...", xmlhttp.responseText, "");
					}
				}
				xmlhttp.open("GET","ajax_throttles.php?type=trans",true);
				xmlhttp.send(null);
			}
			else {
				if ( sInitialCriteriaArr[7] == "" )
					jsPopulateSelect("Engine", "Select Engine...", sInitialCriteriaArr[6], "");
				else   {
					jsPopulateSelect("Engine", "Select Engine...", sInitialCriteriaArr[6], sInitialCriteriaArr[7]);
					jsShowTable("Transmission");
					jsChain("Transmission");
				}
			}
			break;
		case "Transmission":
			if ( sInitialCriteriaArr[8] == "" )   {
				var xmlhttp = jsGetAjax();
				if ( !xmlhttp )   return;
				xmlhttp.onreadystatechange = function()
				{
					if( xmlhttp.readyState == 4 ) {
						jsShowResults(xmlhttp.responseText);
					}
				}
				xmlhttp.open("GET","ajax_throttles.php?type=throttle",true);
				xmlhttp.send(null);
			}
			else {
				if ( sInitialCriteriaArr[9] == "" )
					jsPopulateSelect("Transmission", "Select Transmission...", sInitialCriteriaArr[8], "");
				else   {
					jsPopulateSelect("Transmission", "Select Transmission...", sInitialCriteriaArr[8], sInitialCriteriaArr[9]);
					jsShowTable("Results1");
					jsShowTable("Results2");
					jsChain("Throttle");
				}
			}
			break;
		case "Throttle":
			jsShowResults(sInitialCriteriaArr[10]);
			break;
	}
}

function jsGetAjax()
{
	if (window.XMLHttpRequest)
	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
		 return new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		alert("Your browser does not support XMLHTTP!");
		return null;
	}
}

function jsShowTable(id)
{
	document.getElementById("tbl" + id).style.display = "block";
}

function jsHideTable(id)
{
	document.getElementById("tbl" + id).style.display = "none";
}

function jsPopulateSelect(id, sFirstOption, sOptionList, sValue)
{
	var oSelect = document.getElementById("sel" + id);
	oSelect.innerHTML = "";
	oSelect.options[0] = new Option(sFirstOption, "");
	var sOptionArr = sOptionList.split("|");
	for ( var i = 0; i < sOptionArr.length; i ++ )   {
		oSelect.options[i + 1] = new Option(sOptionArr[i], sOptionArr[i]);
	}
	if ( sValue != "" )   
		oSelect.value = sValue;
	else
		oSelect.selectedIndex = 0;
	var oCriteria = document.getElementById("hidCriteria");
	var sCriteriaArr = oCriteria.value.split("§");
	switch( id )   {
		case "Make": sCriteriaArr[0] = sOptionList; sCriteriaArr[1] = sValue; oCriteria.value = sCriteriaArr.join("§"); break;
		case "Year": sCriteriaArr[2] = sOptionList; sCriteriaArr[3] = sValue; oCriteria.value = sCriteriaArr.join("§"); break;
		case "Model": sCriteriaArr[4] = sOptionList; sCriteriaArr[5] = sValue; oCriteria.value = sCriteriaArr.join("§"); break;
		case "Engine": sCriteriaArr[6] = sOptionList; sCriteriaArr[7] = sValue; oCriteria.value = sCriteriaArr.join("§"); break;
		case "Transmission": sCriteriaArr[8] = sOptionList; sCriteriaArr[9] = sValue; oCriteria.value = sCriteriaArr.join("§"); break;
	}
	//alert("jsPopulateSelect(" + id + ", " + sFirstOption + ", " + sOptionList + ", " + sValue + ")\n\n" + oCriteria.value);
}

function jsClearSelect(id)
{
	jsHideTable(id);
	var oSelect = document.getElementById("sel" + id);
	oSelect.innerHTML = "";
	oSelect.options[0] = new Option("Loading...", "");
}

function jsShowResults(sResults)
{
	//alert(sResults);
	var oCriteria = document.getElementById("hidCriteria");
	var sCriteriaArr = oCriteria.value.split("§");
	sCriteriaArr[10] = sResults; 
	oCriteria.value = sCriteriaArr.join("§"); 
	var sTopArr = sResults.split("^^");
	var sResultsArr = sTopArr[0].split("|");
	var oLink;
	if ( sResultsArr[0] != "" )   {
		jsShowTable("Throttle1");
		document.getElementById("tdThrottle1").innerHTML = sResultsArr[0];
		document.getElementById("tdSoftware1").innerHTML = sResultsArr[1];
		oLink = document.getElementById("lnkLink1");
		if ( sResultsArr[2] != "" )   {
			oLink.href = sResultsArr[2];
			oLink.style.display = "block";
		}
		else
			oLink.style.display = "none";
	}
	else
		jsHideTable("Throttle1");
	if ( sResultsArr[3] != "" )   {
		jsShowTable("Throttle2");
		document.getElementById("tdThrottle2").innerHTML = sResultsArr[3];
		document.getElementById("tdSoftware2").innerHTML = sResultsArr[4];
		if ( sResultsArr[5] != "" )   {
			oLink = document.getElementById("lnkLink2");
			oLink.href = sResultsArr[5];
			oLink.style.display = "block";
		}
		else
			oLink.style.display = "none";
	}
	else
		jsHideTable("Throttle2");
	if ( sResultsArr[6] != "" )   {
		jsShowTable("Throttle3");
		document.getElementById("tdThrottle3").innerHTML = sResultsArr[6];
		document.getElementById("tdSoftware3").innerHTML = sResultsArr[7];
		if ( sResultsArr[8] != "" )   {
			oLink = document.getElementById("lnkLink3");
			oLink.href = sResultsArr[8];
			oLink.style.display = "block";
		}
		else
			oLink.style.display = "none";
	}
	else
		jsHideTable("Throttle3");
	jsHideTable("Results2");
	jsShowTable("Results3");
	//alert(sTopArr.length);
	if ( sTopArr.length > 1 )   {
		for ( var i = 1; i < Math.min(sTopArr.length, 6); i ++ )   {
			sResultsArr = sTopArr[i].split("|");
			document.getElementById("tdIssueThrottle" + i).innerHTML = sResultsArr[0];
			document.getElementById("tdIssueYear" + i).innerHTML = sResultsArr[1];
			document.getElementById("tdIssueVehicle" + i).innerHTML = sResultsArr[2];
			document.getElementById("tdIssueEngine" + i).innerHTML = sResultsArr[3];
			document.getElementById("tdIssueIssue" + i).innerHTML = sResultsArr[4];
			document.getElementById("tdIssueSolution" + i).innerHTML = sResultsArr[5];
			document.getElementById("tdIssueSolutionLabel" + i).innerHTML = ( sResultsArr[5] == "" ? "" : "Solution:" );
			jsShowTable("Issue" + i);
		}
		jsShowTable("Issues");
	}
}

function jsChangeSelection(oSelect)
{

	var xmlhttp = jsGetAjax();
	if ( !xmlhttp )   return;
	var sMake = document.getElementById("selMake").value;
	var sYear = document.getElementById("selYear").value;
	var sModel = document.getElementById("selModel").value;
	var sEngine = document.getElementById("selEngine").value;
	var sTransmission = document.getElementById("selTransmission").value;
	jsHideTable("Results1");
	jsHideTable("Results2");
	jsHideTable("Results3");
	jsHideTable("Issues");
	jsHideTable("Issue1");
	jsHideTable("Issue2");
	jsHideTable("Issue3");
	var oCriteria = document.getElementById("hidCriteria");
	var sCriteriaArr = oCriteria.value.split("§");
	switch( oSelect.id )   {

		case "selMake":

			xmlhttp.onreadystatechange = function()
			{
				if( xmlhttp.readyState == 4 ) {
					jsPopulateSelect("Year", "Select Year...", xmlhttp.responseText, "");
				}
			}

			sCriteriaArr[1] = sMake; 
			oCriteria.value = sCriteriaArr.join("§"); 
			if ( sMake == "" )   {
				jsClearSelect("Year");
				jsClearSelect("Model");
				jsClearSelect("Engine");
				jsClearSelect("Transmission");
			}

			else {
				jsShowTable("Year");
				jsClearSelect("Model");
				jsClearSelect("Engine");
				jsClearSelect("Transmission");
				xmlhttp.open("GET","ajax_throttles.php?type=year&make=" + sMake, true);
				xmlhttp.send(null);
			}

			break;

		case "selYear":

			xmlhttp.onreadystatechange = function()
			{
				if( xmlhttp.readyState == 4 ) {
					jsPopulateSelect("Model", "Select Model...", xmlhttp.responseText, "");
				}
			}

			sCriteriaArr[3] = sYear; 
			oCriteria.value = sCriteriaArr.join("§"); 
			if ( sYear == "" )   {
				jsClearSelect("Model");
				jsClearSelect("Engine");
				jsClearSelect("Transmission");
			}

			else {
				jsShowTable("Model");
				jsClearSelect("Engine");
				jsClearSelect("Transmission");
				xmlhttp.open("GET","ajax_throttles.php?type=model&make=" + sMake + "&year=" + sYear, true);
				xmlhttp.send(null);
			}

			break;

		case "selModel":

			xmlhttp.onreadystatechange = function()
			{
				if( xmlhttp.readyState == 4 ) {
					jsPopulateSelect("Engine", "Select Engine...", xmlhttp.responseText, "");
				}
			}

			sCriteriaArr[5] = sModel; 
			oCriteria.value = sCriteriaArr.join("§"); 
			if ( sModel == "" )   {
				jsClearSelect("Engine");
				jsClearSelect("Transmission");
			}

			else {
				jsShowTable("Engine");
				jsClearSelect("Transmission");
				xmlhttp.open("GET","ajax_throttles.php?type=engine&make=" + sMake + "&year=" + sYear + "&model=" + sModel, true);
				xmlhttp.send(null);
			}

			break;

		case "selEngine":

			xmlhttp.onreadystatechange = function()
			{
				if( xmlhttp.readyState == 4 ) {
					jsPopulateSelect("Transmission", "Select Transmission...", xmlhttp.responseText, "");
				}
			}

			sCriteriaArr[7] = sEngine; 
			oCriteria.value = sCriteriaArr.join("§"); 
			if ( sEngine == "" )   {
				jsClearSelect("Transmission");
			}

			else {
				jsShowTable("Transmission");
				xmlhttp.open("GET","ajax_throttles.php?type=trans&make=" + sMake + "&year=" + sYear + "&model=" + sModel + "&engine=" + sEngine, true);
				xmlhttp.send(null);
			}

			break;

		case "selTransmission":

			xmlhttp.onreadystatechange = function()
			{
				if( xmlhttp.readyState == 4 ) {
					jsShowResults(xmlhttp.responseText);
				}
			}

			sCriteriaArr[9] = sTransmission; 
			oCriteria.value = sCriteriaArr.join("§"); 
			if ( sTransmission == "" )   {
			}

			else {
				jsShowTable("Results1");
				jsShowTable("Results2");
				xmlhttp.open("GET","ajax_throttles.php?type=throttles&make=" + sMake + "&year=" + sYear + "&model=" + sModel + "&engine=" + sEngine + "&trans=" + sTransmission, true);
				xmlhttp.send(null);
			}

			break;
	}
	//alert("jsChangeSelection(" + oSelect.id + ")\n\n" + oCriteria.value);
}
