function AJAXInteractionModal(url, callback){
        var req = initModal();
        req.onreadystatechange = processRequestModal;

        function initModal(){
                if(window.XMLHttpRequest){
                        return new XMLHttpRequest();
		}
		else if(window.ActiveXObject){
			return new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	function processRequestModal(){
		//readyState of 4 signifies request is complete
		if(req.readyState == 4){
			//status of 200 signifies successful HTTP call
			if(req.status == 200){
				if(callback) callback(req.responseXML);
			}
			else{
				if(document.vehicleModal.autoModel.length <= 0){ 
					/*if(document.vehicleModal.autoYear.value != "#"){
						openMenuModal('modelMessage');
					}*/
				}
				else{
					document.vehicleModal.submit();
					openMenuModal('updateMsgModal');
				}
			}
		}
	}

	this.doGet=function(){
		req.open("GET", url, true);
		req.send(null);
	}
	this.doPost=function(str) {
		req.open("POST", url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		req.send(str);
	}
}

function populateAutoYearsModal(){
  if(document.vehicleModal.autoMake.value != "#"){
  	var targetMake = document.vehicleModal.autoMake.value;
		var url = "/survey/ValidationServlet?autoMake=" + targetMake + "&autoYearsNeeded=true";
		var ajax = new AJAXInteractionModal(url, yearCallbackModal);
		ajax.doGet();
	}
}

function populateAutoModelsModal(){
	if(document.vehicleModal.autoYear.value != "#" &&
		 document.vehicleModal.autoYear.value != ""  &&
		 document.vehicleModal.autoMake.value != "#" &&
	   document.vehicleModal.autoMake.value != ""){
		var targetYear = document.vehicleModal.autoYear.value;
		var targetMake = document.vehicleModal.autoMake.value;
		
		var url = "/survey/ValidationServlet?autoYear=" + targetYear + "&autoMake=" + targetMake;
		var ajax = new AJAXInteractionModal(url, validateCallbackModal);
		ajax.doGet();
	}
}

function populateModClarModal(){
	if(document.vehicleModal.autoYear.value != "#" &&
	   document.vehicleModal.autoMake.value != "#" &&
	   document.vehicleModal.autoModel.value != "#"){
		var targetYear = document.vehicleModal.autoYear.value;
		var targetMake = document.vehicleModal.autoMake.value;
		var targetModel = document.vehicleModal.autoModel.value;
		
		var url = "/survey/ValidationServlet?autoYear=" + targetYear + "&autoMake=" + targetMake + "&autoModel=" + targetModel;
		var ajax = new AJAXInteractionModal(url, clarCallbackModal);
		ajax.doGet();
	}
}

function deleteAutoYearsModal(){
  if(document.vehicleModal.autoYear.options != null){
		while(document.vehicleModal.autoYear.options.length > 0){
	  	deleteIndex = document.vehicleModal.autoYear.options.length - 1;
		  document.vehicleModal.autoYear.options[deleteIndex] = null;
		}
	document.vehicleModal.autoYear.style.display="none";
  }
}

function deleteAutoModelsModal(){
	//closeMenuModal('modelMessage');
	if(document.vehicleModal.autoModel.options != null){
		while(document.vehicleModal.autoModel.options.length > 0){
			deleteIndex = document.vehicleModal.autoModel.options.length - 1;
			document.vehicleModal.autoModel.options[deleteIndex] = null;
		}
	}	
	closeMenuModal('autoModelModal');
	/*if(document.getElementById("modelDiv") != null){
		closeMenuModal('modelDiv');
	}*/
	deleteAutoModClar();
}

function deleteAutoModClarModal(){
	if(document.vehicleModal.autoModClar.options != null){
		while(document.vehicleModal.autoModClar.options.length > 0){
			deleteIndex = document.vehicleModal.autoModClar.options.length - 1;
			document.vehicleModal.autoModClar.options[deleteIndex] = null;
		}
	}
	closeMenuModal('autoModClarModal');
	/*if(document.getElementById("clarDiv") != null){
		closeMenuModal('clarDiv');
	}*/
	//closeMenuModal('addtlInfo');
}

function validateCallbackModal(responseXML){
	if(responseXML){
		var models = responseXML.getElementsByTagName("models")[0];
		if(models.childNodes.length > 0){
			var num = 0;

			myOption = new Option();
				myOption.text = "Escoja el modelo";
			myOption.value = "#";
			document.vehicleModal.autoModel.options[0] = myOption;
			for(loop = 0; loop < models.childNodes.length; loop++){
				var autoModel = models.getElementsByTagName("model")[loop];

				myOption = new Option();

				myOption.text = autoModel.childNodes[0].nodeValue;
				myOption.value = autoModel.childNodes[0].nodeValue;
			
				/*if(document.vehicleModal.autoModel.selectedIndex > 0){
					insertIndex = document.vehicleModal.autoModel.selectedIndex;
				}
				else{
					insertIndex = document.vehicleModal.autoModel.options.length;
				}*/

				document.vehicleModal.autoModel.options[loop+1] = myOption;
			}
			openMenuModal('autoModelModal');
			
			//Menu expansion check
			/*if(document.getElementById("modelDiv") != null){
				document.getElementById("modelDiv").style.height="25px";
				openMenuModal('modelDiv');
			}*/
		//	openMenuModal('message');
		//	closeMenuModal('noModels');
		}
	}
}

function yearCallbackModal(responseXML){
  if(responseXML){
  	var years = responseXML.getElementsByTagName("years")[0];

		if(years.childNodes.length > 0){
			var num = 0;

			myOption = new Option();
		  	myOption.text = "Escoja el a" + String.fromCharCode(241) + "o";
		  myOption.value = "#";
		  document.vehicleModal.autoYear.options[0] = myOption;
		  for(loop = 0; loop < years.childNodes.length; loop++){
		 		var autoYear = years.getElementsByTagName("year")[loop];

				myOption = new Option();

		    myOption.text = autoYear.childNodes[0].nodeValue;
		    myOption.value = autoYear.childNodes[0].nodeValue;

				/*if(document.vehicleModal.autoYear.selectedIndex > 0){
        	insertIndex = document.vehicleModal.autoYear.selectedIndex;
			  }
			  else{
			    insertIndex = document.vehicleModal.autoYear.options.length;
			  }*/

        document.vehicleModal.autoYear.options[loop+1] = myOption;
     }
		 //document.vehicleModal.autoYear.style.visibility="visible";
		 document.vehicleModal.autoYear.style.display="inline";
		}
	}
}

function clarCallbackModal(responseXML){
	if(responseXML){
		var clarifiers = responseXML.getElementsByTagName("clarifiers")[0];
		if(clarifiers.childNodes.length > 0){
			var num = 0;

			myOption = new Option();
				myOption.text = "M" + String.fromCharCode(225) + "s info. del modelo";
			myOption.value = "#";
			document.vehicleModal.autoModClar.options[0] = myOption;
			for(loop = 0; loop < clarifiers.childNodes.length; loop++){
				var modelClar = clarifiers.getElementsByTagName("clar")[loop];

				myOption = new Option();

				myOption.text = modelClar.childNodes[0].nodeValue;
				myOption.value = modelClar.childNodes[0].nodeValue;

				/*if(document.vehicleModal.autoModClar.selectedIndex > 0){
					insertIndex = document.vehicleModal.autoModClar.selectedIndex;
				}
				else{
					insertIndex = document.vehicleModal.autoModClar.options.length;
				}*/

				document.vehicleModal.autoModClar.options[loop+1] = myOption;
			}
			openMenuModal('autoModClarModal');
			//Menu expansion check
			/*if(document.getElementById('clarDiv') != null){
				document.getElementById('clarDiv').style.height="25px";
				openMenuModal('clarDiv');
			}*/
			//openMenuModal('addtlInfo');
		}
	}
}

/*function getAvailableProducts(){
	if(document.vehicleModal.autoYear.value != "#" &&
	   document.vehicleModal.autoMake.value != "#" &&
	   document.vehicleModal.autoModel.value != "#"){
		var targetYear = document.vehicleModal.autoYear.value;
		var targetMake = document.vehicleModal.autoMake.value;
		var targetModel = document.vehicleModal.autoModel.value;
		var targetModClar = "";
		
		var url = "/survey/ValidationServlet?autoYear=" + targetYear + "&autoMake=" + targetMake + "&autoModel=" + targetModel + "&needsProducts=yes";
	     
	     if(document.vehicleModal.autoModClar.length > 0){
		 if(document.vehicleModal.autoModClar.value != "#"){
		 	targetModClar = document.vehicleModal.autoModClar.value;

			url += "&autoModClar=" + targetModClar;
			var ajax = new AJAXInteraction(url, productsCallback);
			ajax.doGet();

		 }
	     }
	     else{
			var ajax = new AJAXInteraction(url, productsCallback);
			ajax.doGet();
	     } 
	}
}*/

/*function productsCallback(responseXML){
	if(responseXML){
			var tires = responseXML.getElementsByTagName("tires")[0].firstChild.data;
			var wheels = responseXML.getElementsByTagName("wheels")[0].firstChild.data;
			var suspension = responseXML.getElementsByTagName("suspension")[0].firstChild.data;
			var brakes = responseXML.getElementsByTagName("brakes")[0].firstChild.data;
			var winterTires = responseXML.getElementsByTagName("winterTires")[0].firstChild.data;
			var accessories = responseXML.getElementsByTagName("accessories")[0].firstChild.data;
			var wipers = responseXML.getElementsByTagName("wipers")[0].firstChild.data;
			var lights = responseXML.getElementsByTagName("lights")[0].firstChild.data;
			var intake = responseXML.getElementsByTagName("intake")[0].firstChild.data;

			if(tires == "false"){
				document.getElementById("gotires").className = "unavailable";
			}
			else{
				document.getElementById("gotires").className = "";
			}
			if(wheels == "false"){
				document.getElementById("gowheels").className = "unavailable";
			}
			else{
				document.getElementById("gowheels").className = "";
			}
			if(suspension == "false"){
				document.getElementById("gosuspension").className = "unavailable";
			}
			else{
				document.getElementById("gosuspension").className = "";
			}
			if(brakes == "false"){
				document.getElementById("gobrakes").className = "unavailable";
			}
			else{
				document.getElementById("gobrakes").className = "";
			}
			if(winterTires == "false"){
				document.getElementById("gowinter").className = "unavailable";
			}
			else{
				document.getElementById("gowinter").className = "";
			}
			if(wipers == "false"){
				document.getElementById("gowipers").className = "unavailable";
			}
			else{
				document.getElementById("gowipers").className = "";
			}
			if(lights == "false"){
				document.getElementById("golighting").className = "unavailable";
			}
			else{
				document.getElementById("golighting").className = "";
			}
			if(intake == "false"){
				document.getElementById("gointake").className = "unavailable";
			}
			else{
				document.getElementById("gointake").className = "";
			}

	}
}*/
						

/*function setAutoModel(){
	if(document.svy.autoModel.value != ""){
		document.svy.autoModel.value = document.svy.autoModel.value;
	}
	else if(document.svy.autoModelEntry.value != "" ||
		document.svy.autoModelEntry2.value == "Enter Model"){
			document.svy.autoModel.value = document.svy.autoModelEntry.value;
	}
	else if(document.svy.autoModelEntry2.value != "Enter Model" && 
		document.svy.autoModelEntry.value == ""){
			document.svy.autoModel.value = document.svy.autoModelEntry2.value;
	}
	return true;
}*/
	


function openMenuModal(obj){
	var el = document.getElementById(obj);
	el.style.display="block";
}

function closeMenuModal(obj){
	var el = document.getElementById(obj);
	el.style.display = "none";
}

function clearFieldModal(obj){
	if(document.getElementById(obj).value != "Enter Model"){
		document.getElementById(obj).value = "";
	}
}
function checkBeforeSubmitModal(){
	if(document.vehicleModal.autoModClar.value != ""){
		document.vehicleModal.submit();
		openMenuModal('updateMsgModal');
	}
}
