/*
#Region "History"
'20100129 - RH - Added support for an exact startDate
'20100216 - RH - Added ajax loaders
'20100223 - RH - Set limit on options queried to improve responsiveness
#End Region
*/

var pbTimeOuts = new Array();
var pbPage = 0;
var pbPerPage = 5;

Event.observe(window, 'load', function() {
    if ($('PackageBrowser')) {
        pbLoadFilter('0', 0, 0, 0, $F('InitDestinationLocationID'), 0, $F('InitAccommodationID'))
    };

    if ($('PackageBrowserStart')) {
        pbLoadStart();
    };
});

function pbLoadStart() {
    $('PackageBrowserStart').hide();
    new Ajax.Request('/ajax/PackageBrowser_Start.aspx', {
        method: 'get',
        onSuccess: function(transport) {
            $('PackageBrowserStart').update(getContent(transport.responseText));
            $('PackageBrowserStart').appear();
        }
    });
};

function pbLoadFilter(monthYear, day, duration, departureLocationID, destinationLocationID, minimumRating, accommodationID) {
    pbClearTimeOuts();

    var s = '/ajax/PackageBrowser_Filter.aspx?';
    if (monthYear != '0') {
        s += 'monthYear=';
        s += monthYear;
    };

    if (day > 0) {
        s += '&day=';
        s += day;
    };
      
    s += '&duration=';
    s += duration;
    s += '&departureLocationID=';
    s += departureLocationID;
    s += '&destinationLocationID=';
    s += destinationLocationID;
    s += '&minimumRating=';
    s += minimumRating;
    s += '&accommodationID=';
    s += accommodationID;    
    s += '&'
    s += getTicks();

    $('PackageBrowserFilter').update('<img src="/graphics/loader_small.gif" alt="loading"/>');
    new Ajax.Request(s, {
        method: 'get',
        onSuccess: function(transport) {
            $('PackageBrowserFilter').update(getContent(transport.responseText));
            pbLoadAccommodations(monthYear, day, duration, departureLocationID, destinationLocationID, minimumRating, accommodationID);
        }
    });
};

function pbLoadAccommodations(monthYear, day, duration, departureLocationID, destinationLocationID, minimumRating, accommodationID) {
    $('pbLoading').show();
    
    var s = '/ajax/PackageBrowser_Summary.aspx?';
    s += 'monthYear=';
    s += monthYear;
    s += '&day=';
    s += day;    
    s += '&duration=';
    s += duration;
    s += '&departureLocationID=';
    s += departureLocationID;
    s += '&destinationLocationID=';
    s += destinationLocationID;
    s += '&accommodationID=';
    s += accommodationID;
    s += '&minimumRating=';
    s += minimumRating;
    s += '&'
    s += getTicks();

    $('PackageBrowser').update('');
    new Ajax.Request(s, {
        method: 'get',
        onSuccess: function(transport) {
            $('PackageBrowser').update(getContent(transport.responseText));

            pagingCreate('Accommodation', 5, 'pbLoadVisibleOptions()');
            pagingShow('Accommodation', 0);                        
        }
    });
};

function pbLoadVisibleOptions() {
    var i = 0;
    var pageit = true;

    if ($F('ACCOMMODATION')!='0') {
        pageit = false;
    } else {
        pageit = true;    
    };
    
    while ($('Accommodation_' + i)) {
        if ($('Accommodation_' + i).visible()) {
            pbLoadOptions(i, 20, pageit);
          //  pbTimeOuts[i] = setTimeout('pbLoadOptions(' + i + ',5);', i * 200);
        };
        i++;
    };
    
    if (i == 0) { $('pbLoading').hide(); };
};

function pbLoadOptions(i, limit, pageit) {
    $('Accommodation_' + i).hide();
    
    var s = '/ajax/PackageBrowser_Options.aspx?';
    s += 'accommodationID=';
    s += $F('AccommodationID_' + i);
    s += '&monthYear=';
    s += $F('MONTHYEAR');    
    s += '&day=';
    s += $F('DAY');
    s += '&departureLocationID=';
    s += $F('DEPARTURELOCATIONID');
    s += '&destinationLocationID=';    
    s += $F('DESTINATIONLOCATIONID');    
    s += '&duration=';    
    s += $F('DURATION');  
    s += '&limit=';
    s += limit;
    s += '&index=';
    s += i;
    s += '&';
    s += getTicks();

    new Ajax.Request(s, {
        method: 'get',
        onSuccess: function(transport) {
        	$('pbLoading').hide();
            $('Accommodation_' + i).update(getContent(transport.responseText));
            $('Accommodation_' + i).appear();

            if (pageit) {
                pagingCreate('Options_' + i, 5, null);
                pagingShow('Options_' + i, 0);
            };
        }
    });
};

function pbClearTimeOuts() {
    pbTimeOuts.each(function(item) {
        clearTimeout(item);
    }); 
    
    pbTimeOuts = new Array(); 
};


function pbSearch(startDate, endDate, duration, departureLocationID, destinationLocationID, accommodationID, adults) {
    var s = '/Search.aspx?mode=16&searching=True&';
    s += '&startdate=';
    s += startDate;
    s += '&enddate=';
    s += endDate;
    s += '&duration=';
    s += duration;
    s += '&departurelocationid=';
    s += departureLocationID;
    s += '&destinationlocationid=';
    s += destinationLocationID;
    s += '&arrivallocationid=0';
    s += '&adults=' + adults;
    s += '&children=0';
    s += '&infants=0';
    s += '&accommodationID=';
    s += accommodationID;
    s += '&Rooms=1';
    s += '&Occupancy=' + adults + ',0,0';
    s += '&ReturnTransfer=False';
    s += '&ExtraType=';
    s += '&PlusMinus=0';
    s += '&Rating=';
    s += '&CacheID=';
    s += '&OneWay=False';
    s += '&AgentID=0';
    s += '&pcsid=0';
        
    document.location.href = s;
};
