YAHOO.namespace("ml");

YAHOO.ml.Divider = function() {
    var obj = {};

    var yue = YAHOO.util.Event,
        yud = YAHOO.util.Dom;

    obj.animAttributes = {
        backgroundColor: { to: "#333" }
    };

    obj.init = function() {
        yue.onDOMReady(this.initDivider, this, true);
    };

    obj.initDivider = function() {
        var menu = yud.get("ml-divider-menu");
        if (menu) {
            this.divider = yud.get("ml-divider");
            this.dividerBgColor = yud.getStyle(this.divider, "background-color");

            // Get divider sections
            this.sections = yud.getElementsByClassName("ml-section");
            yud.addClass(this.sections, "ml-section-hidden");

            // Get divider "view all" link
            this.allLink = yud.get("ml-divider-all");
            yud.setStyle(this.allLink, "display", "inline");

            // Get section links
            this.menuLinks = yud.getElementsBy(function() { return true; }, "a", menu);
            yue.on(this.menuLinks, "click", this.menuClick);
            this.setActiveSections(this.menuLinks[0]); // Default to first section
        }
    };

    obj.menuClick = function(e) {
        yue.preventDefault(e);
        var target = yue.getTarget(e);
        obj.setActiveSections(target);
    };

    obj.setActiveSections = function(target) {
        // Reset menu and divider
        yud.removeClass(obj.activeMenuLink, "ml-section-active");
        if (obj.activeMenuLink) {
            yud.removeClass(obj.activeMenuLink, "ml-section-active");
        }
        if (obj.activeSections) {
            yud.removeClass(obj.activeSections, "ml-section-active");
        }

        // Set active link
        obj.activeMenuLink = target;
        yud.addClass(target, "ml-section-active");
        
        // Set active section
        var sections = new Array();
        if (target == obj.allLink) {
            // TODO: Ajax request handling
            sections = sections.concat(obj.sections);
        } else {
            var sectionId = target.hash;
            if (sectionId) {
                // Target inside page
                sectionId = sectionId.substr(1);
                sections.push(yud.get("ml-section-" + sectionId));
            } else {
                // TODO: Ajax request
                url = target.href;
            }
        }
        // Set active section
        obj.activeSections = sections;
        yud.addClass(sections, "ml-section-active");

        var sectionAnim = new YAHOO.util.ColorAnim(obj.divider, obj.animAttributes);
        sectionAnim.onComplete.subscribe(obj.animComplete);
        //sectionAnim.animate();
    };

    obj.animComplete = function() {
        yud.setStyle(obj.divider, "background-color", obj.dividerBgColor);
    };

    return obj;
}();

YAHOO.ml.Divider.init();

