var xmlHttp

var xhr = new Array(); // ARRAY OF XML-HTTP REQUESTS
var xi = new Array(0); // ARRAY OF XML-HTTP REQUEST INDEXES
xi[0] = 1; // FIRST INDEX SET TO 1 MAKING IT AVAILABLE

function xhrRequest(type) {
	if (!type) {
		type = 'html';
	}
	// xhrsend IS THE xi POSITION THAT GETS PASSED BACK
	// INITIALIZED TO THE LENGTH OF THE ARRAY(LAST POSITION + 1)
	// IN CASE A FREE RESOURCE ISN'T FOUND IN THE LOOP
	var xhrsend = xi.length; 
	
	// GO THROUGH AVAILABLE xi VALUES
	for (var i=0; i<xi.length; i++) {
		// IF IT'S 1 (AVAILABLE), ALLOCATE IT FOR USE AND BREAK
		if (xi[i] == 1) {
			xi[i] = 0;
			xhrsend = i;
			break;
		}
	}
	// SET TO 0 SINCE IT'S NOW ALLOCATED FOR USE
	xi[xhrsend] = 0;
	// SET UP THE REQUEST
	if (window.ActiveXObject) {
		try {
			xhr[xhrsend] = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xhr[xhrsend] = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	} else if (window.XMLHttpRequest) {
		xhr[xhrsend] = new XMLHttpRequest();
		if (xhr[xhrsend].overrideMimeType) {
			xhr[xhrsend].overrideMimeType('text/' + type);
		}
	}	
	return (xhrsend);
}

function getXML(url, fnsig, strarray)
{
	var xhri = xhrRequest('xml');	
	str = fnsig;
	if(strarray.length > 0){
		str+="(";
		for(i = 0; i < strarray.length; i++){
			str+=("\'" + strarray[i] + "\',");
			//if(i != strarray.length-1){str+=","};
		}
		str+=xhri + ")";		
	}
	xhr[xhri].onreadystatechange=new Function(str)//eval(fnsig); 
	xhr[xhri].open("GET",url,true)
	xhr[xhri].send(null)
} 

var objXMLDOM = null;

function populateMakeList(elementid, selectvalelement, xhri){ 
	xmlname = 'MAKE';
	xmlvalue = 'MAKEID';
	if (xhr[xhri].readyState==4 || xhr[xhri].readyState=="complete"){ 
		// code for IE
		if (window.ActiveXObject) {
			objXMLDOM=new ActiveXObject("Microsoft.XMLDOM");
		// code for Mozilla, Firefox, Opera, etc
		} else if (document.implementation &&
					document.implementation.createDocument) {
			objXMLDOM=document.implementation.createDocument("","",null);
		} else {
			alert('Your browser cannot handle this script');
		}
		objXMLDOM=xhr[xhri].responseXML;
		xi[xhri] = 1;
		xhr[xhri] = null;		
		var htmlelement = document.getElementById(elementid);			
		htmlelement.length = 0;				
		var rootnode = objXMLDOM.getElementsByTagName("results")[0];		
		htmlelement.length = rootnode.childNodes.length;
		for(i = 0; i < rootnode.childNodes.length; i++){
			htmlelement.options[i].text = rootnode.childNodes[i].getElementsByTagName(xmlname)[0].childNodes[0].nodeValue;
			htmlelement.options[i].value = rootnode.childNodes[i].getElementsByTagName(xmlvalue)[0].childNodes[0].nodeValue;
		}
		
		/*if(isObject(eval('document.forms[0].' + selectvalelement + '.value'))){
			setSelectedDD(htmlelement, eval('document.forms[0].' + selectvalelement + '.value'));
		}*/
		//xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;				
		//testelement.innerHTML = objXMLDOM.text;
	} 
}

function populateModelList(elementid, selectvalelement, xhri){ 
	xmlname = 'MODELPREFIX';
	xmlvalue = 'MODELPREFIX';
	if (xhr[xhri].readyState==4 || xhr[xhri].readyState=="complete"){ 
		// code for IE
		if (window.ActiveXObject) {
			objXMLDOM=new ActiveXObject("Microsoft.XMLDOM");
		// code for Mozilla, Firefox, Opera, etc
		} else if (document.implementation &&
					document.implementation.createDocument) {
			objXMLDOM=document.implementation.createDocument("","",null);
		} else {
			alert('Your browser cannot handle this script');
		}
		objXMLDOM=xhr[xhri].responseXML;
		xi[xhri] = 1;
		xhr[xhri] = null;		
		var htmlelement = document.getElementById(elementid);			
		htmlelement.length = 0;				
		var rootnode = objXMLDOM.getElementsByTagName("results")[0];		
		htmlelement.length = rootnode.childNodes.length;
		for(i = 0; i < rootnode.childNodes.length; i++){
			htmlelement.options[i].text = rootnode.childNodes[i].getElementsByTagName(xmlname)[0].childNodes[0].nodeValue;
			htmlelement.options[i].value = rootnode.childNodes[i].getElementsByTagName(xmlvalue)[0].childNodes[0].nodeValue;
		}
		selectedMakeId = getSelectedDD(note.make);
		if(selectedMakeId == -1){selectedMakeId=1;}else{selectedMakeId=note.make.value;}		
		selectedModelPrefix = getSelectedDD(note.model);
		if(selectedModelPrefix == -1){selectedModelPrefix=1;}else{selectedModelPrefix=note.model.value;}
		getXML('/KlippanWeb/getYearList?makeid=' + selectedMakeId + '&modelprefix=' + selectedModelPrefix, 'populateYearList', new Array('year', 'year'));
	} 
}

function populateYearList(elementid, selectvalelement, xhri){ 
	xmlname = 'YEAR';
	xmlvalue = 'YEAR';
	if (xhr[xhri].readyState==4 || xhr[xhri].readyState=="complete"){ 
		// code for IE
		if (window.ActiveXObject) {
			objXMLDOM=new ActiveXObject("Microsoft.XMLDOM");
		// code for Mozilla, Firefox, Opera, etc
		} else if (document.implementation &&
					document.implementation.createDocument) {
			objXMLDOM=document.implementation.createDocument("","",null);
		} else {
			alert('Your browser cannot handle this script');
		}
		objXMLDOM=xhr[xhri].responseXML;
		xi[xhri] = 1;
		xhr[xhri] = null;		
		var htmlelement = document.getElementById(elementid);		
		htmlelement.length = 0;				
		var rootnode = objXMLDOM.getElementsByTagName("results")[0];		
		htmlelement.length = rootnode.childNodes.length;
		for(i = 0; i < rootnode.childNodes.length; i++){
			htmlelement.options[i].text = rootnode.childNodes[i].getElementsByTagName(xmlname)[0].childNodes[0].nodeValue;
			htmlelement.options[i].value = rootnode.childNodes[i].getElementsByTagName(xmlvalue)[0].childNodes[0].nodeValue;
		}
		
		if(isObject(eval('document.forms[0].' + selectvalelement + '.value'))){
			setSelectedDD(htmlelement, eval('document.forms[0].' + selectvalelement + '.value'));
		}
	} 
}

function getGuideList(elementid, makeval, modelval, xhri){ 
	if (xhr[xhri].readyState==4 || xhr[xhri].readyState=="complete"){ 
		// code for IE
		if (window.ActiveXObject) {
			objXMLDOM=new ActiveXObject("Microsoft.XMLDOM");
		// code for Mozilla, Firefox, Opera, etc
		} else if (document.implementation &&
					document.implementation.createDocument) {
			objXMLDOM=document.implementation.createDocument("","",null);
		} else {
			alert('Your browser cannot handle this script');
		}
		objXMLDOM=xhr[xhri].responseXML;
		xi[xhri] = 1;
		xhr[xhri] = null;		
		var htmlelement = document.getElementById("divHolder");			
		var rootnode = objXMLDOM.getElementsByTagName("results")[0];		

		CreateTable(rootnode, makeval, modelval, htmlelement);		
	} 
}

function getNodeTextValue(rootnode, nodename, retval){
	if(isObject(rootnode.childNodes[0].getElementsByTagName(nodename)[0].childNodes[0])){
		return(rootnode.childNodes[0].getElementsByTagName(nodename)[0].childNodes[0].nodeValue);
	}else{
		return retval;
	}
}

function getNodeTextValue(rootnode, childnodeindex, nodename, retval){
	if(isObject(rootnode.childNodes[childnodeindex].getElementsByTagName(nodename)[0].childNodes[0])){
		return(rootnode.childNodes[childnodeindex].getElementsByTagName(nodename)[0].childNodes[0].nodeValue);
	}else{
		return retval;
	}
}

function GetXmlHttpObject(){ 
	var objXMLHttp=null
	if (window.XMLHttpRequest){
		objXMLHttp=new XMLHttpRequest();
	}else if (window.ActiveXObject){
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objXMLHttp;
}
