﻿var specialDates = new Array();
var specialDatesParsed = new Array();
var holderPrefix = '';
var currentSort = 0;
var $block = null;
var $res = null;

$(document).ready(function() {
    $block = $("#" + holderPrefix + "ddlCityFrom").parents('.block');
    $res = $('#searchResults_JQ');

    updateRoomTypeSelect();

    if (typeof dateFrom != 'undefined') {
        $('#' + dateFrom).datepick({
            showOn: 'both',
            buttonImageOnly: true,
            buttonImage: '/i/icons/calendar.gif',
            gotoCurrent: true,
            minDate: new Date(),
            rangeSelect: false,
            duration: 0,
            beforeShowDay: datePickerCallback,
            onSelect: validateDateFrom,
            showOtherMonths: true,
            selectOtherMonths: false,
            gotoCurrent: false,
            useThemeRoller: true,
            hideIfNoPrevNext: true,
            alignment: 'bottomLeft'
        });
        // без этого сквозь календарь будет мигать курсор
        if ($.browser.msie && $.browser.version < 9)
            $('#' + dateFrom).focus(function() {
                $(this).blur();
            });
    }
    if (typeof dateTo != 'undefined') {
        $('#' + dateTo).datepick({
            showOn: 'both',
            buttonImageOnly: true,
            buttonImage: '/i/icons/calendar.gif',
            gotoCurrent: true,
            minDate: new Date(),
            rangeSelect: false,
            duration: 0,
            beforeShowDay: datePickerCallback,
            onSelect: validateDateTo,
            showOtherMonths: true,
            selectOtherMonths: false,
            gotoCurrent: false,
            useThemeRoller: true,
            hideIfNoPrevNext: true,
            alignment: 'bottomLeft'
        });
        // без этого сквозь календарь будет мигать курсор
        if ($.browser.msie && $.browser.version < 9)
            $('#' + dateTo).focus(function() {
                $(this).blur();
            });
    }
    $('.tour-currency').text($(':checked', '.tour-currency-select').next('label').text());
    $('input', '.tour-currency-select').click(function() {
        if ($(this).attr('checked'))
            $('.tour-currency').text($(this).next('label').text());
    });
});

function ddlCityFromChangeWithCountry(countryKey, roomCountries) {
    blockLoading($block);

    var control = $("#" + holderPrefix + "ddlCityFrom");
    if (control.length == 0) return; // элемент управления отсутствует на странице

    var city = control.val();
    if (city == "")
        city = "1";

    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/cityKeyFromChanged",
        data: "{fromCityKey: " + city + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {            
            updateSelect('ddlTipe', evt.d.tipes, 'ddlTipeChange([' + roomCountries.join(',') + '])');
            updateSelectWithSelected('ddlCountry', evt.d.countries, 'ddlCountryChange([' + roomCountries.join(',') + '])', evt.d.countryKey);
            if ($("#" + holderPrefix + "ddlCountry").val() == countryKey) {
                updateAnyStatus('regions');
                updateCheckBoxList('regions', evt.d.cities, "regionsChanged()", makeLabel, 'li');
                updateSelect('ddlSPO', evt.d.spo, 'ddlSPOChange()');
                updateAnyStatus('categories');
                updateCheckBoxList('categories', evt.d.categories, "categoriesChanged()", makeLabel, 'nowrap');
                updateAnyStatus('hotels');
                //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
                updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');
                specialDates = evt.d.dates;
                updateDates();
                updateAnyStatus('nights');
                updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
                updateSelect('ddlMen', evt.d.mens, '');
                updateSelect('ddlRoom', evt.d.rooms, '');
                updateAnyStatus('pansions');
                updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
                updateRoomTypeSelect();
            } else {
                updateSelectWithSelected('ddlCountry', evt.d.countries, 'ddlCountryChange([' + roomCountries.join(',') + '])', countryKey);
                ddlCountryChange(roomCountries);
            }
            blockLoaded($block);
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlCityFromChange(roomCountries) {
    blockLoading($block);

    var control = $("#" + holderPrefix + "ddlCityFrom");
    if (control.length == 0) return; // элемент управления отсутствует на странице

    var city = control.val();
    if (city == "")
        city = "1";
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/cityKeyFromChanged",
        data: "{fromCityKey: " + city + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {            
            updateSelect('ddlTipe', evt.d.tipes, 'ddlTipeChange([' + roomCountries.join(',') + '])');
            updateSelectWithSelected('ddlCountry', evt.d.countries, 'ddlCountryChange([' + roomCountries.join(',') + '])', evt.d.countryKey);
            updateAnyStatus('regions');
            updateCheckBoxList('regions', evt.d.cities, "regionsChanged()", makeLabel, 'li');
            updateSelect('ddlSPO', evt.d.spo, 'ddlSPOChange()');
            updateAnyStatus('categories');
            updateCheckBoxList('categories', evt.d.categories, "categoriesChanged()", makeLabel, 'nowrap');
            updateAnyStatus('hotels');
            //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
            updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateMensFromEvent(evt, roomCountries);
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlCityFromChangeWithCountryShort(countryKey) {
    blockLoading($block);

    var control = $("#" + holderPrefix + "ddlCityFrom");
    if (control.length == 0) return; // элемент управления отсутствует на странице

    var city = control.val();
    if (city == "")
        city = "1";

    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/cityKeyFromChangedShort",
        data: "{fromCityKey: " + city + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {            
            updateSelectWithSelected('ddlCountry', evt.d.countries, 'ddlCountryChangeShort()', evt.d.countryKey);
            if ($("#" + holderPrefix + "ddlCountry").val() == countryKey) {                
                specialDates = evt.d.dates;
                updateDates();                
            } else {
                updateSelectWithSelected('ddlCountry', evt.d.countries, 'ddlCountryChangeShort()', countryKey);
                ddlCountryChangeShort();
            }
            blockLoaded($block);
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlCityFromChangeShort() {
    blockLoading($block);

    var control = $("#" + holderPrefix + "ddlCityFrom");
    if (control.length == 0) return; // элемент управления отсутствует на странице

    var city = control.val();
    if (city == "")
        city = "1";
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/cityKeyFromChangedShort",
        data: "{fromCityKey: " + city + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {            
            updateSelectWithSelected('ddlCountry', evt.d.countries, 'ddlCountryChangeShort()', evt.d.countryKey);                       
            specialDates = evt.d.dates;
            updateDates();            
            blockLoaded($block);
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlTipeChange(roomCountries) {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/tipeChanged",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
            updateSelect('ddlCountry', evt.d.countries, 'ddlCountryChange([' + roomCountries.join(',') + '])');
            updateAnyStatus('regions');
            updateCheckBoxList('regions', evt.d.cities, "regionsChanged()", makeLabel, 'li');
            updateSelect('ddlSPO', evt.d.spo, 'ddlSPOChange()');
            updateAnyStatus('categories');
            updateCheckBoxList('categories', evt.d.categories, "categoriesChanged()", makeLabel, 'nowrap');
            updateAnyStatus('hotels');
            //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
            updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');            
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateSelect('ddlMen', evt.d.mens, '');
            updateSelect('ddlRoom', evt.d.rooms, '');
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlCountryChange(roomCountries) {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/countryChanged",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() + ',country:' + $("#" + holderPrefix + "ddlCountry").val() + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {
            updateAnyStatus('regions');
            updateCheckBoxList('regions', evt.d.cities, "regionsChanged()", makeLabel, 'li');
            updateSelect('ddlSPO', evt.d.spo, 'ddlSPOChange()');
            updateAnyStatus('categories');
            updateCheckBoxList('categories', evt.d.categories, "categoriesChanged()", makeLabel, 'nowrap');
            updateAnyStatus('hotels');
            //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
            updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateMensFromEvent(evt, roomCountries);
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlCountryChangeShort() {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/countryChangedShort",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',country:' + $("#" + holderPrefix + "ddlCountry").val() + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {            
            specialDates = evt.d.dates;
            updateDates();            
            blockLoaded($block);
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}


function regionsChanged() {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/toCityChanged",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() + ',country:' + $("#" + holderPrefix + "ddlCountry").val()
        + ', toCityKey:' + getSelectedListItems('regions') + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
            updateSelect('ddlSPO', evt.d.spo, 'ddlSPOChange()');
            updateAnyStatus('categories');
            updateCheckBoxList('categories', evt.d.categories, "categoriesChanged()", makeLabel, 'nowrap');
            updateAnyStatus('hotels');
            //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
            updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');            
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateSelect('ddlMen', evt.d.mens, '');
            updateSelect('ddlRoom', evt.d.rooms, '');
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function ddlSPOChange() {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/spoChanged",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() + ',country:' + $("#" + holderPrefix + "ddlCountry").val()
        + ', toCityKey:' + getSelectedListItems('regions') + ',spoKey:' + $("#" + holderPrefix + "ddlSPO").val() + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
            updateAnyStatus('categories');
            updateCheckBoxList('categories', evt.d.categories, "categoriesChanged()", makeLabel, 'nowrap');
            updateAnyStatus('hotels');
            //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
            updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');            
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateSelect('ddlMen', evt.d.mens, '');
            updateSelect('ddlRoom', evt.d.rooms, '');
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}


function categoriesChanged() {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/categoryChanged",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() + ',country:' + $("#" + holderPrefix + "ddlCountry").val()
        + ', toCityKey:' + getSelectedListItems('regions') + ',spoKey:' + $("#" + holderPrefix + "ddlSPO").val() +
         ',categoryKeys:' + getSelectedListItems('categories') + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
            updateAnyStatus('hotels');
            //updateCheckBoxList('hotels', evt.d.hotels, "hotelsChanged()", makeLink, 'li');
            updateCheckBoxListUrl('hotels', evt.d.hotelsWithUrl, "hotelsChanged()", 'li');            
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateSelect('ddlMen', evt.d.mens, '');
            updateSelect('ddlRoom', evt.d.rooms, '');
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}


function hotelsChanged() {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/hotelChanged",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() + ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() + ',country:' + $("#" + holderPrefix + "ddlCountry").val()
        + ', toCityKey:' + getSelectedListItems('regions') + ',spoKey:' + $("#" + holderPrefix + "ddlSPO").val() +
         ',categoryKeys:' + getSelectedListItems('categories') + ', hotelKeys:' + getSelectedListItems('hotels') + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
            specialDates = evt.d.dates;
            updateDates();
            updateAnyStatus('nights');
            updateCheckBoxList('nights', evt.d.nights, "nightsChanged()", makeLabel, 'nowrap');
            updateSelect('ddlMen', evt.d.mens, '');
            updateSelect('ddlRoom', evt.d.rooms, '');
            updateAnyStatus('pansions');
            updateCheckBoxList('pansions', evt.d.pansions, "pansionsChanged()", makeLabel, 'nowrap');
            updateRoomTypeSelect();
            blockLoaded($block);
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function updateDates(replace_current) {
    if (specialDates.length > 0) {
        if (typeof (replace_current) == 'undefined') {
            var d = DateDeserialize(specialDates[0]);
            $('#' + dateFrom).val($.datepick.formatDate('dd.mm.yy', d));
            $('#' + dateTo).val($.datepick.formatDate('dd.mm.yy', d));
        }
        specialDatesParsed = [];
        for (i = 0; i < specialDates.length; i++) {
            specialDatesParsed[i] = DateDeserialize(specialDates[i]);
        }
    }
}

function validateDateFrom() {
    if ($('#' + dateFrom).datepick('getDate') > $('#' + dateTo).datepick('getDate')) {
        $('#' + dateTo).val($('#' + dateFrom).val());
    }
}

function validateDateTo() {
    if ($('#' + dateFrom).datepick('getDate') > $('#' + dateTo).datepick('getDate')) {
        $('#' + dateFrom).val($('#' + dateTo).val());
    }
}

function setDateToShort() {
     $('#' + dateTo).val($('#' + dateFrom).val());
}

function nightsChanged() {
    getSelectedListItems('nights');
}
function pansionsChanged() {
    getSelectedListItems('pansions');
}

function goSearch() {
    blockLoading($block);
    $res = $('#searchResults_JQ');
    blockLoading($res);
    var r = $("#" + holderPrefix + "ddlRoom").val();
    if (r == "")
        r = "0";
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/goSearch",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() +
               ',tipe:' + $("#" + holderPrefix + "ddlTipe").val() +
               ',country:' + $("#" + holderPrefix + "ddlCountry").val() +
               ', toCityKey:' + getSelectedListItems('regions') +
               ',spoKey:' + $("#" + holderPrefix + "ddlSPO").val() +
               ',categoryKeys:' + getSelectedListItems('categories') + ', hotelKeys:' + getSelectedListItems('hotels') +
               ',dateFrom:"' + $("#" + dateFrom).val() +
               '",dateTo:"' + $("#" + dateTo).val() +
               '",nights:' + getSelectedListItems('nights') +
               ',mens:"' + $("#" + holderPrefix + "ddlMen").val() +
               '",room:' + r +
               ',pansions:' + getSelectedListItems('pansions') +
               ',cost:' + ($("#" + server_prefix + "cost").val() == '' ? 0 : $("#" + server_prefix + "cost").val()) +
               ',hotelYes:' + ($('#' + server_prefix + 'CBhotelYes').attr('checked') ? 1 : 0) +
               ',hotelRequest:' + ($('#' + server_prefix + 'CBhotelRequest').attr('checked') ? 1 : 0) +
               ',hotelNo:' + ($('#' + server_prefix + 'CBhotelNo').attr('checked') ? 1 : 0) +
               ',flightYes:' + ($('#' + server_prefix + 'CBflightYes').attr('checked') ? 1 : 0) +
               ',flightRequest:' + ($('#' + server_prefix + 'CBflightRequest').attr('checked') ? 1 : 0) +
               ',flightNo:' + ($('#' + server_prefix + 'CBflightNo').attr('checked') ? 1 : 0) +
        //',currency:' + $('[name=' + server_prefix.substr(0, server_prefix.length - 1) + '$RBLcurrency]:checked').val() +
               ',currency:' + $('[name=' + server_prefix.replace(/_/gi, '$') + 'RBLcurrency]:checked').val() +
               ',rowsCount:' + $('#' + server_prefix + 'DDLrows').val() +
                '}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
            window.location.href = redirectUrl + "?queryId=" + evt.d + "#resultPage";
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
            blockLoaded($res);
        }
    });
}

function goSearchShirt() {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/goSearchShirt",
        data: "{fromCityKey: " + $("#" + holderPrefix + "ddlCityFrom").val() +
               ',country:' + $("#" + holderPrefix + "ddlCountry").val() +
               ',dateFrom:"' + $("#" + dateFrom).val() + '"' +
                '}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (evt, request, settings) {
            //window.location.href = redirectUrl + "?queryId=" + evt.d + "#resultPage";
            window.location.href = evt.d;
        },
        error: function (event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

function goSearchOffers(fromCityKey, countryKey, tipKey, datefrom) {
    blockLoading($block);
    $.ajax({
        type: "POST",
        url: "/interfaces/searchparams.asmx/goSearchOffers",
        data: "{fromCityKey: " + fromCityKey +
               ',country:' + countryKey +
               ',tipKey:' + tipKey +
               ',dateFromStr:"' + datefrom + '"' +
                '}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(evt, request, settings) {
        window.location.href = redirectUrl + "?queryId=" + evt.d + "#resultPage";
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($block);
        }
    });
}

//********************search result

function setPageSize(ps) {
    $("#" + server_prefix + "DDLrows").val(ps);
    pageSize = ps;
    getResultPage(0, currentSort);
}

function sort(s) {
    currentSort = s;
//    var exp=new Date();
//    exp=new Date(exp.getFullYear(),exp.getMonth()+1,exp.getDate());
//    document.cookie =  "sc=" + s+ ";expires=" + exp.toGMTString();
    getResultPage(0, currentSort);
    return false;
}
function getResultPage(pageNum, sort) {
    blockLoading($res);
    $.ajax({
        type: "GET", /// <reference path="../interfaces/searchresult.asmx" />
        //(int qid,int pageNum,int pageSize,byte sort)
        url: "/interfaces/searchresult.asmx/getSearchResultPage",
        data: "qid=" + queryId +
               '&pageNum=' + pageNum +
               '&pageSize=' + pageSize +
               '&sort=' + sort +
                '',
        contentType: "text/xml; charset=utf-8",
        dataType: "xml",
        success: function(evt, request, settings) {
            $('#resultPage').replaceWith('<div id="resultPage">'+$('string', evt).text()+'</div>');
            blockLoaded($res);
            $res = $('#searchResults_JQ');
        },
        error: function(event, request, settings) {
            alert("Error requesting page!" + settings + "");
            blockLoaded($res);
            $res = $('#searchResults_JQ');
        }
    });
}
//************************ helpers
function updateSelect(id, data, onchange) {
    var ctrl = '<select id="' + holderPrefix + id + '" name="' + id + '" onchange="' + onchange + '">';
    jQuery.each(data, function(i, val) {
        ctrl = ctrl.concat('<option value="' + i + '">' + val + '</option>');
    });
    ctrl = ctrl.concat('</select>');
    $('#' + holderPrefix + id).replaceWith(ctrl);
}

function updateSelectWithSelected(id, data, onchange, selValue) {
    var ctrl = '<select id="' + holderPrefix + id + '" name="' + id + '" onchange="' + onchange + '">';
    jQuery.each(data, function (i, val) {
        ctrl = ctrl.concat('<option value="' + i + '">' + val + '</option>');
    });
    ctrl = ctrl.concat('</select>');
    $('#' + holderPrefix + id).replaceWith(ctrl);
    $('#' + holderPrefix + id).sortOptionsByText();
    $('#' + holderPrefix + id).val(selValue);
}

function updateCheckBoxList(id, data, onclick, callback, wrap) {
    if (wrap == 'li')
        var ctrl = '<ul';
    else
        var ctrl = '<div';
    ctrl += ' id="' + holderPrefix + id + '">';
    
    var input = '';
    jQuery.each(data, function(i, val) {
        input = '<input type="checkbox" name="' + id + '[]" value="' + i + '" id="ch_' + id + '_' + i + '" onclick="' + onclick + '">' + callback(val, 'ch_' + id + '_' + i);
        switch (wrap) {
            case 'li':
                ctrl += '<li>' + input + '</li>';
                break;
            case 'nowrap':
                ctrl += '<span class="nowrap">' + input + '</span> ';
                break;
            default:
                ctrl += input;
                break;
        }
    });
    
    if (wrap == 'li')
        ctrl += '</ul>';
    else
        ctrl += '</div>';
    
    $('#' + holderPrefix + id).replaceWith(ctrl);
}

function updateCheckBoxListUrl(id, data, onclick, wrap) {
    if (wrap == 'li')
        var ctrl = '<ul';
    else
        var ctrl = '<div';
    ctrl += ' id="' + holderPrefix + id + '">';
    var input = '';
    jQuery.each(data, function(i, val) {
        input = '<input type="checkbox" name="' + id + '[]" value="' + val.key + '" id="ch_' + id + '_' + i + '" onclick="' + onclick + '">';
        if (val.url == '') {
            input += makeLabel(val.value, 'ch_' + id + '_' + i)
        } else {
            input += '<a href="' + val.url + '" target="_blank">' + val.value + '</a>';
        }
        switch (wrap) {
            case 'li':
                ctrl += '<li>' + input + '</li>';
                break;
            case 'nowrap':
                ctrl += '<span class="nowrap">' + input + '</span> ';
                break;
            default:
                ctrl += input;
                break;
        }
    });

    if (wrap == 'li')
        ctrl += '</ul>';
    else
        ctrl += '</div>';

    //alert(ctrl);
    $('#' + holderPrefix + id).replaceWith(ctrl);
}

function makeLabel(val, id) {
    return '<label for="' + id + '">' + val + '</label>';
}

function makeLink(val, id) {
    return '<a href="#' + id + '">' + val + '</a>';
}

function datePickerCallback(date) {
    var d;
    //for (i = 0; i < specialDates.length; i++) {
    //    d = DateDeserialize(specialDates[i]);
    for (i = 0; i < specialDatesParsed.length; i++) {
        d = specialDatesParsed[i];
        if (date.getMonth() == d.getMonth() && date.getYear() == d.getYear() && date.getDate() == d.getDate()) {
            return [true, 'special_day'];
        }
    }
    return [true, ''];
}
function DateDeserialize(date) {
    return eval('new' + date.replace(/\//g, ' '));
}

function getSelectedListItems(item_id) {
    var checks = new Array();
    var items = null;
    $(':checked', '#' + item_id).each(function() {
        checks.push($(this).val());
    });
    if (checks.length > 0) {
        items = '"' + checks.join(",") + '"';
        $('#' + item_id + '_any').attr('checked', false);
        $('#' + item_id + '_any').attr('disabled', false);
    }
    else {
        $('#' + item_id + '_any').attr('checked', true);
        $('#' + item_id + '_any').attr('disabled', true);
    }
    return items;
}
function updateAnyStatus(item_id) {
    $('#' + item_id + '_any').attr('checked', true);
    $('#' + item_id + '_any').attr('disabled', true);
}

function toAnyChanged(item_id) {
    if ($('#' + item_id + '_any').attr('checked') == true) {
        $(':checked', '#' + item_id).each(function() {
            $(this).attr('checked', false);
        });
        eval(item_id + 'Changed();');
    }
}

function enableAnyStatus(item_id) {
    $('#' + item_id + '_any').attr('checked', false);
    $('#' + item_id + '_any').attr('disabled', false);
}

function updateRoomTypeSelect() {
    return;
//    var sel = $('[name=roomTypeSelect]:checked').val();
//    if (typeof sel != 'undefined')
//    {return;}
//    if (sel == 1) {
//        $('#' + holderPrefix + 'ddlRoom').attr('disabled', true);
//        $('#' + holderPrefix + 'ddlRoom').val('0');
//        $('#' + holderPrefix + 'ddlMen').attr('disabled', false);
//    }
//    else {
//        $('#' + holderPrefix + 'ddlRoom').attr('disabled', false);
//        $('#' + holderPrefix + 'ddlMen').val('0/0');
//        $('#' + holderPrefix + 'ddlMen').attr('disabled', true);
//    }
}

function updateMensFromEvent(evt, roomCountries) {
    var cn = parseInt($("#" + holderPrefix + "ddlCountry").val());
    if ($.inArray(cn, roomCountries) >= 0) {
        updateSelect('ddlMen', evt.d.mens, '');
        $("#ddlManPanel").show();
        $("#ddlRoomPanel").hide();
    }
    else {
        updateSelect('ddlRoom', evt.d.rooms, '');
        $("#ddlManPanel").hide();
        $("#ddlRoomPanel").show();
    }
}

function updateMens(mens, rooms, ms, rs, roomCountries) {
    var cn = parseInt($("#" + holderPrefix + "ddlCountry").val());
    if ($.inArray(cn, roomCountries) >= 0) {
        updateSelect('ddlMen', mens, '');
        $("#ddlManPanel").show();
        $("#ddlRoomPanel").hide();
        $("#ddlMen option[value='" + ms + "']").attr("selected", "selected");
    }
    else {
        updateSelect('ddlRoom', rooms, '');
        $("#ddlManPanel").hide();
        $("#ddlRoomPanel").show();
        $("#ddlRoom option[value='" + rs + "']").attr("selected", "selected");
    }
}

////////////////////////////////////////////////////////////////////////////////////
jQuery.fn.sortOptionsHelper = function () {
    return this.pushStack([].sort.apply(this, arguments), []);
};
jQuery.fn.sortOptions = function (sortCallback) {
    jQuery('option', this)
        .sortOptionsHelper(sortCallback)
        .appendTo(this);
    return this;
};
jQuery.fn.sortOptionsByText = function () {
    var byTextSortCallback = function (x, y) {
        var xText = jQuery(x).text().toUpperCase();
        var yText = jQuery(y).text().toUpperCase();
        return (xText < yText) ? -1 : (xText > yText) ? 1 : 0;
    };
    return this.sortOptions(byTextSortCallback);
};
jQuery.fn.sortOptionsByValue = function () {
    var byValueSortCallback = function (x, y) {
        var xVal = jQuery(x).val();
        var yVal = jQuery(y).val();
        return (xVal < yVal) ? -1 : (xVal > yVal) ? 1 : 0;
    };
    return this.sortOptions(byValueSortCallback);
};
