var reservation_form = {};
reservation_form.vacancy_script = globals.base_url+'scripts/get_hotels.php';
reservation_form.price_script = globals.base_url+'scripts/get_booking_price.php';
reservation_form.init = function ()
{
	var booking_form = document.getElementById('hotel_book_form');

	var phone = document.getElementById('reservation_phone');
	var email = document.getElementById('reservation_email');

	if (booking_form)
	{
		var inputs = booking_form.getElementsByTagName('input');
		for (var i = 0; i < inputs.length; i++)
		{
			if (inputs[i].name == 'reservation_room_count[]')
			{
				event_handler.add(inputs[i], 'keyup', reservation_form.check_vacancy);
			}
		}

		event_handler.add(phone, 'keyup', reservation_form.contact_change);
		event_handler.add(email, 'keyup', reservation_form.contact_change);

		reservation_form.check_vacancy();
	}
};
reservation_form.get_price = function ()
{
	var booking_form = document.getElementById('hotel_book_form');

	var price_container = document.getElementById('reservation_price');

	var temp_id = document.getElementById('hotel_id');

	var date_from = document.getElementById('reservation_checkin');
	var date_to = document.getElementById('reservation_checkout');

	if (date_from && date_to)
	{
		if (date_from)
		{
			date_from = date_from.value;
		}
		if (date_to)
		{
			date_to = date_to.value;
		}

		var rc = 0;
		var room_count = new Array();

		var rt = 0;
		var room_type = new Array();

		var inputs = booking_form.getElementsByTagName('input');
		for (var i = 0; i < inputs.length; i++)
		{
			if (inputs[i].name == 'reservation_room_count[]')
			{
				room_count[rc] = inputs[i].value;
				rc++;
			}
			if (inputs[i].name == 'reservation_room_type[]')
			{
				room_type[rt] = inputs[i].value;
				rt++;
			}
		}

		param_0 = new Array('room_count', room_count);
		param_1 = new Array('room_type', room_type);
		param_2 = new Array('date_from', date_from);
		param_3 = new Array('date_to', date_to);
		param_4 = new Array('hotel_id', temp_id.value);

		param = new Array(param_0, param_1, param_2, param_3, param_4);

		if (requester.loadURL('POST', reservation_form.price_script, param, false))
		{
			var response = requester.getXML();

			var rooms = response.getElementsByTagName('room');
			var sum = response.getElementsByTagName('price_sum')[0].childNodes[0].nodeValue;
			var currency = response.getElementsByTagName('currency_sum')[0].childNodes[0].nodeValue;
			if (rooms.length > 0)
			{
				var text = '<h3>'+PRICE+'</h3>';

				for (var i = 0; i < rooms.length; i++)
				{
					if (rooms[i].getElementsByTagName('count')[0].childNodes.length > 0)
					{
						var room_count = rooms[i].getElementsByTagName('count')[0].childNodes[0].nodeValue;

						var room_abbr = rooms[i].getElementsByTagName('abbr')[0].childNodes[0].nodeValue;
						var room_price = rooms[i].getElementsByTagName('price')[0].childNodes[0].nodeValue;
						var room_currency = rooms[i].getElementsByTagName('currency')[0].childNodes[0].nodeValue;

						text += room_count+' '+room_abbr+' = '+room_price+' '+room_currency+'<br />';
					}
				}

				text += ('<h4>'+SUMMARY_PRICE+': '+sum+' '+currency+'</h4>');
				price_container.innerHTML = text;
				price_container.style.display = 'block';

				return;
			}
		}
	}

	price_container.innerHTML = '';
	price_container.style.display = 'none';
};
reservation_form.contact_change = function ()
{
	var phone = document.getElementById('reservation_phone');
	var email = document.getElementById('reservation_email');

	if (phone.value.length > 0 || email.value.length > 0)
	{
		class_handler.remove(phone, 'required');
		if (phone.value.length <= 0)
		{
			class_handler.remove(phone, 'invalid');
		}
		class_handler.remove(email, 'required');
		if (email.value.length <= 0)
		{
			class_handler.remove(email, 'invalid');
		}
	}
	else
	{
		if (!class_handler.has(phone, 'required'))
		{
			class_handler.add(phone, 'required');
		}
		if (!class_handler.has(email, 'required'))
		{
			class_handler.add(email, 'required');
		}
	}
};
reservation_form.check_vacancy = function ()
{
	var booking_form = document.getElementById('hotel_book_form');
	var booking_button = document.getElementById('hotel_book_form_submit');

	var temp_id = document.getElementById('hotel_id');

	var temp_message = document.getElementById('hotel_book_form_occupied');

	var date_from = document.getElementById('reservation_checkin');
	var date_to = document.getElementById('reservation_checkout');

	if (date_from && date_to)
	{
		if (date_from)
		{
			date_from = date_from.value;
		}
		if (date_to)
		{
			date_to = date_to.value;
		}

		var rc = 0;
		var room_count = new Array();

		var rt = 0;
		var room_type = new Array();

		var inputs = booking_form.getElementsByTagName('input');
		for (var i = 0; i < inputs.length; i++)
		{
			if (inputs[i].name == 'reservation_room_count[]')
			{
				room_count[rc] = inputs[i].value;
				rc++;
			}
			if (inputs[i].name == 'reservation_room_type[]')
			{
				room_type[rt] = inputs[i].value;
				rt++;
			}
		}

		param_0 = new Array('room_count', room_count);
		param_1 = new Array('room_type', room_type);
		param_2 = new Array('date_from', date_from);
		param_3 = new Array('date_to', date_to);
		param_4 = new Array('hotel_id', temp_id.value);

		param = new Array(param_0, param_1, param_2, param_3, param_4);

		if (requester.loadURL('POST', reservation_form.vacancy_script, param, false))
		{
			var response = requester.getXML();
			if (response.getElementsByTagName('vacant')[0].childNodes[0].nodeValue == 1)
			{
				temp_message.style.display = 'none';
				//				booking_button.disabled = false;
				reservation_form.get_price();
				return true;
			}
		}
	}

	reservation_form.get_price();
	temp_message.style.display = 'block';
	//	booking_button.disabled = true;
	return false;
};
reservation_form.date_update = function ()
{
	var date_from = document.getElementById('reservation_checkin');
	var date_to = document.getElementById('reservation_checkout');

	if (!date_from || !date_to)
	{
		return;
	}

	//read start date with given format from calendar
	var day_from = '';
	var month_from = '';
	var year_from = '';

	for (var i = 0; i < calendar.format.length; i++)
	{
		switch (calendar.format.substring(i, i+1))
		{
			case 'd':
			day_from += date_from.value.substring(i, i+1);
			break;
			case 'm':
			month_from += date_from.value.substring(i, i+1);
			break;
			case 'y':
			year_from += date_from.value.substring(i, i+1);
			break;
		}
	}

	//read end date with given format from calendar
	var day_from = new Number(day_from).valueOf();
	var month_from = new Number(month_from).valueOf();
	var year_from = new Number(year_from).valueOf();

	var day_to = '';
	var month_to = '';
	var year_to = '';

	for (var i = 0; i < calendar.format.length; i++)
	{
		switch (calendar.format.substring(i, i+1))
		{
			case 'd':
			day_to += date_to.value.substring(i, i+1);
			break;
			case 'm':
			month_to += date_to.value.substring(i, i+1);
			break;
			case 'y':
			year_to += date_to.value.substring(i, i+1);
			break;
		}
	}

	var day_to = new Number(day_to).valueOf();
	var month_to = new Number(month_to).valueOf();
	var year_to = new Number(year_to).valueOf();

	//set start date for comparison
	temp_from = year_from;
	if (month_from < 10)
	{
		temp_from += '-0'+month_from;
	}
	else
	{
		temp_from += '-'+month_from;
	}
	if (day_from < 10)
	{
		temp_from += '-0'+day_from;
	}
	else
	{
		temp_from += '-'+day_from;
	}

	//set end date for comparison
	temp_to = year_to;
	if (month_to < 10)
	{
		temp_to += '-0'+month_to;
	}
	else
	{
		temp_to += '-'+month_to;
	}
	if (day_to < 10)
	{
		temp_to += '-0'+day_to;
	}
	else
	{
		temp_to += '-'+day_to;
	}

	//if end date is smaller -> update it
	if (date_handler.compare(temp_to, temp_from))
	{
		day_to = day_from+1;
		days_in_month = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		if (year_to%4 != 0)
		{
			days_in_month[1] = 28;
		}
		else if (year_to%400 == 0)
		{
			days_in_month[1] = 29;
		}
		else if (year_to%100 == 0)
		{
			days_in_month[1] = 28;
		}
		else
		{
			days_in_month[1] = 29;
		}

		day_to = day_from+1;
		month_to = month_from;
		year_to = year_from;

		if (day_to > days_in_month[month_to-1])
		{
			day_to = 1;
			month_to++;
		}
		if (month_to > 12)
		{
			month_to = 1;
			year_to++;
		}

		var temp_new_date = '';
		temp_new_date = calendar.format;

		var re = new RegExp('dd');
		if (calendar.format.search(re) != -1)
		{
			if (day_to < 10)
			{
				day_to = '0'+day_to;
			}
		}
		temp_new_date = temp_new_date.replace(re, day_to);

		var re = new RegExp('mm');
		if (calendar.format.search(re) != -1)
		{
			if (month_to < 10)
			{
				month_to = '0'+month_to;
			}
		}
		temp_new_date = temp_new_date.replace(re, month_to);

		var re = new RegExp('yy');
		if (calendar.format.search(re) != -1)
		{
			if (year_to < 10)
			{
				year_to = '200'+year_to;
			}
			else if (year_to >= 10 && year_to < 100)
			{
				year_to = '20'+year_to;
			}
		}

		var re = new RegExp('yyyy');
		temp_new_date = temp_new_date.replace(re, year_to);

		date_to.value = temp_new_date;
	}
};
reservation_form.redir_free = function (event)
{
	if (!event.target)
	{
		event = fix_e(event);
	}
	if (event.preventDefault)
	{
		event.preventDefault();
	}

	var temp_form = document.getElementById('hotel_book_form');

	var inputs = temp_form.getElementsByTagName('input');
	for (var i = 0; i < inputs.length; i++)
	{
		if (inputs[i].name != 'reservation_checkin' && inputs[i].name != 'reservation_checkout'
		&& inputs[i].name != 'reservation_room_count[]' && inputs[i].name != 'reservation_room_type[]')
		{
			inputs[i].disabled = true;
		}
	}

	var selects = temp_form.getElementsByTagName('select');
	for (var i = 0; i < selects.length; i++)
	{
		if (selects[i].name != 'reservation_checkin' && selects[i].name != 'reservation_checkout'
		&& selects[i].name != 'reservation_room_count[]' && selects[i].name != 'reservation_room_type[]')
		{
			selects[i].disabled = true;
		}
	}

	temp_form.action = globals.base_frontpage_url+PAGE_ALIAS_CP_HOTELS+'/'+PAGE_ALIAS_HOTEL_LIST+'.html?booking_redir=true';
	temp_form.submit();
	return false;
};
