/*var http = zXmlHttp.createRequest();*/
var cur_param = 0;

function getToFormData(params,callback) {
	var make = document.forms["toForm"].elements["maker_id"].options[document.forms["toForm"].elements["maker_id"].selectedIndex].value;
	var city = document.forms["toForm"].elements["city_id"].options[document.forms["toForm"].elements["city_id"].selectedIndex].value;

	var localhttp = zXmlHttp.createRequest();
	localhttp.open("GET", "/ajax/to-request.php?what=" + params[cur_param] + "&make=" + make + "&city=" + city + "&" + (Math.random() * 10000000), true);
	localhttp.onreadystatechange = function() {
		if (localhttp.readyState == 4) {
			document.getElementById("wait").style.display = "none";
			setToFormData(params[cur_param],localhttp.responseText);
			if(cur_param++ < params.length) {
			   getToFormData(params,callback);
			}
			else {
			   cur_param = 0;
			   eval(callback);
			   return;
			}
		}
        else {
        	document.getElementById("wait").style.display = "block";
        }
    }
    localhttp.send(null);
}

function setToFormData(param,data) {
	serverData = eval(data);

	var make   = document.forms["toForm"].elements["maker_id"];
	var model  = document.forms["toForm"].elements["model_id"];
	var city   = document.forms["toForm"].elements["city_id"];
	var dealer = document.forms["toForm"].elements["dealer_id"];

	if (param == "models") {
		var opt = 0;
		if (model.options.length > 0) {
			opt = model.options[model.selectedIndex].value;
		}
		model.options.length = 0;
		for (var  i = 0; i < serverData.length; i++) {
			 var newOption = new Option(serverData[i][1],serverData[i][0]);
			 model.options[model.options.length] = newOption;

			 if (serverData[i][0] == opt) {
			 	model.options[model.options.length - 1].selected = true;
			 }
		}
	}

	if (param == "makers") {
		var opt = 0;
		if (make.options.length > 0) {
			opt = make.options[make.selectedIndex].value;
		}
		make.options.length = 0;
		for (var  i = 0; i < serverData.length; i++) {
			 var newOption = new Option(serverData[i][1],serverData[i][0]);
			 make.options[make.options.length] = newOption;

			 if (serverData[i][0] == opt) {
			 	make.options[make.options.length - 1].selected = true;
			 }

		}
	}

	if (param == "dealers") {
		var opt = 0;
		if (dealer.options.length > 0) {
			opt = dealer.options[dealer.selectedIndex].value;
		}
		dealer.options.length = 0;
		for (var  i = 0; i < serverData.length; i++) {
			 var newOption = new Option(serverData[i][1],serverData[i][0]);
			 dealer.options[dealer.options.length] = newOption;

			 if (serverData[i][0] == opt) {
			 	dealer.options[dealer.options.length - 1].selected = true;
			 }
		}
	}

	if (param == "cities") {
		var opt = 0;
		if (city.options.length > 0) {
			opt = city.options[city.selectedIndex].value;
		}
		city.options.length = 0;
		for (var  i = 0; i < serverData.length; i++) {
			 var newOption = new Option(serverData[i][1],serverData[i][0]);
			 city.options[city.options.length] = newOption;

			 if (serverData[i][0] == opt) {
			 	city.options[city.options.length - 1].selected = true;
			 }
		}
	}

}

function setToFormModel(model) {
	var obj  = document.forms["toForm"].elements["model_id"];
	for (var i = 0; i < obj.options.length; i++) {
		if (obj.options[i].value == model) {
			obj.options[i].selected = true;
		}
	}
}

function setToFormDealer(dealer) {
	var obj  = document.forms["toForm"].elements["dealer_id"];
	for (var i = 0; i < obj.options.length; i++) {
		if (obj.options[i].value == dealer) {
			obj.options[i].selected = true;
		}
	}
}

function setToFormMaker(maker,callback) {
	var obj  = document.forms["toForm"].elements["maker_id"];
	for (var i = 0; i < obj.options.length; i++) {
		if (obj.options[i].value == maker) {
			obj.options[i].selected = true;
		}
	}
	getToFormData(new Array('models','cities','dealers'),callback);
}

function audiCheck(obj) {
	if(obj.options[obj.selectedIndex].text == "Audi") {
		document.forms["toForm"].elements["pref_date"].disabled = true;
		document.forms["toForm"].elements["pref_time"].disabled = true;
		document.forms["toForm"].elements["pref_date"].value = "Это поле недоступно для Audi";
		document.forms["toForm"].elements["pref_time"].value = "Это поле недоступно для Audi";
	}
	else {
		document.forms["toForm"].elements["pref_date"].disabled = false;
		document.forms["toForm"].elements["pref_time"].disabled = false;
		document.forms["toForm"].elements["pref_date"].value = "";
		document.forms["toForm"].elements["pref_time"].value = "";
	}
}

function audiAlert() {
	alert("Это поле недоступно для Audi");
}

/// календарь

DHTMLSuite.include("calendar");

var calendarObjForForm = null;

var today = new Date();

var curDay   = new String(today.getDate()); if (curDay.length == 1) curDay = "0" + curDay;
var curMonth = new String((today.getMonth() + 1)); if (curMonth.length == 1) curMonth = "0" + curMonth;
var curYear  = new String(today.getFullYear());

function initCalendar() {
	var calendarModel = new DHTMLSuite.calendarModel({ initialYear:curYear,initialMonth:curMonth,initialDay:curDay });
	calendarModel.setLanguageCode('ru');

	calendarObjForForm = new DHTMLSuite.calendar({ id:'calendar1',displayCloseButton:true,numberOfRowsInYearDropDown:12 } );
	calendarObjForForm.setCalendarModelReference(calendarModel);

	calendarObjForForm.setCallbackFunctionOnDayClick("getDateFromCalendar");
}

window.onload = initCalendar;

function myOtherFunction() { }

function pickDate(buttonObj,inputObject) {
	calendarObjForForm.setCalendarPositionByHTMLElement(inputObject,205,inputObject.offsetHeight - 20 + getBodyScrollTop());	// Position the calendar right below the form input
	calendarObjForForm.setInitialDateFromInput(inputObject,'dd.mm.yyyy');	// Specify that the calendar should set it's initial date from the value of the input field.
	calendarObjForForm.addHtmlElementReference('myDate',inputObject);	// Adding a reference to this element so that I can pick it up in the getDateFromCalendar below(myInput is a unique key)
	if(calendarObjForForm.isVisible()){
		calendarObjForForm.hide();
	}else{
		calendarObjForForm.resetViewDisplayedMonth();	// This line resets the view back to the inital display, i.e. it displays the inital month and not the month it displayed the last time it was open.
		calendarObjForForm.display();
	}
}

function getDateFromCalendar(inputArray) {
	var references = calendarObjForForm.getHtmlElementReferences(); // Get back reference to form field.
	references.myDate.value = inputArray.day + '.' + inputArray.month + '.' + inputArray.year;
	calendarObjForForm.hide();
}

function getBodyScrollTop()
{
  return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}