var globalCatalogueXML = null; 

Array.prototype.inArray = function(v){
  for(var i in this){if(this[i] == v){return true;}}return false;
}

function createXMLHttp()
{
    if (typeof XMLHttpRequest != "undefined")
    {
        return new XMLHttpRequest();    
    }
    else
    {
        var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp" ];
        for (var i = 0; i <aVersions.length; i++)
        {
             try
             {
                 var oXmlHttp = new ActiveXObject(aVersions[i]);
                 return oXmlHttp;
             }
             catch (oError)
             { }
        }
    }
    throw new Error("Can't create XMLHttp.");
}

function createXMLfromString(string)
{
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(string);
		//xmlDoc.normalize();
		return xmlDoc;
	}
	catch(e)
	{
	 	try //Firefox, Mozilla, Opera, etc.
		{
			var parser=new DOMParser();
			parser = parser.parseFromString(string,"text/xml");
			parser.normalize();
			return parser;
		}
		catch(e) 
		{
			alert(e.message)
		}
	}
}

function loadCatalogueXML()
{
	if (globalCatalogueXML == null)
	{
		document.getElementById('exhaustResultDiv').innerHTML = '<img src="./images/wait.gif" /><br />';
		switch(GLOBAL_LANG)
		{
			//case 'de': document.getElementById('exhaustResultDiv').innerHTML += 'Bitte Warten'; break;
			//default: document.getElementById('exhaustResultDiv').innerHTML += 'Please wait'; break;
		}
		var oXmlHttp = createXMLHttp();
		oXmlHttp.open("get", './exhaustAjax/xml.php?&lang='+GLOBAL_LANG, true);
		oXmlHttp.onreadystatechange = function()
		{
			if (oXmlHttp.readyState == 4)
			{
				if (oXmlHttp.status == 200)
				{
					globalCatalogueXML = createXMLfromString(oXmlHttp.responseText);
					document.getElementById('exhaustResultDiv').innerHTML = '';
					//loadCatalogueMenu();
					
					oFrom = document.getElementById('searchExhaustFormID');
					if (oFrom.make.value != '%')
						loadCatalogueMenu('Model');
					//else
					//	loadCatalogueMenu();
				}
				else
				{
					alert('ERROR: '+oXmlHttp.statusText);    
				}
			}
		}
		oXmlHttp.send(null);
	}
}

function loadCatalogueMenu(action)
{
	oForm = document.getElementById('searchExhaustFormID');
	if (globalCatalogueXML == null)
	{
		if (action == 'Model')
			insertOptionToSelect(oForm.model, new Array(), '');
		return false;
	}
	if (action == undefined)
		action = 'Make';
	
	switch (action)
	{
		case 'Make':
			var makes = new Array();
			var makesXML = globalCatalogueXML.getElementsByTagName("makes")[0];
			for (var i=0; i<makesXML.getElementsByTagName("ma").length; i++)
			{
				makes.push(makesXML.getElementsByTagName("ma")[i].getAttribute("v"));
			} 
			insertOptionToSelect(oForm.make, makes, makesXML.getElementsByTagName("choose")[0].getAttribute("make"));
			oForm.make.disabled = false;
			oForm.model.disabled = false;
			document.getElementById('exhaustResultDiv').innerHTML = makesXML.getElementsByTagName("choose")[0].getAttribute("make");
		break;
		case 'Model': 
			var models = new Array();
			var makesXML = globalCatalogueXML.getElementsByTagName("makes")[0];
			for (var i=0; i<makesXML.getElementsByTagName("ma").length; i++)
			{
				if (oForm.make.value == makesXML.getElementsByTagName("ma")[i].getAttribute("v"))
				{
					var modelsXML = makesXML.getElementsByTagName("ma")[i];
					for (var j=0; j<modelsXML.getElementsByTagName("mo").length; j++)
					{
						if (!models.inArray(modelsXML.getElementsByTagName("mo")[j].getAttribute("v")))
							models.push(modelsXML.getElementsByTagName("mo")[j].getAttribute("v"));
					}
				}
			}
			insertOptionToSelect(oForm.model, models, makesXML.getElementsByTagName("choose")[0].getAttribute("model"));
			oForm.make.disabled = false;
			oForm.model.disabled = false;
			oForm.engine.disabled = false;
			document.getElementById('exhaustResultDiv').innerHTML = makesXML.getElementsByTagName("choose")[0].getAttribute("model");
		break;
		case 'Engine': 
			var engines = new Array();
			
			var makesXML = globalCatalogueXML.getElementsByTagName("makes")[0];
			for (var i=0; i<makesXML.getElementsByTagName("ma").length; i++)
			{
				if (oForm.make.value == makesXML.getElementsByTagName("ma")[i].getAttribute("v"))
				{
					var modelsXML = makesXML.getElementsByTagName("ma")[i];
					for (var j=0; j<modelsXML.getElementsByTagName("mo").length; j++)
					{
						if (oForm.model.value == modelsXML.getElementsByTagName("mo")[j].getAttribute("v"))
						{
							var enginesXML = modelsXML.getElementsByTagName("mo")[j].getElementsByTagName("e");
							for(var k=0; k<enginesXML.length; k++)
							{
								if (!engines.inArray(enginesXML[k].getAttribute('v')))
									engines.push(enginesXML[k].getAttribute('v'));
							}
						}
					}
				}
			}
			insertOptionToSelect(oForm.engine, engines, makesXML.getElementsByTagName("choose")[0].getAttribute("engine"));
			oForm.make.disabled = false;
			oForm.model.disabled = false;
			oForm.engine.disabled = false;
			oForm.hp.disabled = false;
			document.getElementById('exhaustResultDiv').innerHTML = makesXML.getElementsByTagName("choose")[0].getAttribute("engine");
		break;
		case 'Hp': 
			var hps = new Array();
			
			var makesXML = globalCatalogueXML.getElementsByTagName("makes")[0];
			for (var i=0; i<makesXML.getElementsByTagName("ma").length; i++)
			{
				if (oForm.make.value == makesXML.getElementsByTagName("ma")[i].getAttribute("v"))
				{
					var modelsXML = makesXML.getElementsByTagName("ma")[i];
					for (var j=0; j<modelsXML.getElementsByTagName("mo").length; j++)
					{
						if (oForm.model.value == modelsXML.getElementsByTagName("mo")[j].getAttribute("v"))
						{
							var enginesXML = modelsXML.getElementsByTagName("mo")[j].getElementsByTagName("e");
							for(var k=0; k<enginesXML.length; k++)
							{
								if (oForm.engine.value == enginesXML[k].getAttribute("v"))
								{
									if(oForm.engine.value == enginesXML[k].getAttribute("v"))
									{
										if (!hps.inArray(enginesXML[k].getAttribute('hp')))
											hps.push(enginesXML[k].getAttribute("hp"));
									}
									
								}
							}
						}
					}
				}
			}
			insertOptionToSelect(oForm.hp, hps, makesXML.getElementsByTagName("choose")[0].getAttribute("hp"));
			oForm.make.disabled = false;
			oForm.model.disabled = false;
			oForm.engine.disabled = false;
			oForm.hp.disabled = false;
			oForm.hp.year_of_production = false;
			document.getElementById('exhaustResultDiv').innerHTML = makesXML.getElementsByTagName("choose")[0].getAttribute("hp");
		break;
	}
	
	switch(action)
	{
		case 'Make': oForm.model.disabled = true;
		case 'Model': oForm.engine.disabled 	= true;
		case 'Engine': oForm.hp.disabled = true;
		case 'Hp':
		oForm.year_of_production.disabled = false;
		oForm.year_of_production.options[0].selected = true; 
		oForm.year_of_production.disabled = true;
	}
}


function enabledIfChange(select)
{
	select.disabled = false; 
	select.focus();
}

function insertOptionToSelect(select, optionsList, all)
{
	select.options.length = 0;
	if (optionsList.length == 0)
	{
		switch(GLOBAL_LANG)
		{
			case 'de': select.options[0] = new Option('Bitte Warten','%'); break;
			default: select.options[0] = new Option('Please wait','%');  break;
		}
	}
	else
	{
		select.options[0] = new Option(all,'%');
		for (var i=1; i<=optionsList.length; i++)
			if (optionsList[i-1].length > 0)
				select.options[i]  = new Option(optionsList[i-1],optionsList[i-1]);
	}
}

function showExhamustResult(oForm)
{
	var resoultDiv = document.getElementById('exhaustResultDiv');
	resoultDiv.innerHTML = '<img src="./images/wait.gif" />';
	var sBody = getRequestBody(oForm);
	var oXmlHttp = createXMLHttp();
	oXmlHttp.open("post", './exhaustAjax/getOptions.php?action=ShowResoult&lang='+GLOBAL_LANG, true);
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	
	oXmlHttp.onreadystatechange = function()
    {
        if (oXmlHttp.readyState == 4)
            if (oXmlHttp.status == 200)
				resoultDiv.innerHTML = oXmlHttp.responseText; 
            else
                alert('ERROR: '+oXmlHttp.statusText);    
    }	
	oXmlHttp.send(sBody);
}

function deleteFirstOption(select)
{
	if (select.options[0].value == '%') 
		select.options[0] = null;
}

function getRequestBody(oForm)
{
	
    var aParms = new Array();	
    for (var i=0; i<oForm.length; i++)
    {
	    if (oForm.elements[i].type != 'checkbox')
		{
			var sParm = encodeURIComponent(oForm.elements[i].name);
			sParm += "=";
			sParm += encodeURIComponent(oForm.elements[i].value);
			aParms.push(sParm);
		}
		else if (oForm.elements[i].checked == true)
		{
			var sParm = encodeURIComponent(oForm.elements[i].name);
			sParm += "=";
			sParm += encodeURIComponent(oForm.elements[i].value);
			aParms.push(sParm);
		}
    }
    return aParms.join("&"); 
}