function init()
{
	YAHOO.util.Event.addListener("city", "change", loadSelect,{other:false});
	YAHOO.util.Event.addListener("flight_type1", "click", loadSelect,{hideTransfer:false});
	YAHOO.util.Event.addListener("flight_type2", "click", loadSelect,{hideTransfer:true});

	/*YAHOO.util.Event.addListener("city", "change", loadCost);
	YAHOO.util.Event.addListener("flight_type1", "click", loadCost);
	YAHOO.util.Event.addListener("flight_type2", "click", loadCost);*/
	YAHOO.util.Event.addListener("fd_id", "change", loadCost);
	YAHOO.util.Event.addListener("fd_id", "change", loadNum);
	YAHOO.util.Event.addListener("o_adults", "keyup", loadCost);
	YAHOO.util.Event.addListener("o_adults", "keyup", checkNum);
	YAHOO.util.Event.addListener("o_adults", "keyup", checkKidNum);
	YAHOO.util.Event.addListener("o_children", "keyup", loadCost);
	YAHOO.util.Event.addListener("o_children", "keyup", checkKidNum);
	YAHOO.util.Event.addListener("o_transfer", "change", loadCost);
	YAHOO.util.Event.addListener("o_transfer", "click", loadCost);

	var flyType = 2;
	var flyCity = 1;

	var racePeopleNum = 165;

	function onStartSetVisibleDate()
	{
		//alert("message");
		fd_idObj = YAHOO.util.Dom.get("fd_id");
		fd_idObj.disabled = "";

		flight_type1Obj = YAHOO.util.Dom.get("flight_type1");
		flight_type2Obj = YAHOO.util.Dom.get("flight_type2");

		flight_type1Obj.cheked = "checked";
		flight_type2Obj.cheked = "";

	}


	function interceptSubmit(e) {
		YAHOO.util.Event.preventDefault(e);

		YAHOO.util.Event.removeListener("employer_sname", "keyup", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_name", "keyup", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_passport", "keyup", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_phone", "keyup", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_email", "keyup", validatePersonalInfo);

		YAHOO.util.Event.addListener("employer_sname", "keyup", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_name", "keyup", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_passport", "keyup", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_phone", "keyup", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_email", "keyup", validatePersonalInfo);

		YAHOO.util.Event.removeListener("employer_sname", "blur", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_name", "blur", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_passport", "blur", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_phone", "blur", validatePersonalInfo);
		YAHOO.util.Event.removeListener("employer_email", "blur", validatePersonalInfo);

		YAHOO.util.Event.addListener("employer_sname", "blur", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_name", "blur", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_passport", "blur", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_phone", "blur", validatePersonalInfo);
		YAHOO.util.Event.addListener("employer_email", "blur", validatePersonalInfo);

		YAHOO.util.Event.removeListener("o_approve", "blur", validatePersonalInfo);
		YAHOO.util.Event.removeListener("o_approve", "blur", validatePersonalInfo);

		YAHOO.util.Event.addListener("o_approve", "change", validatePersonalInfo);
		YAHOO.util.Event.addListener("o_approve", "change", validatePersonalInfo);

		YAHOO.util.Event.addListener("o_approve", "mouseout", validatePersonalInfo);
		YAHOO.util.Event.addListener("o_approve", "mouseout", validatePersonalInfo);

		if (validatePersonalInfo() & validateRace() & checkNum() & checkKidNum())
		{
			massageObj = YAHOO.util.Dom.get("massage");
			YAHOO.util.Dom.setStyle(massageObj, 'color', "#17a041");
			massageObj.innerHTML = "Все поля заполнены корректно.";
			
			this.form.submit();
		}
		else
		{	
			massageObj = YAHOO.util.Dom.get("massage");
			YAHOO.util.Dom.setStyle(massageObj, 'color', "#FF5555");
			massageObj.innerHTML = "Поля выделенные красным нужно заполнить обязательно и правильно.";
		}


	}

	YAHOO.util.Event.addListener("submitBtn", "click", interceptSubmit);


	function loadSelect(e,obj)
	{
		if (obj.hideTransfer != undefined)
		{
			if (obj.hideTransfer == true)
			{
				transferHolderObj = YAHOO.util.Dom.get("transferHolder");
				YAHOO.util.Dom.setStyle(transferHolderObj, 'visibility', "hidden");
				flyType = 1;
			}
			else
			{
				transferHolderObj = YAHOO.util.Dom.get("transferHolder");
				YAHOO.util.Dom.setStyle(transferHolderObj, 'visibility', "visible");
				flyType = 2;
			}
		}

		cityObj = YAHOO.util.Dom.get("city");
		flyCity = cityObj.options[cityObj.selectedIndex].value;

		fd_idObj = YAHOO.util.Dom.get("fd_id");
		fd_idObj.disabled = "disabled";

		GetObj1 = new GetObj('selectHolder',{flyType:flyType,flyCity:flyCity})
		GetObj1.makeSelectRequest();

		div = document.getElementById("cost");
		div.innerHTML = "0";
	}
	
	function validateRace()
	{
		o_adultsObj = YAHOO.util.Dom.get("o_adults");
		o_childrenObj = YAHOO.util.Dom.get("o_children");
		fd_idObj = YAHOO.util.Dom.get("fd_id");

		validRace = true;

		if (fd_idObj.selectedIndex < 0)
		{
			YAHOO.util.Dom.setStyle(fd_idObj, 'background', "#ffb3b3");
			validRace = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(fd_idObj, 'background', "#FFFFFF");
		}

		if (!isNumeric(o_adultsObj.value) || isEmpty(o_adultsObj.value))
		{
			YAHOO.util.Dom.setStyle(o_adultsObj, 'background', "#ffb3b3");
			validRace = false;
		}
		else
		{
		}

		if (!isNumeric(o_childrenObj.value) || isEmpty(o_childrenObj.value))
		{
			YAHOO.util.Dom.setStyle(o_childrenObj, 'background', "#ffb3b3");
			validRace = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(o_childrenObj, 'background', "#FFFFFF");
		}

		if (validRace == false) {return false} else {return true}

	}

	function validatePersonalInfo()
	{
		employer_snameObj = YAHOO.util.Dom.get("employer_sname");
		employer_nameObj = YAHOO.util.Dom.get("employer_name");
		employer_passportObj = YAHOO.util.Dom.get("employer_passport");
		employer_phoneObj = YAHOO.util.Dom.get("employer_phone");
		employer_emailObj = YAHOO.util.Dom.get("employer_email");
		o_approveObj = YAHOO.util.Dom.get("o_approve");
		approveHolderObj = YAHOO.util.Dom.get("approveHolder");

		validPerson = true;


		if(!o_approveObj.checked)
		{
			YAHOO.util.Dom.setStyle(approveHolderObj, 'background', "#ffb3b3");
			validPerson = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(approveHolderObj, 'background', "transparent");
		}

		if (isEmpty(employer_snameObj.value))
		{
			YAHOO.util.Dom.setStyle(employer_snameObj, 'background', "#ffb3b3");
			validPerson = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(employer_snameObj, 'background', "#FFFFFF");
		}

		if (isEmpty(employer_nameObj.value))
		{
			YAHOO.util.Dom.setStyle(employer_nameObj, 'background', "#ffb3b3");
			validPerson = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(employer_nameObj, 'background', "#FFFFFF");
		}

		if (isEmpty(employer_passportObj.value))
		{
			YAHOO.util.Dom.setStyle(employer_passportObj, 'background', "#ffb3b3");
			validPerson = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(employer_passportObj, 'background', "#FFFFFF");
		}

		if (isEmpty(employer_phoneObj.value))
		{
			YAHOO.util.Dom.setStyle(employer_phoneObj, 'background', "#ffb3b3");
			validPerson = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(employer_phoneObj, 'background', "#FFFFFF");
		}

		if (!isEmail(employer_emailObj.value))
		{
			YAHOO.util.Dom.setStyle(employer_emailObj, 'background', "#ffb3b3");
			validPerson = false;
		}
		else
		{
			YAHOO.util.Dom.setStyle(employer_emailObj, 'background', "#FFFFFF");
		}

		if (validPerson == false) {return false} else {return true}

	}


	function loadCost()
	{
		if(validateRace())
		{
			FormPostObj1 = new FormPostObj("cost","mainForm");
			FormPostObj1.makeCostRequest();
		}
	}


	function checkKidNum()
	{

		if(validateRace())
		{
			if (parseInt(YAHOO.util.Dom.get("o_children").value) > parseInt(YAHOO.util.Dom.get("o_adults").value))
			{
				YAHOO.util.Dom.get("raceKidNum").style.display = "block";
				YAHOO.util.Dom.setStyle("o_children", 'background', "#ffb3b3");
				return false;
			}
			else
			{
				YAHOO.util.Dom.get("raceKidNum").style.display = "none";
				YAHOO.util.Dom.setStyle("o_children", 'background', "#FFFFFF");
				return true;
			}
		}
	}

	function checkNum()
	{
		
		if(validateRace())
		{
			if (parseInt(racePeopleNum) < parseInt(YAHOO.util.Dom.get("o_adults").value))
			{
				YAHOO.util.Dom.setStyle("o_adults", 'background', "#ffb3b3");
				YAHOO.util.Dom.get("raceNumHolder").style.display = "block";
				YAHOO.util.Dom.get("raceNum").innerHTML = racePeopleNum;

				return false;
			}
			else
			{
				YAHOO.util.Dom.setStyle("o_adults", 'background', "#FFFFFF");
				YAHOO.util.Dom.get("raceNumHolder").style.display = "none";

				return true;
			}
		}
	}

	function loadNum()
	{
		raceSelect = document.getElementById("fd_id")
		raceIndex = raceSelect.selectedIndex;
		raceId = raceSelect.options[raceIndex].value;
		
		GetNumObj = new GetNum({id:raceId})
		GetNumObj.makeRequest();
		
	}

//------

	var GetObj = function(insertElement,dataObj)
	{
		this.div = document.getElementById(insertElement);
		this.getData = dataObj.flyType+"/"+dataObj.flyCity+"/";
		this.sUrl = "/booking/get_dates/"+this.getData;

		this.handleSuccess = function(o){
			if(o.responseText !== undefined){

				this.div = document.getElementById(insertElement);
				this.div.innerHTML = o.responseText;

				YAHOO.util.Event.addListener("fd_id", "change", loadCost);/*хак*/
					
				YAHOO.util.Event.addListener("fd_id", "change", loadNum);/*хак*/
			}
		};

		this.handleFailure = function(o){
				alert("error");
			if(o.responseText !== undefined){			
				this.makeSelectRequest();
			}
		};

		this.callback =
		{
		  success:this.handleSuccess,
		  failure:this.handleFailure,
		  argument:['foo','bar']
		};

		this.makeSelectRequest = function (){
			this.request = YAHOO.util.Connect.asyncRequest('GET', this.sUrl, this.callback);
		}
	}


	var GetNum = function(dataObj)
	{
		//this.div = document.getElementById(insertElement);
		this.sUrl = "/booking/get_fd_remain/"+dataObj.id;
		this.num = undefined;

		this.handleSuccess = function(o){
			if(o.responseText !== undefined){

				//this.div = document.getElementById(insertElement);
				//this.div.innerHTML = o.responseText;

				racePeopleNum = o.responseText;
				checkNum();
				//YAHOO.util.Event.addListener("fd_id", "change", loadCost);/*хак*/
			}
		};

		this.handleFailure = function(o){
				alert("error");
			if(o.responseText !== undefined){
				this.makeRequest();
			}
		};

		this.callback =
		{
		  success:this.handleSuccess,
		  failure:this.handleFailure,
		  argument:['foo','bar']
		};

		this.makeRequest = function (){
			this.request = YAHOO.util.Connect.asyncRequest('GET', this.sUrl, this.callback);
		}
	}



	var FormPostObj = function(insertElement,formId)
	{
		this.formId = formId;
		this.div = document.getElementById(insertElement);
		this.sUrl = "/booking/cost/";

		this.handleSuccess = function(o){
			if(o.responseText !== undefined){

				this.div = document.getElementById(insertElement);
				this.div.innerHTML = o.responseText;
			}
		};

		this.handleFailure = function(o){
				alert("error");
			if(o.responseText !== undefined){
				this.makeCostRequest();
			}
		};

		this.callback =
		{
		  success:this.handleSuccess,
		  failure:this.handleFailure,
		  argument:['foo','bar']
		};

		this.makeCostRequest = function (){
			this.formObject = YAHOO.util.Dom.get(this.formId);
			YAHOO.util.Connect.setForm(this.formObject);
			YAHOO.util.Connect.asyncRequest('POST', this.sUrl, this.callback);
		}
	}
	onStartSetVisibleDate();
}

YAHOO.util.Event.onDOMReady(init);
