﻿//Type.registerNamespace("Common.Web.UI");

//Common.Web.UI.radMenu = function (element) {
//    Common.Web.UI.radMenu.initializeBase( this, [element]); 
//    
//}

function prepareMenu(mnu, alignToParent) {
    mnu.alignToParent = alignToParent;
    mnu.cvMouseOver = function( mnu, args) {
        mnu.mouseOverPending = true;
        //writeLog("internal over");
    }
    mnu.cvMouseOut = function (mnu, args) {
        //writeLog("internal out");
        mnu.mouseOverPending = false;
        mnu.cvInitTimerOpenDefault(mnu);            
    }
    mnu.cvItemBlur = function (mnu, args) {
        //writeLog("internal blur");
        return false;
        var aoitem = mnu.cvGetAlwaysOnItem(mnu);
        var bitem = args.get_item();
        if ((aoitem) && (aoitem == bitem)) {
            alert("expanded sur l'�l�ment");
            Sys.UI.DomElement.addCssClass(aoitem.get_linkElement(), 'rmExpanded');
        }
        else {                    
            mnu.cvInitTimerOpenDefault(mnu);        
        }
    }
    mnu.cvItemClosed = function (mnu, args) {            
        //writeLog("internal closed");
        mnu.cvInitTimerOpenDefault(mnu);
    } 
    mnu.cvItemOpening = function (mnu, args) {
        //writeLog("internal opening");
        var item = args.get_item();       
        var itel = item.get_element();
        var left = (itel.offsetLeft) ;
        var grp = item.get_groupSettings();
        grp.set_offsetX(-left) ;
    }
    mnu.cvGetAlwaysOnItem = function (mnu) {
        return mnu.findItemByAttribute("alwaysOn","true");
    }
    mnu.cvInitTimerOpenDefault = function (mnu) {            
        mnu.cvOpenDefaultTimerHandle = window.setTimeout( 
            function() {
                window.clearTimeout( mnu.openDefaultTimerHandle);
                mnu.cvOpenDefaultTimerHandle = null;   
                mnu.cvOpenDefaultSubMenu(mnu);
            }, 
            500);        
    }
    mnu.cvOpenDefaultSubMenu = function(mnu) {
        if (!mnu.mouseOverPending) {                                                
            var act = mnu.get_openedItem(); 
            if (!act) {                    
                //var item = mnu.findItemByValue("def");                    
                var item = mnu.cvGetAlwaysOnItem(mnu);
                if (item) {
                    act = mnu.get_focusedItem();                    
                    if ((act) && (act != item)) { act.set_focused(false); }
                    var childs = item.get_items();                    
                    if ((childs) && (childs.get_count() > 0)) {
                        // l'�l�ment a des enfants: on se contente de l'ouvrir:
                        item.open();
                    } else {                    
                        // item.set_focused(true); pas de focus sinon il le perd d�s qu'on clique dans la page
                        var p = item.get_parent(); 
                        if (p && p.open) { p.open(); } // 28/10/2008 - [NK] - ajout du test p.open pour �viter une erreur js dans certains cas (ex : si pas d'ouverture de sous-menu?)
                        Sys.UI.DomElement.addCssClass(item.get_linkElement(), 'rmExpanded');
                    }
                }
            }
        }
    }

    mnu.add_itemBlur( mnu.cvItemBlur);
    mnu.add_mouseOver(mnu.cvMouseOver);
    mnu.add_mouseOut(mnu.cvMouseOut);
    mnu.add_itemClosed( mnu.cvItemClosed);
    if (mnu.alignToParent) {
        mnu.add_itemOpening( mnu.cvItemOpening);
    }
    mnu.cvOpenDefaultTimerHandle = null; 
    var item = mnu.cvGetAlwaysOnItem(mnu);
    if (item) {
        mnu.cvOpenDefaultSubMenu(mnu);        
    }
}


function cvInitRadMenu( mnuId, alignToParent) {        
    var mnu = $find( mnuId) ;
    if (mnu) {
        prepareMenu(mnu, alignToParent);            
    }
}

// Notify ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();