/* v1.0.1 */
var CBA = function () {

    var _$ = (WDN.jQuery == null) ? jQuery : WDN.jQuery;
    var _cbaTabChangeCallback = null;

    var cbaTabChange = function (n) {
        var tContID = n.substring(0, n.indexOf('_'));
        var tTabID = n.substring(n.indexOf('_') + 1);
        _$('[id^=cbad_' + tContID + '_]').removeClass('cba_tabcontent_show').addClass('cba_tabcontent_hide');
        _$('[id^=cbaa_' + tContID + '_]').removeClass('cba_tab_active').addClass('cba_tab_inactive');
        _$('#cbad_' + tContID + '_' + tTabID).removeClass('cba_tabcontent_hide').addClass('cba_tabcontent_show');
        _$('#cbaa_' + tContID + '_' + tTabID).removeClass('cba_tab_inactive').addClass('cba_tab_active');
        if (_cbaTabChangeCallback != null) {
            _cbaTabChangeCallback();
        };
    };

    return {
        assignJQuery: function (jQueryReference) {
            _$ = jQueryReference;
        },

        createTabs: function (d) {
            if (d != undefined) {
                _cbaTabChangeCallback = (d.tabChangeCallback != undefined) ? d.tabChangeCallback : _cbaTabChangeCallback;
            }
            var tabContainers = _$('.cba_tab_container');
            var countTabContainers = 0;
            var countTabs = 0;
            var sD = [];
            var setDefault = document.location.toString();
            if (setDefault.indexOf('#') != -1) {
                sD = (setDefault.substring(setDefault.indexOf('#') + 1)).split('x');
            }
            _$('head').append('<link rel="stylesheet" type="text/css" href="/lib/js/cba/css/cba_tabs.css" media="all" />');
            tabContainers.each(function () {
                var tabContainer = _$(this);
                var tChildren = tabContainer.children();
                var tabNav = _$('<ul class="cba_tabnav"></ul>');
                if ((sD[countTabContainers] > (tabContainer.children().size() - 1)) || (sD[countTabContainers] == null) || (isNaN(sD[countTabContainers]))) { sD[countTabContainers] = 0; }
                tChildren.each(function () {
                    var id = countTabContainers + '_' + countTabs;
                    var tab = _$(this);
                    var cName = (countTabs == sD[countTabContainers]) ? 'cba_tab_active' : 'cba_tab_inactive';
                    tab.addClass(((countTabs == sD[countTabContainers]) ? 'cba_tabcontent_show' : 'cba_tabcontent_hide'));
                    tab.attr('id', 'cbad_' + id);
                    var nTab = _$('<li id="cbaa_' + id + '" class="' + cName + '"><span class="anlt"><a>' + tab.find(':nth-child(1)').html() + '</a></span></li>');
                    tab.find(' > :nth-child(1)').remove();
                    nTab.bind('click', function () { cbaTabChange(id); });
                    tabNav.append(nTab);
                    countTabs++;
                });
                _$(tabContainer).prepend(tabNav);
                countTabContainers++;
                countTabs = 0;
                //tabContainer.css('visibility', 'visible');
                tabContainer.append('<div style="clear:both;"></div>');
            });
            _$('.cba_tabnav').each(function () { _$(this).after('<div style="clear:both;"></div><div class="cba_tabnav_bottom"></div>'); });
        },

        stripe: function (tID, c1, c2, bC, cB, cT) {
            c1 = (c1 == null) ? '#DEE6EE' : c1; //Row Color01
            c2 = (c2 == null) ? '#FCFCFC' : c2; //Row Color02
            bC = (bC == null) ? '#BFCCD8' : bC; //CellBorder Color
            cB = (cB == null) ? '#336699' : cB; //Caption Border Color
            cT = (cT == null) ? '#336699' : cT; //Caption Text Color
            _$('#' + tID + ' tbody > tr:nth-child(odd)').css('background-color', c1);
            _$('#' + tID + ' tbody > tr:nth-child(even)').css('background-color', c2);
            _$('#' + tID + ' tbody > tr > td').css({ 'border-bottom': '1px solid ' + bC, 'border-top': '1px solid ' + bC });
            _$('#' + tID + ' caption').css({ 'border-bottom': '3px solid ' + cB, 'font-weight': 'bold', 'color': cT });
            _$('#' + tID).toggle().toggle(); //Necessary in FireFox for some reason
        },

        collapse: function () {
            //<ul class="collapse">
            //    <li>
            //       Clickable Text
            //          <div>Hidden</div>
            //          <ul><li>Hidden stuff</li></ul>
            //   </li> 
            // need to put the styling in here
            _$('ul.collapse > li').each(function () {
                var children = _$(this).children();
                _$(children).each(function () {
                    _$(this).remove();
                });
                _$(this).wrapInner("<a></a>");
                _$('ul.collapse > li > a').addClass('closed');
                _$(this).append(children);
                _$(children).each(function () {
                    _$(this).css('display', 'none');
                });
            });

            _$('ul.collapse > li > a').click(function () {
                if (_$(this).hasClass('closed')) {
                    _$(_$(this).siblings()).each(function () {
                        _$(this).css('display', 'block');
                    });
                    _$(this).removeClass('closed');
                    _$(this).addClass('open');
                }
                else {
                    _$(_$(this).siblings()).each(function () {
                        _$(this).css('display', 'none');
                    });
                    _$(this).removeClass('open');
                    _$(this).addClass('closed');
                }
            });
        }
    };
} ();
