function ChangeCurrency(url) {

    $.ajax({
        type: "GET",
        cache: false,
        url: url,
        async: true,
        success: function(html) {
            window.location.reload(true);
        }
    });
}

function LoadCities()
{

    $('#city_regionAJAXloading').show();

    var myval = $('select.country_region').val();

    $.ajax({
        type: "POST",
        url: "/rtgseorefresh/DynamicDataProvider.asmx/GetCities",
        data: '{"countryName":"' + myval + '","languageCode":"' + $('#lc').val() + '"}',
        processData: false,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            popCitiesAndLoc(response);
            
        }//,
        //error: ajaxFailed


    });
}

function popCitiesAndLoc(j) {
    var options = '';
    var ct = j.d.Cities;

    var dc = j.d.DefaultCities;

    var isSetSel = false;
    var ctyValSel = "";
    for (var i = 0; i < dc.length; i++) {

        if (!isSetSel) {
            if (dc[i].Name == $("input.txtWhere").val()) {
                ctyValSel = "selected=\"selected\"";
                isSetSel = true;
            }
        }

        if (dc[i].Name != -2) {
            if (ctyValSel == "") {
                options += '<option value="' + dc[i].Name + '">' + dc[i].DisplayName + '</option>';
            } else {
                options += '<option value="' + dc[i].Name + '" selected=\"selected\">' + dc[i].DisplayName + '</option>';
            }
        }
        else {
            options += '<option disabled="disabled" value="' + dc[i].Name + '">' + dc[i].DisplayName + '</option>';
        }
        ctyValSel = "";

    }
    if (dc.length > 0)
        options += '<option disabled="disabled" value="-2">---------------</option>';
    for (var i = 0; i < ct.length; i++) {
        if (!isSetSel) {
            if (ct[i].Name == $("input.txtWhere").val()) {
                ctyValSel = "selected=\"selected\"";
                isSetSel = true;
            }
        }

        if (ct[i].Name != -2)
            if (ctyValSel == "") {
            options += '<option value="' + ct[i].Name + '">' + ct[i].DisplayName + '</option>';
        } else {
            options += '<option value="' + ct[i].Name + '" selected=\"selected\">' + ct[i].DisplayName + '</option>';
        }
        else {
            options += '<option disabled="disabled" value="' + ct[i].Name + '">' + ct[i].DisplayName + '</option>';
        }

        ctyValSel = "";
    }
    isSetSel = false;
    
    $("select.city_region").html(options);
    $("#city_regionAJAXloading").hide();
    
}


function ajaxFailed(xmlRequest) {
    alert(xmlRequest.status + ' \n\r ' +
              xmlRequest.statusText + '\n\r' +
              xmlRequest.responseText);
}


function eqh(rowClass) {
    // Equal Height Columns
    if ($('.' + rowClass).length) {
        $('.' + rowClass).each(function() {
            if ($('.eqH', this).length) {
                var $highest = 0;
                $('.eqH', this).each(function() {
                    if ($(this).height() > $highest) {
                        $highest = $(this).height();
                    }
                });
                $('.eqH', this).each(function() {
                    $(this).height($highest);
                });
            }
        });
    }
}

function modal($elm) {
    $($elm).dialog({
        modal: true
    });
}

function AddParentAttr() {
    $("#topdealadframe").contents().find(".hd_hotelname").each(function() {
        var $tabs = $('a', this);
        $tabs.attr('target', '_parent');
    });
    $("#topdealadframe").contents().find(".hd_price").each(function() {
        var $tabs = $('a', this);
        $tabs.attr('target', '_parent');
    });
}

function ValidateChildAge() {
    var result = true;
    $('.selectNumChildren').hide();
    $('.children').each(function() {
        var children = $(this);

        if (children.val() > 0) {
            for (var i = 1; i <= children.val(); i++) {
                var parentId = children.attr('id');
                var childAge = $('#' + parentId + 'childAge' + i).val();

                if (childAge.length == 0) {
                    $('#' + parentId + 'Error').show();

                    result = false;
                }
            }
        }
    });

    return result;
}

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return decodeURIComponent(results[1].replace(/\+/g, " "));
}


var dateFormat = 'dd/mm/y';

$(function() {


    LoadCities();


    
    eqh('thRow');

    // Datepicker
    $('.datepicker').each(function() {
        var form = this;
        var minDate = 'dd/mm/yy';
        var maxDate = 'dd/mm/yy';
        var daysInRange = 0;
        var dates = $('.minDate, .maxDate', form).datepicker({
            //beforeShow: customRange,
            dateFormat: dateFormat,
            maxDate: '+364D',
            minDate: 0,
            numberOfMonths: 2,
            onSelect: function(selectedDate) {

                // Apply restrictions
                var option = ($(this).hasClass('minDate')) ? 'minDate' : 'maxDate';
                var optionAlt = ($(this).hasClass('minDate')) ? 'maxDate' : 'minDate';
                var instance = $(this).data('datepicker');
                var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
                var date2 = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1); // create new increased date
                dates.not(this).datepicker('option', option, date);

                if ($('.maxDate', form).val() == $('.minDate', form).val() || $('.maxDate', form).val() == '') {
                    $('.maxDate', form).val($.datepicker.formatDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, date2, instance.settings));
                }
                // Get days in range
                minDate = $('.minDate', form).val();
                maxDate = $('.maxDate', form).val();
                if (minDate !== dateFormat && minDate !== '' && maxDate !== dateFormat && maxDate !== '') {
                    var minTime = $.datepicker.parseDate(instance.settings.dateFormat, minDate);
                    var maxTime = $.datepicker.parseDate(instance.settings.dateFormat, maxDate);
                    daysInRange = Number(Math.ceil((maxTime - minTime) / (1000 * 60 * 60 * 24)));
                    if (daysInRange <= 0) {
                        daysInRange = 0;
                    }
                    if (daysInRange) {
                        $('.daysInRange', form).text(daysInRange + ' ' + $('.txtNights').text());
                    } else {
                        $('.daysInRange', form).text('');
                    }
                }
            },
            showButtonPanel: true
        });
        $('.btn', form).click(function() {

            //hide the error msg
            $('.txtWhereErr').hide();

            // Must select a check-in if selected a check-out
            if ((minDate == 'dd/mm/yy' || minDate == '') && (maxDate != 'dd/mm/yy' && maxDate != '')) {
                //$('.txtNoCheckIn').show();
                modal('.txtNoCheckIn');
                return false;
            } else {
                $('.txtNoCheckIn').hide();
            }

            // Must select a check-out if selected a check-in
            if ((maxDate == 'dd/mm/yy' || maxDate == '') && (minDate != 'dd/mm/yy' && minDate != '')) {
                //$('.txtNoCheckOut').show();
                modal('.txtNoCheckOut');
                return false;
            } else {
                $('.txtNoCheckOut').hide();
            }

            // Can't book more than 28 days
            if (daysInRange > 28) {
                //$('.txtGt28Days').show();
                modal('.txtGt28Days');
                return false;
            } else {
                $('.txtGt28Days').hide();
            }

            if (!ValidateChildAge()) {
                return false;
            }

            // Can't book more than 5 rooms
            if ($('select.rooms').val() == '4+') {
                return false;
            }

            if ( $('.txtWhere', form).length && $('.txtWhere').is(":visible") ) {
                if ($.trim($('.txtWhere', form).val()).length < 2) {
                    //$('.txtWhereErr').show();
                    modal('.txtWhereErr');
                    return false;
                }
            }

            return true;
        });
        if ($('.RestrictedDate').val() == "true") {
            if ($('.minDate', form).attr('enablerestriction') == 'true') {
                $('.minDate', form).datepicker("option", "maxDate", '+28D');
                $('.maxDate', form).datepicker("option", "maxDate", '+35D');
            }

        }
        if ($('.minDate', form).val() == '') {
            $('.minDate', form).val('dd/mm/yy');
        }
        if ($('.maxDate', form).val() == '') {
            $('.maxDate', form).val('dd/mm/yy');
        }
    });

    // Dialog
    $('.dialog').click(function() {
        var $id = $(this).attr('href');
        var $title = $(this).attr('title');
        var dlg = $($id).dialog({
            title: $title,
            modal: true,
            width: 500
        });
        dlg.parent().appendTo(jQuery("form:first"));
        var hotelId = $(this).attr('hotelId');
        $('.checkRateHotelId').val(hotelId)
        return false;
    });

    // Nofollow
    $('.nofollow').each(function() {
        var link = $(this).attr('title');
        $(this).click(function() {
            window.location.href = '' + link + '';
        });
        $(this).removeAttr('title');
    });

    // Nofollowpopup
    if ($('.nofollowPopup').length) {
        $('.nofollowPopup').click(function() {
            window.open($(this).attr('title'), '', 'width=1024,height=1024');
        });
    }

    // Rooms selector
    $('select.rooms').change(function() {
        updateRooms();
    });

    $('select.country_region').change(function() {
        LoadCities();
    });

    // Toggle
    $('.toggle').click(function() {
        var $id = $(this).attr('href');
        $($id).slideToggle('fast');
        return false;
    });

    // Tabs
    $('ul.tabs').each(function() {
        var $tabs = $('a', this);
        $tabs.click(function() {
            var $target = $(this).attr('href');
            $tabs.each(function() {
                $($(this).attr('href')).hide();
                $(this).parent().removeClass('selected');
            });
            $(this).parent().addClass('selected');
            $($target).show();
            eqh('row');
            return false;
        });
    });

    $('#morePictures').click(function() {
        $('.tab1').removeClass('selected');
        $('.tab2').removeClass('selected');
        $('.tab3').addClass('selected');
        $('#hotelDetails').hide();
        $('#memberReviews').hide();
        $('#photos').show();
        eqh('row');
        return false;
    });

    // Switch main image
    $('.thumbSmall').click(function() {
        var $imgUrl = $(this).attr('href');
        $('#thumbLarge').attr('src', $imgUrl);
        return false;
    });

    // Room shiz
    $('.room').each(function() {
        var $room = this;
        $('.children', this).change(function() {
            var $children = $(this).val();
            if ($children > 0) {
                $('.childAges', $room).show();
                switch ($children) {
                    case '1':
                        $('.childAge1', $room).show();
                        $('.childAge2, .childAge3, .childAge4, .childAge5', $room).hide();
                        break;
                    case '2':
                        $('.childAge1, .childAge2', $room).show();
                        $('.childAge3, .childAge4, .childAge5', $room).hide();
                        break;
                    case '3':
                        $('.childAge1, .childAge2, .childAge3', $room).show();
                        $('.childAge4, .childAge5', $room).hide();
                        break;
                    case '4':
                        $('.childAge1, .childAge2, .childAge3, .childAge4', $room).show();
                        $('.childAge5', $room).hide();
                        break;
                    case '5':
                        $('.childAge1, .childAge2, .childAge3, .childAge4, .childAge5', $room).show();
                        break;
                }
            } else {
                $('.childAges', $room).hide();
            }
        });
    });

    if ($('#numberOfRooms').length) {
        $('#numberOfRooms').val('1');
    }

    // Add/Remove rooms
    $('#addRoom').click(function() {
        var $numberOfRooms = $('#numberOfRooms').val();
        if ($numberOfRooms < 4) {
            switch ($numberOfRooms) {
                case '1':
                    $('#room1, #room2, #removeRoom').show();
                    $('#room3, #room4').hide();
                    break;
                case '2':
                    $('#room1, #room2, #room3, #removeRoom').show();
                    $('#room4').hide();
                    break;
                case '3':
                    $('#room1, #room2, #room3, #room4, #removeRoom, .fourPlus').show();
                    $('#addRoom').hide();
                    break;
            }
            $newNumberOfRooms = new Number($numberOfRooms) + 1;
            $('#numberOfRooms').val($newNumberOfRooms);
        } else {
            $('.fourPlus').show();
            $('#addRoom').hide();
        }
        return false;
    });

    $('#removeRoom').click(function() {
        var $numberOfRooms = $('#numberOfRooms').val();
        if ($numberOfRooms > 1) {
            switch ($numberOfRooms) {
                case '2':
                    $('#room1, #addRoom').show();
                    $('#room2, #room3, #room4, #removeRoom').hide();
                    break;
                case '3':
                    $('#room1, #room2, #addRoom').show();
                    $('#room3, #room4').hide();
                    break;
                case '4':
                    $('#room1, #room2, #room3, #addRoom').show();
                    $('#room4, .fourPlus').hide();
                    break;
            }
            $newNumberOfRooms = new Number($numberOfRooms) + -1;
            $('#numberOfRooms').val($newNumberOfRooms);
        }
        return false;
    });
});
