
// retrieves the XMLHttprequest object
	function createXmlHttpRequestObject()
	{
	    
	    // will store the reference to the XMLHttpRequest object
	    var xmlHttp;
	    // if running Internet Explorer
	    if(window.ActiveXObject)
	    {
		try {
		    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e){
		    xmlHttp = false;
		}
	    }
	    
	    // if running mozilla or other browsers
	    
	    else {
		
		try {
		    
		    xmlHttp = new XMLHttpRequest();
		    
		} catch (e) {
		    
		    xmlHttp = false;
		    
		}
		
	    }
	    
	    // return the created object or display an error message
	    if(!xmlHttp) {
		alert("Error creating the XMLHttpRequest object.");
		return false;
	    } else {
		return xmlHttp;
	    }
	}


	// stores the reference to the XMLHttpRequest object
	var xmlHttp = createXmlHttpRequestObject();

	var form_container = document.getElementById('quick-checker-form');
	//var model_select_element_container = document.getElementById('model_container');
	var make_select_element = document.getElementById('make');
	var model_select_element = document.getElementById('model');
	
	var make_value = '0';
	var model_value = '0';
	
	function updateMakeValue() {
		make_value = make_select_element.value;
	}
	
	function resetModelList() {
		while(model_select_element.firstChild) {
			model_select_element.removeChild(model_select_element.firstChild);
		}
		
		var new_option = document.createElement('option');
		new_option.setAttribute('value', 0);
		var text_node = document.createTextNode("Please choose a make above");
		new_option.appendChild(text_node);
		model_select_element.appendChild(new_option);
	}
	
	function getModelList() {
		updateMakeValue();
		if(make_value == '0') {
			resetModelList();
			return false;
		} else {
			// proceed only if the xmlHttp object isn't busy
			if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
			    xmlHttp.open("GET", "get_model_list.php?make_id="+make_value, true);
			    //define the method to handle server response
			    xmlHttp.onreadystatechange = handleModelList;
			    // post variables
			    xmlHttp.send(null);
			} else {
			    alert("Sorry, the list of models could not be loaded.");
			}
			return false;
		}
	}


	// executed automatically when a message is receieved from the server
	function handleModelList() {
		// move forward only if the transaction has completed
		if(xmlHttp.readyState == 4) {
			// status of 200 indicates the transaction completed successfully
			if(xmlHttp.status == 200) {
				// extract the XML retrieved from the server
				var xmlResponse = xmlHttp.responseXML;
				// obtain the document element (the root element) of the XML structure
				var xmlDocumentElement = xmlResponse.documentElement;
				var models = xmlDocumentElement.getElementsByTagName('model');
				
				while(model_select_element.firstChild) {
					model_select_element.removeChild(model_select_element.firstChild);
				}
				
				var new_option = document.createElement('option');
				new_option.setAttribute('value', 0);
				var text_node = document.createTextNode("Select a model...");
				new_option.appendChild(text_node);
				model_select_element.appendChild(new_option);
				
				for (j=0;j<models.length;j++) {
					
					var new_option = document.createElement('option');
					new_option.setAttribute('value', models[j].getAttribute('id'));
					var text_node = document.createTextNode(models[j].firstChild.nodeValue);
					new_option.appendChild(text_node);
					
					model_select_element.appendChild(new_option);
					//alert(models[j].getAttribute('id') + " - " + models[j].firstChild.nodeValue);
				}
			
			} else {
				alert('Sorry, the list of models could not be loaded.');
			}
		}
	}
	
	make_select_element.onchange = getModelList;
	window.onload = getModelList;