﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("Individ.UI");

Individ.UI.TopMenu = function(element) {
    Individ.UI.TopMenu.initializeBase(this, [element]);
}

Individ.UI.TopMenu.prototype = {
    attachHoverScripts: function(el) {
        if (!el.getElementsByTagName) return;
        var lis = el.getElementsByTagName('li');
        for (var i = 0; i < lis.length; i++) {
            var li = lis[i];
            li._cn = li.className;
            li._mouseover$delegate = Function.createDelegate(li, function(event) {
                this.className = this._cn + ' jshover ' + this._cn + '-jshover';
            });
            li._mouseout$delegate = Function.createDelegate(li, function(event) {
                this.className = this._cn;
            });
            $addHandler(li, 'mouseover', li._mouseover$delegate);
            $addHandler(li, 'mouseout', li._mouseout$delegate);
        }
    },
    detachHoverScripts: function(el) {
        if (!el.getElementsByTagName) return;
        var lis = el.getElementsByTagName('li');
        for (var i = 0; i < lis.length; i++) {
            var li = lis[i];
            if (li._mouseover$delegate) {
                $removeHandler(li, 'mouseover', li._mouseover$delegate);
                li._mouseover$delegate = null;
            }
            if (li._mouseout$delegate) {
                $removeHandler(li, 'mouseout', li._mouseout$delegate);
                li._mouseout$delegate = null;
            }
        }
    },

    initialize: function() {
        Individ.UI.TopMenu.callBaseMethod(this, 'initialize');

        // Add custom initialization here
        this.attachHoverScripts(this.get_element());
    },
    dispose: function() {
        //Add custom dispose actions here
        this.detachHoverScripts(this.get_element());
        Individ.UI.TopMenu.callBaseMethod(this, 'dispose');
    }
}
Individ.UI.TopMenu.registerClass('Individ.UI.TopMenu', Sys.UI.Control);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
