
//
// Zamienia string w formacie YYYY-MM-DD na obiekt typu Date.
//
function parseDate(dateString)
{
	var str = new String(dateString);
	var array = str.split('-');
	if (array.length!=3)
		return null;
	var year = array[0];
	var month = array[1].charAt(0)=='0' ? parseInt(array[1].substr(1, 1)) : parseInt(array[1]);
	var day = array[2].charAt(0)=='0' ? parseInt(array[2].substr(1, 1)) : parseInt(array[2]);
	var date = new Date(year, month-1, day);
	if (isNaN(date))
		return null;
	date.setHours(0);
	date.setMinutes(0);
	date.setSeconds(0);
	date.setMilliseconds(0);
	return date;
}

//
// Zamienia obiekt Date na string w formacie YYYY-MM-DD.
//
function formatDate(date)
{
	return date.getFullYear() + "-" + formatDatePart(date.getMonth()+1) +
		"-" + formatDatePart(date.getDate());
}

//
// Funkcja pomocnicza dla funckcji formatDate(). Dodaje znak '0' do czesci daty.
//
function formatDatePart(value)
{
	var v = String(value);
	return v.length==1 ? "0"+v : v;
}


//
// Funkcja obslugi zdarzenia - zmiana wartosci w liscie NumOfNights.
//
function onNumOfNightsChange(form, numOfNights)
{
	var arrivalDate = parseDate(document.hotelbookform.checkin.value);
	if (arrivalDate==null)
	{
		alert('Nieprawid³owy format Daty Przybycia.\n\nPrawid³owy format daty: YYYY-MM-DD.');	//"Nieprawid³owy format Daty Przybycia..."
		return false;
	}
	
	numOfNights = parseInt(numOfNights);
	
	var newDate = new Date(arrivalDate.getFullYear(), arrivalDate.getMonth(), arrivalDate.getDate()+numOfNights);
	
	document.hotelbookform.checkout.value = formatDate(newDate);
}

//
// Funkcja obslugi zdarzenia - zmiana wartosci w okienku edycyjnym ArrivalDate.
//
function onArrivalDateChange(form, arrivalDate, hotel)
{
	var arrivalDate = parseDate(arrivalDate);
	if (arrivalDate==null)
	{
		alert('Nieprawid³owy format Daty Przybycia.\n\nPrawid³owy format daty: YYYY-MM-DD.');	//"Nieprawid³owy format Daty Przybycia..."
		return false;
	}
	
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);
	
	if (arrivalDate < today)
	{
		alert('Data Przybycia nie mo¿e byæ wcze¶niejsza od daty dzisiejszej.');	//"Data Przybycia nie mo¿e byæ wcze¶niejsza od daty dzisiejszej."
		return false;
	}

	if (hotel)
		document.hotelbookform.checkout.value = formatDate(addDaysToDate(arrivalDate, parseInt(document.hotelbookform.nights.value)));
}

//
// Funkcja obslugi zdarzenia - zmiana wartosci w okienku edycyjnym DepartureDate.
//
function onDepartureDateChange(form, departureDate)
{
	var arrivalDate = parseDate(document.hotelbookform.checkin.value);
	if (arrivalDate==null)
	{
		alert('Nieprawid³owy format Daty Przybycia.\n\nPrawid³owy format daty: YYYY-MM-DD.');	//"Nieprawid³owy format Daty Przybycia..."
		return false;
	}
	
	var depDate = parseDate(departureDate);
	if (depDate==null)
	{
		alert('Nieprawid³owy format Daty Wyjazdu.\n\nPrawid³owy format daty: YYYY-MM-DD.');	//"Nieprawid³owy format Daty Wyjazdu..."
		return false;
	}
	
	if (depDate <= arrivalDate)
	{
		alert('Data Wyjazdu musi byæ pó¼niejsza od Daty Przybycia.');	//"Data Wyjazdu musi byæ pó¼niejsza od Daty Przybycia."
		return false;	
	}
	if ((depDate-arrivalDate)/(1000*60*60*24) > 60)
	{
		alert('Data Wyjazdu nie mo¿e byæ pó¼niejsza ni¿ 60 dni od Daty Przybycia.');	//"Data Wyjazdu nie mo¿e byæ pó¼niejsza ni¿ 60 dni od Daty Przybycia."
		return false;
	}
	document.hotelbookform.nights.value = Math.round((depDate.getTime() - arrivalDate.getTime())/(1000*60*60*24));
}
//
// Dodaje dni do daty.
//
function addDaysToDate(date, numOfDays)
{
	return new Date(date.getFullYear(), date.getMonth(), date.getDate()+numOfDays);
}


function ValidateForm()
{
	var arrivalDate = parseDate(document.hotelbookform.checkin.value);
	var depDate = parseDate(document.hotelbookform.checkout.value);
	
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);
	today.setMilliseconds(0);
	
	if (arrivalDate < today)
	{
		alert('Data Przybycia nie mo¿e byæ wcze¶niejsza od daty dzisiejszej.');	//"Data Przybycia nie mo¿e byæ wcze¶niejsza od daty dzisiejszej."
		return false;
	}
	
	if (arrivalDate==null)
	{
		alert('Nieprawid³owy format Daty Przybycia.\n\nPrawid³owy format daty: YYYY-MM-DD.');	//"Nieprawid³owy format Daty Przybycia..."
		return false;
	}
	
	
	if (depDate==null)
	{
		alert('Nieprawid³owy format Daty Wyjazdu.\n\nPrawid³owy format daty: YYYY-MM-DD.');	//"Nieprawid³owy format Daty Wyjazdu..."
		return false;
	}
	
	if (depDate <= arrivalDate)
	{
		alert('Data Wyjazdu musi byæ pó¼niejsza od Daty Przybycia.');	//"Data Wyjazdu musi byæ pó¼niejsza od Daty Przybycia."
		return false;	
	}
	if ((depDate-arrivalDate)/(1000*60*60*24) > 60)
	{
		alert('Data Wyjazdu nie mo¿e byæ pó¼niejsza ni¿ 60 dni od Daty Przybycia.');	//"Data Wyjazdu nie mo¿e byæ pó¼niejsza ni¿ 60 dni od Daty Przybycia."
		return false;
	}
	return true;
}

function change_city()
{
	counrty_id = document.hotelbookform.countryid.options[document.hotelbookform.countryid.selectedIndex].value;
	if (counrty_id==-1) {
		document.hotelbookform.cityid.options[0] = new Option(' - wybierz kraj -', 0);
		document.hotelbookform.cityid.disabled = true;
		return;
	}
	
	while(document.hotelbookform.cityid.options.length > 1)		
		document.hotelbookform.cityid.options[1]=null;

	document.hotelbookform.cityid.disabled = false;
		
	var x = 0;
	var cities = counties[counrty_id];
	for(var i=0; i<cities.length; i+=2)
	{
		document.hotelbookform.cityid.options[x] = new Option(cities[i+1], cities[i]);
		x++;
	}
}
//
// Funkcja obslugi zdarzenia - zmiana wartosci w liscie NumOfAdults.
//
function onNumOfAdultsChange(form, numOfAdults)
{

	var numOfBeds = document.hotelbookform.beds;
	var count = numOfBeds.options.length;
	var i;
	 

  	while(numOfBeds.options.length >= 1)
  	{		
		numOfBeds.options[0]=null;
	}

	var start = numOfAdults > 1 ? numOfAdults-1 : 1;
	var stop = numOfAdults > 4 ? 4 : numOfAdults;
	
	if(numOfAdults==4)
	    start=2;
	
	j=1;

	for (i=start; i<=stop; i++)
	{
			if (navigator.userAgent.indexOf('Opera')>-1) 
			{
				var obiekt = new Option( i, i);
	  			numOfBeds.options[j++] = obiekt;
	  		}
	  		else
	  		{
	  			var el = document.createElement('OPTION');
				el.text = String(i);
		  		el.value = i;
				numOfBeds.add(el, document.all ? i : null);
	  		}

	}
	
	if (navigator.userAgent.indexOf('Opera')>-1) 
	{
		numOfBeds.options[0]=null;
	}

	numOfBeds.value = stop;
}

