﻿function reattachContentLinkHandlers() {
    $('.state-link').stateClick();
}

$(function() {
    $('.menu-right,.menu-left').hide();

    $('.hover-image-item').hoverLinkImage();

    var ajaxClickOptions = {
        mainContent: '.main-content',
        activeContent: '.active-content-wrapper',
        hiddenContent: '.hidden-content',
        ajaxLoader: '.ajax-loader',
        menuItem: '.ajax-menu-item'
    };

    $('.ajax-menu-item').ajaxClick(ajaxClickOptions);

    $('.menu-slider-left').horizontalMenuSlider('.menu-left', { slideDirection: 'right' });
    $('.menu-slider-right').horizontalMenuSlider('.menu-right');

    reattachContentLinkHandlers();
});

$.fn.extend({
    horizontalMenuSlider: function(menuItemClass, options, waitTime) {
        var dir = ((options != null) && options.slideDirection != null) ? options.slideDirection : 'left';
        var speed = ((options != null) && options.speed != null) ? options.speed : 300;
        var t;

        if (waitTime == null) waitTime = 600;

        $(menuItemClass).hoverIntent(
            function() { clearTimeout(t); },
            function() { t = setTimeout(function() { $(menuItemClass).hide('slide', { direction: dir }, speed); }, waitTime); }
        );

        return this.hoverIntent(
            function() { clearTimeout(t); $(menuItemClass).show('slide', { direction: dir }, speed); },
            function() { t = setTimeout(function() { $(menuItemClass).hide('slide', { direction: dir }, speed); }, waitTime); }
        );
    },
    hoverLinkImage: function() {
        return this.hover(
            function() {
                var img = $(this).find('img');
                var src = img.attr('src');
                img.attr('src', src.replace(/_off.gif/i, '_on.gif'));
            },
            function() {
                var img = $(this).find('img');
                var src = img.attr('src');
                img.attr('src', src.replace(/_on.gif/i, '_off.gif'));
            }
        );
    },
    ajaxClick: function(options) {
        return this.click(function() {
            var url = this.href;
            var linkClassName = options.menuItem;

            if ($(document).data('selected-url') == url) return false;
            $(document).data('selected-url', url);

            var selector = options.mainContent + ' > ' + options.activeContent;
            $(selector).fadeOut('normal', function() {
                var oldContent = $(this);
                if (options.ajaxLoader) $(options.ajaxLoader).show();

                $(options.hiddenContent).load(url + ' ' + selector, null, function() {
                    var newHeight = $(this).height();
                    oldContent.html($(this).find(options.activeContent).html());
                    
                    $(options.mainContent).animate({ height: newHeight }, 'normal', 'linear', function() {
                        if (options.ajaxLoader) $(options.ajaxLoader).hide();

                        oldContent.fadeIn('normal');
                        $(selector + ' > ' + linkClassName).ajaxClick(options);
                    });

                    reattachContentLinkHandlers();
                });
            });

            return false;
        });
    },
    stateClick: function() {
        return this.click(function() {
            var stateCode = this.href.substr(this.href.indexOf('#') + 1);

            $('.location-list-item').hide();
            $('.location-list-item:has(.state-code:contains("' + stateCode + '"))').show();

            $('.location-list-item:visible').show();

            $('.location-content').show();
            $('.location-content:not(:has(.location-list > .location-list-item:visible))').hide();

            $('.' + this.className).removeClass('selected');
            $(this).addClass('selected');

            this.blur();

            return false;
        });
    }
});