/**
 * @author m3g
 */
		var xmlhttp;
		function ajaxFunction(){
			var xmlhttp;
			var getModels;
			var data;
			if (window.XMLHttpRequest){
				// code for IE7+, Firefox, Chrome, Opera, Safari
				xmlhttp=new XMLHttpRequest();
			}else if (window.ActiveXObject){
				// code for IE6, IE5
				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}else{
				alert("Your browser does not support XMLHTTP!");
			}
			xmlhttp.onreadystatechange=function(){
				if(xmlhttp.readyState==4){
					function getYears(){
						data=xmlhttp.responseXML;
						var year = data.getElementsByTagName("year");
						var i= year.length;
						var options="";
						var combo=document.getElementById("yearSelect");
						for (var x=0;x<i;x++){
							var theyear=year[x].firstChild.nodeValue;
							combo[combo.length]=new Option(theyear,theyear);
						}
					}
					function getModels(year){
						var modelName = data.getElementsByTagName("Y"+year);
						var i= modelName.length;
						var combo=document.getElementById("model");
						combo[0]=new Option("Select a model...","");
						for (var x=0;x<i;x++){
							var model=modelName[x].childNodes[0].firstChild.nodeValue;
							combo[combo.length]=new Option(model,model);
						}
					}
					function getPackages(model,transOption){	
						var modelName = data.getElementsByTagName(model);
						var i= modelName.length;
						var combo=document.getElementById("package");
						combo[0]=new Option("Select an options package...","");
						for (var x=0;x<i;x++){
							var model=modelName[x].firstChild.nodeValue;
							combo[combo.length]=new Option(model,model);
						}
						getTrans(transOption);
					}
					function getTrans(trans){
						
						var transM = data.getElementsByTagName("type");
						var i= transM.length;
						var combo=document.getElementById("trans");
						
						
						if (trans=="a"){
							combo[0]=new Option("Automatic","Automatic");
							return true;
						}
						combo[0]=new Option("Select a transmission type...","");
						for (var x=0;x<i;x++){
							var type=transM[x].firstChild.nodeValue;
							combo[combo.length]=new Option(type,type);
						}
					}
					function clearBox(id){
						var combo=document.getElementById(id);
						var x=combo.options.length-1;
						for (x;x>=0;x--){
							combo.remove(x);
						}
					}
					getYears();
					modelSelectTrigger=document.getElementById("yearSelect");
					modelSelectTrigger.onchange=function(){
						clearBox("model");
						getModels(modelSelectTrigger.value);
					};
					packageSelectTrigger=document.getElementById("model");
					packageSelectTrigger.onchange=function(){
						clearBox("package");
						var selectedModel="";
						var transOptions="am";
						switch(packageSelectTrigger.value){
							case "Accord Coupe" :
								selectedModel="ACCORDCOUPE";
								break;
							case "Accord Sedan" :
								selectedModel="ACCORDSEDAN";
								break;
							case "Civic Sedan" :
								selectedModel="CIVICSEDAN";
								break;
							case "Civic Hybrid Sedan" :
								selectedModel="CIVICHYBRID";
								transOptions="a";
								break;
							case "Civic Coupe" :
								selectedModel="CIVICCOUPE";
								break;
							case "Civic Si Coupe" :
								selectedModel="CIVIC";
								break;
							case "Civic Si Sedan" :
								selectedModel="CIVIC";
								break;
							case "CR-V" :
								selectedModel="CRV";
								transOptions="a";
								break;
							case "Element" :
								selectedModel="ELEMENT";
								break;
							case "Fit" :
								selectedModel="FIT";
								break;
							case "Insight" :
								selectedModel="INSIGHT";
								transOptions="a";
								break;
							case "Odyssey" :
								selectedModel="ODESSEY";
								transOptions="a";
								break;
							case "Pilot" :
								selectedModel="PILOT";
								transOptions="a";
								break;
							case "Ridgeline" :
								selectedModel="RIDGELINE";
								transOptions="a";
								break;
							case "S2000" :
								selectedModel="S2000";
								break;
						}
						clearBox("trans");
						getPackages(selectedModel,transOptions);
					}
				}
			}
			xmlhttp.open("GET","cars.xml",true);
			xmlhttp.send(null);		
		}
		function validateRegEx(regex, input, helpText, helpMessage) {
		        // See if the input data validates OK
		        if (!regex.test(input)) {
		          // The data is invalid, so set the help message and return false
		          if (helpText != null)
		            helpText.innerHTML = helpMessage;
		          return false;
		        }
		        else {
		          // The data is OK, so clear the help message and return true
		          if (helpText != null)
		            helpText.innerHTML = "";
		          return true;
		        }
		     }
			function validateNonEmpty(inputField, helpText) {
		        // See if the input value contains any text
		        return validateRegEx(/.+/,inputField.value, helpText, "Please enter a value.");
		    }
			function validateEmail(inputField,helpText){
				if (!validateNonEmpty(inputField,helpText)){
					return false;
				}
				// Then see if the input value is an email address
		        return validateRegEx(/^[\w\.-_\+]+@[\w-]+(\.\w{2,3})+$/,
				    inputField.value, helpText,
		          "Please enter an email address (for example, johndoe@acme.com).");
			}
			function validateZipCode(inputField, helpText) {
		        // First see if the input value contains data
		        if (!validateNonEmpty(inputField, helpText))
		          return false;
		        // Then see if the input value is a ZIP code
		        return validateRegEx(/^\d{5}$/,
		          inputField.value, helpText,
		          "Please enter a 5-digit ZIP code.");
		     }
			 function getTrueCost(form) {
		        if (validateNonEmpty(document.getElementById('firstName'), document.getElementById('firstNameHelp')) && 
					validateNonEmpty(document.getElementById('lastName'), document.getElementById('lastNameHelp')) &&	
					validateEmail(document.getElementById('emailAddress'), document.getElementById('emailHelp'))&& 
					validateZipCode(document.getElementById('zipCode'), document.getElementById('zipHelp')) 
		          	){
		          // Submit the order to the server
		          form.submit();
		        } else {
		          alert("I'm sorry but there is something wrong with the order information.");
		        }
		      }
