﻿//------Maps-----

/// <reference path="jquery-1.3.2-vsdoc2.js" />

function setElementVisibility(eobj, ShowIt, KeepPlace) {
    if (ShowIt == true) {
        try { eobj.style.display = "inline"; } catch (e) { }
        try { eobj.style.visibility = "visible"; } catch (e) { }
    }
    else {
        if (KeepPlace == true) {
            try { eobj.style.display = "inline"; } catch (e) { }
            try { eobj.style.visibility = "hidden"; } catch (e) { }
        }
        else {
            try { eobj.style.visibility = "hidden"; } catch (e) { }
            try { eobj.style.display = "none"; } catch (e) { }
        }
    }
}

function getById(id) {
    if (isDefined(typeof document.getElementById)) {
        return document.getElementById(id);
    }
    else if (isDefined(typeof document.all)) {
        return document.all[id];
    }
    else {
        return null;
    }
}

function HideMap() {
    var objMap = getById('POIMap');
    setElementVisibility(objMap, false, false);
    IsMapLoaded = false;
}


var map = null;

function CreateMap() {
    try {

        map = new VEMap('POIMap');
        //Virtual Earth Credentials
        map.SetCredentials("Attoj3gzd8J9uboPN-1Jm256kvqZ_YoefVf-lqTPDqlRlnH0UXL9GiswFiFj1ajB");
        map.LoadMap(new VELatLong(-33.959444, 18.607222), 7, VEMapStyle.Road);
        map.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);
        //map.AttachEvent("onmouseover", MouseShapeHandler);
        //map.ClearInfoBoxStyles();

        //map.AttachEvent("onendzoom", ShowGroupedPushPins);

    }
    catch (e) {
        HideMap();
    }
}

var d = new Date();

$(function() {
    BeginGetImages();
    CreateMap();
    GetMapLayers();

    if (showBooking == true) {
        BeginGetRoomTypes();
        SetCheckinDateRange();
        SetCheckoutDateRange();
        SetORCheckinDateRange();
        SetORCheckoutDateRange();
        $('#staticmap').show();

        $('#tabs').bind('tabsselect', function(event, ui) {
            if (ui.index == 5) {
                $('#rightControl').hide();
            }
            else {
                $('#rightControl').show();
            }
            // Objects available in the function context:
            //ui.tab     // anchor element of the selected (clicked) tab
            //ui.panel   // element, that contains the selected/clicked tab contents
            //ui.index   // zero-based index of the selected (clicked) tab

        });


        if (isdefined('checkindate')) {
            if (checkindate != "") {
                $('#availdatepickerIn').datepicker('setDate', new Date(checkindate))
            }
        }

        if (isdefined('checkoutdate')) {
            if (checkoutdate != "") {
                $('#availdatepickerOut').datepicker('setDate', new Date(checkoutdate))
            }
        }

        if ($('#availdatepickerIn').val() != '' || $('#availdatepickerOut').val() != '') {
            $('#CheckAvailabilityDatesClear').show();
        }

        if (isdefined('adultcount')) {
            $('#availAdultCount').val(adultcount);
        }

        if (isdefined('childcount')) {
            $('#availChildCount').val(childcount);
        }

        if (isdefined('roomcount')) {
            $('#availRoomCount').val(roomcount);
        }

        if (isdefined('BuildHotelPromos')) {
            BuildHotelPromos(geoResourceId);
        }
    }
    else {
        //Hide booking control
        $('#HotelBookingControl').hide();
        $('#MakeReservation').hide();
        $('#RoomTypeMenu').hide();
        $('#staticmap').hide();

        if (isdefined('BuildRegionPromos')) {
            BuildRegionPromos(regionName);
        }
    }
    cursor_clear();
});

function isdefined(variable) {
    return (typeof (window[variable]) == "undefined") ? false : true;
}


function GetMapLayers() {
    var url = '/PortalModules/DirectoryModule/AjaxProxy/DirectoryItemMapService.svc/GetLayeredIconsInRegion';
    $.ajax({
        url: url,
        data: '{"geoResourceId":"' + geoResourceId + '"}',
        type: "POST",
        processData: true,
        contentType: "application/json",
        timeout: 30000,
        dataType: "json",
        success: OnSucceeded,
        error: handleError
    });
}

function OnSucceeded(results) {

    map.DeleteAllShapeLayers();
    try {
        for (var i = 0; i < results.d.length; i++) {
            var layer = new VEShapeLayer();
            layer.SetTitle(results.d[i].Key);

            var checkBoxString = "<input type=\"checkbox\" id=\"" + results.d[i].Key + "\" name=\"" + results.d[i].Key + "\" value=\"" + results.d[i].Key + "\" onclick=\"ChangeLayer('" + results.d[i].Key + "', this.checked);\" checked>" + replaceAll(replaceAll(results.d[i].Key, '-', '/'), '_', ' ') + "<br>";

            $('#POIMapLayers').append(checkBoxString);
            for (var j = 0; j < results.d[i].Value.length; j++) {
                var pin = new VEShape(VEShapeType.Pushpin, new VELatLong(results.d[i].Value[j].Lattitude, results.d[i].Value[j].Longitude));
                var iconString = "<div class='" + replaceAll(results.d[i].Key, '_', '') + 'Pushpin' + "'></div>";
                pin.SetCustomIcon(iconString);
                pin.SetDescription(results.d[i].Value[j].InfoHtml);
                layer.AddShape(pin);
            }

            if (accomLat == null) {
                var rect = layer.GetBoundingRectangle();
                var accomLat = results.d[i].Value[0].Lattitude;
                var accomLong = results.d[i].Value[0].Longitude;
            }

            var options = new VEClusteringOptions();
            var customIcon = new VECustomIconSpecification();
            customIcon.Image = "/Content/dev-mtbeds/Images/mapicon_group.gif";
            options.Icon = customIcon;
            options.Callback = clusteringCallback;

            //            if (map.GetZoomLevel() > 14) {
            //                layer.SetClusteringConfiguration(VEClusteringType.None, options);
            //            }
            //            else {
            //                layer.SetClusteringConfiguration(VEClusteringType.Grid, options);
            //            }

            layer.SetClusteringConfiguration(VEClusteringType.None);
            map.AddShapeLayer(layer);
            if (results.d[i].Key != 'Hotel') {
                $('#' + results.d[i].Key).click();
                layer.Hide();
            }

        }

        if (accomLat != null) {

            var center = new VELatLong(accomLat, accomLong);
            var initView = new VEMapViewSpecification(center, 12, 0, -90, 0);

            map.SetMapView(initView);
        }
    }
    catch (e) {
        alert(e.message);
    }
}

function replaceAll(text, strA, strB) {
    while (text.indexOf(strA) != -1) {
        text = text.replace(strA, strB);
    }
    return text;
}

function ChangeLayer(layerName, enabled) {
    var layer = null;

    for (var i = 0; i < map.GetShapeLayerCount(); i++) {
        layer = map.GetShapeLayerByIndex(i);

        if (layer.GetTitle() == layerName) break;
        layer = null;
    }

    if (enabled == true) {
        layer.Show();
    }
    else {
        layer.Hide();
    }
}

function OnFailed() {
    alert('Loading Points of interest for map failed.');
}

function MouseShapeHandler(e) {
    if (e.elementID != null) {
        var shape = map.GetShapeByID(e.elementID);
        if (shape.GetType() == VEShapeType.Pushpin) {
            if (shape.GetDescription() == "") {
                proxy.GetFlyoutHtml(shape.GetTitle(), GetFlyoutHtmlComplete, GetFlyoutHtmlFailed, e);
                return false;
            }
        }
    }
}

function GetFlyoutHtmlComplete(result, e) {
    var shape = map.GetShapeByID(e.elementID);
    shape.SetDescription(result);
    shape.SetTitle("");

}

function ShowGroupedPushPins(e) {
    var zoomLevel = map.GetZoomLevel();

    var options = new VEClusteringOptions();
    var customIcon = new VECustomIconSpecification();
    customIcon.Image = "/Content/dev-mtbeds/Images/mapicon_group.gif";
    options.Icon = customIcon;
    options.Callback = clusteringCallback;

    var layerCount = map.GetShapeLayerCount();
    for (var i = 1; i < layerCount; i++) {
        if (zoomLevel > 14) {
            //for (var i = 1; i < map.GetShapeLayerCount(); i++) {
            var layer = map.GetShapeLayerByIndex(i);
            layer.SetClusteringConfiguration(VEClusteringType.None, options);
            //}
        }
        else {
            //for (var i = 1; i < map.GetShapeLayerCount(); i++) {
            var layer = map.GetShapeLayerByIndex(i);
            layer.SetClusteringConfiguration(VEClusteringType.Grid, options);
            //}
        }
    }
}

function clusteringCallback(clusters) {
    for (var i = 0; i < clusters.length; ++i) {
        var cluster = clusters[i];
        var clusterShape = cluster.GetClusterShape();
        clusterShape.SetTitle("");
        clusterShape.SetDescription("There are " + cluster.Shapes.length + " places around here. Double-click to zoom in.");
    }
}


function SetCheckinDateRange() {
    //Set up the datepicker plugins with the correct dates and bounds.
    $('#availdatepickerIn').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'yy/mm/dd',
        minDate: d,
        showOn: 'both',
        buttonImage: '/Content/dev-mtbeds/Skins/Default/Img/calendar.gif',
        buttonImageOnly: true,
        onClose: function(selectedDate) {
            if (selectedDate != '') {
                var dt = new Date(selectedDate);
                $('#availdatepickerOut').datepicker('option', 'minDate', DateAdd('d', 1, dt));
                $('#CheckAvailabilityDatesClear').show();
            }
        },
        defaultDate: d
    });
}

function SetCheckoutDateRange() {
    $('#availdatepickerOut').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'yy/mm/dd',
        minDate: d,
        showOn: 'both',
        buttonImage: '/Content/dev-mtbeds/Skins/Default/Img/calendar.gif',
        buttonImageOnly: true,
        onClose: function(selectedDate) {
            if (selectedDate != '') {
                var dt = new Date(selectedDate);
                $('#availdatepickerIn').datepicker('option', 'maxDate', DateAdd('d', -1, dt));
                $('#CheckAvailabilityDatesClear').show();
            }
        },
        defaultDate: d
    });
}

function CheckAvailability() {
    if ($('#availdatepickerIn').val() != "") {
        BeginGetAvailableRoomTypes();
    }
    else {
        $('#AvailabilityMessage').text('Please select dates.').show();
    }
}

function SetORCheckinDateRange() {
    //Set up the datepicker plugins with the correct dates and bounds.
    $('#OR_datepickerIn').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'yy/mm/dd',
        minDate: d,
        showOn: 'both',
        buttonImage: '/Content/dev-mtbeds/Skins/Default/Img/calendar_blank.gif',
        buttonImageOnly: true,
        onClose: function(selectedDate) {
            if (selectedDate != '') {
                var dt = new Date(selectedDate);
                $('#OR_datepickerOut').datepicker('option', 'minDate', DateAdd('d', 1, dt));
                $('#ORDatesClear').show();
            }
        },
        defaultDate: d
    });
}

function SetORCheckoutDateRange() {
    $('#OR_datepickerOut').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'yy/mm/dd',
        minDate: DateAdd('d', 1, d),
        showOn: 'both',
        buttonImage: '/Content/dev-mtbeds/Skins/Default/Img/calendar_blank.gif',
        buttonImageOnly: true,
        onClose: function(selectedDate) {
            if (selectedDate != '') {
                var dt = new Date(selectedDate);
                $('#OR_datepickerIn').datepicker('option', 'maxDate', DateAdd('d', -1, dt));
                $('#ORDatesClear').show();
            }
        },
        defaultDate: DateAdd('d', 1, d)
    });
}

//Get all room types without price.
function BeginGetRoomTypes() {
    var url = '/PortalModules/DirectoryModule/AjaxProxy/POSAccommodationService.svc/GetRoomTypes';
    $.ajax({
        url: url,
        data: '{"GeoResourceId":"' + geoResourceId + '"}',
        type: "POST",
        processData: true,
        contentType: "application/json",
        timeout: 30000,
        dataType: "json",
        success: EndGetAvailableRoomTypes,
        error: handleError
    });

}

//Get available room types with their price.
function BeginGetAvailableRoomTypes() {
    $('#busy').show();
    $('#CheckinDetails').empty();
    $('#AvailabilityMessage').empty();
    var data = {
        "GeoResourceId": geoResourceId,
        "AdultCount": $('#availAdultCount').val(),
        "ChildCount": $('#availChildCount').val(),
        "RoomCount": $('#availRoomCount').val(),
        "CheckinDate": $('#availdatepickerIn').datepicker('getDate').format('yyyy/MM/dd'),
        "CheckoutDate": $('#availdatepickerOut').datepicker('getDate').format('yyyy/MM/dd'),
        "siteId": CMS_SiteId
    };

    var json = JSON2.stringify(data);
    var url = '/PortalModules/DirectoryModule/AjaxProxy/POSAccommodationService.svc/GetAvailableRoomTypes';
    $.ajax({
        url: url,
        data: json,
        type: "POST",
        processData: true,
        contentType: "application/json",
        dataType: "json",
        success: EndGetAvailableRoomTypes,
        error: handleError,
        timeout: 30000
    });
}

var _onrequest = false;

function ClearDates() {
    checkindate = '';
    checkoutdate = '';
    $('#availdatepickerIn').datepicker('destroy').val('');
    $('#availdatepickerOut').datepicker('destroy').val('');
    SetCheckinDateRange();
    SetCheckoutDateRange();
    $('#CheckAvailabilityDatesClear').hide();
}

function ClearORDates() {
    $('#OR_datepickerIn').datepicker('destroy').val('');
    $('#OR_datepickerOut').datepicker('destroy').val('');
    SetORCheckinDateRange();
    SetORCheckoutDateRange();
    $('#ORDatesClear').hide();
}

function EndGetAvailableRoomTypes(results) {
    if (results.d != null) {
        $('#tabs').tabs('select', 0);
        $('#RoomTypeHeading').text('Room Types');
        $('#RoomTypeMenu').empty();

        var json = JSON2.parse(results.d);
        var header;
        var roomtypename;
        var roomrateperday;
        var bookingButton;
        var special;
        var body;
        var noDatesSupplied = $('#availdatepickerIn').val() == '' || $('#availdatepickerOut') == ''

        $('#HotelName').val(json.EstablishmentName);
        if (json.Rooms.length > 0 && json.IsLiveData && json.OnRequestOnly == false && !noDatesSupplied) {
            if ($('#availdatepickerIn').val() != "" && $('#availdatepickerOut').val() != "") {
                //Show booking div
                $('#MakeReservation').fadeIn('normal');
                $('#MakeReservation a').empty().text('Book Now').click(SubmitHotelData);
                $('#CheckinDetails').empty().html('There are rooms available for the dates you have chosen. Would you like to make a reservation?');
                $('#AvailabilityMessage').text('');
                $('#RoomTypeDiv').empty();
                $('#RoomTypeHeading').show();
            }
        }
        else if (json.Rooms.length > 0 && json.IsLiveData && json.OnRequestOnly == true && !noDatesSupplied) {
            $('#MakeReservation').fadeIn('normal');
            $('#MakeReservation a').empty().text('View rooms now').attr('href', '#roomTypes').click(function() { $('#tabs').tabs('select', 0); });
            $('#CheckinDetails').empty().html('This reservation is on request, please click the button below to view a list of rooms available for selection.');
            $('#AvailabilityMessage').text('');
            $('#RoomTypeDiv').empty();
            $('#RoomTypeHeading').show();
        }
        else {
            $('#MakeReservation').hide();
            $('#CheckinDetails').text('');
            if ($('#availdatepickerIn').val() != "" && $('#availdatepickerOut').val() != "") {
                $('#RoomTypeDiv').empty();
                $('#RoomTypeHeading').hide();
                $('#RoomTypeDiv').append($('<p>').text('There are no rooms available for the dates or amount of travellers you have selected. Please reconsider the dates and travellers or try another search.'));
                $('#AvailabilityMessage').text('There are no rooms available for the dates or amount of travellers you have selected. Please reconsider the dates and travellers or try another search.')
            }
        }
        var BookinButtonTemplate = $('<div>')
                    .addClass('MakeAReservation_accordion')
                    .text('Book Now');

        var RequestButtonTemplate = $('<div>')
                    .addClass('RequestAReservation_accordion')
                    .text('Request Reservation');

        if (json.OnRequestOnly == true) {
            $('#CheckinDetails').empty().html('This reservation is on request, please click the button below to view a list of rooms available for selection.');

        }

        for (var i = 0; i < json.Rooms.length; i++) {
            header = $('<a>');
            header.attr('href', '#')
            roomtypename = $('<span>').text(json.Rooms[i].RoomTypeName).addClass('RoomTypeName');
            if ($('#availdatepickerIn').val() != "" && $('#availdatepickerOut').val() != "") {
                if (json.Rooms[i].OnRequest == true && json.IsLiveData) {
                    header.addClass('roomTypeHeaderOnrequest');
                    bookingButton = RequestButtonTemplate.clone().click(ShowRequestForm);
                    //$('#MakeAReservation a').text('Request Reservation');
                    //$('#MakeAReservation').attr('id', 'RequestReservation');

                    //$('#CheckinDetails').empty().html('This reservation is on Request, please click the Request Reservation button below and a consultant will check availability and contact you as soon as possible.');
                    //_onrequest = true;
                    roomrateperday = $('<span>').text(json.Rooms[i].CurrencyCode + "" + json.Rooms[i].PerPersonPerDay).addClass('RoomRatePerDay');
                }
                else {
                    bookingButton = BookinButtonTemplate.clone().click(SubmitHotelData);
                    roomrateperday = $('<span>').text(json.Rooms[i].CurrencyCode + "" + json.Rooms[i].PerPersonPerDay).addClass('RoomRatePerDay');
                }


                header
                .append(roomtypename)

                if (json.IsLiveData) {
                    header
                    .addClass('accordion_MakeAReservationBtn')
                    .append(roomrateperday)
                    .append(bookingButton)
                    .append($('<div>').addClass('cleardiv'));
                }
                else {
                    header
                    .append($('<div>').addClass('cleardiv'));
                }
            }
            else {
                header
                .append(roomtypename)
            }

            body = $('<span>')
                        .append($('<div>').append($('<b>').html(json.Rooms[i].RoomDescription)));

            if (json.Rooms[i].OnSpecial == true && json.IsLiveData) {
                //header.addClass('roomTypeHeaderSpecial')
                header.find('.cleardiv').before('<div class="roomTypeHeaderSpecial"></div>');
                body.append(json.Rooms[i].RateDescription);
                if (json.Rooms[i].NormalRate > 0) {
                    body.append($('<div>').text('Normal rate: ' + json.Rooms[i].CurrencyCode + "" + json.Rooms[i].NormalRate));
                }
                body.append($('<div>').text('Special rate: ' + json.Rooms[i].CurrencyCode + "" + json.Rooms[i].PerPersonPerDay));
                body.append($('<input type="hidden" class="PPPPD">').val(json.Rooms[i].PerPersonPerDay));
                //body.append($('<div>').text('Meal Plan Code: ' + json.Rooms[i].MealPlanCode));
            }
            else {
                header.addClass('roomTypeHeaderNormal')
                if (json.IsLiveData == true) {
                    body.append($('<div>').html(json.Rooms[i].RateDescription));
                    //body.append($('<div>').text('Meal Plan Code: ' + json.Rooms[i].MealPlanCode));
                }
            }

            $('#RoomTypeMenu')
                .append($('<h3>').empty().append(header));

            $('#RoomTypeMenu')
                .append($('<div>').empty().append(body));
        }

        $('#RoomTypeMenu').accordion('destroy').accordion();
    }
    $('#busy').hide();
}

function ShowRequestForm() {
    $('#RequestFromHolder').show();
    $('#RequestConfirmation').hide();

    var dateIn = $('#availdatepickerIn').datepicker('getDate');
    var dateOut = $('#availdatepickerOut').datepicker('getDate');

    var data = {
        hoteldata: {
            K3HotelId: hotelK3Id,
            RoomTypeName: $(this).parent().find('.RoomTypeName').text(),
            RoomRatePerDay: $(this).parent().find('.RoomRatePerDay').text(),
            EstablishmentName: $('#HotelName').val(),
            CheckinDay: dateIn.getDate(),
            CheckinMonthYear: dateIn.getFullYear() + "-" + (dateIn.getMonth() + 1),
            CheckoutDay: dateOut.getDate(),
            CheckoutMonthYear: dateOut.getFullYear() + "-" + (dateOut.getMonth() + 1),
            RoomCount: $('#availRoomCount').val(),
            AdultCount: $('#availAdultCount').val(),
            ChildCount: $('#availChildCount').val(),
            ErrorUrl: "/SearchResults?region=South Africa"
        }
    }

    $('#tabs').tabs('select', 5);
    $('#OR_txtRoomType').val(data.hoteldata.RoomTypeName);
    $('#OR_txtRate').val(data.hoteldata.RoomRatePerDay);
    $('#OR_txtEstablishmentName').val(data.hoteldata.EstablishmentName);
    $('#OR_datepickerIn').datepicker('setDate', dateIn);
    $('#OR_datepickerOut').datepicker('setDate', dateOut);
    $('#OR_RoomCount').val(data.hoteldata.RoomCount);
    $('#OR_AdultCount').val(data.hoteldata.AdultCount);
    $('#OR_ChildCount').val(data.hoteldata.ChildCount).change(UpdateChildAgeSelectors);
    UpdateChildAgeSelectors();
    $('#rightControl').hide();
    $('#OnRequestBooking').show();
}

function SubmitHotelData() {
    var dateIn = $('#availdatepickerIn').datepicker('getDate');
    var dateOut = $('#availdatepickerOut').datepicker('getDate');

    var data = {
        hoteldata: {
            K3HotelId: hotelK3Id,
            CheckinDay: dateIn.getDate(),
            CheckinMonthYear: dateIn.getFullYear() + "-" + (dateIn.getMonth() + 1),
            CheckoutDay: dateOut.getDate(),
            CheckoutMonthYear: dateOut.getFullYear() + "-" + (dateOut.getMonth() + 1),
            RoomCount: $('#availRoomCount').val(),
            AdultCount: $('#availAdultCount').val(),
            ChildCount: $('#availChildCount').val(),
            ErrorUrl: "/SearchResults?region=South Africa"
        }
    }

    var json = JSON2.stringify(data);
    var url = '/PortalModules/DirectoryModule/AjaxProxy/POSAccommodationService.svc/BuildRequestForm';
    $.ajax({
        url: url,
        data: json,
        type: "POST",
        processData: true,
        contentType: "application/json",
        dataType: "json",
        success: EndSubmitHotelData,
        error: handleError,
        timeout: 30000
    });
}

function UpdateChildAgeSelectors() {
    var childCount = $('#OR_ChildCount').val();
    $('#ChildAgeDropdowns').empty();
    if (childCount > 0) {
        for (var i = 0; i < childCount; i++) {
            $('#ChildAgeDropdowns').append($('<select>').html('<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>'));
        }
        $('#ChildAges').show();
    }
    else {
        $('#ChildAges').hide();
    }
}

//function EndSubmitHotelData(result) {
//    var hotelForm = $('<form>');

//    hotelForm.attr('method', 'post');
//    if (adword == '') {
//        hotelForm.attr('action', 'https://dev-demo:449/redirect.aspx');
//    }
//    else {
//        hotelForm.attr('action', 'https://dev-demo:449/redirect.aspx?adword=' + adword);
//    }
//    hotelForm.html(result.d);


//    var oWindow = GetRadWindow();
//    if (oWindow != null && oWindow != 'undefined') {
//        var parentWindow = $(oWindow.BrowserWindow.document);
//        //$(parentWindow[0].getElementsByTagName('body')[0]).empty().append(hotelForm);
//        $(parentWindow[0].getElementsByTagName('body')[0]).append(hotelForm);
//        //parentWindow.find('body').append(hotelForm)
//        //oWindow.close();

//    }
//    else {
//        $('body').append(hotelForm);
//    }

//    $(hotelForm).submit();
//}

function EndSubmitHotelData(result) {

    var oWindow = GetRadWindow();
    if (oWindow != null && oWindow != 'undefined') {
        parent.top.SubmitHotelData(result, adword, K3HostName);
        return;
    }
    else {

        var hotelForm = $('<form style="display:none">' + result.d + '</form>');
        hotelForm.attr('method', 'post');
        if (adword == '') {
            hotelForm.attr('action', 'https://' + K3HostName + '/redirect.aspx');
        }
        else {
            hotelForm.attr('action', 'https://' + K3HostName + '/redirect.aspx?adword=' + adword);
        }
        $('body').append(hotelForm);
    }
    $(hotelForm).submit();
}


function handleError(XMLHttpRequest, textStatus, errorThrown) {
    alert(XMLHttpRequest.responseText);
}

function GetRadWindow() {
    var oWindow = null;
    if (window.radWindow) {
        oWindow = window.radWindow;
    }
    else if (window.frameElement) {
        if (window.frameElement.radWindow) {
            oWindow = window.frameElement.radWindow;
        }
    }
    return oWindow;
}

function BeginGetImages() {
    var data = {
        GeoResourceId: geoResourceId,
        imageHeight: 400,
        imageWidth: 400
    };
    var json = JSON2.stringify(data);
    var url = '/PortalModules/DirectoryModule/AjaxProxy/POSAccommodationService.svc/GetImagesForSlider';
    $.ajax({
        url: url,
        data: json,
        type: "POST",
        processData: true,
        contentType: "application/json",
        timeout: 30000,
        dataType: "json",
        success: EndGetImages,
        error: handleError
    });

}

function EndGetImages(result) {
    //var json = JSON2.parse(result.d);
    $('#fragment-4').html(result.d);
    $("#ActiveImages").images();
}

function SubmitRequest() {
    var childAges = new Array();

    for (var i = 0; i < $('#ChildAgeDropdowns select').length; i++) {
        childAges.push($($('#ChildAgeDropdowns select')[i]).val());
    }

    var data =
    {
        RequestInfo:
        {
            CustomerName: $('#OR_txtName').val(),
            EmailAddress: $('#OR_txtEmailAddress').val(),
            ContactNumber: $('#OR_txtPhoneNumber').val(),
            RoomCount: $('#OR_RoomCount').val(),
            AdultCount: $('#OR_AdultCount').val(),
            ChildCount: $('#OR_ChildCount').val(),
            CheckinDate: $('#OR_datepickerIn').val(),
            CheckoutDate: $('#OR_datepickerOut').val(),
            AdditionalInfo: '<h5>Additional Information/Special Requests:</h5> ' + $('.AdditionalInfoInput').text(),
            HotelName: hotelName,
            ChildAges: childAges,
            RoomType: $('#OR_txtRoomType').val(),
            Rate: $('#OR_txtRate').val()
        }
    };

    if (data.RequestInfo.CustomerName == "") {
        $('#OR_txtName').after($('<span>').addClass('validationError').html("<p>Please specify a name.</p>").fadeIn().animate({ opacity: 1.0 }, 1000).fadeOut());
        return;
    }

    if (data.RequestInfo.EmailAddress == "") {
        $('#OR_txtEmailAddress').after($('<span>').addClass('validationError').html("<p>Please specify an email address.</p>").fadeIn().animate({ opacity: 1.0 }, 1000).fadeOut());
        return;
    }

    if (!isEmail(data.RequestInfo.EmailAddress)) {
        $('#OR_txtEmailAddress').after($('<span>').addClass('validationError').html("<p>Please specify a valid email address.</p>").fadeIn().animate({ opacity: 1.0 }, 1000).fadeOut());
        return;
    }

    if (data.RequestInfo.ContactNumber == "") {
        $('#OR_txtPhoneNumber').after($('<span>').addClass('validationError').html("<p>Please specify a contact number.</p>").fadeIn().animate({ opacity: 1.0 }, 1000).fadeOut());
        return;
    }

    var json = JSON2.stringify(data);
    var url = '/PortalModules/DirectoryModule/AjaxProxy/POSAccommodationService.svc/SubmitOnRequestMail';
    $.ajax({
        url: url,
        data: json,
        type: "POST",
        processData: true,
        contentType: "application/json",
        timeout: 30000,
        dataType: "json",
        success: EndSubmitRequest,
        error: handleError
    });

}

function isEmail(value) {
    return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
}

function EndSubmitRequest(result) {
    $('#RequestConfirmation').html(result.d).show();
    $('#RequestFromHolder').hide();
}

function CreateBookmarkLink() {
    title = document.title;
    url = "http://" + window.location.host + "/directory/hotel/" + geoResourceId + "/" + urlHotelName;
    if (window.sidebar) {
        // Mozilla Firefox Bookmark		
        window.sidebar.addPanel(title, url, "");
    }
    else if (window.external) {
        // IE Favorite
        window.external.AddFavorite(url, title);
    }
    else if (window.opera && window.print) {
        // Opera Hotlist
        return true;
    }
}


