
var selectedHotelID = 0;
var dt = new Date();
var selectedMonth = dt.getMonth();
var selectedYear = dt.getFullYear();
var priceDays = [  ];
var vacantDays = [ ];
var selectedStartDate;
var selectedEndDate;
var differnceOfDays = 0;
var displayPricesTimerId = null;
var selectMenu;
var numberOfRooms;
var isDateChanged = false;
var offeredHotelID;
var offeredHotelLongitude;
var offeredHotelLatitude;

$(document).ready(function() {
	
	$("select[ name^=hotel] ").bind('change', changeHotel);
	$("select[ name^=room] ").bind('change', changeRoom);
	numberOfRooms = document.getElementById("room_count").value;
	
	$('#datepicker').datepick({minDate: 0, maxDate: '+2Y', rangeSelect: true, altField: '#Range', changeMonth: false, changeYear: false, currentText: '',
		dateFormat: 'mm/dd/yy', gotoCurrent: true, onHover: onHowerDates , onSelect: onSelectDateRange, onChangeMonthYear: onMonthChange,
		 beforeShowDay: disableDays});
	// booking form

	$('#company_booking_toggle').click(function() {
	           $('#company_booking').slideToggle('fast');

	           return false;
	});

	$('#company_code').keyup(function() {
		companyCodeEvent();
	});

	$('#discount_code').keyup(function() {
	           if ($('#discount_code').val().length > 0) {
	                      $('#company_booking').slideUp('fast');
	                      $('#company_booking_toggle').hide();
	                      $('#company_booking_toggle_text').show();
	                      $('#customer_type').val('2');
	           } else {
	                      $('#company_booking_toggle_text').hide();
	                      $('#company_booking_toggle').show();
	                      $('#customer_type').val('0');
	           }

	           return false;
	});
	initQuickSummaryPanel();
});	

function companyCodeEvent() {
    if ($('#company_code').val().length > 0) {
        $('#discount_code').attr('disabled', 'disabled');
        $('#customer_type').val('1');
} else {
        $('#discount_code').removeAttr('disabled');
}

	
}

// Display single day price when user mouse over on calendar for single day
function onHowerDates(value, date) { 
	return;
	var str = value.split("/");
	var displayValue = str[1] + "." + str[0] + "." + str[2];
	if(date == null) { return [true, ''];  }
	for (i = 0; i < priceDays.length; i++) {   
    	if (date.getMonth() == priceDays[i][0] - 1 && date.getDate() == priceDays[i][1]) {
    		$('#price_summary_date').text(displayValue + "........................... ");
    		$('#price_summary_price').text(roundNumber(priceDays[i][2],2) + " \u20ac"); 
    		return [false, priceDays[i][2] + '_day'];   
        }   
    }   
    return [true, ''];   
}

function onMonthChange(year, month) { 
	selectedMonth = month-1;
	selectedYear = year;
	scheduleLoadCalendar(0);
}

function disableDays(date) {
    for (i = 0; i < vacantDays.length; i++) {
    	if (date.getMonth() == vacantDays[i][0] - 1 && date.getDate() == vacantDays[i][1]) {   
            return [false, vacantDays[i][1] + '_day'];   
        }
    }
    return [true, ''];
}

function onSelectDateRange(value, date){
	
	selectedStartDate = new Date(date[0]);
	selectedEndDate = new Date(date[1]);
	isDateChanged = true;

	scheduleDisplayPrices();
}

var loadCalendarTimerId = null;
function scheduleLoadCalendar(displayPricesCall)
{
	
	if(null != loadCalendarTimerId)
	{
		clearTimeout(loadCalendarTimerId);
	}
	loadCalendarTimerId = setTimeout("loadCalendar(" + displayPricesCall + ")", 200);
}

function scheduleDisplayPrices()
{
	if(null != displayPricesTimerId)
	{
		clearTimeout(displayPricesTimerId);
	}
	displayPricesTimerId = setTimeout('displayPrices()', 200);
}

function roundNumber(num, dec) {
	var rem = num % 100;
	var result = Math.floor(num/100)+"."+(rem < 10 ? "0":"") + rem; 
	return result;
}

function changeHotel(){
	selectedHotelID = this.value;
	scheduleLoadCalendar(1);
}

function changeRoom(){
	numberOfRooms = this.value;
	scheduleLoadCalendar(1);
}

function initQuickSummaryPanel(){
	
	selectedStartDate = new Date();
	selectedEndDate = new Date();
	selectMenu = document.getElementById("hotel");
	
	// availability.....not available. commented out to prevent javascript error
	//document.getElementById("roomsAvailability").style.display = "none";
}

function loadCalendar(displayPriceCall) {
	loadCalendarTimerId = null;

	if (document.getElementById("roomsAvailability")) {
    		document.getElementById("roomsAvailability").style.display = "none";
    	}
}

function displayPrices(){
	return;
	displayPricesTimerId = null;
	
	var price = 0;
	var d = new Date(selectedStartDate);

	var sDate = (((selectedStartDate.getFullYear() * 100) +
			(selectedStartDate.getMonth() + 1)) * 100) +
			selectedStartDate.getDate();
	var eDate = (((selectedEndDate.getFullYear() * 100) +
			(selectedEndDate.getMonth() + 1)) * 100) +
			selectedEndDate.getDate();

	$.getJSON("../reservation/ws/rs/hotelresource/displayQuickReservationPrices",
	    	{hotelID: selectedHotelID, numberOfRooms:numberOfRooms, startDate:sDate,endDate:eDate,randomnumber:Math.random()},
	    		function(json) {
	    		
	    		var currentHotel = json.list[0];
	    		var offeredHotel = json.list[1];
	    		
	    		if(currentHotel.id == selectedHotelID){
				{
					var selectedDatePrices = currentHotel.selectedDatePrices; 
					var pricedata = selectedDatePrices.split('|'); 
					var pricedatahtml = "";
					var numberOfDays = pricedata.length / 2;
					var totalPrice = 0;
					for(var i = 0;i < pricedata.length;i++)
					{
						pricedatahtml += pricedata[i] + "&nbsp; X &nbsp;" + numberOfRooms +
							"&nbsp; = &nbsp;" + roundNumber(pricedata[++i],2) + " \u20ac<br/>";
						totalPrice += parseInt(pricedata[i]);
					}
					document.getElementById("date_price").innerHTML = pricedatahtml;
				}
				totalPrice = roundNumber(totalPrice,2);
				document.getElementById("total_price").innerHTML = totalPrice + "  \u20ac";
	
				if(isDateChanged){
					//offeredHotelId = -1 hotel is vacant selected date range so no need to offer hotel
					//offeredHotelId =  0 hotel is not vacant and no other hotel is NOT found to offer
					//offeredHotelId = $hotelID hotel is not vacant so other hotel is found to offer    
					
					if(currentHotel.offeredHotelId == 0){
						document.getElementById("popUpHotelNotVacant").style.display="block";
						document.getElementById("messagewindow").style.display="block";
					}
					if(currentHotel.offeredHotelId != 0 && currentHotel.offeredHotelId != -1){
						offeredHotelID = offeredHotel.id;
						offeredHotelLongitude = offeredHotel.longitude;
						offeredHotelLatitude = offeredHotel.latitude;
						document.getElementById("offeredHotelDetails").innerHTML = offeredHotel.streetAddress + "," + offeredHotel.areaCode;
						document.getElementById("hotelNameForMap").innerHTML = offeredHotel.hotelName + " - " + offeredHotel.streetAddress + "," + offeredHotel.areaCode;
						document.getElementById("popUpOfferAnotherHotel").style.display="block";
						document.getElementById("messagewindow").style.display="block";
					}
				}
					
    			}  
      		}
		);
	
	document.getElementById("roomsAvailability").style.display = "none";
}

function submitQRForm(locale){


	var selectedHotel = document.getElementById('hotel_code').value;
	if (selectedHotel.length < 2) {

		$('#hotel_code').css('border', '2px solid #ed1c24');
		$('#qr-error').show();
		
		return false;
	}
	var sDate = (((selectedStartDate.getFullYear() * 100) +
			(selectedStartDate.getMonth() + 1)) * 100) +
			selectedStartDate.getDate();
	var eDate = (((selectedEndDate.getFullYear() * 100) +
			(selectedEndDate.getMonth() + 1)) * 100) +
			selectedEndDate.getDate();
	
	var form = document.getElementById("quickReservationForm");
	
	var urlBase = "https://"+window.location.hostname;
	var hotel = selectedHotelID; //hs.options[hs.selectedIndex].value;
	var url = urlBase + "/fi/bookingwizard/BookingStep1";

	if (hotel == "CPH1") {
		url = urlBase + "/dk/bookingwizard/BookingStep1";
	}
	addHiddenInput(form, "from_day", selectedStartDate.getDate());
	addHiddenInput(form, "from_month", selectedStartDate.getMonth() + 1);
	addHiddenInput(form, "from_year", selectedStartDate.getFullYear() );
	addHiddenInput(form, "to_day", selectedEndDate.getDate());
	addHiddenInput(form, "to_month", selectedEndDate.getMonth() + 1);
	addHiddenInput(form, "to_year", selectedEndDate.getFullYear() );
	
	var from_day = document.getElementById('from_day');
	var to_day = document.getElementById('to_day');
	var from_month = document.getElementById('from_month');
	var to_month = document.getElementById('to_month');

	if (parseInt(from_day.value) && parseInt(from_month.value)) {
		if (from_day.value == to_day.value || to_day.value == undefined) {
			if (parseInt(from_day.value) && from_month.value == to_month.value) {
				document.getElementById('to_day').value = parseInt(from_day.value) + 1;
			}		
		}
	}	

	form.getAttributeNode('action').value = url;
	

	form.submit();
}


function addHiddenInput(form, name, value) {
	var el = document.createElement("input");
	el.type = "hidden";
	el.name = name;
	el.id = name;
	el.value = value;
	form.appendChild(el);
	
}



function fireChangeHotelEvent(sel, changeHotelId){
	
	for (var i=0; i< sel.options.length; i++){
        if (sel.options[i].value == changeHotelId){
                sel.options[i].selected = true;
                break;
        }
	}

	if(sel.fireEvent){
		sel.fireEvent('onchange');
	}
	if(document.createEvent)
	{
		var evt = document.createEvent('HTMLEvents');
		if(evt.initEvent){
			evt.initEvent('change', true, true);
		}
		if(sel.dispatchEvent){
			sel.dispatchEvent(evt);
		} 
	}
}
