// JavaScript Document
var myForm = new formObject("car_selector");

myPriceRangeSelect = new selectObject("priceRange","Цена",myForm,"");
myPriceRangeSelect.addListener("onChange","processForm");

myMakerSelect = new selectObject("makerName","Марка",myForm,"disabled");
myMakerSelect.addOption("0","",0,0);
myMakerSelect.addListener("onChange","processForm");

myBodySelect = new selectObject("bodyType","Тип кузова",myForm,"disabled");
myBodySelect.addOption("0","",0,0);
myBodySelect.addListener("onChange","processForm");

function processForm(event) {
	var elem = event.target;
	if (!elem) {
		elem = event.srcElement;
	}
	if(elem.type == "text") {

	}
	else if (elem.type == "select-one") {
		processSelect(elem);
	}
}

var serverData   = null;
var serverResult = null;

function enableSelect(select) {
	for (i = 0; i < serverData.length; i++) {
		select.addOption(serverData[i][0],serverData[i][1],0,0);
	}
	select.enable();
}

function processPriceSelect() {
	//получаем аяксом  массив для заполнения следующего списка
	var params = myPriceRangeSelect.getId() + "=" + myPriceRangeSelect.getValue() + "&step=1";
	getServerData(params,myMakerSelect);
}

function processMakerSelect() {

	//получаем аяксом  массив для заполнения следующего списка
	var params  = myPriceRangeSelect.getId()  + "=" + myPriceRangeSelect.getValue() + "&";
	    params += myMakerSelect.getId() + "=" + myMakerSelect.getValue() + "&step=2";

	getServerData(params,myBodySelect);
	showResult();
}

function processSelect(obj) {
	hideResult();
	if (obj.selectedIndex > 0) {
		switch (obj.id) {
			case "priceRange":
        document.getElementById('carselbut').disabled=true;
        //блокируем все ненужное
				myMakerSelect.disable();
				myBodySelect.disable();
				processPriceSelect();
			break;

			case "makerName":
        document.getElementById('carselbut').disabled=true;
				//блокируем все ненужное
				myBodySelect.disable();
				processMakerSelect();
			break;

			default:
			break;
		}
	}
	else {
		switch (obj.id) {
			case "priceRange":
				//блокируем все ненужное
				myMakerSelect.disable();
				myBodySelect.disable();
			break;

			case "makerName":
				//блокируем все ненужное
				myBodySelect.disable();
			break;

			default:
			break;
		}
	}
}

/*var http = zXmlHttp.createRequest();*/
var tmpSel = null;

function getServerData(params,select) {
  var localhttp = zXmlHttp.createRequest();
	localhttp.open("GET", "/ajax/carselector.php?" + params + "&" + (Math.random() * 10000000), true);
	tmpSel = select;
	localhttp.onreadystatechange = function() {
		if (localhttp.readyState == 4) {
			document.getElementById("wait").style.display = "none";
			setServerData(localhttp.responseText);

			if(select == myMakerSelect) {
			   document.forms["form_car_selector"].elements["makerName"].selectedIndex = 1;
			   processMakerSelect();
			}

			if(select == myBodySelect) {
			   document.forms["form_car_selector"].elements["bodyType"].selectedIndex = 1;
			   document.getElementById('carselbut').disabled=false;
			}
		}
        else {
        	document.getElementById("wait").style.display = "block";
        }
    }
    localhttp.send(null);

}

function setServerData(data) {
	serverData = eval(data);
	enableSelect(tmpSel);
}

function hideResult() {
	//document.getElementById("carselbut").style.display = 'none';
}

function showResult() {
	//document.getElementById("carselbut").style.display = 'block';
}
