// JavaScript Document (jQuery)

/***
 *
 * Variables & Functions
 *
 */

var ajaxResults = $.ajax();

/* Flash Controller functions */
function introComplete() {
    $('#main-flash').get(0).loadView('gallery');
    $('#view-toggle-gallery').removeClass('view-toggle-gallery-unselected').addClass('view-toggle-gallery-selected').addClass('view-toggle-selected');
}
function loadView(value) {
    if (value != 'list') {
        ajaxResults.abort();
        $('#result-box').fadeOut(1000);
    }
    $('#main-flash').get(0).loadView(value);
    updateView();
}
var show_prop_id = 0;  //set the prop_id when calling the function showProp; if the value is 0, load the lightbox; otherwise, do not let the lightbox load
function showProp(value) {
    if (show_prop_id <= 0) {
        show_prop_id = value;
        triggerLightbox(value);
    }
}

/* Lightbox functions */
function triggerLightbox(prop_id) {
    var url = base_url + '/ajax/lightbox/' + lang_code + prop_id;
    var $lightbox = $('#lightbox');
    if (prop_id != null) {
        $.ajax({
            url:url,
            type:'POST',
            success: function(content) {
                $lightbox.html(content);
            },
            complete: function() {
                $lightbox.jqmShow();
            }
        });
    }
}
function hideLightbox() {
    $('.jqmWindow').css('left','-999%');
    $('.jqmOverlay').remove();
    show_prop_id = 0;
}
function showLightbox() {
    $('.jqmWindow').css('left','50%');
}

/* View Updates / Updating Ajax/XML Feed */
function getURLLocationSegment() {
    var country = $('select#country').val();
    var city = $('select#city').val();
    return (country != '0' ? country + '/' : '') + (city != '0' ? city + '/' : '');
}
function getURLBrandSegment() {
    var brands = [];
    $('#brands-options').children('.checkboxes').children('.checked').each(function(){
        brands.push($(this).attr('rel'));
    });
    if (brands.length == 0) brands.push('gx');  //if no brands are selected then use the 'gx' brand to remove everything...useful until a gx brand is added.
    return (brands.length < 7) ? brands.join('-') + '/' : '';
}
function updateCoverflow(url_segments) {

    //alert('Please click enter when the gallery has finished loading!');

    var url = base_url + '/xml/properties/' + url_segments;
    if ($('#main-flash').get(0).loadResults) {
        $('#main-flash').get(0).loadResults(url);
    }
    return false;

}
function updateMap(url_segments) {

    var url = base_url + '/xml/map/' + url_segments;
    $('#main-flash').get(0).loadResults(url);
    return false;

}
function updateResults(url_segments) {

    var url = base_url + '/ajax/results/' + url_segments;
    ajaxResults = $.ajax({
        url:url,
        type:'POST',
        success: function(content) {
            $('#result-box').html(content).fadeIn(500);
        }
    });
    return false;

}
function updateView() {

    var brand = getURLBrandSegment();
    var location = getURLLocationSegment();
    var selected = $('#view-toggle').children('.view-toggle-selected').attr('id');
    if (selected == 'view-toggle-gallery') updateCoverflow(lang_code + brand + location);
    else if (selected == 'view-toggle-list') updateResults(lang_code + brand + location);
    else updateMap(lang_code + brand + location);

    var url = base_url + '/ajax/propertycount/' + brand + location;
    $.ajax({
        type:'POST',
        url:url,
        success: function(data) {
            $('#result-count').html(data);
        }
    });

}
debounce_updateView = $.debounce(updateView,1000);

/* Booking Widget Functions */
function processBookNow(id, viewType, cityName, stateCode, countryCode) {

    var url = 'http://www.starwoodhotels.com/preferredguest/search/ratelist.html';
    url += '?localeCode=en_US&language=en_US&propertyID='+id+'&city='+cityName+'&stateCode='+stateCode+'&countryCode='+countryCode+'&filterType=Amenity&filterCriteria=Resort&numberOfAdults=2&numberOfRooms=1';

    var $datePick = $('#' + viewType + '-date-pick-' + id).val();
    var number_nights = parseInt($('#' + viewType + '-no-nights-' + id).val());

    if ($datePick.length) {
        var dateArray = $datePick.split('/');
        var curDate = new Date();
        curDate.setFullYear(dateArray[2], dateArray[1]-1, dateArray[0]);
        url += '&arrivalDate='+dateArray[2]+'-'+dateArray[1]+'-'+dateArray[0];

        curDate.setDate(curDate.getDate() + number_nights);

        var month = curDate.getMonth()+1;
        if (month < 10) month = '0'+month;

        var day = curDate.getDate();
        if (day < 10) day = '0'+day;

        url += '&departureDate='+curDate.getFullYear()+'-'+month+'-'+day;
    }

    window.open(url);
    return false;
    
}
