if (typeof ecoxotic === 'undefined') {
    var ecoxotic = {};
}

ecoxotic.tabDisplay = (function () {
    var util, app, service, TabDisplay;
    
    TabDisplay = function (target) {
        this.target = $(target);
        this.target.observe('click', app.callbacks.globalClickHandler);
    };
    
    TabDisplay.prototype = {
        target   : null,
        activate : function () {}
    };
    
    app = {
        init : function () {
            $$('.tab-display').each(app.factory);
        },
        
        factory : function (target) {
            return new TabDisplay(target);
        },
        
        callbacks : {
            globalClickHandler : function (event) {
                var element, href, tabId;
                
                element = event.element();
                
                if (element.nodeName !== 'A') return;
                
                href = element.href;
                tabId  = href.split('#')[1];
                
                if (tabId) {
                    element.blur();
                    util.deactivateCurrentTab(this);
                    util.activateTab(element.parentNode, $$('#' + tabId)[0]);
                    
                    event.stop();
                    return false;
                }
                
                return true;
            }
        }
    };
    
    util = {
        deactivateCurrentTab : function (target) {
            var target, triggers, views;
            
            target        = $(target);
            activeTrigger = target.select('li.tab-active')[0];
            activeView    = target.select('div.tab-active')[0];
            
            activeTrigger.removeClassName('tab-active');
            activeView.removeClassName('tab-active');
        },
        
        activateTab : function (newActiveTrigger, newActiveView) {
            newActiveTrigger = $(newActiveTrigger);
            newActiveView    = $(newActiveView);
            
            newActiveTrigger.addClassName('tab-active');
            newActiveView.addClassName('tab-active');
        }
    };
    
    return service = {
        init : app.init,
        factory : app.factory
    };
})();

Event.observe(window, 'load', ecoxotic.tabDisplay.init);