var ADateRange = new Array(), DDateRange = new Array();//, ADate = new Date(), DDate= new Date();
var adYear, adMon, adDay, ddYear, ddMon, ddDay, _DepartureDate, _ArrivalDate;
var DayInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

function checkDate(d){
var s = d;
if(!s) return null;
var D = String(s).split("-");
if(D.length < 3) return null;
var yy = parseInt(D[0],10); 
var mm = parseInt(D[1],10)-1;
var dd = parseInt(D[2],10);
var _d = new Date( yy, mm , dd);
var c = isNaN(_d);
return c?null:_d;
}
function onSetRoomPerson(){
if( typeof RoomType != 'undefined'){
var room =  parseInt(RoomType,10);
var e;
if(!isNaN(room)){
	e = $("CountOfRoom");
	e.selectedIndex = room - 1;
}
}
if( typeof RoomType != 'undefined'){
var amount = parseInt(AmountOfRooms,10);
if(!isNaN(amount)){
	e = $("CountOfPerson");
	e.selectedIndex = amount - 1;
}
}
}

function onSetPeriod(){
	onSetRoomPerson();
	var ADate;
	if( typeof ArrivalDate != 'undefined')
		ADate = checkDate(ArrivalDate);
	if(!ADate){
		ADate = new Date();	ADate.setTime(ADate.getTime() + (0*24*60*60*1000))} // adv. tomorrow
	var DDate;
	if( typeof DepartureDate != 'undefined')
		DDate = checkDate(DepartureDate);
	if(!DDate){
		DDate = new Date();	DDate.setTime(DDate.getTime() + (1*24*60*60*1000))}// adv. day after tomorrow

	iADYear = ADate.getFullYear();
	iADMonth = ADate.getMonth();
	iADDay = ADate.getDate();

	iDDYear = DDate.getFullYear();
	iDDMonth = DDate.getMonth();
	iDDDay = DDate.getDate(); 	
			
	adYear = $("adYear");	
if(!adYear) return;
	adYear.options.length = 0;
	for (i = iADYear,j=0; i < iADYear+3; i++,j++)	{
		elOpt = new Option;
		elOpt.value = String(i);
		elOpt.text = String(i);
		adYear.options[j] = elOpt;
	}
	adYear.selectedIndex = 0;
	adYear.onchange = ArrivalDeparture_Year; 
	
	adMon  = $("adMon");  adMon.selectedIndex  =  iADMonth ;
	adMon.onchange = ArrivalDeparture_Mon;

	adDay  = $("adDay");  adDay.selectedIndex  = iADDay-1;
	adDay.onchange = ArrivalDeparture_Day; 
	
	_ArrivalDate = $("_ArrivalDate");
		
	ddYear = $("ddYear"); 
	ddYear.options.length = 0;
	for (i = iDDYear,j=0; i < iDDYear+3; i++,j++){
		elOpt = new Option;
		elOpt.value = String(i);
		elOpt.text = String(i);
		ddYear.options[j] = elOpt;
	}
	ddYear.selectedIndex = 0;
	ddYear.onchange = ArrivalDeparture_Year; 
	ddMon  = $("ddMon");  ddMon.selectedIndex =  DDate.getMonth();
	ddMon.onchange = ArrivalDeparture_Mon; 
	ddDay  = $("ddDay");  ddDay.selectedIndex = DDate.getDate()-1;
	ddDay.onchange = ArrivalDeparture_Day; 
	
	_DepartureDate = $("_DepartureDate");

	_DDate = new Date();
	_DDate.setTime(_DDate.getTime() + (365*24*60*60*1000));
	
	ADateRange[0] = Array(ADate.getFullYear(),ADate.getMonth()+1,ADate.getDate());
	ADateRange[1] = Array(_DDate.getFullYear()+3,_DDate.getMonth()+1,_DDate.getDate());
	
	_DDate.setTime(_DDate.getTime() + (30*60*60*1000));
	DDateRange[0] = Array(DDate.getFullYear(),DDate.getMonth()+1,DDate.getDate());
	DDateRange[1] = Array(_DDate.getFullYear()+3,_DDate.getMonth()+1,_DDate.getDate());
		
	ArrivalDeparture_Year();
	if(typeof EnableHotelRates != 'undefined') EnableHotelRates();
}

function ArrivalDeparture_Day(){ArrivalDateOrDepartureDate_Change()}
function ArrivalDeparture_Mon(){
	if(this == adMon) CorrectDays(adDay, adMon, adYear);
	else if(this == ddMon) CorrectDays(ddDay, ddMon, ddYear);
}

function ArrivalDeparture_Year(){
	if(this == adYear) CorrectDays(adDay, adMon, adYear);
	else if(this == ddYear) CorrectDays(ddDay, ddMon, ddYear);
	else ArrivalDateOrDepartureDate_Change();
}

function ChangeDays(adDay, adMon, adYear){
	CorrectDays(adDay, adMon, adYear);
	ArrivalDateOrDepartureDate_Change()
}

function CorrectDaysOfMon(adDay, adMon, adYear){
	lDay   = parseInt(adDay.value);
	lMonth = parseInt(adMon.value);
	lYear  = parseInt(adYear.value);
	iDaysCount = DayInMonth[adMon.value-1];
	if (lYear % 4 == 0 && lMonth==2) iDaysCount = 29;
	var j = adDay.options.length;
	
	if(iDaysCount < j) for (i = j-1; i > iDaysCount; i--) adDay.options[i] = null;			
	else for (i = j; i < iDaysCount; i++){
			elOpt = new Option;
			elOpt.value = i+1;
			elOpt.text = i+1;
			adDay.options[i] = elOpt;
		}
	adDay.options.length = iDaysCount;		
}

function CorrectDays(adDay, adMon, adYear){
	CorrectDaysOfMon(adDay, adMon, adYear);
	ArrivalDateOrDepartureDate_Change();		
}

function ArrivalDateOrDepartureDate_Change(){
	if (String(typeof(hideHotelRates)) == "function") hideHotelRates();
	
	var _AD = adYear.options[adYear.selectedIndex].value + "-" + 
			  adMon.options[adMon.selectedIndex].value + "-" + 
			  adDay.options[adDay.selectedIndex].value;

	var _DD = ddYear.options[ddYear.selectedIndex].value + "-" + 
			  ddMon.options[ddMon.selectedIndex].value + "-" + 
			  ddDay.options[ddDay.selectedIndex].value;	

	var _ADate = new Date(adYear.options[adYear.selectedIndex].value, adMon.options[adMon.selectedIndex].value-1, adDay.options[adDay.selectedIndex].value);
	var _DDate = new Date(ddYear.options[ddYear.selectedIndex].value, ddMon.options[ddMon.selectedIndex].value-1, ddDay.options[ddDay.selectedIndex].value);

	if (_ArrivalDate.value != _AD){	// если изменилась дата заезда, то ..
		if(_DDate<=_ADate) _DDate.setTime(_ADate.getTime() + (1*24*60*60*1000));
		_ArrivalDate.value = _AD;	
		_DepartureDate.value = String(_DDate.getFullYear()) + "-" + String(_DDate.getMonth()+1) + "-" + String(_DDate.getDate());
		for(i=0;i<ddYear.options.length;i++)
			if (ddYear.options[i].value == String(_DDate.getFullYear())){
				ddYear.selectedIndex = i;break}
		ddMon.selectedIndex  = _DDate.getMonth();
		CorrectDaysOfMon(ddDay, ddMon, ddYear);
		ddDay.selectedIndex  = _DDate.getDate()-1;
	}
	else if (_DepartureDate.value != _DD){ // иначе ... если изменилась дата выезда, то ..
		if(_DDate<=_ADate) _ADate.setTime(_DDate.getTime() - (1*24*60*60*1000));
		_DepartureDate.value = _DD;	
		_ArrivalDate.value = String(_ADate.getFullYear()) + "-" + String(_ADate.getMonth()+1) + "-" + String(_ADate.getDate());
		for(i=0;i<adYear.options.length;i++)
			if (adYear.options[i].value == String(_ADate.getFullYear())){
				adYear.selectedIndex = i;break			}
		adMon.selectedIndex  = _ADate.getMonth();
		CorrectDaysOfMon(adDay, adMon, adYear);
		adDay.selectedIndex  = _ADate.getDate()-1;
	}
}

function CheckADDate(){
    var curDate = new Date();
    var _ADate = new Date(adYear.options[adYear.selectedIndex].value, adMon.options[adMon.selectedIndex].value-1, adDay.options[adDay.selectedIndex].value,23,59,59);
    if(_ADate < curDate){alert($("msgErrorArrivalDate").value);return false;}
    _ADate = _ADate.getTime();
    var _DDate = new Date(ddYear.options[ddYear.selectedIndex].value, ddMon.options[ddMon.selectedIndex].value-1, ddDay.options[ddDay.selectedIndex].value,0,0,0);
    _DDate = _DDate.getTime();
    if(_DDate - _ADate > 30*24*60*60*1000){alert($("msgErrorCountDays").value);return false;}
    return true;
}

/*
if(window.addEventListener) // Mozilla, Netscape, Firefox
	window.addEventListener('load',onSetPeriod, false);
else  // IE
	window.attachEvent('onload', onSetPeriod);
*/

