/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("TenOverNine.Framework");

TenOverNine.Framework.SonOfSuckerfishBehavior = function(element) {
    TenOverNine.Framework.SonOfSuckerfishBehavior.initializeBase(this, [element]);
    
    this._navItems = null;
    
    this._navItemMouseOverHandler = null;
    this._navItemMouseOutHandler = null;
    
    this._collapsedCssClass = null;
    this._expandedCssClass = null;
};

TenOverNine.Framework.SonOfSuckerfishBehavior.prototype = {
    initialize: function() {
        TenOverNine.Framework.SonOfSuckerfishBehavior.callBaseMethod(this, 'initialize');
        
        var expandedCssClass = this._expandedCssClass;
        var collapsedCssClass = this._collapsedCssClass;
        var extender = this;

        this._navItemMouseOverHandler = function() { this.className = extender.get_expandedCssClass(); };
        this._navItemMouseOutHandler = function() { this.className = extender.get_collapsedCssClass(); };
                
        var elem = this.get_element();
        
        this._navItems = elem.getElementsByTagName("LI");
        
        for (var i=0; i < this._navItems.length; i++)
        {
	        var navItem = this._navItems[i];
	        $addHandler(navItem, "mouseover", this._navItemMouseOverHandler);
	        $addHandler(navItem, "mouseout", this._navItemMouseOutHandler);
        }
    },
    
    get_collapsedCssClass: function() {
        return this._collapsedCssClass;
    },
    set_collapsedCssClass: function(value) {
        this._collapsedCssClass = value;
    },
    
    get_expandedCssClass: function() {
        return this._expandedCssClass;
    },
    set_expandedCssClass: function(value) {
        this._expandedCssClass = value;
    },

    dispose: function() {        
        if (this._navItems)
        {
            for (var i=0; i < this._navItems.length; i++)
            {
                var navItem = this._navItems[i];
                $removeHandler(navItem, "mouseover", this._navItemMouseOverHandler);
                $removeHandler(navItem, "mouseout", this._navItemMouseOutHandler);
            }
        }
        
        TenOverNine.Framework.SonOfSuckerfishBehavior.callBaseMethod(this, 'dispose');
    }
};

TenOverNine.Framework.SonOfSuckerfishBehavior.registerClass('TenOverNine.Framework.SonOfSuckerfishBehavior', Sys.UI.Behavior);
