﻿
$(document).ready(onHotelStartPageLoad);

function onHotelStartPageLoad() {
    initOldBrowserInfo()
    setInitialGeoCodes();
    initDestinationAutoComplete();
    initDatePicker();
    initPaxPicker();
}

function initDestinationAutoComplete() {
    
    if(useXeniaAvailFeatureEnabled == true)
    {
        latestSearchData = new Array();
        $('input[id$="DestinationFreeFlow"]').autocomplete({
            source: function(req, add)
            {
                $('#geocodingSearchResultHiddenWrapper :hidden').val("");            
                var destination = escape(req.term);
                if (destination.length >= 3)
                {
                    var jsonRequest = "GeoCodingService.aspx?language=" + languageCode + "&DestinationFreeFlow=" + destination;
                    $.getJSON(jsonRequest, function(data)
                    {
                        var suggestions = [];
                        latestSearchData = data;
                        $.each(data, function(i, val)
                        {
                            suggestions.push(val.name);
                        });
                        add(suggestions);
                    });
                }
            },
            minLength: 0,
            delay: 0,
            select: function(event, ui)
            {
                if (ui.item)
                {
                    $(event.target).val(ui.item.value);
                    jQuery.each(latestSearchData, function(index, item)
                    {
                        if (item.name == ui.item.value)
                        {
                            $('#geocodingSearchResultHiddenWrapper :hidden').val(item.geo[0] + ';' + item.geo[1] + ';' + item.radius + ';' + item.name);
                        }
                    });

                }
                return false;
            },
            appendTo: '.hotelStart'
        });
    }
}

function initDatePicker()
{
    var currentDateFormat = 'dd.mm.yy';
    var datepickerIn = $("#datepickerCheckIn");
    var datepickerOut = $("#datepickerCheckOut");

    datepickerIn.datepicker({
        showOn: 'both',
        buttonImage: '../img/calendar.gif', buttonImageOnly: true, dateFormat: currentDateFormat,
        onSelect: function(dateText, inst) {
            var checkInDate = datepickerIn.datepicker('getDate');
            var checkOutDate = datepickerOut.datepicker('getDate');
            var newCheckOutDate = new Date(checkInDate);
            newCheckOutDate.setDate(checkInDate.getDate() + 1);
            datepickerOut.datepicker('option', 'minDate', newCheckOutDate);
            if (checkInDate >= checkOutDate) {
                datepickerOut.datepicker('setDate', newCheckOutDate);
            }
            setNumberOfDays();
        }
    });
    datepickerOut.datepicker({
        showOn: 'both', buttonImage: '../img/calendar.gif',
        buttonImageOnly: true, dateFormat: currentDateFormat,
        onSelect: function(dateText, inst) {
            setNumberOfDays();
        }
    });

    datepickerIn.datepicker($.datepicker.regional[languageCode]);
    datepickerOut.datepicker($.datepicker.regional[languageCode]);
    datepickerIn.datepicker('option', 'maxDate', '+11m +29d');
    datepickerOut.datepicker('option', 'maxDate', '+1y');
    datepickerIn.datepicker('option', 'minDate', '+' + minCheckInDate + 'd');
    datepickerIn.datepicker('setDate', checkInDateInDaysFromNow);

    var minCheckOutDate = datepickerIn.datepicker('getDate');
    minCheckOutDate.setDate(minCheckOutDate.getDate() + 1);
    datepickerOut.datepicker('option', 'minDate', minCheckOutDate);
    datepickerOut.datepicker('setDate', checkOutDateInDaysFromNow);
    setNumberOfDays();
}

function setInitialGeoCodes()
{
    if (useXeniaAvailFeatureEnabled == true)
    {
        var text = $('input[id$="DestinationFreeFlow"]').val();
        if (text != "")
        {
            var destination = escape(text);
            var jsonRequest = "GeoCodingService.aspx?language=" + languageCode + "&DestinationFreeFlow=" + destination;
            $.getJSON(jsonRequest, function(data)
            {
                latestSearchData = data;
            });
        }
    }
}

function setBestMatchedLocation()
{
    if (useXeniaAvailFeatureEnabled == true)
    {
        var geoLocation = $('#geocodingSearchResultHiddenWrapper :hidden').val();
        var destinationFreeFlow = $('input[id$="DestinationFreeFlow"]').val();
        if (geoLocation == "" && destinationFreeFlow != "")
        {
            if (latestSearchData != null && latestSearchData.length > 0)
            {
                $('#geocodingSearchResultHiddenWrapper :hidden').val(latestSearchData[0].geo[0] + ';' + latestSearchData[0].geo[1] + ';' + latestSearchData[0].radius + ';' + latestSearchData[0].name);
                $('input[id$="DestinationFreeFlow"]').val(latestSearchData[0].name);
            }
        }
    }
}

function setNumberOfDays()
{
        var checkInDate = $("#datepickerCheckIn").datepicker('getDate');
        var checkOutDate = $("#datepickerCheckOut").datepicker('getDate');

	    var dateDiffInDays = Math.round((checkOutDate.getTime() - checkInDate.getTime())/(1000*60*60*24));
	    if(dateDiffInDays > 1)
	    {
	        $("#NightLabel").hide();
	        $("#NightsLabel").show();
	    }
	    else
	    {
	        $("#NightLabel").show();
	        $("#NightsLabel").hide();
	    }
	    $("#numerOfNights").html(dateDiffInDays);
}

function initPaxPicker()
{
    var numberOfVisibleRooms = $("#firstRoomPickerByType input[type='hidden']").val();
	
    if (numberOfVisibleRooms == null || numberOfVisibleRooms == '' || numberOfVisibleRooms == '1')
    {
        $(".roomType .row2").hide();
        $(".roomType .row3").hide();
    }
    else if(numberOfVisibleRooms == '2')
    {
        $(".roomType .row3").hide();
    }
    
	$(".more_rooms").click(function(){
		var current = $(this).parents().filter(".row");
		var next = current.next();
		if(next.is(":visible")){
			next.next(":hidden").show();
		}
		else{
			next.show();
		}
		var numberOfVisibleRooms = $("#firstRoomPickerByType input[type='hidden']").val();
	    if(numberOfVisibleRooms != null && numberOfVisibleRooms == '')
	    {
	        $("#firstRoomPickerByType input[type='hidden']").val('2');
	    }
	    else if(numberOfVisibleRooms != null && numberOfVisibleRooms < 3)
	    {
	        $("#firstRoomPickerByType input[type='hidden']").val(++numberOfVisibleRooms);
	    }
		return false;
	});
	
	$(".less_rooms").click(function(){
	    var numberOfVisibleRooms = $("#firstRoomPickerByType input[type='hidden']").val();
	    if(numberOfVisibleRooms != null)
	    {
	        $("#firstRoomPickerByType input[type='hidden']").val(--numberOfVisibleRooms);
	    }
	    $(this).parent().find("select[class='small'] option[value='0']").attr("selected","selected");
	    $(this).parent().find("[class='ChildAge1 ChildAge'] ").hide();
	    $(this).parent().find("[class='ChildAge2 ChildAge'] ").hide();
		$(this).parent().hide();
		return false;
	});
}

function switchToSplash()
{
    if(document.getElementById("splashRefresh") != null)
    {
        document.getElementById("splashRefresh").style.display = "block";
    }
    if(document.getElementById("hotelStartMain") != null)
    {
        document.getElementById("hotelStartMain").style.display = "none";
    }
    if(document.getElementById("debug") != null)
    {
        document.getElementById("debug").style.display = "none";
    }
    if(document.getElementById("Main_Header") != null)
    {
        document.getElementById("Main_Header").style.display = "none";
    }
    if(document.getElementById("Main_Footer") != null)
    {
        document.getElementById("Main_Footer").style.display = "none";
    }
    try
    {
	if(destination.indexOf(';') != -1){
		destination = destination.substring(7);
	}
    } catch(e) { }
    SearchLoader();
}

function TopRegionLink(KodTopRegion,NameTopRegion,SaveDestination){
    for(var i = 0; i < (TextTopRegion.length - 1); i++){           
        if(TextTopRegion[i].value == KodTopRegion){
            TextTopRegion[i].checked = 'checked';
            destination = NameTopRegion;
            document.getElementById(SaveDestination).value = TextTopRegion[i].value;    
        }    
    }
}

function makeStarsSelected(inputSet) {
    $("label.star").removeClass("choosen");
    var id = $(inputSet + ":checked").attr("id");
    if (id == "star6") {
        $("label.star").addClass("choosen");
    }
    else $("label[for='" + id + "']").addClass("choosen");
}

//====================================== GoogleTracking ==========================================

function sendGoogleTrackEvent(action, label, value)
{
    if(isNaN(parseInt(value)))
    {
        _gaq.push(['_trackEvent', 'HotelStart', action, label + '']);
    }
    else
    {
        _gaq.push(['_trackEvent', 'HotelStart', action, label + '', parseInt(value)]);
    }
}

// ======================================================== Old Browser Info =============================================

function initOldBrowserInfo() {

    var browser = browserDetect();

    switch (browser) {
        case 'FF1':
        case 'FF2':
        case 'IE5':
        case 'IE6':
            $('#oldBrowserInfo').show();
            break;
        default:
            $('#oldBrowserInfo').remove();
    };

    $('#closeBrowserInfoLink').click(function(e) {
        e.preventDefault();
        $('#oldBrowserInfo').hide();
    });
}

function browserDetect() {

    if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
        var ffversion = new Number(RegExp.$1) // capture x.x portion and store as a number
        if (ffversion >= 3) {
            return 'FF3';
        }
        else if (ffversion >= 2) {
            return 'FF2';
        }
        else if (ffversion >= 1) {
            return 'FF1';
        }
    }
    else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
        var ieversion = new Number(RegExp.$1) // capture x.x portion and store as a number
        if (ieversion >= 8) {
            return 'IE8';
        }
        else if (ieversion >= 7) {
            return 'IE7';
        }
        else if (ieversion >= 6) {
            return 'IE6';
        }
        else if (ieversion >= 5) {
            return 'IE5';
        }
    }
    else {
        return '';
    }
}
