function AJAXInteractionModalCart(url, callback){
        var req = initModalCart();
        req.onreadystatechange = processRequestModalCart;

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

	function processRequestModalCart(){
		//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.vehicleAssign.autoModel.length > 0){ 
					openMenuModalCart('updateMsgModal');
		 			Modalbox.resizeToContent();
					//document.vehicleAssign.submit();
					if(document.vehicleAssign.checkout != null && document.vehicleAssign.checkout.value == "false"){
						document.vehicleAssign.submit();
					}else{
						checkForCartErrors("assignVehicle");	
					}
				}*/
			}
		}
	}

	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 populateAutoYearsModalCart(){
  if(document.vehicleAssign.autoMake.value != "#"){
  	var targetMake = document.vehicleAssign.autoMake.value;
		var url = "/survey/ValidationServlet?autoMake=" + targetMake + "&autoYearsNeeded=true";
		var ajax = new AJAXInteractionModalCart(url, yearCallbackModalCart);
		ajax.doGet();
	}
}

function populateAutoModelsModalCart(){
	if(document.vehicleAssign.autoYear.value != "#" &&
		 document.vehicleAssign.autoYear.value != ""  &&
		 document.vehicleAssign.autoMake.value != "#" &&
	   document.vehicleAssign.autoMake.value != ""){
		var targetYear = document.vehicleAssign.autoYear.value;
		var targetMake = document.vehicleAssign.autoMake.value;
		
		var url = "/survey/ValidationServlet?autoYear=" + targetYear + "&autoMake=" + targetMake;
		var ajax = new AJAXInteractionModalCart(url, validateCallbackModalCart);
		ajax.doGet();
	}
}

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

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

function deleteAutoModelsModalCart(){
	//closeMenuModalCart('modelMessage');
	if(document.vehicleAssign.autoModel.options != null){
		while(document.vehicleAssign.autoModel.options.length > 0){
			deleteIndex = document.vehicleAssign.autoModel.options.length - 1;
			document.vehicleAssign.autoModel.options[deleteIndex] = null;
		}
	}	
	closeMenuModalCart('autoModelModal');
	/*if(document.getElementById("modelDiv") != null){
		closeMenuModalCart('modelDiv');
	}*/
	deleteAutoModClarModalCart();
}

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

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

			myOption = new Option();
			if(document.vehicleAssign.langType != null && document.vehicleAssign.langType.value == "spanish"){
				myOption.text = "Escoja el modelo";
			}else{
				myOption.text = "Select Model";
			}
			myOption.value = "#";
			document.vehicleAssign.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.vehicleAssign.autoModel.selectedIndex > 0){
					insertIndex = document.vehicleAssign.autoModel.selectedIndex;
				}
				else{
					insertIndex = document.vehicleAssign.autoModel.options.length;
				}*/

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

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

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

			myOption = new Option();
			if(document.vehicleAssign.langType != null && document.vehicleAssign.langType.value == "spanish"){
		  	myOption.text = "Escoja el a" + String.fromCharCode(241) + "o";
			}else{
		  	myOption.text = "Select Year";
			}
		  myOption.value = "#";
		  document.vehicleAssign.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.vehicleAssign.autoYear.selectedIndex > 0){
        	insertIndex = document.vehicleAssign.autoYear.selectedIndex;
			  }
			  else{
			    insertIndex = document.vehicleAssign.autoYear.options.length;
			  }*/

        document.vehicleAssign.autoYear.options[loop+1] = myOption;
     }
		 //document.vehicleAssign.autoYear.style.visibility="visible";
		 document.vehicleAssign.autoYear.style.display="inline";
		 Modalbox.resizeToContent();
		}
	}
}

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

			myOption = new Option();
			if(document.vehicleAssign.langType != null && document.vehicleAssign.langType.value == "spanish"){
				myOption.text = "M" + String.fromCharCode(225) + "s info. del modelo";
			}else{
				myOption.text = "Additional Model Info";
			}
			myOption.value = "#";
			document.vehicleAssign.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.vehicleAssign.autoModClar.selectedIndex > 0){
					insertIndex = document.vehicleAssign.autoModClar.selectedIndex;
				}
				else{
					insertIndex = document.vehicleAssign.autoModClar.options.length;
				}*/

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

/*function getAvailableProducts(){
	if(document.vehicleAssign.autoYear.value != "#" &&
	   document.vehicleAssign.autoMake.value != "#" &&
	   document.vehicleAssign.autoModel.value != "#"){
		var targetYear = document.vehicleAssign.autoYear.value;
		var targetMake = document.vehicleAssign.autoMake.value;
		var targetModel = document.vehicleAssign.autoModel.value;
		var targetModClar = "";
		
		var url = "/survey/ValidationServlet?autoYear=" + targetYear + "&autoMake=" + targetMake + "&autoModel=" + targetModel + "&needsProducts=yes";
	     
	     if(document.vehicleAssign.autoModClar.length > 0){
		 if(document.vehicleAssign.autoModClar.value != "#"){
		 	targetModClar = document.vehicleAssign.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 openMenuModalCart(obj){
	var el = document.getElementById(obj);
	el.style.display="block";
}

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

function clearFieldModalCart(obj){
	if(document.getElementById(obj).value != "Enter Model"){
		document.getElementById(obj).value = "";
	}
}
function checkBeforeSubmitModalCart(){
	if(document.vehicleAssign.autoModClar.value != ""){
		openMenuModalCart('updateMsgModal');
		Modalbox.resizeToContent();
		//document.vehicleAssign.submit();
		if(document.vehicleAssign.checkout != null && document.vehicleAssign.checkout.value == "false"){
			document.vehicleAssign.submit();
		}else{
			checkForCartErrors("assignVehicle");
		}
	}
}
