﻿/*global jQuery, window, document */
//Simple tabs behavior for V1 tabs modules
(function ($) {
    $.fn.simpleTabs = function (options) {
        var defaults = {
            //set default options
            defaultTabIndex: 0,
            callbacks: [],
            ajaxCompelete: null
        },
            settings = $.extend(defaults, options),
            module = this.data("currentTabIndex", settings.defaultTabIndex),
            panelAjaxHandler = function () {
                var panel = $(this).find("li:odd").addClass("alt").end();
                if ($.isFunction(settings.ajaxComplete)) {
                    settings.ajaxComplete(panel);
                }
            };

        this.each(function () {
            $(this).find('ul.module-tabs-menu li').each(function (i, el) {
                $(el).click(function (ev) {
                    var currentTabIndex = module.data("currentTabIndex"),
                        panel;
                    //hide previous tab
                    module.find(".simple-tabs-panel:eq(" + currentTabIndex + ")").hide();
                    //show clicked tab
                    panel = module.find(".simple-tabs-panel:eq(" + i + ")").show();
                    //set selected css
                    module.find("ul.module-tabs-menu li:eq(" + currentTabIndex + ") a").removeClass("selected");
                    module.find("ul.module-tabs-menu li:eq(" + i + ") a").addClass("selected");
                    module.data("currentTabIndex", i);

                    // the callback must receive a panel that is a jQuery object
                    if ($.isFunction(settings.callbacks[i])) {
                        settings.callbacks[i](panel, i);
                    }

                    panel.ajaxComplete(panelAjaxHandler);
                });
            });
            //fire click event of default tab
            module.find('ul.module-tabs-menu li:eq(' + settings.defaultTabIndex + ')').click();
        });

        //expose selected index
        module.selectedIndex = function (index) {
            if (!isNaN(index)) { module.find('ul.module-tabs-menu li:eq(' + index + ')').click(); return module; } else { return module.data("currentTabIndex"); }
        };

        return this;
    };
} (jQuery));
