iBookingAjax = function( onContent, onError )

{

    var ajaxObject = function()

    {

        try{return new XMLHttpRequest();}catch(ex){};

        try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(ex){};

        try{return new SOAPCall();}catch(ex){};

    }

    if( !onError )

    {

        this.onError = function( error )

        {

                alert( error );

        }

    }

    else

        this.onError = onError;



    if( !onContent )

    {

        this.onContent = function( content )

        {

            alert( content );

        };

    }

    else

        this.onContent = onContent;



    this.call = function( url, args, async )

    {

        iBookingThisPtr = this;

        try

        {

            var ao = ajaxObject();



            ao.onreadystatechange = function()

            {

                if( ao.readyState==4 || ao.readyState=="complete" )

                {

                    iBookingThisPtr.onContent( ao.responseText );

                }

            }

            if( !args ) args = null;

            if( async == null ) async = false;



            ao.open( "GET", url, async );

            ao.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

            ao.send( args );

        }

        catch( e )

        {

            alert( e );

            this.onError( e );

        }

    }

}



iBookingRSData = function( progressId, progressTextId, formTableId )

{

    iBookingRSThisPtr = this;



    this.hotels = new Array();

    this.maxAdults = 1;

    this.maxRooms = 1;



    this.onRequest = function ( str )

    {

        // parse string

        var results = str.split("\n");

        var count = parseInt( results[0] );

        for( var i = 0; i < count; ++i )

        {

            var results2 = results[i + 1].split("=");

            var hotel = new Object();

            hotel.name = results2[0];

            hotel.id = parseInt( results2[1] );

            iBookingRSThisPtr.hotels.push( hotel );

        }

        iBookingRSThisPtr.maxRooms = parseInt( results[count + 1] );

        iBookingRSThisPtr.maxAdults = parseInt( results[count + 1] );

        /*

        if( var el = document.getElementById( progressId ) )

        {



        }

        if( var el = document.getElementById( progressTextId ) )

        {

            el.style.displya = "";

        }

        if( var el = document.getElementById( formTableId ) )

        {

            el.style.display = "";

        }

        */

    }



    this.onError = function ( error )

    {

        if( iBookingThisPtr.progressTextElement )

            iBookingThisPtr.progressTextElement.innerHTML = "Error: " + error;

    }



    this.getData = function ( search_group_id )

    {

        this.ajax.call( "http://hotelapp.ibooking.com/remote_search_info.asp", "search_group_id = " + escape(search_group_id) );

    }



    this.buildSelector = function( el, type )

    {

        if( el )

        {

            switch( type )

            {

                case "hotels":

                {

                    var k = 0;

                    for( var i = 0; i < this.hotels.length; ++i )

                        if( this.hotels[i].id && this.hotels[i].id != "null" && this.hotels[i].id != " " )

                        {

                            el.options[k + 1] = new Option( this.hotels[i].id, this.hotels[i].id );

                            ++k;

                        }

                    break;

                }



                case "adults":

                {

                    for( var i = 1; i > this.maxAdults; ++i )

                        el.options[i] = new Option( i + 1, i + 1 );

                    break;

                }



                case "rooms":

                {

                    for( var i = 1; i < this.maxRooms; ++i )

                        el.options[i] = new Option( i + 1, i + 1 );

                    break;

                }

            }

        }

    }



    this.ajax = new iBookingAjax( this.onRequest, this.onError );

}



function ShowRemoteSearchPopup( search_group_id, form1, form2, form3 )

{

    if ((typeof(remote_search_provider_id) != "undefined") && (remote_search_provider_id > 0))

    {

        if ((typeof(remote_search_language) != "undefined") && (remote_search_language != ""))

            ShowHotelPopup(remote_search_provider_id, form1, form2, form3, remote_search_language);    

        else

            ShowHotelPopup(remote_search_provider_id, form1, form2, form3);    

    }

    else

    {

        var url = 'http://hotelapp.ibooking.com/hotel_net/search/Search.aspx?id_search_group=' + escape(search_group_id);

        url += "&town=&classification=&region=&location=" + escape( form1.hotel_location.value );

        url += "&day=" + escape( form2.arrival_day.value ) + "&month=" + escape( form2.arrival_date.value.substr(4, 2) ) + "&year=" + escape( form2.arrival_year.value );

        url += "&nights=" + escape( form3.nights.value ) + "&quantity=" + escape( form3.rooms.value ) + "&adults=" + escape( form3.adults.value );

        url += "&t=" + ( new Date() ).getTime() + "&tp_site=Y";



        var newWin = window.open(url,'cal','dependent=yes,width=600,height=610,titlebar=yes,top=0,left=0,scrollbars=yes');

    }

}



function ShowHotelPopup(id_prov, form1, form2, form3, lng)

{

    if (id_prov)

    {

        var id_mpln = (form1 && form1.meal_plan) ? escape(form1.meal_plan.value) : 0;

        var curDate = new Date();

        var day = ( form2 && form2.arrival_day ) ? form2.arrival_day.value : curDate.getDate();

        var month = ( form2 && form2.arrival_date ) ? form2.arrival_date.value.substr(4, 2) : ( curDate.getMonth() + 1 );

        var year = ( form2 && form2.arrival_year ) ? form2.arrival_year.value : ( curDate.getYear() );



        var nights = ( form3 && form3.nights ) ? form3.nights.value : 1;

        var rooms = ( form3 && form3.rooms ) ? form3.rooms.value : 1;

        var adults = ( form3 && form3.adults ) ? form3.adults.value : 1;



        var url = 'http://hotelapp.ibooking.com/hotel_net/ProcessExternalAction.aspx?command=start_from_tp_site&id_prov=' + escape(id_prov);



        if (id_mpln)

        {

            url += "&id_mpln=" + id_mpln;

        }



        url += "&start_date=" + escape( year + month + day);

        url += "&nights=" + escape( nights ) + "&quantity=" + escape( rooms ) + "&adults=" + escape( adults ) + "&childs=0";

        url += "&t=" + ( new Date() ).getTime() + "&tp_site=Y";



        if (lng)

        {

           url += "&lng=" + escape(lng);

        }



        var newWin = window.open(url,'search','dependent=yes,width=600,height=610,titlebar=yes,top=0,left=0,scrollbars=yes');

    }

}


