﻿/**
* Horizontal Accordion Styles
* Author: Brainstorm Design, Inc
* Design Date: 2010-09
*/

(function ($) {

    if (!$.fn.hzAccordion) {
        $.fn.extend({
            "hzAccordion": function (options_arg) {
                var options = $.extend({}, {
                    panelWidth: 879,
                    handleWidth: 27,
                    handleSelector: '.horizontal-accordion-handle',
                    slideSelector: '.horizontal-accordion-container-li',
                    contentSelector: '.horizontal-accordion-li-content',
                    slidingSpeed: 350
                }, options_arg);

                this.each(function (eachNdx, accordianContainer) {
                    // custom horizontal accourdian
                    var panel_width = options.panelWidth;
                    var handle_width = options.handleWidth;

                    var current_panel_index = 0;

                    function hzOpenPanel(panel_arg) {
                        var current_panel = panel_arg;
                        var all_panels = $(options.slideSelector, accordianContainer).get().reverse();
                        var new_panel_index = $.inArray(current_panel, all_panels);

                        // not found or already on this panel
                        if ((new_panel_index == -1) || (new_panel_index == current_panel_index))
                            return;

                        var previous_panel = all_panels[current_panel_index];

                        $(options.slideSelector + ' ' + options.contentSelector, accordianContainer).css({ 'opacity': 0 });

                        $(options.contentSelector, current_panel).css({ 'opacity': 1 });

                        $(options.contentSelector, previous_panel).css({ 'opacity': 1 }).animate({ 'opacity': 0.5 }, { 'duration': options.slidingSpeed });

                        for (var i = 0; i < all_panels.length; i++) {
                            var panel = all_panels[i];
                            var dir = i < new_panel_index ? -1 : 1;

                            var new_pos_left = (dir < 0) ? (-panel_width + ((i + 1) * handle_width)) : (i * handle_width);

                            if (($(panel).position().left != new_pos_left) && $(panel).data('animation_opening') != 1) {
                                $(panel).data('animation_opening', 1);

                                $(panel).stop(true).animate({ 'left': new_pos_left + 'px' }, { 'duration': options.slidingSpeed, 'easing': 'linear', 'complete': function () { $(this).data('animation_opening', 0) } });
                            }
                        }

                        current_panel_index = new_panel_index;
                    }

                    // handle clickin handles
                    $(options.handleSelector, this).click(function () {
                        var this_panel = $(this).closest(options.slideSelector).get(0);
                        hzOpenPanel(this_panel);
                    });


                }); // each
            }
        });
    }
})(jQuery);
