/*GLOBAL JAVASCRIPT FUNCTIONS*/

jQuery(document).ready(function(){
    if(!getCookie('locations')) {
        jQuery('.middleCopy .fromLocation').text(''); // Blank the middle copy text. All Major Ai...
    }

    // First XHR async false
    setFromLocation();

    // Fixes the trip type on load if user selects trip type then reloads page replaced tpTabChecker() that didn't work ~JP
    selectTripTypeOnLoad();

    // Loads additional event listeners such as the autocomplete drop down
    loadEventListeners();

    cookieCheck();

    initTravelPlannerCustomSelects();

    initPackageFromDropDown();

    setTimeout(function(){initTravelPlannerCalendar();}, 1);

    //if(!checkNewsletterLink()){
        //checkPackageDetailsLink();
    //}
    //createAddonsReviewScroller();
    //setTimeout("fromFinderTimeout();",25000);
});

function setFromLocationByIp() {
    if(!getCookie('locations')) {
        jQuery.ajax({
            async : false,
            url: 'http://from.bookitsb.com/ajaxRedirect.php',
            type: 'POST',
            dataType: 'html',
            data : ({
                action : 'server_setfromlocationbyip.php'
            }),
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                //console.log(XMLHttpRequest);
                alert(XMLHttpRequest+' '+textStatus+' '+errorThrown);
            },
            success: function(t) {
            },
            complete: function() {
                //return window.location.href = '';
                //initializeFrom();
            }
        });
    }// else
        //initializeFrom();
}

function initializeFrom() {

}

function initTravelPlannerCalendar(){
    try {
        document.execCommand('BackgroundImageCache', false, true);
    } catch(e){}
    jQuery('#fd, #td').sitecalendar({mode : 'range',numberOfMonths : 2,showButton : true});
}

function initTravelPlannerCustomSelects(){
    jQuery('.travelplanner_customselect').bind('click',function(){
        var cta = jQuery(this);//.closest('.customselect');
        var to_show = cta.attr('toshow');
        var li_height = cta.find('li').height();
            to_show = (to_show) ? to_show : cta.find('li').length;

        var div_height = (li_height * to_show) + li_height;
        var ul_height = li_height * to_show;

        var close_height = cta.find('.selected_display').height();

        if(cta.hasClass('open'))
            cta.css({'height':close_height+'px'}).addClass('close').removeClass('open');
        else
            cta.css({'height':div_height+'px'}).addClass('open').removeClass('close');

        var ul = cta.find('ul');
        ul.css({'height':ul_height+'px'});
        if(to_show < cta.find('li').length)
            ul.css({'overflow':'auto','overflow-x':'hidden','overflow-y':'scroll'});
    });
    jQuery('.travelplanner_customselect ul li').bind('click',function(){
        var cta = jQuery(this);
        var div = jQuery(this).closest('.customselect');
        var dis = div.find('.selected_display');
        var txt = cta.html();
        var val = cta.attr('val');
        dis.html(txt);
        //div.css({'height':dis.height()+'px'}).addClass('close').removeClass('open');
        var sel = div.prev('select');
        sel.find('option[value="'+val+'"]').attr('selected',true);
        sel.trigger('change');
    });
    jQuery('.travelplanner_customselect').hover(
        function(){jQuery(this).addClass('hovered');},
        function(){jQuery(this).removeClass('hovered');}
    );
    jQuery('body').bind('click',function(){
        var ctas = jQuery('.travelplanner_customselect');
        ctas.each(function(){
            var cta = jQuery(this);
            if(cta.is(':visible') && !cta.hasClass('hovered')) {
                var close_height = cta.find('.selected_display').height();
                cta.css({'height':close_height+'px'}).addClass('close').removeClass('open');
            }
        });
    });
    jQuery('.TP select').each(function(){
        var select = jQuery(this);
        var val = select.val();
        var custom = select.next('div.customselect');
        var txt = select.find('option[value='+val+']').html();
        if(txt && txt.length > 0)
            custom.find('.selected_display').html(txt);
    });
    // Clean up zIndex from TP custom selects
    var zIndex = 450;
    jQuery('.TP .customselect').each(function(){jQuery(this).css('z-index', zIndex).find('ul').css('z-index',zIndex);zIndex-=1;});
}

function initPackageFromDropDown() {
    // BEGIN PACKAG NAV TAB AIRPORT DROP DOWN
    // This adds the functionality for the package nav tab drop down for airports
    // Start navigation drop down on package tab

    jQuery('.selectLocation').live('click',function(){
        var cta = jQuery(this);
        var li = cta.closest('li');
        var airport_dropdown = jQuery('#airport_dropdown');

        if(airport_dropdown.is(':visible')) {
            airport_dropdown.slideUp();
            cta.css({'background-image':'url(//images.bookit.com/4.0/siteDownArrow.png)'});
        } else {
            cta.css({'background-image':'url(//images.bookit.com/4.0/siteDownArrowX.png)'});
            var li_offset = li.offset();
            var li_top = li_offset.top;
            var li_left = li_offset.left;
            var li_height = li.height();
            var li_width = li.width();

            var div_width = airport_dropdown.width();

            var final_top = (li_top + li_height);
            var final_left = (li_width - div_width) + li_left;

            var txt = jQuery('#mainNavPackage .fromLocation');
            var txt_offset = txt.offset();
            var txt_left = txt_offset.left;

            airport_dropdown.css({
                'top': final_top+'px',
                'left': txt_left+'px'
            }).slideDown();
        }
    });

    jQuery('#airport_dropdown ul li').live('click',function(){
        jQuery('.selectLocation').css({'background-image':'url(//images.bookit.com/4.0/siteDownArrow.png)'});
        var cta = jQuery(this);
        var airport_dropdown = cta.closest('#airport_dropdown');
        airport_dropdown.slideUp();
        var val = cta.attr('val').split('|');
        var locationId = val[0];
        var locationText = val[1]+','+val[2]+','+val[3]+' ('+locationId+')';
       setFromLocation(locationId, locationText, '', true, "jQuery('[name=fromAirportLocation]').val('"+locationId+"').trigger('change',[true])");
    });

    jQuery('#airport_dropdown, .selectLocation').live('mouseover',function(){
        jQuery('#airport_dropdown, .selectLocation').addClass('hovered');
    }).live('mouseout',function(){
        jQuery('#airport_dropdown, .selectLocation').removeClass('hovered');
    });

    jQuery('body').click(function(){
        jQuery('.selectLocation').css({'background-image':'url(//images.bookit.com/4.0/siteDownArrow.png)'});
        var airport_dropdown = jQuery('#airport_dropdown');
        if(airport_dropdown.is(':visible') && ! airport_dropdown.hasClass('hovered'))
            airport_dropdown.slideUp();
    });

    // End navigation drop down on package tab
}


function textClear(element){
    if ( element.value != '' )
        element.value = '';
}

// TP used above function, changed now to use the new clear input plugin
var isAgent = false;
function cookieCheck(){
    var all_cookies = document.cookie.split(';');
    var temp_cookie = '';
    var cookie_name = '';
    var cookie_value = '';
    var locations = '';
    var cookieFound = false;
    var tpCookieFound = false;
    var tpOverride = false;
    if(document.forms["tpForm"]){
        var form = document.forms["tpForm"];
    }
    for(var i=0;i<all_cookies.length;i++){
        temp_cookie = all_cookies[i].split('=');
        cookie_name = temp_cookie[0].replace(/^\s+|\s+$/g,'');
        if(cookie_name == "agentId"){
            isAgent = true;
        }
    }
    for(var i=0;i<all_cookies.length;i++){
        temp_cookie = all_cookies[i].split('=');
        cookie_name = temp_cookie[0].replace(/^\s+|\s+$/g,'');
        if(cookie_name == "locations"){
            cookie_value = unescape(temp_cookie[1].replace(/^\s+|\s+$/g,''));
            cookie_value = cookie_value.replace(/(?:<|>)/g, '');
            if(cookie_value != "[]" && cookie_value != ""){
                cookieFound = true;
                var fromLocation = eval("("+cookie_value+")");
                if(!tpOverride && form){
                    if(form.fromLocation.value == ""){
                        form.fromLocation.value = fromLocation[0].city+", "+fromLocation[0].state+" ("+fromLocation[0].locationId+")";
                        form.fl.value = fromLocation[0].locationId;
                    }
                }
            }
        }
        if(jQuery('#tpForm').length>0 && cookie_name == "travelPlanner" && form && !isAgent){
            if(!temp_cookie[1]){temp_cookie[1] = "";} // ie says undefined, others say null, play nice ie
            cookie_value = unescape(temp_cookie[1].replace(/^\s+|\s+$/g,''));
            cookie_value = cookie_value.replace(/(?:<|>)/g, '');
            cookie_value = cookie_value.replace(/\+/g," ");
            if(cookie_value != "[]" && cookie_value != ""){
                var tpInfo = eval("("+cookie_value+")");
                if(tpInfo.fromLocation){
                    if(form.fromLocation.value == ""){
                        form.fromLocation.value = tpInfo.fromLocation;
                        form.fl.value = tpInfo.fromLocation.match(/\((.+)\)/)[1];
                        tpOverride = true;
                        tpCookieFound = true;
                    }
                }
                form.fd.value = (tpInfo.fd)?formatDate(tpInfo.fd):"";
                form.td.value = (tpInfo.td)?formatDate(tpInfo.td):"";
                if(form.fromLocation){
                    if(tpInfo.fromLocation){
                        if(form.fromLocation.value == ""){
                            form.fromLocation.value = tpInfo.fromLocation;
                        }
                    }
                }
                form.pt.value = (tpInfo.pt)?tpInfo.pt:"";
                if(form.hotelTo){
                    if(tpInfo.hotelTo){
                        if(form.hotelTo.value == ""){
                            form.hotelTo.value = tpInfo.hotelTo;
                        }
                    }
                }else{
                     // required since super is a reserved word in js in ie
                     // form.super doesn't grab the form element, but the form's parent
                    for(var x=0;x<form.elements.length;x++){
                        if(form.elements[x].name == "super"){
                            // the drop down option stuff here
                        }
                    }
                }
                if(form.flightTo){
                    if(tpInfo.flightTo){
                        if(form.flightTo.value == ""){
                            form.flightTo.value = tpInfo.flightTo;
                        }
                    }
                }
                if(form.tl){
                    form.tl.value = (tpInfo.tl)?tpInfo.tl:"";
                }
                if(form.packageTo){
                    if(form.packageTo == "" && tpInfo.packageTo){
                        //form.packageTo.value = tpInfo.packageTo;
                    }
                }

                if(form.ptl){
                    if(tpInfo.ptl && !form.ptl.value.length){
                        form.ptl.value = tpInfo.ptl;
                    }
                }
                if(form.pta){
                    if(tpInfo.pta){
                        if (form.pta.value == "") {
                            form.pta.value = tpInfo.pta;
                        }
                    }
                }
                if(form.carFrom){
                    form.carFrom.value = (tpInfo.carFrom)?tpInfo.carFrom:"";
                    form.carFromLocation.value  = (tpInfo.carFromLocation)?tpInfo.carFromLocation:"";
                }else{
                    form.carFromLocation.value = (tpInfo.carFromLocation)?tpInfo.carFromLocation:"";
                }
                form.carFromTime.value = (tpInfo.carFromTime)?tpInfo.carFromTime:"";
                form.carToTime.value = (tpInfo.carToTime)?tpInfo.carToTime:"";
                //form.tripType.value = (tpInfo.tripType)?tpInfo.tripType:"";

                if(form.rm){
                    if(tpInfo.rm){
                        form.rm.value = tpInfo.rm;
                        for(x=1;x<=tpInfo.rm;x++){
                            form["ap"+x].value = tpInfo["ap"+x];
                            form["mp"+x].value = (tpInfo["mp"+x])?tpInfo["mp"+x]:0;

                            for(y=1;y<=tpInfo["mp"+x];y++){
                                form["ar"+x+"m"+y].value = tpInfo["ar"+x+"m"+y];
                            }
                        }
                    }
                }
                // Add rest of form auto-populate info here
            }
        }
    }
    var url = window.location.href.replace(/^.*\?/,"").split("&");
    try{
        if(jQuery('#tpForm').length>0 && url.length>0){
            for(var x=0;x<url.length;x++){
                var item = url[x].split("=");
                item[1] = unescape(item[1]).replace(/(?:<|>)/g, '').replace(/\+/g, ' ');
                switch(item[0]){
                    case "ARR_DATE_HM":
                    case "fd":
                        form.fd.value = formatDate(item[1]);break;
                    case "DEP_DATE_HM":
                    case "td":
                        form.td.value = formatDate(item[1]);break;
                    case "hotelTo":
                        try{
							if(form.hotelTo)
								form.hotelTo.value = item[1];
                        }catch(e){/** just ignore any drop-down box, they're pre-selected anyway **/}
                        break;
                    case "flightTo":
						if(form.flightTo)
							form.flightTo.value = item[1];break;
                    case "packageTo":
                        form.packageTo.value = item[1].replace(/\+/g," ");break;
                    case "ptl":
                        form.ptl.value = item[1];break;
                    case "pt":
                        if(form.pt[0].value == item[1]){
                            form.pt[0].checked = true;
                            //document.getElementById('pt1').style.fontWeight = "bold";
                            //document.getElementById('pt2').style.fontWeight = "normal";
                            jQuery('#pt1').css('font-weight','bold');
                            jQuery('#pt2').css('font-weight','normal');
                        }
                        else if(form.pt[1].value == item[1]){
                            form.pt[1].checked = true;
                            //document.getElementById('pt2').style.fontWeight = "bold";
                            //document.getElementById('pt1').style.fontWeight = "normal";
                            jQuery('#pt2').css('font-weight','bold');
                            jQuery('#pt1').css('font-weight','normal');
                        }
                        break;
                    case "carFrom":
						if(form.carFrom)
							form.carFrom.value = item[1];break;
                    case "carFromLocation":
						if(form.carFromLocation)
							form.carFromLocation.value = item[1];break;
                    case "carToTime":
						if(form.carToTime)
							form.carToTime.value = item[1];break;
                    case "carFromTime":
						if(form.carFromTime)
							form.carFromTime.value = item[1];break;
                    case "rm":
						if(form.rm)
							form.rm.value = item[1];break;
                    case "hotelToOverride":
                        try {
                            if (form.hotelTo.value.length > 0 && (/^\d+$/).test(form.hotelTo.value)) {
                                form.hotelTo.value = item[1];
                            }
                        }
                        catch(e){/** just ignore any drop-down box, they're pre-selected anyway **/}
                        break;
                    default:
                        //console.log("missed: "+item[0]);
                }
                var roomInfo = item[0].match(/^(ap|mp)([0-9]{1})$/);
                if(roomInfo){
                    var rooms = item[1];
                    form[roomInfo[0]].value = rooms;
                }
                var ages = item[0].match(/^ar[0-9]{1}m[0-9]{1}$/);
                if(ages){
                    form[ages[0]].value = item[1];
                }
            }
        }
    }catch(e){} // catch for url.length annoying ie6 and ie6 alone
    try{
		if(jQuery('#tpForm').length>0){
			// Show rooms, people, and kids ages
			toggleRoom(form.rm.value);
			toggleChildAge(1,form.mp1.value);
			toggleChildAge(2,form.mp2.value);
			toggleChildAge(3,form.mp3.value);
		}
    }catch(e){
        /** A precaution in the event the travel planner javascript isn't loaded **/
    }
}

function getLocations(){
    var all_cookies = document.cookie.split(';');
    var result = false;
    for(var i=0;i<all_cookies.length;i++){
        var temp_cookie = all_cookies[i].split('=');
        var cookie_name = temp_cookie[0].replace(/^\s+|\s+$/g,'');
        if(cookie_name == "locations"){
            var cookie_value = unescape(temp_cookie[1].replace(/^\s+|\s+$/g,''));
            if(cookie_value != "[]" && cookie_value != ""){
                result = eval("("+cookie_value+")");
            }
        }
    }

    // We could leave a debug message here to allow the dev to know wwhy there is
    // no from location id.
    if(!result){

    }

    return result;
}
var origTPFormInputs = {};
function getElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];

    for(var i=0; i<elements.length; i++){
        var current = elements[i];
        if(testClass.test(current.className)){
            returnElements.push(current);
        }
    }
    return returnElements;
}

var totalPassCount = 0;
var seatMap = new Array();

function Trim(str)
{
    return str.replace(/^\s*|\s*$/g,"");
}
function swapImage(el)
{
    var currentPic = el.innerHTML.toLowerCase();
    //trim() is case sensistive
    currentPic = Trim(currentPic);
    if (currentPic == "<img src=\"//images.bookit.com/system/seat_open.gif\">")
        el.innerHTML = "<img src=\"//images.bookit.com/system/seat_chosen.gif\">";
    else if (currentPic == "<img src=\"//images.bookit.com/system/seat_chosen.gif\">")
        el.innerHTML = "<img src=\"//images.bookit.com/system/seat_open.gif\">";
    else if (currentPic == "<img src=\"//images.bookit.com/system/seat_preferred.gif\">")
        el.innerHTML = "<img src=\"//images.bookit.com/system/seat_preferred_selected.gif\">";
    else if (currentPic == "<img src=\"//images.bookit.com/system/seat_preferred_selected.gif\">")
        el.innerHTML = "<img src=\"http://images.bookit.com/system/seat_preferred.gif\">";
    else if (currentPic == "<img src=\"//images.bookit.com/system/seat_disabled.gif\">")
        el.innerHTML = "<img src=\"//images.bookit.com/system/seat_disabled_selected.gif\">";
    else if (currentPic == "<img src=\"//images.bookit.com/system/seat_disabled_selected.gif\">")
        el.innerHTML = "<img src=\"//images.bookit.com/system/seat_disabled.gif\">";
}
//this function actually sets and unsets text
function setText(segment, seat_row, seat_number, passCount)
{
    //have to add one because of the way arrays are indexed
    passCount = passCount + 1;
    //alert('segment' + segment + 'pass' + passCount);
    var object = document.getElementById('segment' + segment + 'pass' + passCount);
    var seat_str = document.getElementById('segment' + segment + 'pass' + passCount).innerHTML;
    seat_str = Trim(seat_str);
    if (seat_str == '')
    {
        object.innerHTML = seat_row+seat_number;
    }
    else
    {
        object.innerHTML = '';
    }
}
function setHidden(flightIndex, segment, seat_row, seat_number, passCount)
{
    passCount = passCount + 1;      //have to add one because of the way arrays are indexed
    //alert('flight' + flightIndex + 'segment' + segment + 'seat' + passCount);
    var object = document.getElementById('flight' + flightIndex + 'segment' + segment + 'seat' + passCount);
    var seat_str = document.getElementById('flight' + flightIndex + 'segment' + segment + 'seat' + passCount).value;
    seat_str = Trim(seat_str);
    if (seat_str == ''){
        object.value = seat_row+" "+seat_number;
    }else{
        object.value = '';
    }
}
function selectSeat(el, flightIndex, segment, seat_row, seat_number,originalClass)
{
    var selectedClass = 'seat_map_icon_selected';
	var element = jQuery(el).children();
	element.removeClass(originalClass);
	element.addClass(selectedClass);
    var selectedSeatIndex = 'none';             //index for seat already selected
    var selectedSeatMapCount = 0;               //count of total seats selected so far for this segment
    var firstSelectableSeatIndex = 'none';      //first available open slot for a seat selection

    //if a seat has been selected for this segment
    if (seatMap[segment].length > 0){
        //loop through total slots available for this segment
        for (i=0; i<totalPassCount; i++)
        {
            //check if seat was already selected
            if (seatMap[segment][i] == (seat_row+seat_number)){
                selectedSeatIndex = i;
            }
            //get total number of seats selected so far
            if ((seatMap[segment][i] != '') && (seatMap[segment][i] != 'Unselected') && (typeof(seatMap[segment][i]) != 'undefined')){
                selectedSeatMapCount++;
            }
            else{
                if (firstSelectableSeatIndex == 'none'){
                    firstSelectableSeatIndex = i;
                }
            }
        }

        //if the given seat was already selected
        if (selectedSeatIndex != 'none')
        {
            setText(segment, seat_row, seat_number, selectedSeatIndex);
            seatMap[segment][selectedSeatIndex] = 'Unselected';
            swapImage(el);
			element.removeClass(selectedClass);
			element.addClass(originalClass);
			var hidden = jQuery('#flight' + flightIndex + 'segment' + segment + 'seat' + (selectedSeatIndex+1));
			hidden.val('');
        }
        //else if there are any slots left to pick more seats
        else if (selectedSeatMapCount < totalPassCount)
        {
            seatMap[segment][firstSelectableSeatIndex] = seat_row+seat_number;
            setText(segment, seat_row, seat_number, firstSelectableSeatIndex);
            swapImage(el);
			var hidden = jQuery('#flight' + flightIndex + 'segment' + segment + 'seat' + (firstSelectableSeatIndex+1));
			hidden.val(seat_row+' '+seat_number);
        }
        //there are no more slots to pick seats
        else
        {
            element.removeClass(selectedClass);
			element.addClass(originalClass);
            alert('You have already selected all your seats for this flight, please deselect a seat to select a new one.');
        }
    }
    //if a seat has not been selected for this seat
    else
    {
        seatMap[segment][0] = seat_row+seat_number;
        setText(segment, seat_row, seat_number, 0);
        swapImage(el);
		var hidden = jQuery('#flight' + flightIndex + 'segment' + segment + 'seat1');
		hidden.val(seat_row+' '+seat_number);
    }

    document.getElementById('seats_selected').value = "yes";
}
function showSeatMap(flightIndex, segRequest, segCount, totalPax, type) {
    segRequest = JSON.stringify(segRequest);
    totalPassCount = totalPax;      //declared globally
    seatMap = new Array();
    for (var i=0; i<segCount; i++){
        seatMap[i] = new Array();
    }
    jQuery.ajax({
        url: 'flight_seatMap.php',
        type: 'POST',
        data: 'segRequest='+segRequest+'&type='+type+'&flightIndex='+flightIndex,
        dataType : 'json',
        beforeSend : function() {
            var contentLoading = '<div id="flightSeatMapLoading">'+
              '<p class="textMediumGrey" style="margin:0;"><b>Retrieving Seat Maps</b><br />This process may take just a few seconds</p>'+
              '</div>';
            jQuery('body').append(contentLoading);
            jQuery('#flightSeatMapLoading').siteshade({
                theme       : 'loader',
                autoOpen	: true,
                dialogScroll: false,
                dialogTop	: 70,
                zIndex      : 701,
                onClose     : function() {
                    jQuery(this).remove();
                }
            });
            seatMapImageSwitch(flightIndex, 1);
            segRequest = JSON.stringify(segRequest);
        },
        success: function(json) {
            var contentMap = '<div id="flightSeatMap">'+json.html+'</div>';
            jQuery('body').append(contentMap);
            jQuery('#flightSeatMap').siteshade({
                theme       : 'content',
                autoOpen	: true,
                dialogScroll: false,
                dialogTop	: 70,
                zIndex      : 701,
                width       : 780,
                onClose     : function() {
                    jQuery(this).remove();
                }
            });
            jQuery('#flightSeatMap').find('#closewindow').click(function(){
                jQuery('#flightSeatMap').siteshade('close');
            });
        },
        complete: function() {
            jQuery('#flightSeatMapLoading').siteshade('close');
            seatMapImageSwitch(flightIndex, 2);
        }
    });
}
function seatMapImageSwitch(flightIndex, intImage) {
    if(intImage == 1){
        jQuery('#smImage_'+flightIndex).hide();
        jQuery('#smImage_'+flightIndex+'Loading').show();
    }else if(intImage == 2){
        jQuery('#smImage_'+flightIndex).show();
        jQuery('#smImage_'+flightIndex+'Loading').hide();
    }
}
function seatMapSegmentSwitch(intSegment, totalSegments) {
    if(totalSegments > 0) {
        for(var i=0; i<totalSegments; i++){
            if(i==intSegment)
                jQuery('#smPod'+i).show();
            else
                jQuery('#smPod'+i).hide();
        }
    }
}
function showFlightRules(rulRequest, fareType) {
    var podOptions = {width:"800px"};
    var content = "<img src=\"//images.bookit.com/3.0/Loading_WhiteBG.gif\" alt=\"Loading\">";
    content += "<p class=\"textMediumGrey\" style=\"margin:0;\">Retrieving Flight Rules.<br>This process may take just a few seconds.</p>";
    content += "<p id=\"hider\" class=\"textMediumGrey\" style=\"position:;margin:0;padding:0px;bottom:0px;width:100%;text-align:center;\"><a href=\"javascript:hideSiteShade();\"><img src=\"//images.bookit.com/3.0/Button_FROM_Hide.png\" alt=\"Hide\" border=0/></a></p>";
    populateShadePod(content, podOptions);
    showSiteShade();
    if(rulRequest != "airline_terms"){
        var rulRequest = JSON.stringify(rulRequest);
    }
    jQuery.ajax({
        url: 'flight_rules.php',
        type: 'POST',
        data: 'rulRequest='+rulRequest+'&fareType='+fareType,
        success: function(t) {
            var container = document.getElementById('flightRulesDiv');
            var opts      = eval("("+t+")");

            populateShadePod(opts["html"], podOptions);
        }
    })
}

function toggleCloseContainer(id){
    jQuery("#id").fadeOut();
}
function showCarRules(rulRequest) {
    var podOptions = {"width":"800px"};
    var content = "<img src=\"//images.bookit.com/3.0/Loading_WhiteBG.gif\" alt=\"Loading\">";
    content += "<p class=\"textMediumGrey\" style=\"margin:0;\">Retrieving Car Rules.<br>This process may take just a few seconds.</p>";
    content += "<p id=\"hider\" class=\"textMediumGrey\" style=\"position:;margin:0;padding:0px;bottom:0px;width:100%;text-align:center;\"><a href=\"javascript:hideSiteShade();\"><img src=\"//images.bookit.com/3.0/Button_FROM_Hide.png\" alt=\"Hide\" border=0/></a></p>";
    populateShadePod(content, podOptions);
    showSiteShade();
    var rulRequest = JSON.stringify(rulRequest);

    jQuery.ajax({
        url: 'car_rules.php',
        type: 'POST',
        data: 'rulRequest='+rulRequest,
        success: function(t) {
            var container = document.getElementById('carRulesDiv');
            var opts      = eval("("+t+")");

            //showFlightRuleSiteShade(opts["html"]);
            populateShadePod(opts["html"], podOptions);
        }
    })
}
function toggleSlideFeaturedDestinations(item){
    item = item.parentNode;
    if(item.className.match("closed")){
        item.className = item.className.replace("closed","open");
        //new Effect.BlindDown(item.childNodes[1],{duration:1.0,scaleFrom:1,scaleTo:100});
    }else if(item.className.match("open")){
        item.className = item.className.replace("open","closed");
        //new Effect.BlindUp(item.childNodes[1],{duration:1.0,scaleFrom:100,scaleTo:1});
    }
}
function washHands(txt){
    return txt.replace(/^[^{]*/,"");
    //return txt;

}
//START DESTINATION DROPDOWN JS
function mouseOutDestinationDropDown(e){
    if (!e) var e = window.event;
    var tg = (window.event) ? e.srcElement : e.target;
    if (tg.nodeName != 'DIV') return;
    var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
    while (reltg != tg && reltg.nodeName != 'BODY')
        reltg= reltg.parentNode
    if (reltg== tg) return;
    document.getElementById('destinationDropDown').style.display='none';
    document.getElementById('destinationTab').className= 'nav_tabs_destinationsOff';
}
function showDestinationDropDown(){
    var container = document.getElementById("destinationDropDown");
    if(container.style.display == "none"){
        document.getElementById('destinationDropDown').style.display='block';
        document.getElementById('destinationDropDown').onmouseout= mouseOutDestinationDropDown;
        document.getElementById('destinationTab').className= 'nav_tabs_destinationsOn';
    }else{
        document.getElementById('destinationDropDown').style.display='none';
        document.getElementById('destinationTab').className= 'nav_tabs_destinationsOff';
    }
}
//END
function showNewsletterShade(){

    var content = "<div id='newsletterShadePod' class='text' style='overflow:visible;'>";

    content += '';
    content += "<div id='shade_newsletter_container' style='text-align:center;'><div id='shade_newsletter_signup' style='display:block;'><div id='shade_newsletter_header'><b>FREE!</b> Sign up to get first access to exclusive offers via email and the Best of BookIt.com<sup>&reg;</sup> weekly newsletter.</div><div id='shade_newsletter_input'><input onclick='textClear(this);' id='shade_newsletterInput_signup' value='Enter Your Email Address...' class='text' style='width: 240px; '/></div><div id='shade_newsletter_button'><a href=\"javascript:newsletterSignup('shade_','signup')\" class='SignUpLarge'></a><a style='cursor:pointer;' onclick='javascript: jQuery(\"#dialogueHolder\").dialog(\"close\");' class='NoThanksLarge'></a></div></div>";
    //content += "<div id='shade_newsletter_confirm' class='text' style='display:none;'><span id='shade_newsletter_email' style='display:block; height:35px;'></span><span id='shade_newsletter_change' style='display:none; height:35px;'><strong>Your Email:</strong><br /><input onclick='textClear(this);' id='shade_newsletterInput_confirm_signup' value='' class='text' style='width: 160px;'/></span><span class='text'><strong>Airport:</strong> <a href='javascript:changeEmailLocation(\"shade_\");'>Change</a><br /><div id='shade_newsletter_fromLocation' style='float:left;display:block;'></div><div id='shade_newsletter_fromLocation_change' style='float:left;display:none;'></div><a href='javascript:newsletterSignup(\"shade_\",\"confirm_signup\")' class='ConfirmLarge'></a></span></div>";

        //the confirmation
    content += '<div id="shade_newsletter_confirm" class="text" style="display:none; width:400px;">';
    content += '<div style="font-weight:bold; text-align:left; float:left; width:165px;">Your Email Address:*<br /><input type="text" id="shade_newsletter_email" value="" class="text" style="width: 155px; "/><input type="hidden" id="shade_newsletter_originalEmail" value=""/></div>';
    content += '<div style="font-weight:bold; text-align:left; float:left; width:110px;">First Name<br /><input id="shade_newsletter_firstName" class="text" style="width: 100px; "/></div>';
    content += '<div style="font-weight:bold;">Last Name<br /><input id="shade_newsletter_lastName" class="text" style="width: 100px; "/></div>';
    content += '<div style="font-weight:bold; text-align:left; float:left; margin-top:10px; width:210px;"><div>Preferred Airport<br /><input type="text" id="shade_newsletter_fromLocation" class="text" value="" style="width: 200px; position:relative; "/><input type="hidden" id="shade_newsletter_originalFromLocation" value=""/></div></div>';
    content += '<div style="font-weight:bold; text-align:left; margin-top:10px;">Zip / Postal Code<br /><input id="shade_newsletter_zip" class="text" style="width: 175px; "/></div>';
    content += '<div style="font-weight:bold; text-align:right; margin-top:10px; padding-right:10px;"><img border="0" alt="Join" style="cursor: pointer;" onclick="newsletterSignup(\'shade_\',\'confirm_signup\');" src="//images.bookit.com/3.0/Button_FROM_Save.png"/></div>';
    content += '<div id="shade_newsletter_fromLocation_change" style="float:left;display:none;"></div>';
    content += '</div>';

    content += "<div id='shade_newsletterMsg' class='text' style='display:none;'></div></div>";
    content += "<div id='shade_newsletterPolicy' class='textGreySmall' style='padding-top:10px;'>BookIt.com<sup>&reg;</sup> values your privacy and the privacy of your email. We NEVER solicit or sell your email to anyone, ever. You may unsubscribe from our newsletter at any time.</div>";
    content += "</div>";

    document.getElementById('dialogueHolder').innerHTML = content;
    /**/
    jQuery("#dialogueHolder").dialog({
    bgiframe: true,
            width: 425,
            modal: true,
            resizable: false,
            draggable: false,
            title: '<h3 class="textLargestBold"><span style="left: 0pt; width: 100%; text-align: center;">Best of BookIt.com<sup>&reg;</sup> Newsletter<br/><font class="textSmallBold">The Best of BookIt.com<sup>&reg;</sup> delivered every week to your inbox.</font></span></h3>',
            close: function(){
                    jQuery("#dialogueHolder").dialog('destroy');
            }


    });

}

function changeEmail(prefix){
    if(!prefix){prefix="";}
    //document.getElementById(prefix+'newsletter_email').style.display = "none";
    //document.getElementById(prefix+'newsletter_change').style.display = "block";
}

function changeEmailLocation(prefix){
    if(!prefix){prefix="";}
    //document.getElementById(prefix+'newsletter_fromLocation').style.display = "none";
    //document.getElementById(prefix+'newsletter_fromLocation_change').style.display = "block";
}

function showMsgContainer(){ }

function newsletterConfirmDisplay(prefix,response,type){
    if(!prefix){prefix="";}
    jQuery("#" + prefix+'newsletter_email').val(response[type+'_email']);
    jQuery("#" + prefix+'newsletter_originalEmail').val(response[type+'_email']);
    jQuery("#" + prefix+'newsletter_fromLocation').val(response['more']['demographic'][type+'_fromLocation']);
    jQuery("#" + prefix+'newsletter_originalFromLocation').val(response['more']['demographic'][type+'_fromLocation']);
    jQuery("#" + prefix+'newsletter_fromLocation_change').html(response['more']['demographic']['fromLocation']);
    jQuery("#" + prefix+'newsletter_signup').hide();
    jQuery("#" + prefix+"newsletter_confirm").fadeIn();
}

function newsletterSignup(prefix,type,resubscribe){
    jQuery("#"+prefix+"newsletterMsg").hide();
    if(!prefix){prefix="";}
    var fromlocation;
    var msgContainer    = jQuery("#" + prefix+'newsletterMsg');
    var signupObj       = jQuery("#" + prefix+'newsletter_signup');
    var more = {};
    more.demographic = {};
    more.extra = {};
    var emailAddress_signup = jQuery("#"+ prefix+'newsletterInput_signup').val();

    //var emailAddress_confirm_signup = document.getElementById(prefix+'newsletterInput_confirm_signup').value;
    if(type == "confirm_signup"){
        jQuery("#" + prefix+'newsletter_signup').css('display','none');
                //get input information for name and zip code demographic
        more.demographic.firstName = jQuery("#" + prefix+'newsletter_firstName').val();
        more.demographic.lastName = jQuery("#" + prefix+'newsletter_lastName').val();
        more.demographic.zip = jQuery("#"+ prefix+'newsletter_zip').val();
                //check that the from location and email havent changed
        var newFromLocation     = jQuery("#" + prefix+'newsletter_fromLocation').val();
        var originalFromLocation = jQuery("#" + prefix+'newsletter_originalFromLocation').val();
        var newEmail    = jQuery("#" + prefix+'newsletter_email').val();
        var originalEmail = jQuery("#" + prefix+'newsletter_originalEmail').val();
        var hasChangedLocation  = false;
        var hasChangedEmail = false;
                var fade = true;
                more.demographic.fromLocation = newFromLocation;
               if(newFromLocation != originalFromLocation){
            hasChangedLocation = true;
        }
        if(newEmail != originalEmail){
            more.extra.new_email = newEmail;
            hasChangedEmail = true;
        }
        /*Nothing Changed and they havent added optional information So Show User Confirmation Message*/
        if(hasChangedLocation == false && hasChangedEmail == false && more.demographic.firstName=='' && more.demographic.lastName=='' && more.demographic.zip==''){
            jQuery('#'+prefix+'newsletterMsg').html('<strong>Almost Done!</strong><br />You have been sent an email requiring you to verify your email is valid.<br />Simply click the link in the email to complete your newletter sign up.');
            jQuery("#" + prefix+'newsletter_confirm').hide();
            jQuery("#"+ prefix+'newsletterMsg').fadeIn();
            return;
        }
    }
    else if(type == "signup"){
        var myFromLocations = getLocations();
        more.demographic.fromLocation = myFromLocations[0].locationId;
    }
    else if(type == "resubscribe_signup"){
        if(resubscribe == 'true'){
            var myFromLocations = getLocations();
            msgContainer.style.display = 'none';
            more.demographic.fromLocation = myFromLocations[0].locationId;
            more.extra.state = "active";
        }
        else{
            jQuery("#msgContainer").fadeOut();
            jQuery("#" + prefix+'newsletter_signup').fadeIn();
            return;
        }
    }
    var jsonMore = escape(JSON.stringify(more));
    jQuery.ajax({
        url: 'ajaxRedirect.php',
        type: 'POST',
        dataType: 'json',
        data: ({email: emailAddress_signup,
                prefix: prefix,
                action: 'server_newsletter.php',
                type: type,
                more: jsonMore}),
        success: function(response){
            if(response['status'] == "true"){
                if(type == 'signup'){
                    if(response['condition'] == "unsubscribed"){
                        msgContainer.innerHTML = response['msg'];
                        jQuery("#" + prefix+'newsletter_signup').hide();
                        //Effect.Appear(msgContainer,{duration:1.0});
                        jQuery("#msgContainer").fadeIn();
                    }else {
                        newsletterConfirmDisplay(prefix,response,type);
                    }
                }
                else if(type == "resubscribe_signup"){
                    console.debug(prefix);
                    newsletterConfirmDisplay(prefix,response,type);
                }
                else if(type == "confirm_signup"){
                    jQuery("#"+prefix+'newsletter_confirm').hide();
                    jQuery("#"+ prefix+'newsletterMsg').html('<strong>Almost Done!</strong><br />You have been sent an email requiring you to verify your email is valid.<br />Simply click the link in the email to complete your newletter sign up.');
                    jQuery("#"+ prefix+'newsletterMsg').fadeIn();
                }
                else{
                    jQuery(prefix+'newsletter_confirm').hide();
                    msgContainer.innerHTML = response['msg'];
                    jQuery("#msgContainer").fadeIn();
                    return;
                }
            }
            else{
                if(response['msg']=='You are already an existing subscriber.'){ //if they are an exsisting subscriber show them the link to modify their settings
                    fade = false;
                    response['msg']+= '<br /><a href="http://lyrvs27.lyris.co.uk/bookit/confirm.aspx?e='+ emailAddress_signup +'&h='+ response['uId'] +'&l='+ response['mlId'] +'" target="_blank">Update your preferences.</a>'
                }
                jQuery("#" + prefix+'newsletterMsg').html("<font class='errmsg'>" + response['msg'] + "</font>");
                jQuery("#" + prefix+'newsletterMsg').show('slow');
            }
        }
    });
    /*
    jQuery.ajax({
        url: 'ajaxRedirect.php',
        type: 'POST',
        data: ({ email : emailAddress_signup,
            prefix : prefix,
            action : 'server_newsletter.php',
            more : jsonMore
        }),
        dataType: 'html',
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        },
        success: function(t) {
        }
    });
        */
}


function handleSliderToDetailsShade(promoId,trigger){

     if(trigger == "open"){

        var totalSliders = document.getElementsByClassName('Slider_Container');
        var numSliders   = totalSliders.length;

        for(var i=0;i < numSliders;i++){
            if(document.getElementById('Slider_Container'+promoId+'_'+i)){
                var slider      = document.getElementById('Slider_Container'+promoId+'_'+i);
                var container   = document.getElementById('packageDetailsMainHotelImgContainer');

                var parent      = slider.parentNode;
                var placeHolder = document.createElement('div');

                placeHolder.setAttribute('id','sliderPlaceHolder');
                parent.appendChild(placeHolder);
                container.appendChild(slider);

                break;
            }
        }
    }
    else{


        var currParent          = document.getElementById('shade_pod_container');
        var slider              = jQuery(currParent).children('.Slider_Container');
        var placeHolder         = document.getElementById('sliderPlaceHolder');
        if(placeHolder && slider && slider.length){
            var parentPlaceHolder   = placeHolder.parentNode;

            parentPlaceHolder.removeChild(placeHolder);
            parentPlaceHolder.appendChild(slider[0]);
        }
        else if(placeHolder && !slider){
            var parentPlaceHolder   = placeHolder.parentNode;
            parentPlaceHolder.removeChild(placeHolder);
        }
    }

}
function travelPlannerSiteShadePopUp(opts){

    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}

    var TP              = document.getElementById('TP_Container');
    var TPheader        = document.getElementById('tp_header');
    var TPfooter        = document.getElementById('TP_Row_Bottom');
    var pod             = document.getElementById('shade_pod');
    var calendar        = document.getElementById('site_calendar');
    var tripType        = document.getElementById('tripType');

    var TPToPackage     = document.getElementById('TpToPackageContainer');
    var TPToHotel       = document.getElementById('TpToHotelContainer');
    var TPToFlight      = document.getElementById('TpToFlightContainer');
    var TPTpCar         = document.getElementById('TpToCarContainer');


    var podMarginTop    = pod.style.marginTop;

    var cssString       = "left:0px;width:250px;z-index:1000;position:absolute;display:block;top:-25px;";
    var floatingTP      = document.createElement('div');


    /*  this is already done for us if we are on a property pgae, so no reason to replace html */
    if(opts.hotelDisplayName && document.getElementById('is_property_page').value == "false"){
        origTPFormInputs.hotelHtml      = TPToHotel.innerHTML;
        origTPFormInputs.packageHtml    = TPToPackage.innerHTML;
        /* note: we need to make id's dynamic ....move this to shell? */
        TPToHotel.innerHTML     = "<div id='toAreaLocation' style='"+(tripType.value == 'hotel' ? "display:block" : "display:none")+"'><b>"+ opts.hotelDisplayName +"</b>&nbsp;(and vicinity)<input type='hidden'  name='hotelTo' value='"+ opts.areaName +"'><input type='hidden' id='is_property_page' value='true'><input type='hidden' id='is_floatingTP' value='true'><input type='hidden' id='toAreaLocation_property' value='"+ opts.areaName +"'><input type='hidden' name='hotelId' value='"+opts.hotelId +"'><input type='hidden' name='hotelVendorId' value='"+opts.hotelVendorId+"'></div>";
        TPToPackage.innerHTML   = "<div id='toPackageLocation' style='" + (tripType.value == "package" ? "display:block;" : "display:none;") + "'><b>"+ opts.hotelDisplayName +"</b>(and vicinity)<input type='hidden' name='ptl' id='toPackageLocationCode_property' value='"+opts.toLocation+"'><input type='hidden' name='toPackageAreaId' id='toPackageAreaId' value='"+opts.areaId+"'><input type='hidden' name='hotelId' value='"+opts.hotelId +"'><input type='hidden' name='hotelVendorId' value='"+opts.hotelVendorId+"'></div>";
    }

    if(window.ActiveXObject){
        floatingTP.style.setAttribute('cssText',cssString);
        floatingTP.setAttribute('className','text');
    }else{
        floatingTP.setAttribute('style',cssString);
        floatingTP.setAttribute('class','text');
    }


    floatingTP.setAttribute('id','floatingTP');
    floatingTP.appendChild(TPheader);
    floatingTP.appendChild(TP);
    floatingTP.appendChild(TPfooter);

    document.getElementById('Shade_Master_Container').appendChild(floatingTP);

    if(opts.initTpHotel == "true")
        toggleTpTab('tpHotelTab');
    else
        toggleTpTab('tpPackageTab');

}
function travelPlannerSiteShadeRemovePopUp(action){
    var floatingTP = document.getElementById('floatingTP');
    if(floatingTP){
        var TPHeaderHome = document.getElementById('TPHeaderShellContainer');
        var TPBodyHome   = document.getElementById('TPBodyShellContainer');
        var TPFooterHome = document.getElementById('TPFooterShellContainer');
        var TP           = document.getElementById('TP_Container');
        var TPheader     = document.getElementById('tp_header');
        var TPfooter     = document.getElementById('TP_Row_Bottom');

        var TPToPackage     = document.getElementById('TpToPackageContainer');
        var TPToHotel       = document.getElementById('TpToHotelContainer');
        var TPToFlight      = document.getElementById('TpToFlightContainer');
        var TPTpCar         = document.getElementById('TpToCarContainer');


        /* if property page, the original inputs are as is */
        if(action != "search" && document.getElementById('is_floatingTP')){
            TPToHotel.innerHTML     = origTPFormInputs.hotelHtml;
            TPToPackage.innerHTML   = origTPFormInputs.packageHtml;
        }
        TPHeaderHome.appendChild(TPheader);
        TPBodyHome.appendChild(TP);
        TPFooterHome.appendChild(TPfooter);

        if (floatingTP && document.getElementById(floatingTP.parentNode) == document.getElementById('Shade_Master_Container'))
            document.getElementById('Shade_Master_Container').removeChild(floatingTP);
    }
}
function showItemDetails(itemId,itemName){
    //itemName = "testing";//itemName.replace();
    var opt = {
        method: 'get',
        parameters: 'plaintxt=true&action=server_itemtooltip.php&itemId=' + itemId,
        // Handle successful response
        onSuccess: function(t) {
            var html    = t.responseText;//t.responseXML.documentElement.firstChild.textContent;
            var opt     = {"width":"715px",header:itemName,close:true};
            populateShadePod(html,opt);
            showSiteShade();

        },
        // Handle 404
        on404: function(t) {
            //alert('Error 404: location "' + t.statusText + '" was not found.');
        },
        // Handle other errors
        onFailure: function(t) {
            //alert('Error ' + t.status + ' -- ' + t.statusText);
        }
    };
    new Ajax.Request('ajaxRedirect.php',opt);
}
function customizeFromLength(length, promo) {
    try {
        try {
            if (checkFunctionExists(homepageCustomizeLength))
                homepageCustomizeLength(length, promo);
            return;
        }
        catch(e) {}

        try {
            if (checkFunctionExists(propertyCustomizeLength))
                propertyCustomizeLength(length, promo);
            return;
        }
        catch(e) {}

        try {
            if (checkFunctionExists(hotelCustomizeLength))
                hotelCustomizeLength(length, promo);
            return;
        }
        catch(e) {}

        try {
            if (checkFunctionExists(packageCustomizeLength))
                packageCustomizeLength(length, promo);
            return;
        }
        catch(e) {}

        try {
            if (checkFunctionExists(siteCustomizeLength))
                siteCustomizeLength(length, promo);
            return;
        }
        catch(e) {}

        throw new Exception("Unable to find function");
    }
    catch(e) {
        console.debug("Customize from length unable to find function");
    }
}
function changeCalendarLength(json, length) {
    try {
        try {
            if (checkFunctionExists(showVariantPackageDetails))
                showVariantPackageDetails(json, length);
            return;
        }
        catch(e) {}

        throw new Exception("Unable to find function");
    }
    catch(e) {
        console.debug("Change calendar length unable to find function");
    }
}
function checkFunctionExists(func) {
    return (func && typeof(func) == "function");
}

/****** VARIANT TESTING ******/

var showVariantPackageDetailsMonthMarker;
var showVariantPackageDetailsParameters;
function showVariantPackageDetails(opts, numDays){
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}
    if (numDays && numDays >= 3 && numDays <= 7)
        opts.lengthOfStay = numDays;
    var txt = "<div style=\"text-align:center; height: 150px; margin-top: 50px;\"><embed type=\"application/x-shockwave-flash\" src=\"//images.bookit.com/3.0/Flash/loader.swf\" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"55\" width=\"55\" /><p class=\"textSmallBold\" style=\"padding:0;margin:0;\">loading package</p></div>";
    var cal1 = document.getElementById("packageDisplayCalendar1");
    var cal2 = document.getElementById("packageDisplayCalendar2");
    var flexCalMonth = document.getElementById("flexDateCalendarMonth");

    if(opts.arrivalDate){
        var months = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
        var depDate = new Date();
        var arrDate = new Date();
        var calParts = opts.arrivalDate.match(/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/);
        if(calParts){
            calParts[2] = calParts[2].replace(/^0([0-9]+)/,"$1"); //08 -> 9
            calParts[3] = calParts[3].replace(/^0([0-9]+)/,"$1"); //08 -> 8
            depDate.setFullYear(calParts[1]);
            arrDate.setFullYear(calParts[1]);
            depDate.setMonth(calParts[2]-1); // setMonth uses months 0-11
            arrDate.setMonth(calParts[2]-1); // setMonth uses months 0-11
            depDate.setDate(parseInt(calParts[3])+parseInt(opts.lengthOfStay));
            arrDate.setDate(calParts[3]);
        }
        //var header = opts.lengthOfStay+" Night Packages <b>FROM</b> "+opts.fromLocationCityName+" <b>to</b> "+opts.toLocationCityName+"<br>"+months[arrDate.getMonth()]+" "+arrDate.getDate()+" - "+months[depDate.getMonth()]+" "+depDate.getDate()+", "+depDate.getFullYear();
        //var header = opts.lengthOfStay+" Night Package w/ Air<br />FROM "+opts.fromLocationCityName+" <b>("+opts.fromLocation+")</b> to "+opts.toLocationCityName+" <b>("+opts.toLocation+")</b> ";
        var podOptions = {"width":"889px","marginLeft":"80px","close":true,"centerHeader":true};
        if(opts.noMove){
            podOptions.noMove = opts.noMove;
        }
        var rightNowTodayYesToday = new Date();
        if(!opts.month){
            opts.month = (arrDate.getMonth()-rightNowTodayYesToday.getMonth());
        }
    }
    else{
        var header = "";
        var podOptions = {"width":"889px","marginLeft":"80px","close":true,"header":header,"centerHeader":true};
    }
    opts.checkAll = (opts.checkAll) ? "yes" : "no";

    if(opts.getCal){
        cal1.innerHTML = txt;
        cal2.innerHTML = txt;
        showVariantPackageDetailsMonthMarker = opts.month;
    }else if(opts.getCal1){
        if(showVariantPackageDetailsMonthMarker <= 0){return false;}
        cal2.innerHTML = cal1.innerHTML;
        cal1.innerHTML = txt;
        //flexCalMonth.value--;
        showVariantPackageDetailsMonthMarker--;
    }else if(opts.getCal2){
        if(showVariantPackageDetailsMonthMarker >= 8){return false;}
        cal1.innerHTML = cal2.innerHTML;
        cal2.innerHTML = txt;
        //flexCalMonth.value++;
        showVariantPackageDetailsMonthMarker++;
    }else{
        /**
         * this is used by a condition in populateShadePod() so the margin top is not set to viewing plane, instead it forces
         * the pod to show at top of page. At the end of this function we also have a window.scrollTo(0,0) so that viewing plane is forced to top also.
         * @author Antonio Mercado
         */
        podOptions.fromPackageDetails = true;
        //populateShadePod(txt,podOptions);
        //if(!opts.override){
        //  showSiteShade();
        //}
        showVariantPackageDetailsMonthMarker = opts.month;
    }
    var opt = {
        method: 'get',
        // Handle successful response
        onSuccess: function(t) {
            document.getElementById("hotelDetailsPackage").innerHTML = t.responseText;
            //populateShadePod(t.responseText,podOptions);
            var monthMarkerChanged = document.getElementById("showPackageDetailsMonthMarkerChanged");
            if(monthMarkerChanged){
                showVariantPackageDetailsMonthMarker = monthMarkerChanged.innerHTML-1;
            }
            //if(opts.getLO == 'true'){
            //  handleSliderToDetailsShade(opts.promoId,"open");
            //}
        },
        // Handle 404
        on404: function(t) {
            alert('Error 404: location "' + t.statusText + '" was not found.');
        },
        // Handle other errors
        onFailure: function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
    }
    if(opts.getCal1 || opts.getCal2){
        opt.parameters = showVariantPackageDetailsParameters;
    }else{
        var action;

        action = "server_packagedetailsvariant.php";

        opt.parameters = 'toLocation='+opts.toLocation+"&toLocationCityName="+opts.toLocationCityName+'&fromLocation='+opts.fromLocation+"&fromLocationCityName="+opts.fromLocationCityName+"&lengthOfStay="+opts.lengthOfStay+"&arrivalDate="+opts.arrivalDate+"&hotelUniqueId="+opts.hotelUniqueId+"&month="+opts.month + '&promoId=' + opts.promoId + "&promoMinValidDate=" + opts.promoMinValidDate + "&promoMaxValidDate=" + opts.promoMaxValidDate + "&hotelMarketingStatement=" +opts.hotelMarketingStatement+'&checkAll='+opts.checkAll+'&action='+action+'&getLO=' +opts.getLO + '&hotelId=' + opts.hotelId + '&hotelVendorId=' + opts.hotelVendorId;
        showVariantPackageDetailsParameters = opt.parameters;
    }
    if(opts.getCal){ // select menu
        getVariantPackageCalendar(1,opt);
        opts.month++;
        opt.parameters = opt.parameters.replace(/&month=([0-9]+)&/,"&month="+opts.month+"&");
        getVariantPackageCalendar(2,opt);
    }else if(opts.getCal1){ // left arrow
        opt.parameters = showVariantPackageDetailsParameters;
        opt.parameters = opt.parameters.replace(/&month=([0-9]+)&/,"&month="+showVariantPackageDetailsMonthMarker+"&");
        getVariantPackageCalendar(1,opt);
    }else if(opts.getCal2){ // right arrow
        opt.parameters = showVariantPackageDetailsParameters;
        opt.parameters = opt.parameters.replace(/&month=([0-9]+)&/,"&month="+(showVariantPackageDetailsMonthMarker+1)+"&");
        getVariantPackageCalendar(2,opt);
    }else{ // show everything
        if(window.location.href.match(/^http:\/\/from[^\/]*\/[a-zA-Z0-9]*\/$/)){
            //new Ajax.Request('/ajax/server/server_packagedetails.php', opt); deprecated
            new Ajax.Request('ajaxRedirect.php', opt);
        }else if(window.location.href.match(/^http:\/\/from/)){
            //new Ajax.Request('ajax/server/server_packagedetails.php', opt); deprecated
            new Ajax.Request('ajaxRedirect.php', opt);
        }else{
            new Ajax.Request('ajaxRedirect.php', opt);
        }
    }

    //window.location.hash = 'hotelDetailsCalendar';
    window.scrollTo(0, 575);

    // Make the travel planner change to the package tab
    toggleTpTab('tpPackageTab');
}
function getVariantPackageCalendar(num,opt){
    opt.parameters += "&getCal=true";
    opt.onSuccess = function(t){
        document.getElementById("packageDisplayCalendar"+num).innerHTML = t.responseText;
    }
    if(window.location.href.match(/^http:\/\/from[^\/]*\/[a-zA-Z0-9]*\/$/)){
        //new Ajax.Request('/ajax/server/server_packagedetails.php', opt); deprecated
        new Ajax.Request('ajaxRedirect.php', opt);
    }else if(window.location.href.match(/^http:\/\/from/)){
        //new Ajax.Request('ajax/server/server_packagedetails.php', opt); deprecated
        new Ajax.Request('ajaxRedirect.php', opt);
    }else{
        new Ajax.Request('ajaxRedirect.php', opt);
    }
}

/****** END VARIANT TESTING ******/

function showPackageDetailsSlide(page,opts,url,unescapeOpts){

    if(unescapeOpts){opts = unescape(opts).replace(/\&quot;/g,"\"");}
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}
    opts.width = "390px";
    travelPlannerSiteShadeRemovePopUp('search');

    var txt = '<div id="packageDetailsSlideContainer"><div id="packageDetailsSlideHeader"><embed type=\"application/x-shockwave-flash\" src=\"//images.bookit.com/3.0/Flash/loader.swf\" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"55\" width=\"55\" /></div>';
    txt += '<div id="packageDetailsSlide0" class="textMediumGrey"><b>BookIt.com&#174;</b> <b>FROM&#153; Technology</b><br />is <b>Verifying Pricing &#38; Availability</b>';
    txt += '<br /><b>'+opts.nights+' Night Package at<br />'+opts.hotelName+'</b><br />Beginning '+opts.arrivalDate+'</div>';
    txt += '<div id="packageDetailsSlide2" style="display:none;" class="textMediumGrey">&#8730; Depart FROM '+opts.fromLocationCityName+'<br />&#160;&#160;&#160;Arrive at '+opts.toLocationCityName+'</div>';
    txt += '<div id="packageDetailsSlide3" style="display:none;" class="textMediumGrey">&#8730; Updating Package Pricing</div>';
    txt += '<div id="packageDetailsSlide4" style="display:none;" class="textMediumGrey">&#8730; Loading Comparison Airports</div>';
    txt += '<div id="packageDetailsSlide5" style="display:none;" class="textMediumGrey">&#8730; Loading Optional Flight Itineraries</div>';
    txt += '<div id="packageDetailsSlide6" style="display:none;" class="textMediumGrey">&#8730; Searching Other Available Offers</div>';
    txt += '<div id="packageDetailsSlide7" style="display:none;" class="textMediumGrey">&#8730; Completing Verification</div>';
    txt += '</div>';


    switch(page){
        case 0:
            populateShadePod(txt,opts);
            if (jQuery("#site_shade1") && jQuery("#site_shade1").css('display') == "none")
                showSiteShade();

            if(url){window.location = unescape(url);}
            setTimeout('showPackageDetailsSlide(2)',2000);
            break;
        case 1:
            //Effect.Appear('packageDetailsSlide1',{'queue':'end'});
            break;
        case 2:
            jQuery('#packageDetailsSlide2').fadeIn();
            setTimeout('showPackageDetailsSlide('+(page+1)+')',3000);
            break;
        case 3:
            jQuery('#packageDetailsSlide3').fadeIn();
            setTimeout('showPackageDetailsSlide('+(page+1)+')',3000);
            break;
        case 4:
            jQuery('#packageDetailsSlide4').fadeIn();
            setTimeout('showPackageDetailsSlide('+(page+1)+')',3000);
            break;
        case 5:
            jQuery('#packageDetailsSlide5').fadeIn();
            setTimeout('showPackageDetailsSlide('+(page+1)+')',3000);
            break;
        case 6:
            jQuery('#packageDetailsSlide6').fadeIn();
            setTimeout('showPackageDetailsSlide('+(page+1)+')',3000);
            break;
        case 7:
            jQuery('#packageDetailsSlide7').fadeIn();
            break;
    }
}

function populateShadePod(content,opts,trigger){
    var footerClose = "";
    if(!opts){opts = {};}else if(typeof(opts)=="string"){opts = eval("("+opts+")");}
    if(!opts.width){opts.width = "390px";}
    if(!opts.marginLeft){opts.marginLeft = "";}

    if(opts.close){
        content += "<a href=\"javascript:hideSiteShade();\" class=\"BTN_close\" style=\"position:absolute; top:5px; right:5px;\"><img class=\"close\" src=\"//images.bookit.com/3.0/Uni_Trans.gif\" border=\"0\" height=\"17\" width=\"51\" alt=\"Close\"/></a>";
    }
    if(!opts.noHide){
        footerClose = "<a id=\"closewindow\" href=\"javascript:hideSiteShade();\" class='BTN_close' style='float:none; display: inline;'><img src=\"//images.bookit.com/3.0/Uni_Trans.gif\" border=\"0\" class=\"closeBtn\" height=\"17\" width=\"51\" alt=\"Close\"/></a>";
    }

    if(opts.header){
        var header = "";
        header += "<h3 class=\"textLargestBold\">";
        if(opts.headerImg){
            header += "<img src=\"//images.bookit.com/3.0/Pod_Header_Image_glasses.png\" alt=\"";
            if(opts.headerImgAlt){
                header += opts.headerImgAlt;
            }
            header += "\" border=\"0\">";
        }
        if(opts.headerImgSrc){
            header += "<img src=\"";
            header += opts.headerImgSrc;
            header += "\" alt=\"";
            if(opts.headerImgAlt){
                header += opts.headerImgAlt;
            }
            header += "\" border=\"0\">";
        }
        header += "<span style=\"";
        if(opts.centerHeader){
            header += "left:0;width:100%;text-align:center;";
        }else if(opts.leftHeader){
            var tmp = "left:" + opts.leftHeader + ";";
            header += tmp;
        }
        header += "\">";
        header += opts.header;
        header += "</span>";
        header += "</h3>";
        content = header+content;
    }

    try{
        if(trigger=='shadePodGallery'){
            var shadePodContent         = document.getElementById('shade_pod_content');
            globalContent.shadePodContent = shadePodContent.innerHTML ;
            shadePodContent.update("");
            //jQuery('#shade_pod_container').css('width 710px'); need to fix
            //jQuery('#shade_pod_container').css('margin-Left' ''); need to fix
            jQuery('#floatingTP').hide();
            shadePodContent.update(content+footerClose);
            var closeShadePod = document.getElementById('shade_pod_content').getElementsByClassName('closeBtn');
            for(var i=0;i<closeShadePod.length;i++){
                var closeParent = closeShadePod[i].parentNode;
                closeParent.setAttribute('href',"javascript:hideSiteShade('shadePodGallery');")
            }
        }else{
            jQuery("#shade_pod_content").html(content+footerClose);

            jQuery("#shade_pod_container").css('width', opts.width);
            jQuery("#shade_pod_container").css('marginLeft', opts.marginLeft);
        }
    }
    catch (e){console.debug(e.getMessage);};

    if(!opts.noMove){
        var pod = document.getElementById("shade_pod");
        pod.style.position = "absolute";
        pod.style.top = "0px";
        var XY = getScrollXY();
        if(!opts.fromPackageDetails)
            pod.style.marginTop = (50+XY[1])+"px";
        else
            pod.style.marginTop = "30px";

    }

    resizeSiteShade();
}
function toggleSelectedV2(obj,levelsUp){

    var objectToSelect;
    var topLevelParent;

    if(typeof(obj) == "string")
        objectToSelect = $(obj);
    else
        objectToSelect = obj;


    if(!objectToSelect)
        return false;

    topLevelParent = objectToSelect.parentNode;

    for(i=1;i<=levelsUp;i++){
        topLevelParent = topLevelParent.parentNode;
    }

    var selectedChild = $(topLevelParent).descendants();


    for(i=0;i<selectedChild.length;i++){
        if(selectedChild[i].hasClassName('selected'))
            selectedChild[i].className = "unselected";
    }

    objectToSelect.className = "selected";


}

var currentTpAnytimeId = "";
function travelPlannerAnytimeOn(opts,id,b){
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}

    // If current isn't the same, turn it off so it gets turned back on tomorrow
    if (currentTpAnytimeId != id) {
        travelPlannerAnytimeOff();
        currentTpAnytimeId = id;
    }

    // Check to see if we already have the Travel Planner floating somewhere.
    var floatingTP = jQuery('#floatingTP');

    if(floatingTP.length > 0){
        travelPlannerAnytimeOff();
    }else{
        // Set the Variables, and all the elements of the travel planner
        // Because it's a class we have to get the first class instance.
        var TP              = jQuery('.TP:eq(0)');
        var TPFormContainer = jQuery('#TP_FORM_CONTAINER');

        var oldFromLocation = jQuery('#fromLocation').val();
        var oldFD = jQuery('#fd').val();
        var oldTD = jQuery('#td').val();
        var selectedCheckbox = jQuery("#hotelFlightPackageOpt").attr('checked') ? "hotelFlightPackageOpt" : "tp_radio_f_h_c";

        //var podMarginTop  = pod.style.marginTop;


        // Create new floatingTP div (this time it will be position correctly!) ~ JP
        // Id, will always and should be a single instance. Also make sure it is initially hidden
        var container = '<div id="floatingTP" style="display:none; margin-top: -25px"></div>';

        // Add it to the dom and append body so we can position it anywhere without issues.
        jQuery('body').append(container);

        // Get our newly appended floating tp and create a jquery object out of it
            container = jQuery('#floatingTP');

        // Cta should be an id, frankly, it should be the element passed in referencing this. JP
        var cta = jQuery('[id="'+id+'"]');

        // Our cta exists
        if(cta.length > 0) {

            // Now get the position and dimensions of the cta
            var cta_height = cta.height();
            var cta_width = cta.width();

            var cta_offset = cta.offset();
            var left = cta_offset.left;
            var top = cta_offset.top + cta_height; // add height to top b/c we display it below ctas

            // Hide the tabs on the tp
            TP.next('div').css('margin-top','216px').end().find('#TP_Tabs').hide();

            // Add the travel planner to the floating tp element
            container.append(TP);

            // Now get the floating tp position and dimensions
            var tp_width = container.width();
            var tp_offset = container.offset();
            var tp_left = tp_offset.left;

            // Apparently the b parameter means bottom? and value is left or right? ~ JP
            if(b != 'L') {
                // Position it right of cta
                var trim_left = tp_width - cta_width;
                left = left - trim_left;
            }

            // Build the close button
            var floatingTPclose = '<div id="tp_close_btn" style="width: 245px; height: 0px; overflow: visible;">'+
                                    '<a style="position: absolute;  top: 30px; right: 4px;" href="javascript:travelPlannerAnytimeOff();">'+
                                        '<img src="//images.bookit.com/3.0/Close_grey.png" alt="Close" border="0" />'+
                                    '</a>'+
                                  '</div>';

            // Add additional styles and show it
            container.css({
                'position' : 'absolute',
                'left' : left+'px',
                'top' : top+'px',
                'z-index': '99'
            })
            .prepend(floatingTPclose)
            .show();
        }
    }
}

function travelPlannerAnytimeOff(action, id){

    var floatingTP = jQuery('#floatingTP');
    if(floatingTP.length > 0) {
        var TP = floatingTP.find('.TP');
        var sideContent = jQuery('.sideContent');
        TP.find('#TP_Tabs').show();
        sideContent.prepend(TP);
        TP.next('div').css('margin-top','15px');
        floatingTP.remove();
    }
}

jQuery('#newsletter_fromLocation, #shade_newsletter_fromLocation').live('keyup',function(){
    var $this = jQuery(this);
    if($this.val().length>3){
        jQuery.ajax({
                url     : '/ajaxRedirect.php',
                type    : 'POST',
                dataType: 'json',
                data    : ({
                    action      : 'server_findcitylistTo.php',
                    city        : jQuery(this).val(),
                    dataType    : 'json'
                }),
                timeout : '100000',
                error   : function(XMLHttpRequest, textStatus, errorThrown) {
                    //jQuery(elems).eq(curIndex).html('Dude, you messed up.');
                },
                success : function(json) {
                    //console.log(json);
                    var value = '';
                    var counter = 0;
                    jQuery.each(json,function(o,location){
                        var bg = (counter % 2 == 0) ? 'bg0' : 'bg1';
                        var hv = (counter == 0) ? ' hover' : '';
                        value+= '<li class="'+bg+hv+'"><span style="height:20px;" id="'+location.locationId+'">'+location.locationText+'</span></li>';
                        counter++;
                    });
                    if ($this.parent().next('div').hasClass('autoComplete')) {
                        $this.parent().next('div').html('<ul>'+value+'</ul>');
                    }
                    else {
                        $this.parent().after('<div class="autoComplete"><ul>'+value+'</ul></div>');
                    }
                    var width = $this.width();
                    $this.parent().next('div.autoComplete').css('width','252px');
                    $this.parent().next('div.autoComplete').find('li').bind('click', function(){
                        var textValue = jQuery(this).find('span').text();
                        $this.val(textValue);
                        jQuery(this).parent().parent().remove();
                    });
                }
            });
    }
});


function submitAction(){
    var json = "";
    setCookie("travelPlanner",json,'$cookieExpiration');
    submitTravelPlanner();
}
function galleryPop(content,widthOverride,pos){
    var pod = document.getElementById("shade_pod");

    var divs = pod.getElementsByTagName("div");
    for(var x=0;x<divs.length;x++){
        if(divs[x].className == "content"){
            divs[x].innerHTML = content;
        }else if(divs[x].className == "container" && (widthOverride || pos)){
            if(widthOverride){
                divs[x].style.width = widthOverride;
            }
            if(pos){
                divs[x].style.position = pos;
            }
        }
    }
}
function hideGalleryPop(){

}
function iePodTableAdjust(newWidth){

}
function scrolls(){
    checkAddonsReviewScroller();

    // @deprecate this condition lol JP
    //if (document.getElementById("currencyConverterDiv") != null && document.getElementById("currencyConverterDiv") != undefined)
        //updateCurrencyConverterLocation(curConversionElem);
}
function createHistory(){
    dhtmlHistory.initialize();
    dhtmlHistory.addListener(historyListener = function(newLocation, historyData) {
            if(newLocation.substr(0,2)=='fl'){

            }else if(document.getElementById('floatingTP')){
                hideSiteShade();
            }
        }
    );
}
function exit(){
    //hideSiteShade();
}
function fromFinderTimeout(){
    if(document.getElementById("FROMFinderFound").style.display != "none" && showIdentifiedLocationFlag == true){
        fromFinderNoSelected('timeout');
        saveHomeAirports('bypassFrom');
        showFromDiv();
    }
}
function checkDestinationsDropdown() {
    // See if we're showing destinations
    if (document.getElementById('destinationTab').className == "nav_tabs_destinationsOn") {
        // Hide destinations
        showDestinationDropDown();
    }
}
jQuery(document).ready(function(){
    /*setTimeout(function(){
        jQuery('#epic_fail').effect('explode', '', 200, '');
    }, 5000);*/
});

/**
 * @deprecated We don't need to create a pod for this since the summary pod will
 * always be showing. Don't want to clutter our dom with any thing else.
 * @author Jesse Price
 */
function createAddonsReviewScroller(){
    /*var reviewContent = jQuery("#tpPriceSummaryContainer");
    if(reviewContent){
        var floatingReview = '<div id="tpPriceSummaryContainerScroller" style="position:absolute; display: none;">'+
                                '<div class="TP_Gradient">'+
                                    '<div class="TP_Review_Selection"></div>'+
                                    '<div id="tpPriceSummaryContainerScrollerContent" class="TP_ReviewContent"></div>'+
                                '</div>'+
                             '</div>';
        //floatingReview.innerHTML = "<div class=\"TP_Gradient\"><div class=\"TP_Review_Selection\"></div><div id=\"tpPriceSummaryContainerScrollerContent\" class=\"TP_ReviewContent\"></div>";
        jQuery(".sideContent").append(floatingReview);
        updateAddonsReviewScroller();
    }*/

    //if(!window.XmlHttpRequest){ // ie6
    //console.log(jQuery('html')[0]);
    /*
    jQuery("html").bind('scroll',function(){
            checkAddonsReviewScroller();

        if (jQuery("#currencyConverterDiv") != null && jQuery("#currencyConverterDiv") != undefined)
                updateCurrencyConverterLocation(curConversionElem);
    });
    */
    //}
    }
function checkAddonsReviewScroller(){
    var tpReviewDetails = jQuery('#tpReviewContent .reviewDetails');
    var tpPriceSummary  = jQuery('#tpPriceSummaryContainerScroller');

    if(tpReviewDetails && tpPriceSummary) {
        var tprd_offset = tpReviewDetails.offset();
        var tprd_height = tpReviewDetails.height();
        var tpps_offset = tpPriceSummary.offset();
        var tpps_scrolly = jQuery(document).scrollTop();
        var tpps_scrollx = jQuery(document).scrollLeft();

        var scrollableReviewPodHeight = tpPriceSummary.height();
    }
    var viewPortHeight = jQuery(window).height();
    

    if(tpps_scrolly <= (tprd_height + tprd_offset.top) || viewPortHeight <= scrollableReviewPodHeight) {
        tpPriceSummary.css({'position':'static', 'margin-left':'0'});//.animate({'top':tprd_height}, 100);
    } else {
        //tpPriceSummary.css({'top':tpps_scrolly+'px', 'position':'absolute'});
        //tpPriceSummary.css({'position':'absolute'}).animate({'top': tpps_scrolly}, 100);
        //tpPriceSummary.css({'position':'fixed', 'margin-left':tprd_offset.left});
        tpPriceSummary.css({'position':'fixed', 'margin-left':tprd_offset.left, 'top':'0'});
    }


    /* // From create addons review scroller func
    if (jQuery("#currencyConverterDiv") != null && jQuery("#currencyConverterDiv") != undefined)
        updateCurrencyConverterLocation(curConversionElem);
    */


    /*
    var reviewScroller = jQuery("#tpPriceSummaryContainerScroller");

    if(reviewScroller){
        var obj = jQuery(".sideContent:eq(0)");
        var offset = obj.offset();
        var curleft = offset.left;
        var curtop = offset.top;

        console.log('x:'+curleft+' y:'+curtop);

        var yScroll = getScrollHeight();
        var tpReviewContent = jQuery("#tpReviewContent");

        console.log(tpReviewContent);
        if(tpReviewContent){
            var tpHeight = tpReviewContent.offsetHeight;
            var topOffset = 0;
            if((yScroll+topOffset) > tpHeight+curtop){
                reviewScroller.style.display = "block";
                reviewScroller.style.top = (yScroll+topOffset-150)+"px";
                reviewScroller.style.left = curleft+"px";
            }else{
                reviewScroller.style.display = "none";
            }
        }
    }*/
    }
function updateAddonsReviewScroller(){
    var reviewScroller = document.getElementById("tpPriceSummaryContainerScrollerContent");
    if(reviewScroller && document.getElementById("continueContainer")){
        reviewScroller.innerHTML = document.getElementById("continueContainer").innerHTML ;
    }
}
function getScrollHeight(){
    var h = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
    return h ? h : 0;
}
function WhyNoAirportPod(num){
    var header = "FROM&#153; FAQs (Frequently Asked Questions)";
    var podOptions = {"width":"715px","close":true,"header":header,"centerHeader":true,"headerImgSrc":"{$this->_Protocol}://images.bookit.com/3.0/Pod_Header_Image_FROM.png","headerImgAlt":"FROM Information"};
    var content = "{$whyNoAirportPodContent}";
    populateShadePod(content,podOptions);
    showFAQ(num);
    showSiteShade();
}
/* Global variable used in Main BookIt.com Dropdown Navigation, BW */
/* This is needed for IE Slider conflict */
var subNavTimeout;
/* Function used to clear Main BookIt.com Dropdown Navigation Function, BW */
/* This is needed for IE Slider conflict */
function timeoutShowNavSub(navtab,subnav,trigger){
    subNavTimeout = setTimeout('showNavSubNav("' + navtab + '", "' + subnav + '", "Clear")',10);
}
/* Function used for Main BookIt.com Dropdown Navigation, BW */
function showNavSubNav(navtab,subnav,trigger){
    /*This is the global page id where we find out what type of page */
    var defaultPageLoadTab = "{$this->pageId}";
    /* The ID of the Sub Navigation */
    var subnav  = document.getElementById(subnav);
    /* Check if the Tab ID is being passed in, and get the class */
    var navTabClass       = document.getElementById(navtab).className;

    if (trigger == 'hitNavTab') {
    /* Trigger passed in MouseOver of Tabs only to stop everything */
        if(navTabClass.indexOf(defaultPageLoadTab) < 0){
            document.getElementById(navtab).className = navTabClass.replace('Off','On');
        }
        subnav.style.display = "block";
    }else if(trigger == 'Override'){
        /* Trigger passed in MouseOut of Sub Nav to keep everything on after leaving the Tab. */
        if(navtab)
            document.getElementById(navtab).className = navTabClass.replace('Off','On');
        subnav.style.display = "block";
        clearTimeout(subNavTimeout);
    }else if (trigger == 'Clear') {
        /* Trigger from the Timeout, to turn off tab and sub nav. */
        if(navTabClass.indexOf(defaultPageLoadTab) < 0)
            document.getElementById(navtab).className = navTabClass.replace('On','Off');
        subnav.style.display = "none";
    }else{
        /* No Trigger passed, turn the nav tab and sub nav off. */
        if(navTabClass.indexOf(defaultPageLoadTab) < 0)
            document.getElementById(navtab).className = navTabClass.replace('On','Off');
        subnav.style.display = "none";
    }
}
/* Function used for the FAQ's Site Shade, BW */
function showFAQ(num){
    if(!num){num = 1;}
    var txt = document.getElementById("fromFAQ"+num+"Q").innerHTML ;
    txt = txt.match(/<a[^>]*>(.*)<\/a>/i)[1]; // match all within the provided link
    document.getElementById("FROMFaq_CopyQ").innerHTML = num+". "+txt;
    document.getElementById("FROMFaq_CopyA").innerHTML = document.getElementById("fromFAQ"+num+"A").innerHTML ;
}
function showHotelGalleryViaUnique(hotelUniqueId){
    /**/
    galleryPopulateShadePod("<div style=\"text-align:center; height: 150px; margin-top: 50px;\"><embed type=\"application/x-shockwave-flash\" src=\"{$this->_Protocol}://images.bookit.com/3.0/Flash/loader.swf\" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"55\" width=\"55\" /><p class=\"textSmallBold\" style=\"padding:0;margin:0;\">loading</p></div>",false,true);
    /**/
    var opt = {
        method: 'get',
        parameters: 'hotelUniqueId='+hotelUniqueId + '&action=server_photogallery.php',
        // Handle successful response
        onSuccess: function(t) {
            var response = eval("("+t.responseText+")");
            var txt = response.txt;
            var vid = response.vid;
            //document.getElementById("pgSliderTable").innerHTML = txt;
            //alert("ajax");
            //setTimeout('galleryPopulateShadePod('+txt+')',5000);
            //txt = "asdf";
            //setTimeout('alert('+txt+')',1);
            galleryPopulateShadePod(txt,vid);
        },
        // Handle 404
        on404: function(t) {
            alert('Error 404: location "' + t.statusText + '" was not found.');
        },
        // Handle other errors
        onFailure: function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
    }
    if(window.location.href.match(/^http:\/\/from/)){
        new Ajax.Request('ajaxRedirect.php', opt);
    }else{
        new Ajax.Request('ajaxRedirect.php', opt);
    }
}
function showHotelGallery(hotelId,hotelVendorId){
    if(!document.getElementById('floatingTP'))
        galleryPopulateShadePod("<div style=\"text-align:center; height: 150px; margin-top: 50px;\"><embed type=\"application/x-shockwave-flash\" src=\"{$this->_Protocol}://images.bookit.com/3.0/Flash/loader.swf\" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"55\" width=\"55\" /><p class=\"textSmallBold\" style=\"padding:0;margin:0;\">loading</p></div>",false,true);
    var opt = {
        method: 'get',
        parameters: 'hotelId='+hotelId+'&hotelVendorId='+hotelVendorId + '&action=server_photogallery.php',
        // Handle successful response

        onSuccess: function(t) {
            var response = eval("("+t.responseText+")");
            var txt = response.txt;
            var vid = response.vid;
            //document.getElementById("pgSliderTable").innerHTML = txt;
            //alert("ajax");
            //setTimeout('galleryPopulateShadePod('+txt+')',5000);
            //txt = "asdf";
            //setTimeout('alert('+txt+')',1);
            galleryPopulateShadePod(txt,vid);
        },
        // Handle 404
        on404: function(t) {
            alert('Error 404: location "' + t.statusText + '" was not found.');
        },
        // Handle other errors
        onFailure: function(t) {
            alert('Error ' + t.status + ' -- ' + t.statusText);
        }
    }
    if(window.location.href.match(/^http:\/\/from/)){
        new Ajax.Request('ajaxRedirect.php', opt);
    }else{
        new Ajax.Request('ajaxRedirect.php', opt);
    }
}
function galleryPopulateShadePod(content,videoSrc,noinit){
//alert("galleryPopulateShadePod");
    var txt = "This is where the gallery will go<br><br><a href=\"javascript:hideSiteShade();\">Close</a>";
    txt = '{$photoGalleryTemplate}';
    //populateShadePod(txt,{"width":"720px"});
    txt = txt.replace("[[::IMAGES::]]",content);
    var agt = navigator.userAgent.toLowerCase();
    var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    if(videoSrc){
        //$("site_shade1").style.position = "absolute";
        txt = txt.replace("[[::VIDEO::]]",videoSrc);
        txt = txt.replace("[[::VIDSTYLE::]]","display:block;");
        //$("site_shade1").style.position = "fixed";
        if(!is_ie){
            $("site_shade1").style.position = "absolute";
            //$("site_shade1").style.height = (document.body.offsetHeight)+"px";
            $("site_shade1").style.height = (window.innerHeight+window.scrollMaxY)+"px";
        }
    }else{
        txt = txt.replace("[[::VIDEO::]]","");
        txt = txt.replace("[[::VIDSTYLE::]]","display:none;");
    }
    /*This is used when viewing gallery from the package site shade. If the TP Exists pass a trigger*/
    var floatingTP = document.getElementById('floatingTP');
    if(floatingTP){
        populateShadePod(txt,{"width":"720px"},'shadePodGallery');
        if(!noinit){
            Gallery.init();
            Lightbox.init();
        }else{
        //initLightbox();
        //showSiteShade('shadePodGallery');
        }
    }else{
        populateShadePod(txt,{"width":"720px"},'');
        if(!noinit){
            Gallery.init();
            Lightbox.init();
        }else{
            showSiteShade();
        }
    }
    //showSiteShade();
    var iframe = document.getElementById("toursiframe");
    iframe.style.zIndex = 200;
    iframe.style.display = "inline";

}
function checkPackageDetailsLink(){
    var url = window.location.toString();
    var packageDetailsLink = "";
    if(url.match("#")){
        var items = url.match(/#(.*)/)[1].split("~");
        //console.debug(items);
        for(var i=0;i<items.length;i++){
            //console.debug(items[i]);
            var values = items[i].split(":");
            var info = "";
            switch(values[0]){
                case "fl"       :info = "'fromLocation':'"+values[1]+"'";break;
                case "tl"       :info = "'toLocation':'"+values[1]+"'";break;
                case "ad"       :info = "'arrivalDate':'"+values[1]+"'";break;
                case "los"      :info = "'lengthOfStay':'"+values[1]+"'";break;
                case "hid"      :info = "'hotelUniqueId':'"+values[1]+"'";break;
                case "tn"       :info = "'toLocationCityName':'"+unescape(values[1])+"'";break;
                case "fn"       :info = "'fromLocationCityName':'"+unescape(values[1])+"'";break;
                case "pid"      :info = "'promoId':'"+values[1]+"'";break;
                case "pnd"      :info = "'promoMinValidDate':'"+values[1]+"'";break;
                case "pxd"      :info = "'promoMaxValidDate':'"+values[1]+"'";break;
                case "an"       :info = "'areaName':'"+unescape(values[1])+"'";break;
                case "aid"      :info = "'areaId':'"+values[1]+"'";break;
                case "hidalt"   :info = "'hotelId':'"+values[1]+"'";break;
                case "hvid"     :info = "'hotelVendorId':'"+values[1]+"'";break;
                case "hdn"      :info = "'hotelDisplayName':'"+unescape(values[1])+"'";break;
                case "getLO"    :info = "'getLO':'"+values[1]+"'";break;
            }
            //console.debug(items[i]);
            //console.debug(info);
            if(info != ""){
                if(packageDetailsLink == ""){
                    packageDetailsLink += info;
                }else{
                    packageDetailsLink += ","+info;
                }
            }
        }
    }
    if(packageDetailsLink != ""){
        showPackageDetails("{"+packageDetailsLink+"}");
        travelPlannerSiteShadePopUp("{"+packageDetailsLink+"}");
    }
}
function checkNewsletterLink(){
    var url = window.location.toString();
    if(url.match("#newsletter")){
        showNewsletterShade();
        return true;
    }else{
        return false;
    }
}
function changePackageDetailsNights(opts,selectValue){
    if(!opts){opts = {};}
    if(selectValue)
        opts.lengthOfStay = selectValue;
    else
        opts.lengthOfStay = document.getElementById("flexDateCalendarNights").value;
    showPackageDetailsMonthMarker = opts.month;
    opts.noMove = true;
    //opts.arrivalDate = "";
    //console.debug(document.getElementById("flexDateCalendarNights").value);
    //console.debug(opts.override);
    //console.debug(opts.checkAll);
    //console.debug(opts.fromLocation);
    //console.debug(opts.month);
    showPackageDetails(opts);
}

/* Function for slide show when doing a customized search on home page */
/* Edited 9-28-9, BW */
function showPackageCustomizeSlide(page,opts,url,unescapeOpts){
    if(url){window.location = unescape(url);}
    if(unescapeOpts){opts = unescape(opts).replace(/\&quot;/g,"\"");}
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}
    opts.width = "390px";
    for(i=0;i<= page;i++){
        if(document.getElementById("packageCustomizeSlide"+i)){

            if(document.getElementById("packageCustomizeSlide"+i).style.display == "none" && i == page){
                //console.debug('showing page: ' + i);
                document.getElementById("packageCustomizeSlide"+i).style.display = "block";
                var prev = parseInt(page) - 1;
                if(document.getElementById("packageCustomizeSlide"+prev)){
                    if(document.getElementById("packageCustomizeSlide"+prev).style.display == "block"){
                        document.getElementById("packageCustomizeSlide"+prev).style.display = "none";
                    }
                }
            }
        }
    }
    var next = parseInt(page) + 1;
    if(next < 7 && loadingStatus == true)
        setTimeout("showPackageCustomizeSlide('"+next+"')",2000);
    else
        resetShowPackageCustomizeDivs();
}
function resetShowPackageCustomizeDivs(){
    for(var i=1;i <= 6; i++){
        if(document.getElementById("packageCustomizeSlide"+i))
            document.getElementById("packageCustomizeSlide"+i).style.display = "none";
    }
}
function showPackageDetailsTPSlide(page,opts,unescapeOpts){
    if(unescapeOpts){opts = unescape(opts).replace(/\&quot;/g,"\"");}
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}
    opts.width = "390px";

    var txt  = '<div id="packageDetailsTPSlideContainer" style="height: 420px;"><div id="packageDetailsTPSlideHeader"><embed type=\"application/x-shockwave-flash\" src=\"//images.bookit.com/flash/rotation.swf\" style=\"margin-left: -50px; \" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"230\" width=\"480\" /></div>';
        txt += '<div id="packageDetailsTPSlide0" style="height: 50px;" class="textMediumGrey"><b>BookIt.com&#174;</b><br />is <b>Verifying Pricing &#38; Availability</b>';
        txt += '<br />Beginning '+opts.arrivalDate+', Ending '+opts.endingDate+'</div>';
        txt += '<div style="width: 100%; height: 110px; float: left;"><div id="packageDetailsTPSlide2" style="display:none; height: 55px;" class="textMediumGrey">&#8730; Depart FROM '+opts.fromLocationCityName+', Arrive at '+opts.toLocationCityName+'</div>';
        txt += '<div id="packageDetailsTPSlide3" style="display:none; height: 55px;" class="textMediumGrey">&#8730; Updating Package Pricing</div>';
        txt += '<div id="packageDetailsTPSlide4" style="display:none;" class="textMediumGrey">&#8730; Loading Comparison Airports</div>';
        txt += '<div id="packageDetailsTPSlide5" style="display:none;" class="textMediumGrey">&#8730; Loading Optional Flight Itineraries</div>';
        txt += '<div id="packageDetailsTPSlide6" style="display:none;" class="textMediumGrey">&#8730; Searching Other Available Offers</div>';
        txt += '<div id="packageDetailsTPSlide7" style="display:none;" class="textMediumGrey">&#8730; Completing Verification</div>';
        txt += '</div></div>';
    switch(page){
        case 0:
            populateShadePod(txt,opts);
            setTimeout('showPackageDetailsTPSlide(2)',2000);
            break;
        case 1:
            break;
        case 2:
            Effect.Appear('packageDetailsTPSlide2',{'queue':'end'});
            setTimeout('showPackageDetailsTPSlide('+(page+1)+')',3000);
            break;
        case 3:
            Effect.Appear('packageDetailsTPSlide3',{'queue':'end'});
            setTimeout('showPackageDetailsTPSlide('+(page+1)+')',3000);
            break;
        case 4:
            Effect.Appear('packageDetailsTPSlide4',{'queue':'end'});
            setTimeout('showPackageDetailsTPSlide('+(page+1)+')',3000);
            break;
        case 5:
            Effect.Appear('packageDetailsTPSlide5',{'queue':'end'});
            setTimeout('showPackageDetailsTPSlide('+(page+1)+')',3000);
            break;
        case 6:
            Effect.Appear('packageDetailsTPSlide6',{'queue':'end'});
            setTimeout('showPackageDetailsTPSlide('+(page+1)+')',3000);
            break;
        case 7:
            Effect.Appear('packageDetailsTPSlide7',{'queue':'end'});
            break;
    }
}
function updateFlexCalendar(opts){
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}
    opts.month = document.getElementById("flexDateCalendarMonth").value;
    opts.lengthOfStay = document.getElementById("flexDateCalendarNights").value;
    opts.getCal = true;
    showPackageDetails(opts);
}

function showLandOnlyDetails(myOpts){

    if(!myOpts){myOpts = {};}else if(typeof(myOpts) == "string"){myOpts = eval("("+myOpts+")");}
    var opts =  {};

    opts.promoId            = myOpts.promoId;
    opts.hotelUniqueId      = myOpts.hotelUniqueId;
    opts.hotelDisplayName   = myOpts.hotelDisplayName;
    opts.areaId             = myOpts.areaId;
    opts.hotelId            = myOpts.hotelId;
    opts.hotelVendorId      = myOpts.hotelVendorId;
    opts.areaName           = myOpts.areaName;
    opts.toLocation         = myOpts.toLocation;

    opts.getLO              = "true";
    opts.initTpHotel        = "true";

    showPackageDetails(opts);
    travelPlannerSiteShadePopUp(opts);

}
var showPackageDetailsMonthMarker;
var showPackageDetailsParameters;
function showPackageDetails(opts){
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}
    var txt = "<div style=\"text-align:center; height: 150px; margin-top: 50px;\"><embed type=\"application/x-shockwave-flash\" src=\"{$this->_Protocol}://images.bookit.com/3.0/Flash/loader.swf\" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"55\" width=\"55\" /><p class=\"textSmallBold\" style=\"padding:0;margin:0;\">loading package</p></div>";
    var cal1 = document.getElementById("packageDisplayCalendar1");
    var cal2 = document.getElementById("packageDisplayCalendar2");
    var flexCalMonth = document.getElementById("flexDateCalendarMonth");

    if(!opts.getCal && !opts.getCal1 && !opts.getCal2){
        var linkTxt = "";
        linkTxt += "fl:"+opts.fromLocation;
        linkTxt += "~tl:"+opts.toLocation;
        linkTxt += "~ad:"+opts.arrivalDate;
        linkTxt += "~los:"+opts.lengthOfStay;
        linkTxt += "~hid:"+opts.hotelUniqueId;
        linkTxt += "~tn:"+opts.toLocationCityName;
        linkTxt += "~fn:"+opts.fromLocationCityName;
        linkTxt += "~pid:"+opts.promoId;
        linkTxt += "~pnd:"+opts.promoMinValidDate;
        linkTxt += "~pxd:"+opts.promoMaxValidDate;
        linkTxt += "~hdn:"+opts.hotelDisplayName;
        linkTxt += "~an:"+opts.areaName;
        linkTxt += "~aid:"+opts.areaId;
        linkTxt += "~hidalt:"+opts.hotelId;
        linkTxt += "~hvid:"+opts.hotelVendorId;
        linkTxt += "~getLO:"+opts.getLO;
        //dhtmlHistory.add(linkTxt);
        //location.replace("#"+linkTxt);
    }
    var podOptions = {};
    if(opts.arrivalDate){
        var months = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
        var depDate = new Date();
        var arrDate = new Date();
        var calParts = opts.arrivalDate.match(/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/);
        if(calParts){
            calParts[2] = calParts[2].replace(/^0([0-9]+)/,"$1"); //08 -> 9
            calParts[3] = calParts[3].replace(/^0([0-9]+)/,"$1"); //08 -> 8
            depDate.setFullYear(calParts[1]);
            arrDate.setFullYear(calParts[1]);
            depDate.setMonth(calParts[2]-1); // setMonth uses months 0-11
            arrDate.setMonth(calParts[2]-1); // setMonth uses months 0-11
            depDate.setDate(parseInt(calParts[3])+parseInt(opts.lengthOfStay));
            arrDate.setDate(calParts[3]);
        }

        podOptions = {"width":"889px","marginLeft":"80px","close":true,"centerHeader":true};
        if(opts.noMove){
            podOptions.noMove = opts.noMove;
        }

        if(!opts.month){
            //opts.month = (arrDate.getMonth()-rightNowTodayYesToday.getMonth());
            //opts.month = arrDate.getMonth();
            //PD-1181
            opts.month = 0;
        }
    }
    else{
        var header = "";
        podOptions = {"width":"889px","marginLeft":"80px","close":true,"header":header,"centerHeader":true};
    }

    opts.checkAll = (opts.checkAll) ? "yes" : "no";

    if(opts.getCal){
        cal1.innerHTML = txt;
        cal2.innerHTML = txt;
        showPackageDetailsMonthMarker = opts.month;
    }else if(opts.getCal1){
        if(jQuery('input[name=fromCalendarIsCurMonth]:first').val() == 1){return false;}

        cal2.innerHTML = cal1.innerHTML;
        cal1.innerHTML = txt;
        //flexCalMonth.value--;
        showPackageDetailsMonthMarker--;
    }else if(opts.getCal2){

        cal1.innerHTML = cal2.innerHTML;
        cal2.innerHTML = txt;
        //flexCalMonth.value++;
        showPackageDetailsMonthMarker++;
    }else{
        /**
         * this is used by a condition in populateShadePod() so the margin top is not set to viewing plane, instead it forces
         * the pod to show at top of page. At the end of this function we also have a window.scrollTo(0,0) so that viewing plane is forced to top also.
         * @author Antonio Mercado
         */
        podOptions.fromPackageDetails = true;
        populateShadePod(txt,podOptions);
        if(!opts.override){
            showSiteShade();
        }
        showPackageDetailsMonthMarker = opts.month;
    }

    var opt = {
        type: 'get',
        url: 'ajaxRedirect.php',
        // Handle successful response
        success: function(t) {
            populateShadePod(t,podOptions);
            var monthMarkerChanged = document.getElementById("showPackageDetailsMonthMarkerChanged");
            if(monthMarkerChanged){
                showPackageDetailsMonthMarker = monthMarkerChanged.innerHTML-1;
            }
            if(opts.getLO == 'true'){
                handleSliderToDetailsShade(opts.promoId,"open");
            }
        },
        // Handle 404
        on404: function(t) {
            alert('Error 404: location "' + t.statusText + '" was not found.');
        },
        // Handle other errors
        error: function(t) {
            //alert('Error ' + t.status + ' -- ' + t.statusText);
        }
    }

    if(opts.getCal1 || opts.getCal2){
        opt.parameters = showPackageDetailsParameters;
    }else{
        var action;

        action = "server_packagedetails.php";

        opt.parameters = 'toLocation='+opts.toLocation+"&toLocationCityName="+opts.toLocationCityName+'&fromLocation='+opts.fromLocation+"&fromLocationCityName="+opts.fromLocationCityName+"&lengthOfStay="+opts.lengthOfStay+"&arrivalDate="+opts.arrivalDate+"&hotelUniqueId="+opts.hotelUniqueId+"&month="+opts.month + '&promoId=' + opts.promoId + "&promoMinValidDate=" + opts.promoMinValidDate + "&promoMaxValidDate=" + opts.promoMaxValidDate + "&hotelMarketingStatement=" +opts.hotelMarketingStatement+'&checkAll='+opts.checkAll+'&action='+action+'&getLO=' +opts.getLO + '&hotelId=' + opts.hotelId + '&hotelVendorId=' + opts.hotelVendorId;
        showPackageDetailsParameters = opt.parameters;
    }

    if(opts.getCal){ // select menu
        getPackageCalendar(1,opt);
        opts.month++;
        opt.parameters = opt.parameters.replace(/&month=([0-9]+)&/,"&month="+opts.month+"&");
        getPackageCalendar(2,opt);
    }else if(opts.getCal1){ // left arrow
        opt.parameters = showPackageDetailsParameters;
        opt.parameters = opt.parameters.replace(/&month=([0-9]+)&/,"&month="+showPackageDetailsMonthMarker+"&");
        getPackageCalendar(1,opt);
    }else if(opts.getCal2){ // right arrow
        opt.parameters = showPackageDetailsParameters;
        opt.parameters = opt.parameters.replace(/&month=([0-9]+)&/,"&month="+(showPackageDetailsMonthMarker+1)+"&");
        //opt.parameters = opt.parameters.replace(/&arrivalDate=([-0-9]+)&/,"&arrivalDate="+jQuery('input[name=fromCalendarNextMonth]:last').val()+"&");

        getPackageCalendar(2,opt);
    }else{ // show everything
            //crappy hack to stop using prototype and start using jquery
            opt.url = 'ajaxRedirect.php?' + opt.parameters;
            jQuery.ajax(opt);
    }
    window.scrollTo(0,0);
}
function getPackageCalendar(num,opt){
    opt.parameters += "&getCal=true";
    opt.onSuccess = function(t){
        document.getElementById("packageDisplayCalendar"+num).innerHTML = t.responseText;
    }
    if(window.location.href.match(/^http:\/\/from[^\/]*\/[a-zA-Z0-9]*\/$/)){
        //new Ajax.Request('/ajax/server/server_packagedetails.php', opt); deprecated
        new Ajax.Request('ajaxRedirect.php', opt);
    }else if(window.location.href.match(/^http:\/\/from/)){
        //new Ajax.Request('ajax/server/server_packagedetails.php', opt); deprecated
        new Ajax.Request('ajaxRedirect.php', opt);
    }else{
        new Ajax.Request('ajaxRedirect.php', opt);
    }
}
function showRoomDetails(opts){
    if(!opts){opts = {};}else if(typeof(opts) == "string"){opts = eval("("+opts+")");}

    var txt = "<div style=\"text-align:center;\"><embed type=\"application/x-shockwave-flash\" src=\"{$this->_Protocol}://images.bookit.com/3.0/Flash/loader.swf\" id=\"loader\" name=\"loader\" quality=\"high\" wmode=\"transparent\" allowscriptaccess=\"always\" height=\"55\" width=\"55\" /><p class=\"textSmallBold\" style=\"padding:0;margin:0;\">Loading Room Details...</p></div>";
    var header = "Room Details";
    var podOptions = {"width":"715px","close":true,"header":header,"leftHeader":"5px"};
    populateShadePod(txt,podOptions);
    showSiteShade();

    var opt = {
        url: 'ajaxRedirect.php',
        type: 'get',
        data: 'hotelId='+opts.hotelId+'&hotelVendorId='+opts.hotelVendorId+'&roomId='+opts.roomId+'&action=server_roomdetails.php',
        // Handle successful response
        success: function(t) {
            populateShadePod(t,podOptions);
        },
        error: function(t) {
            //alert('Error 404: location "' + t.statusText + '" was not found.');
        }
    }
    jQuery.ajax(opt);
    /**
    if(window.location.href.match(/^http:\/\/from/)){
        new Ajax.Request('/ajax/server/server_roomdetails.php', opt);
    }else{
        new Ajax.Request('/subdomains/from/ajax/server/server_roomdetails.php', opt);
    }
    /**/
}
function showHide(field,id){
    var el = jQuery('#'+id);
         if (el.style.display == 'none')
            el.style.display = 'block';
         else
            el.style.display = 'none';
}


/*
// Sets cookie, comment since we already have in shell.class.php and will need to
// uncomment when js is added here. ~ JP
function setCookie(c_name,value,expiredays){
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toUTCString());
}
*/
// Gets cookie ~ JP
function getCookie(c_name){
    if (document.cookie.length>0){
        var c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1){
            c_start=c_start + c_name.length+1;
            var c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return false;
}

// Delete cookie ~ JP
function deleteCookie(c_name,path,domain) {
    if ( getCookie( c_name ) ) document.cookie = c_name + "=" +
    ( ( path ) ? ";path=" + path : "") +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}


//top20
function expandTop20(){
    //reload all with all 20
    jQuery('#top20TopResults').css('height','auto');
    ajaxFromLookup(false,'','clear',null,null,20);
}

function growTop20(){
    var results = jQuery('#top20TopResults');
    var originalHeight = parseFloat(results.css('height').replace('px',''));
    if(originalHeight != 'auto'){
        results.animate({
            height: '+=542'
        },
        1000
        );
    }
}

function shrinkTop20(){
    var results = jQuery('#top20TopResults');
    var originalHeight = parseFloat(results.css('height').replace('px',''));
    if(originalHeight != 'auto'){
        results.animate({
            height: '-=542'
        },
        1000
        );
    }
}

/**
 * Returns json object of the current url href location
 * @author Jesse Price <jesse.price@bookit.com>
 * @return object
 */
function parseUrl() {
    /*var url = window.location.href;
    var urlParts = url.split('?');
    var json = {};
    if(urlParts.length > 1) {
        var rightSide = urlParts[1];
        var outerParts = rightSide.split('&');
        for(var outer = 0; outer < outerParts.length; outer++) {
            var innerParts = outerParts[outer].split('=');
            var key = innerParts[0];
            var value = (innerParts.length > 1) ? innerParts[1] : '';
            json.key = value;
        }
        return json;
    } else
        return false;*/
    var query_string = {};
    window.location.href.replace(
        new RegExp("([^?=&]+)(=([^&]*))?", "g"),
        function($0, $1, $2, $3) {
            query_string[$1] = $3;
        }
    );
    return query_string;
}

/**
 * Returns the value of the selected parameter index
 * @author Jesse Price <jesse.price@bookit.com>
 * @param string
 * @return string
 */
function getParameterByName(name) {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regex_s = "[\\?&]"+name+"=([^&*]*)";
    var regex = new RegExp( regex_s );
    var results = regex.exec( window.location.href );
    if(results == null)
        return "";
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

