var req;
var output;
function loadXMLDoc(url) {
	req = false;
   // Internet Explorer
   try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
   catch(e) {
      try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(oc) { req = null; }
   }

   // Mozailla/Safari
   if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }
	if(req!=null) {
		req.onreadystatechange = function(){
			if (req.readyState == 4) {
				// only if "OK"
				if (req.status == 200) {
					// ...processing statements go here...
					var make = new htmlSelect('make');	
					var range = new htmlSelect('range');
					var model = new htmlSelect('model');
					var fuel = new htmlRadio('fuel_diesel,fuel_petrol,fuel_hybrid');// fuel
					//var door = new htmlRadio('door_3,door_5,door_7');
					var door = new htmlRadio('door_3,door_5');
					var transmission = new htmlRadio('transmission_manual,transmission_automatic');
					var trim = new htmlSelect('trim');
					
					xmlDoc = req.responseXML;
					switcher = xmlDoc.getElementsByTagName("sel")[0].getAttribute('name');
					opts = xmlDoc.getElementsByTagName("opt");
					switch(switcher)
					{
						case 'range':
						range.wipe();
						for (i=0; i<opts.length;i++){
							range.add(opts[i].getAttribute('value'),opts[i].childNodes[0].nodeValue);
						}
						range.enable();
						break;
						case 'model':
						model.wipe();
						for (i=0; i<opts.length;i++){
							model.add(opts[i].getAttribute('value'),opts[i].childNodes[0].nodeValue);
						}
						model.enable();
						break;
						case 'fuel':
						fuel.disableAll();
						for(i=0; i<opts.length;i++){
							fuel.enable('fuel_'+opts[i].childNodes[0].nodeValue);
						}
						break;
						case 'door':
						door.disableAll();
						for(i=0; i<opts.length;i++){
							door.enable('door_'+opts[i].childNodes[0].nodeValue);
						}
						break;
						case 'transmission':
						transmission.disableAll();
						for(i=0; i<opts.length;i++){
							transmission.enable('transmission_'+opts[i].childNodes[0].nodeValue);
						}
						break;
						case 'trim':
						trim.wipe();
						for (i=0; i<opts.length;i++){
							trim.add(opts[i].getAttribute('value'),opts[i].childNodes[0].nodeValue);
						}
						break;
					}
				} else {
					alert("There was a problem retrieving the XML data:\n" +
						req.statusText);
				}
			}
		}
		req.open("GET", url, true);
		req.send("");
	}
	return req;
}
