function lang( str ) {
    var trans = window._TRANSLATION_;
    if( null != trans[str] ) return trans[str];
    return str;
};

function contains( str, token ) {
    return ( str.toLowerCase().indexOf( token ) != -1 );
};

function empty( str ) {
    return (typeof str == 'undefined' || null == str || 0 == str || '' == str || false == str );
};

function setPairDate (dateText, id, type) {
    var source = (type == 0 ? 'start' : 'finish');
    var destination = (type == 0 ? 'finish' : 'start');

    var destination_value = $('#'+destination+id).attr ('value');

    if (type == 0) {
        if ($('#'+source+id).datepicker ('getDate') > $('#'+destination+id).datepicker ('getDate')) {
            $('#'+destination+id).datepicker ('setDate', $('#'+source+id).datepicker ('getDate'));
        }
    }
    else {
        if ($('#'+source+id).datepicker ('getDate') < $('#'+destination+id).datepicker ('getDate')) {
            $('#'+destination+id).datepicker ('setDate', $('#'+source+id).datepicker ('getDate'));
        }
    }
};

function changeCharsLeft(obj) {
    var maximum = $(obj).attr ('maxlength');
    var current = $(obj).attr ('value').length;
    var left = maximum-current;
    if (left == 0)
            left = '0';
    if (left < 0) {
        $(obj).attr ('value', $(obj).attr ('value').substr (0, maximum));
        left = '0';
    }
    $('#'+$(obj).attr('id')+'CharsLeft').html (left);
};

function getGeoLevelsCodes() {
    return ['c', 'r', 'a', 's', 't'];
};

/*returns index of a random element */
function array_rand( myArray ) {
    if ( ! myArray ) return false;
    return Math.floor( Math.random() * myArray.length );
};

/* returns array with randomized items order */
function array_shuffle( arr ) {
    var newArr = [];
    while( arr.length ) {
        var index = array_rand( arr );
        newArr.push( arr[index] );
        arr.splice(index, 1);
    }
    return newArr;
};

function turnOnOffTips () {
    if ($('#tipBody').css ('display') == 'none') {
        $.cookie ("noTips", null, {path: '/'});
        $('#tipTitle, .propTips .beta').show ();
        $('#tipBody').slideDown ();
        $('#tipLink').attr ('class', 'turnOff').html (lang ('Turn off tips'));
        $('#tipContainer').css ({'height': 'auto','border-color':'#C0C0C0', 'background-color':'#E2EAF3', 'margin':'0 0 20px 0'});
    }
    else {
        $.cookie ("noTips", 1, {expires: 365, path: '/'});
        $('#tipBody').slideUp ('fast', function () {
            $('.propTips .beta').hide();
            $('#tipTitle').slideUp ();
            $('#tipContainer').css ({'height': '15px','border-color':'#fff', 'background-color':'#fff', 'margin':'0 0 5px 0'});
        });
        $('#tipLink').attr ('class', 'turnOff opened').html (lang ('Turn on tips'));
    }
};

function carouselInit(carousel){
    /* carousel main holder */
    var carouselHolder = ($(carousel.holder).length)?carousel.holder:$(".carousel");
    
    /* carousel innerHolder - to scroll it but not elements itself */
    var carouselInner = (carousel.innerHolder)?$(carousel.innerHolder,carouselHolder):$(".carousel_element_holder",carouselHolder);
    
    /* carousel items to scroll */
    var carouselItem = (carousel.item)?$(carousel.item,carouselHolder):$(".item",carouselHolder);
    
    /* carousel items scroll speed */
    var transSpeed = (carousel.transSpeed)?carousel.transSpeed:1200;
    
    /* carousel item width */
    var carouselItemWidth = carousel.itemWidth || carouselItem.width();

    /* carousel item height */
    var carouselItemHeight = carousel.itemHeight || carouselItem.height();
    
    /* carousel num items visible at the same time */
    var numItems = carousel.numItems || 1;

    /* carousel number of pages */
    var num_carousel_pages = Math.ceil(carouselItem.length / numItems);
    
    /* is set "each page" paging */
    var pages = (carousel.pagesClass)?$(carousel.pagesClass,carouselHolder):$('.pagingHolder a',carouselHolder);

    var direction = (carousel.direction && 'top' == carousel.direction) ? carousel.direction : 'left';
    
    /* page to start with */
    var index_carousel = carousel.startPage || 0;
    
    if (pages.length){
        /* add click event to each page link */
        pages.click(function(e){
            e.preventDefault();
            pages.removeClass("active");
            $(this).addClass("active");
            index_carousel = pages.index($(this));

            if ( 'top' == direction ) {
                carouselInner.stop().animate({ "bottom": (index_carousel * (carouselItemHeight*numItems)) + "px"}, transSpeed);
            } else {
                carouselInner.stop().animate({ "left": (index_carousel * (-carouselItemWidth*numItems)) + "px"}, transSpeed);
            }
        });
    }

    /* is set "next-previous" paging */
    var pageNext = (carousel.pageNext)?$(carousel.pageNext,carouselHolder):$(".carousel_nav",carouselHolder).filter(".left");
    var pagePrev = (carousel.pagePrev)?$(carousel.pagePrev,carouselHolder):$(".carousel_nav",carouselHolder).filter(".right");

    if (pageNext.length && pagePrev.length){
        var leftRightPages = [pageNext, pagePrev]; 
        /* add prev next events */
        $(leftRightPages).each(function(){
            var self = $(this);
            self.click(function(e){
                e.preventDefault();
                index_carousel = (pages.length)?pages.index($(".active",carouselHolder)):carouselItem.index($(".active",carouselHolder));
                if (index_carousel != (num_carousel_pages-1) && index_carousel != 0) {
                    index_carousel = ($(this).hasClass("left"))?index_carousel-1:index_carousel+1;
                } else if (index_carousel == 0) {
                    index_carousel = ($(this).hasClass("left"))?num_carousel_pages-1:index_carousel+1;
                } else {
                    index_carousel = ($(this).hasClass("left"))?index_carousel-1:0;
                }
                if(pages.length){
                    pages.removeClass("active");
                    pages.eq(index_carousel).addClass("active");
                } else {
                    carouselItem.removeClass("active");
                    carouselItem.eq(index_carousel).addClass("active");
                }

                if ( 'top' == direction ) {
                    carouselInner.stop().animate({ "bottom": (index_carousel * (carouselItemHeight*numItems)) + "px"}, transSpeed);
                } else {
                    carouselInner.stop().animate({ "left": (index_carousel * (-carouselItemWidth*numItems)) + "px"}, transSpeed);
                }
                
            });
        })
    }
    
    /* is set "play-pause" button */
    var pagePlay = (carousel.pagePlay)?$(carousel.pagePlay,carouselHolder):$(".carousel_nav",carouselHolder).filter(".play");
    var playPeriod = (carousel.playPeriod)?carousel.playPeriod:5000;
    
    if (pagePlay.length){
        /* add play-pause events */
        var carouselNext = function(){
            index_carousel = (pages.length)?pages.index($(".active",carouselHolder)):carouselItem.index($(".active",carouselHolder));
            if (index_carousel != (num_carousel_pages-1) && index_carousel != 0) {
                index_carousel = ($(this).hasClass("left"))?index_carousel-1:index_carousel+1;
            } else if (index_carousel == 0) {
                index_carousel = ($(this).hasClass("left"))?num_carousel_pages-1:index_carousel+1;
            } else {
                index_carousel = ($(this).hasClass("left"))?index_carousel-1:0;
            }
            if(pages.length){
                pages.removeClass("active");
                pages.eq(index_carousel).addClass("active");
            } else {
                carouselItem.removeClass("active");
                carouselItem.eq(index_carousel).addClass("active");
            }

            if ( 'top' == direction ) {
                carouselInner.stop().animate({ "bottom": (index_carousel * (carouselItemHeight*numItems)) + "px"}, transSpeed);
            } else {
                carouselInner.stop().animate({ "left": (index_carousel * (-carouselItemWidth*numItems)) + "px"}, transSpeed);
            }
        } 
        
        var intervalCarousel = setInterval(carouselNext, playPeriod);
        
        pagePlay.click(function(e){
            e.preventDefault();
            $(this).toggleClass("pause");
            if ($(this).hasClass("pause")){
                clearInterval(intervalCarousel);
            } else {
                intervalCarousel = setInterval(carouselNext, playPeriod); 
            }
        })
        
    }
    
};

function fixPosition(el){
    $(el).css("position","fixed");
    $('body').append(el);
    var offset = $(el).offset();
    $(el).css({"position":"absolute", "top":offset.top + 20 + "px"});
};

function fixPositionTip(el, eventEl, positionX){
    $(el).css("position","fixed");
    var offset = $(eventEl).offset();
    if (positionX < $('body').width()/2) {
        $(el).css({"position":"absolute", "top":offset.top - 5 + "px", "left":positionX + 5 + "px", "margin":"0px"});
    } else{
        $(el).css({"position":"absolute", "top":offset.top - 5 + "px", "left":positionX - $(el).width() - 5 + "px", "margin":"0px"});
    }
};

function scrollToElement (id) {
    if( document != top.document ) return; //fix for iframe solution
    $('html, body').animate({
        scrollTop: $('#'+id).offset().top
    }, 700);
};

function disableEnterKey(e)
{
    var key;
    if(window.event)
      key = window.event.keyCode;     //IE
    else
      key = e.which;     //firefox
    if(key == 13)
      return false;
    else
      return true;
};

var Money = {
    format : function( amount, currencySign, currencyCode ) {
        if( -1 != jQuery.inArray( currencyCode, ['USD', 'EUR', 'GBP'] )) {
            return currencySign + amount;
        }
        return amount + currencySign;
    }
};

var Integer = {
    parse : function(val) {
        var parsed = parseInt( val.toString().replace(/[^0-9-]/g, ''), 10 );
        if(isNaN (parsed)){
            return 0;
        }
        return parsed;
    }
};

var Float = {
    parse : function(val) {
        var parsed = parseFloat( val.toString().replace(/[^0-9-\.]/g, ''), 10 );
        if(isNaN (parsed)){
            return 0;
        }
        return parsed;
    }
};

var Grader = {
    parent_url: decodeURIComponent(document.location.hash.replace( /^#/, "" )),
    
    setHeight: function() {
        try {
            if( document == top.document ) return; //fix for iframe solution
        }
        catch( e ) {}
        
        $.pm({target: window.parent,
              url: this.parent_url,
              type:"frame_resize", 
              data:{height: $("body").outerHeight( true )+10}
        });
    }
};

function createSliders() {
    //actually create sliders
    $('.sliderbody').not('.special').each( function(){
        createSlider( $(this).attr('id') );
    });
    
    // add custom left-right arrows for sliders
    $(".ui-slider").each( function() {
        var a = $(this).children('a');
        a.eq(0).addClass("left-arrow");
        a.eq(1).addClass("right-arrow");
    });

};

function createSlider( baseId ) {
    var 
        max = Integer.parse( $('#'+baseId+'-max').val() ),
        min = Integer.parse( $('#'+baseId+'-min').val() ),
        left  = $('#'+baseId+'-left').length  ? Integer.parse( $('#'+baseId+'-left').val() ) : min,
        right = $('#'+baseId+'-right').length ? Integer.parse( $('#'+baseId+'-right').val() ) : max;
    

    $( '#'+baseId ).slider({
            allowChange: 1,
            range: true,
            min: min,
            max: max,
            values: [ left, right ]
        });

    /* add slide function if slider do not have special class */
    if ( !$( '#'+baseId ).hasClass('specSlide') ) {
        $('#'+baseId).bind('slide', function(event, ui) {
            $('#'+baseId+'-left').val( ui.values[0] );
            $('#'+baseId+'-right').val( ui.values[1] );
        });
    }
    
    $( 'input#'+baseId+'-left' ).change( function(event) {
        var val = Integer.parse( $(this).val() );
        if( val > Integer.parse( $('input#'+baseId+'-right').val()) ) return;
        $('#'+baseId).slider( 'values' , 0, val );
    });

    $( 'input#'+baseId+'-right' ).change( function(event) {
        var val = Integer.parse( $(this).val() );
        if( val < Integer.parse( $('input#'+baseId+'-left').val() ) ) return;
        $('#'+baseId).slider( 'values' , 1, val );
    });

};



function createCurrencySwitch() {
    var rightPosition =  $("#wrapper").offset().left + $('#wrapper').width() - $("#currency_select").offset().left + 8 ;
    var topPosition =  $("#currency_select").offset().top - $("#wrapper").offset().top + 22 ;
    $(".holder_inv.cur").css( {"right": rightPosition + "px", "top": topPosition + "px"} );
    $("#currency_select").bind("click",function(e){    
        if ($(".cur").css('display') == 'none') {            
            $(".holder_inv").slideUp('fast');
            $(".cur").slideDown('fast');
        } else {
            $(".holder_inv").slideUp('fast');
        }
    })
};

function createLanguageSwitch() {
    var rightPosition =  $("#wrapper").offset().left + $('#wrapper').width() - $("#country_select").offset().left + 8 ;
    var topPosition =  $("#country_select").offset().top - $("#wrapper").offset().top + 22 ;
    $(".holder_inv.country").css( {"right": rightPosition + "px", "top": topPosition + "px"} );
    $("#country_select").bind("click",function(e){
        if ($(".country").css('display') == 'none') {            
            $(".holder_inv").slideUp('fast');
            $(".country").slideDown('fast');
        } else {
            $(".holder_inv").slideUp('fast');
        }
    })
};


function isIE6() {
    return (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1 && navigator.appVersion.indexOf("MSIE 8.0") == -1);
};

function construct_ul(data, name, level, country_name, current_id) {
    var temp = '';
    var prefixes = [ 'co', 'c', 'r', 'a', 's', 't' ];
    if ($(data).length){
        $(data).each(function(e,i){
            var prop_class = ((e%2) == 1)?'class="second"':'';
            if( null == i.name ) return;
            temp += '<li ' + prop_class + '><a href="/' + window.languageCode + 
                ( 0 == level || 1 == level ? '/directory/' : '/search/' ) + 
                ( null != country_name ? tokenize(country_name) + '/' : '' ) +
                tokenize(i.name) + '/' + 
                prefixes[level] + i.id + '">' + 
                (( i.id == current_id ) ? '<b>' : '' ) +
                i.name + 
                (( i.id == current_id ) ? '</b>' : '' ) +
                '</a></li>';
        })
        if (temp != '') {
            if ($("ul." + name).length){
                $("ul." + name).html(temp);
            } else {
                $("#wrapper").append("<ul class=\"holder_inv " + name +"\">" + temp + "</ul>");
            }
            if (jQuery.browser.msie && (isIE6()) && ($("ul." + name).height() > 300)) {
              $("ul." + name).css("height","300px");
            }
        }
    }
};

function breadcrump_li_click(element, parent_breadcrump_id) {
    $(element).live("click",function(){
        href = $(this).children('a:first').attr('href');
        $(".holder_inv").slideUp('fast');
    })
};

function breadcrump_element_click(element_id, child_ul) {
    $(element_id).click(function(){
        if ($(child_ul).css('display') == 'none') {            
            $(".holder_inv").slideUp('fast');
            $(child_ul).css("left",$(element_id).offset().left - $(".breadcrumbs").offset().left + 35).css("top",$(element_id).offset().top - $(".breadcrumbs").offset().top + 35).slideDown('fast');
            if (jQuery.browser.msie && (isIE6())) {
                $(".content select, .content object, .content input").css("visibility","hidden");
            }
        } else {
            $(".holder_inv").slideUp('fast');
            if (jQuery.browser.msie && (isIE6())) {
                $(".content select, .content object, .content input").css("visibility","visible");
            }
        }
    })
};

function createGeoBreadcrumbs(geo, country_name) {
    construct_ul(geo['continents'],"continent_ajax_holder", 0, null, geo['continent_id']);
    
    construct_ul(geo['countries'], "country_ajax_holder", 1, null, geo['country_id']);
    construct_ul(geo['regions'], "region_ajax_holder", 2, country_name, geo['region_id']);
    construct_ul(geo['areas'], "area_ajax_holder", 3, country_name, geo['area_id']);
    construct_ul(geo['subareas'], "subarea_ajax_holder", 4, country_name, geo['subarea_id']);
    construct_ul(geo['cities'], "city_ajax_holder", 5, country_name, geo['city_id']);
    
    breadcrump_element_click("#bc_continent",".continent_ajax_holder");
    breadcrump_element_click("#bc_country",".country_ajax_holder");
    breadcrump_element_click("#bc_region",".region_ajax_holder");
    breadcrump_element_click("#bc_area",".area_ajax_holder");
    breadcrump_element_click("#bc_subarea",".subarea_ajax_holder");
    breadcrump_element_click("#bc_city",".city_ajax_holder");
    
    breadcrump_li_click(".continent_ajax_holder > li", "bc_continent");
    breadcrump_li_click(".country_ajax_holder > li", "bc_country");
    breadcrump_li_click(".region_ajax_holder > li", "bc_region");
    breadcrump_li_click(".area_ajax_holder > li", "bc_area");
    breadcrump_li_click(".subarea_ajax_holder > li", "bc_subarea");
    breadcrump_li_click(".city_ajax_holder > li", "bc_city");
};

var getCountriesPhones = function(){
    return {"AF":93,"AX":35818,"AL":355,"DZ":213,"AS":1684,"AD":376,"AO":244,"AI":1264,"AQ":null,"AG":1268,"AR":54,"AM":374,"AW":297,"AU":61,"AT":43,"AZ":994,"BS":1242,"BH":973,"BD":880,"BB":1246,"BY":375,"BE":32,"BZ":501,"BJ":229,"BM":1441,"BT":975,"BO":591,"BA":387,"BW":267,"BV":null,"BR":55,"IO":246,"VG":1284,"BN":673,"BG":359,"BF":226,"BI":257,"KH":855,"CM":237,"CA":1,"CV":238,"KY":1345,"CF":236,"TD":235,"CL":56,"CN":86,"CX":61,"CC":61,"CO":57,"KM":269,"CK":682,"CR":506,"HR":385,"CU":53,"CY":357,"CZ":420,"CD":243,"DK":45,"DJ":253,"DM":1767,"DO":1809,"TL":670,"EC":593,"EG":20,"SV":503,"GQ":240,"ER":291,"EE":372,"ET":251,"FK":500,"FO":298,"FJ":679,"FI":358,"FR":33,"GF":594,"PF":689,"TF":null,"GA":241,"GM":220,"GE":995,"DE":49,"GH":233,"GI":350,"GR":30,"GL":299,"GD":1473,"GP":590,"GU":1671,"GT":502,"GG":441481,"GN":224,"GW":245,"GY":592,"HT":509,"HM": null,"HN":504,"HK":852,"HU":36,"IS":354,"IN":91,"ID":62,"IR":98,"IQ":964,"IE":353,"IM":441624,"IL":972,"IT":39,"CI":225,"JM":1876,"JP":81,"JE":441534,"JO":962,"KZ":7,"KE":254,"KI":686,"KW":965,"KG":996,"LA":856,"LV":371,"LB":961,"LS":266,"LR":231,"LY":218,"LI":423,"LT":370,"LU":352,"MO":853,"MK":389,"MG":261,"MW":265,"MY":60,"MV":960,"ML":223,"MT":356,"MH":692,"MQ":596,"MR":222,"MU":230,"YT":269,"MX":52,"FM":691,"MD":373,"MC":377,"MN":976,"ME":381,"MS":1664,"MA":212,"MZ":258,"MM":95,"NA":264,"NR":674,"NP":977,"NL":31,"AN":599,"NC":687,"NZ":64,"NI":505,"NE":227,"NG":234,"NU":683,"NF":672,"KP":850,"MP":1670,"NO":47,"OM":968,"PK":92,"PW":680,"PS":970,"PA":507,"PG":675,"PY":595,"PE":51,"PH":63,"PN":null,"PL":48,"PT":351,"PR":1787,"QA":974,"CG":242,"RE":262,"RO":40,"RU":7,"RW":250,"BL":590,"SH":290,"KN":1869,"LC":1758,"MF":590,"PM":508,"VC":1784,"WS":685,"SM":378,"ST":239,"SA":966,"SN":221,"RS":381,"CS":381,"SC":248,"SL":232,"SG":65,"SK":421,"SI":386,"SB":677,"SO":252,"ZA":27,"GS":null,"KR":82,"ES":34,"LK":94,"SD":249,"SR":597,"SJ":47,"SZ":268,"SE":46,"CH":41,"SY":963,"TW":886,"TJ":992,"TZ":255,"TH":66,"TG":228,"TK":690,"TO":676,"TT":1868,"TN":216,"TR":90,"TM":993,"TC":1649,"TV":688,"VI":1340,"UG":256,"UA":380,"AE":971,"GB":44,"US":1,"UM":null,"UY":598,"UZ":998,"VU":678,"VA":379,"VE":58,"VN":84,"WF":681,"EH":212,"YE":967,"ZM":260,"ZW":263};
};

//lowercased URL-friendly string
function tokenize(str) {
    try {
        return str.toLowerCase().replace(/[ \'\,]/g, '-').replace(/[\-]+/g, '-');
    }
    catch(e) {
        console.log( str );
    }
};

function initLocationSuggestForm( options ) {
    var defaultOptions = {
        'formID'        : '#se_form',
        'additionalFields': ['start', 'finish', 'stayMin', 'sleepsMin'],
        'delay'         : 10,
        'minCahrs'      : 1,
        'matchSubset'   : 0,
        'matchContains' : 0,
        'selectOnly'    : 0,
        'cacheLength'   : 100, 
        'json'          : true, 
        'width'         : 300, 
        'loadingClass'  : 'loadingSuggestionG', 
        //'formatItem'  : formatSuggestItem, 
        'onSelect'      : searchFormSelected, 
        'onDataRecieved': function(){globalLoader.hide();},
        'onShowResults' : function(){globalLoader.hide();},
        'onChange'      : function(){
            $('#se_id, #se_level, #se_adm, #se_type').val('');
            if( '' == jQuery.trim( $('#se_location').val() ) ) return;
            globalLoader.setMessage(lang('Loading...')).show()
        }
    };
    
    if( !options ) {
        options = defaultOptions;
    }
    else {
        options = $.extend( defaultOptions, options ); 
    }
    
    $('#se_location').autocomplete('/search/suggest-location', options).bind('focus', function(){
        if( $('#se_location').hasClass('example') ) return;
        if( '' == jQuery.trim( $('#se_location').val() ) ) return;
        $('.ac_results:first').show();
    });
    
    //XXX not sure if it's right
    $('#se_location').keydown (function (e) {
        var lastKeyCode = e.keyCode;
        var KEY_UP = 38;
        var KEY_DOWN = 40;
        var KEY_TAB = 9;
        var KEY_ENTER = 13;
        
        if (lastKeyCode != KEY_UP && lastKeyCode != KEY_DOWN && lastKeyCode !=KEY_TAB && lastKeyCode != KEY_ENTER) {
            $('#se_id, #se_level, #se_adm, #se_type').val('');
        }
    });
    
    if ($('#se_location').val () == '') {
        $('#se_location').example(options.exampleText || lang('Country or town'));
    }
    
    $(options.formID).bind('submit', function (e) {
        if( $('#se_location').hasClass('example') || ('' == jQuery.trim( $('#se_location').val()) ) ) {
            e.preventDefault();
            return false;
        }

        var url = '';
        var addParams = {};
        var id = Integer.parse( $('#se_id').val() );
        var entityType = $('#se_type').val();
        if( 'touristic_region' == entityType ) {
            var list = [window.languageCode, 'search'];
            if( $('#se_country').val() ) {
                list.push( tokenize( $('#se_country').val() )  );
            }
            list.push( 'touristic-region' );
            list.push( 'tr' + id );
            url = '/' + list.join('/') + '?';
        }
        else if( id > 0 ) {
            var list = [window.languageCode, 'search'];

            if( $('#se_country').val() ) {
                list.push( tokenize( $('#se_country').val() )  );
            }

            var admPresent = ('' != $('#se_adm').val() );
            if( admPresent ) {
                list.push( tokenize( $('#se_adm').val() ) );
            }

            if( $('#se_location').val() ) {
                list.push( tokenize( $('#se_location').val() ) );
            }

            var levelCodes = getGeoLevelsCodes();
            var level = Integer.parse( $('#se_level').val() );
            var levelFlag = levelCodes[level];
            if( !isNaN( levelFlag ) ) {
                alert(lang('Error has occured. Try again later.'));
                return false;
            }
            
            list.push( levelFlag + id );

            url = '/' + list.join('/') + '?';
        }
        else{
            url = $(this).attr('action') + '?';
            
            if( '' != $.trim($('#se_location').val()) ) {
                addParams['query'] = $('#se_location').val();
            }
        }

        /* add start, finish, stay, sleeps params */
        for ( var i in options.additionalFields) {
            var elementName = options.additionalFields[i];

            var element = $(options.formID).find('[name=' + elementName + ']');
            if( $(element).length && '' != $.trim($(element).val()) ) {
                addParams[elementName] = $(element).val();
            }
        }
        
        if( $('#exact_rate2:checked').length > 0 || $('#flexible_rate1:checked').length > 0 ) {
            addParams['is_exact_search'] = 1;
            if( addParams['stayMin'] ) {
                addParams['stay'] = addParams['stayMin'];
                addParams['stayMin'] = '';
                try {
                    delete addParams['stayMin'];
                }
                catch(e){};
                if( addParams['start'] ) {
                    var arrivalDate   = $.datepicker.parseDate('yy-mm-dd', addParams['start']);
                    var departureDate = new Date;
                    var departureTime = arrivalDate.getTime() + 1000*24*3600 * addParams['stay'];
                    departureDate.setTime( departureTime );
                    addParams['finish'] = $.datepicker.formatDate('yy-mm-dd', departureDate);
                }
            }
        }

        document.location.href = url + $.param(addParams);
        globalLoader.setMessage(lang('Searching') + '...').show();
        return false;
    });
};

function searchFormSelected(item) {
    if(!item) return;
    searchAutocomplete(item);
    $('#se_form').submit();
};

function searchAutocomplete (item) {
    if(!item) return;
    if( 'property' == item.type ) {
        if( item.url ) {
            top.location.href = item.url;
            return;
        }
        alert(lang('An error occurred. Try again later.'));
        return;
    }
    
    $('#se_location').val( item.name );
    searchOnAutoFill (item);
};

function searchOnAutoFill (item) {
    if(!item) return;
    $('#se_id').val( item.id );
    $('#se_adm').val( item.adm );
    $('#se_country').val( item.country );
    $('#se_level').val( item.level );
    $('#se_type').val( item.type );
};


bindDPHolderEvents = function( element ) {
    var altFieldID = $('input[type=hidden]', $(element)).attr('id');

    $('input[type=text]', $(element)).datepicker({
        dateFormat: "d M, yy",
        altField: '#' + altFieldID,
        altFormat: 'yy-mm-dd',
        numberOfMonths: 2
     }).change(function(){
        $(this).removeClass('example');
        $($(this).datepicker("option", "altField")).trigger('change');
     });


     if ( $('img', $(element)).length ) {
        $('img', $(element)).click(function() {
            $('input[type=text]', $(element)).datepicker('show');
        });
     };
}

function InlineEditBookingEventsBuilderbuild() {
        $('.DPHolder').each(function(e,i){

           bindDPHolderEvents( $(this) );

        });

        $('#start_visible').datepicker('option', 'onSelect', function(dateText, inst) { setPairDate (dateText, '_visible', 0); });
        $('#finish_visible').datepicker('option', 'onSelect', function(dateText, inst) { setPairDate (dateText, '_visible', 1); });

        $("#guestName").autocomplete ('/owner/ajax/guests/', {'matchSubset': false, 'json': true, 'width': 154, 'onEmptyResults': checkGuest, 'onSelect':guestSelected, 'loadingClass':'loadingSuggestion', 'onChange':function(){ $('#guest_id').attr ('value', ''); }});

};

