
$.blockUI.defaults.fadeIn = 0;
$.blockUI.defaults.message = '<h2><img class="ajax-loader" src="/assets/gfx/ajax-loader.gif" alt="Loading" height="15" width="15" /> Just a moment...</h2>';
$.blockUI.defaults.css.width = '45%';
$.blockUI.defaults.overlayCSS = { backgroundColor: '#002663', opacity: 0.4 };

var hotel_gallery_main = [];

$(document).ready(function() {

    $('div.rb-display-top-rotator').rbRotatorWidget();
    
    // jQuery all buttons
    $('a.rb-jquery-button, input.rb-jquery-button, button.rb-jquery-button').button();
    
    if(typeof(c_searchbox_data) != 'undefined')
    {
        new searchByLocationForm('.rb-sidebar-search-box', c_searchbox_data);
        new searchByLocationForm('.rb-home-search-h', c_searchbox_data);
        new searchByLocationForm('.rb-home-search-b', c_searchbox_data);
    }
    
    /* HOME PAGE THEME SEARCH */
    var themeSearch = $('.rb-home-search-t');
    if(themeSearch.length)
    {
        var themeSelect = themeSearch.find('select');
        var themeSelectHandler = function() {
            if(themeSelect.val()!='')
            {
                location.href=themeSelect.val();
            }
        };
        //themeSelect.change(themeSelectHandler);
        themeSearch.find('span.search-submit').click(themeSelectHandler);
    }
                            
    
    $('a.rb-search').bind('click', function () {
        $('.rb-sidebar-search-box').toggle('fade');
        return false;
    });
    
    
    // Image src toggle on hover
    $('#rb-side-tabs a, a.rb-cycle-hotel-tab-nav-p, a.rb-cycle-hotel-tab-nav-n, div.matrix-cal h1 a:not(".ui-state-disabled")').hover(function () {
        var img = $(this).find('img');
        var src = img.attr('src');
        var newSrc = src.replace('.gif', '-h.gif').replace('.png', '-h.png');
        img.attr('src', newSrc);
    }, function () {
        var img = $(this).find('img');
        var src = img.attr('src');
        var newSrc = src.replace('-h.gif', '.gif').replace('-h.png', '.png');
        img.attr('src', newSrc);
    });
    
    // Toggle class on hover and follow child link on click (if exists)
    $('div.rb-link, span.rb-hover').click(function() {
        var $link = $(this).find('a').eq(0);
        if($link.length)
        {
            window.location = $link.attr('href');
        }
    }).hover(function() {
        var masterClass = $(this).attr('class').split(/\s+/)[0];
        $(this).addClass(masterClass + '-hover');
    }, function() {
        var masterClass = $(this).attr('class').split(/\s+/)[0];
        $(this).removeClass(masterClass + '-hover');
    }).css('cursor', 'pointer');

   
   // Hotel right cycle
    $('.rb-cycle-hotel-tab-slides-right-cycle').cycle({
        before: function (currSlideElement, nextSlideElement, options, forwardFlag) {
            var slide = $(this);
            var caption = slide.parent('div').parent('div').nextAll('.rb-cycle-caption');
            var link = slide.attr('href');
            var text = slide.find('img').attr('alt');
            caption.html('<a href="'+link+'">'+text+'</a>');
        },
        pause: true,
        timeout: 7000,
        next: '.rb-cycle-hotel-tab-slides-right .rb-cycle-hotel-tab-nav-n',
        prev: '.rb-cycle-hotel-tab-slides-right .rb-cycle-hotel-tab-nav-p'
    });
    

    var tab_selector    = '.rb-tabs';
    var tab_selector_a  = 'ul.ui-tabs-nav a';
    var tab_prefix      = '#tab-';
    var tab_link_class  = 'rb-tab-href';
    var $tabs           = $(tab_selector);
    
    // This selector will be reused when selecting actual tab widget A elements.
   
    // Enable tabs on all tab widgets. The `event` property must be overridden so
    // that the tabs aren't changed on click, and any custom event name can be
    // specified. Note that if you define a callback for the 'select' event, it
    // will be executed for the selected tab whenever the hash changes.
    $tabs.tabs({
        event: 'change',
        select: function(event, ui) {
            // Register Pageview with GA
            try {
                //alert('TrackPageView: ' + document.location.pathname + '/' + $(ui.tab).attr('href'));
                _gaq.push(['_trackPageview', document.location.pathname + '/' + $(ui.tab).attr('href')]);
            } catch(e) {}
            
            return true;
        }
    }).show();
  
    // Define our own click handler for the tabs, overriding the default.
    $tabs.find( tab_selector_a ).click(function(){
        
        var a = $(this);
        
        // If it has the class to go to a link
        if(a.hasClass(tab_link_class))
        {
            var url = $.data(this, 'href.tabs');
            if(a.hasClass('rb-tab-href-new'))
            {
                window.open(url, '_blank');
            }
            else
            {
                location.href=url;
            }
            return false;
        }
        
        var state = {};
      
        // Get the id of this tab widget.
        var id = a.closest( tab_selector ).attr( 'id' );
        
        // Get the href of this tab.
        var tab_id = a.attr('href').replace(tab_prefix, '');
    
        // Set the state
        state[ id ] = tab_id;
        $.bbq.pushState( state );
    });
    
    /* BREAK TRANSPORT TYPE SELECTOR */
    var break_tt = $('.rb-package-tt').find('input');
    if(break_tt.length)
    {
        break_tt.bind('statechange', function() {
            var changed_tt = $(this);
            var tt_id = changed_tt.val();
            var li_all = changed_tt.parents('.rb-tab-wrapper').find('li.rb-package-button');
            li_show = li_all.filter('.rb-package-tt-'+tt_id);
            if(li_show.length)
            {
                li_all.hide();
                li_show.fadeIn();
            }
            else
            {
                li_all.fadeIn();
            }
            changed_tt.attr('checked', true);
        }).click(function() {
            $.bbq.pushState( {'tt': $(this).val() } );
        });
    }
  
    // Bind an event to window.onhashchange that, when the history state changes,
    // iterates over all tab widgets, changing the current tab as necessary.
    $(window).bind( 'hashchange', function(e) {
    
        var break_tt_state = e.getState('tt') || false;
        if(break_tt_state)
        {
            break_tt.filter('[value="'+break_tt_state+'"]').trigger('statechange');
        }
        
        // Iterate over all tab widgets.
        $tabs.each(function() {
        
            // Get state from URL
            var tab_idx = e.getState( this.id, true ) || 0;
            var selected_tab;
            
            if(tab_idx == 0)
            {
                selected_tab = $(this).find( tab_selector_a ).eq(0);
            }
            else
            {
                selected_tab = $(this).find( tab_selector_a ).filter('[href=' + tab_prefix + tab_idx + ']');
            }
            
            // If found and not a link trigger defined show event
            if(selected_tab.length && !selected_tab.hasClass(tab_link_class))
            {
                selected_tab.triggerHandler( 'change' );
            }
        });
    })
  
    // Since the event is only triggered when the hash changes, we need to trigger
    // the event now, to handle the hash the page may have loaded with.
    $(window).trigger( 'hashchange' );
    
    // Add effect to product tabs
    $('.rb-tabs-product').tabs('option', 'fx', { opacity: 'toggle', duration: 'fast' } );
    
    // Select default hotel adv nav tab
    $('.rb-tabs-2').each(function() {
        var hotel_adv_selected_tab = $(this).find('li.rb-ui-tabs-selected a');
        if(hotel_adv_selected_tab.length)
        {
            var hotel_adv_state_id = $(this).attr('id');
            var hotel_adv_state_val = hotel_adv_selected_tab.attr('href').replace(tab_prefix, '');
        
            var current_state = $.bbq.getState(hotel_adv_state_id);
            if(current_state)
            {
                return false;
            }
            
            var hotel_adv_state = {};
            // Set the state
            hotel_adv_state[ hotel_adv_state_id ] = hotel_adv_state_val;
            $.bbq.pushState( hotel_adv_state );
        }
    });
    
    
    /* HOVER FOR DISPLAY TILES */
    
    $('.rb-display-tile a').hover(function() {
        $(this).parent('div').addClass('rb-display-tile-h');
    }, function() {
        $(this).parent('div').removeClass('rb-display-tile-h');
    });
    
    
    
    /* HOTEL PHOTOS CYCLE - MOVE TO HOLIDAYS JS */
    var hotel_gallery_main_nav_selector = 'div.rb-cycle-hotel-tab-nav-super';
    $('.rb-cycle-hotel-tab-slides').each(function(index) {
    
        var container = $(this).parent('div.rb-content-box');
        var nav = container.nextAll(hotel_gallery_main_nav_selector);
        var nextButton = container.find('.rb-cycle-hotel-tab-nav-n');
        var prevButton = container.find('.rb-cycle-hotel-tab-nav-p');
        
        var container_id = nav.parents('div.rb-cycle-hotel-tab').attr('id');
        var thumbs = $('#' + container_id + ' ' + hotel_gallery_main_nav_selector + ' li');
        var thumbGroup = $('#' + container_id + ' ' + hotel_gallery_main_nav_selector).cycle({
            timeout: 0,
            speed: 600,
            fx: 'scrollHorz'
        });
        
        var thumbInit = true;
        
        hotel_gallery_main[index] = $(this).cycle({
            timeout: 0,
            speed:  'fast',
            pause: true,
            pager:  nav,
            pagerAnchorBuilder: function(idx, slide) {
                // return selector string for existing anchor 
                return '#' + container_id + ' ' + hotel_gallery_main_nav_selector + ' li:eq(' + idx + ') a';
            },
            before:     function(currSlideElement, nextSlideElement, options, forwardFlag)  {
                var caption = $(this).parent('div').nextAll('.rb-cycle-caption');
                caption.html(this.alt);
                var page = Math.floor(options.nextSlide/5);
                thumbGroup.cycle(page);
                
                thumbs.removeClass('rb-cycle-hotel-activepage');
                
                if(!thumbInit)
                {
                    thumbs.eq(options.nextSlide).addClass('rb-cycle-hotel-activepage');
                }
                else
                {
                    thumbs.eq(0).addClass('rb-cycle-hotel-activepage');
                }
                thumbInit = false;
            },
            next: nextButton,
            prev: prevButton
        });
        
    });
    
    $('ul.rb-cycle-hotel-tab-nav li').hover(function() {
        $(this).addClass('rb-cycle-hotel-hoverpage');
    }, function() {
        $(this).removeClass('rb-cycle-hotel-hoverpage');
    });
    
    $('#rb-section-break .rb-tabs-1 #tab-article').cityArticleWidget();

});

function product_tab_jump(tab, package_id)
{
    if(typeof(tab) == 'object')
    {
        for(var t in tab)
        {
            if($('#tab-' + tab[t] + '-' + package_id).length)
            {
                return product_tab_jump_sub(tab[t], package_id);
            }
        }
    }
    else
    {
        return product_tab_jump_sub(tab, package_id);
    }
    return false;
}

function product_tab_jump_sub(tab, package_id)
{
    var id = 'tab-detail-' + package_id;
    var dest = tab + '-' + package_id;
    var state = {};
    state[id] = dest;
    $.bbq.pushState(state);
    return false;
}

function product_image_jump(gallery_index, slide_index)
{
    hotel_gallery_main[gallery_index].cycle(slide_index);
    return false;
}


function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

function niceScroll(anchor, scrollTime) {
    var scrollTime = scrollTime ? scrollTime : 400;
    var scrollAfterAction = function() {
        //location.href=anchor;
    };
    var scrollSettings = {onAfter: scrollAfterAction};
    $.scrollTo(anchor, scrollTime, scrollSettings);
    return false;
}
