
if( typeof( WC ) == "undefined" ) WC={}; // define public Namespace
if( typeof( WC.Menu ) == "undefined") WC.Menu={};
    
var _=WC;  // private shortcut for namespace

var _activeMenus = new Object();
_activeMenus.currentMenu = '';
_oPrevOption=null;


function closeMenu(sMenuId) { _activeMenus[sMenuId].timeout = window.setTimeout('hide("' + sMenuId + '");', 1000); };

function hide(sMenuId) {

if( sMenuId== "GridContextMenu" ) { $(sMenuId).style.display="none";}
    if (!_activeMenus[sMenuId]) return;
    if (_activeMenus[sMenuId]._oPrevOption) { 
   deselect(_activeMenus[sMenuId]._oPrevOption);
   _activeMenus[_activeMenus.currentMenu].clicked = false;
  }
};

var _i = 0;
var _o = null;
function mouseover(e, sMenuId) {
    if (typeof (_popupId) != 'undefined' && _popupId != sMenuId) return;

    var o = (e ? e.target :window.event.srcElement) ;
    clearTimeout(_activeMenus[sMenuId].timeout);

   if( o == _o ) return;
   _o=o;

    if (_activeMenus.currentMenu != sMenuId) {
        hide(_activeMenus.currentMenu);
        _activeMenus.currentMenu = sMenuId;
    }

    var oCurrOption = getOptionId(o);
    if (!oCurrOption || oCurrOption.className == 'disable' || oCurrOption.className.indexOf('noref') != -1 || oCurrOption.className.indexOf('separator') != -1) return;

    if (oCurrOption != oCurrOption.parentNode._oPrevOption) {
        if (oCurrOption.parentNode._oPrevOption && !isParent(oCurrOption.parentNode._oPrevOption, oCurrOption))
            deselect(oCurrOption.parentNode._oPrevOption);
        select(oCurrOption);

     displayMenu( oCurrOption);
    }
};

 
 var _j=0;  
function mouseclick(e, sMenuId) {
   var o = (e ? e.target :window.event.srcElement) ;
   var oCurrOption = getOptionId(o);
    

  if (!oCurrOption ) return true;
  
if( oCurrOption.className.indexOf('noref') == -1 && ( o.blur ) )     o.blur();

/////foot.innerHTML = "CurrOption:" + oCurrOption.innerHTML + ' '+ o.href;

if ( document.all && o.tagName != "A") {
x=oCurrOption.getElementsByTagName('A')[0];
if ( x ) 
{
//alert(x.href.charAt(x.href.length-1));
if(x.href > "" && x.href.charAt(x.href.length-1) != "#") {x.click();
   //MR 11/02/06return;
   return false;
   
}
}

}


if( typeof WC.Menu.OnClick =='function') { 
   if ( ! WC.Menu.OnClick(oCurrOption, sMenuId ) ) return false;
   //MR 11/02/06return true;
}

ToggleChecked( oCurrOption );



   if (!oCurrOption || oCurrOption.className == 'disable' || oCurrOption.className.indexOf('noref') != -1 || oCurrOption.className.indexOf('separator') != -1  ||   ! oCurrOption._subMenuId ) {
     hide( sMenuId );  
     //MR 11/02/06return true;
    return true;
}



    if ( oCurrOption.parentNode._onClick ){
        
          if(  ! _activeMenus[sMenuId].clicked  ){
                 _activeMenus[sMenuId].clicked = true;
              
              deselect(oCurrOption);
              select(oCurrOption);
              displayMenu( oCurrOption);
           
             // return false;
         }
           else   {
                    hide(sMenuId);
                   select(oCurrOption);
               }
           
        return false;
   }

//return false;
return true;
};

function mousedown(e, sMenuId) {
   var o = (e ? e.target :window.event.srcElement) ;
   var oCurrOption = getOptionId(o);
   
   if( !oCurrOption || oCurrOption.className == 'disable' || oCurrOption.className.indexOf('noref') != -1 || oCurrOption.className.indexOf('separator') != -1) return;
   oCurrOption.className += " selected";
 };   

function isParent(oCurrOption) {
    var oPrevOption = oCurrOption.parentNode._oPrevOption;
    return oPrevOption._subMenuId && oPrevOption._subMenuId == oCurrOption.parentNode.parentNode.id;
};

function select(o) {
    o.className = o.className.replace('submenu', 'hoversubmenu');
    o.className = 'hover '  + o.className;
    o.parentNode._oPrevOption = o;
    _oPrevOption = o;
   

};

function deselect(o) {
    o.className = o.className.replace(/hover/g, '');
    o.className = o.className.replace(/selected/g, '');
    o.parentNode._oPrevOption = null;
    hideChildren(o);
};

function hideChildren(o) {
    if (!o._subMenuId) return;

    o = document.getElementById(o._subMenuId); //points to DIV
    s = o.firstChild;                          //point to UL

    if (s._oPrevOption) {
        s._oPrevOption.className = s._oPrevOption.className.replace(/hover/g, '');
        hideChildren(s._oPrevOption);
    }
    o.style.visibility = 'hidden';
    menuOverlay(o, 'hidden');
};


var _zIndex=100;
function displayMenu( oCurrOption) {

if (!oCurrOption._subMenuId) return ;
var oMenu = document.getElementById( oCurrOption._subMenuId );

    if( oCurrOption.parentNode._onClick && ! _activeMenus[_activeMenus.currentMenu].clicked )
          return;
   
   
   
    var sMenuType = (oCurrOption.parentNode._menuType == 'HORIZONTAL') ? 'HORIZONTAL' : 'VERTICAL';
    var t;
    var l;
    var r;
    var sDir = 'rtl'; /* right to left */
    var p = getPosTopLeft(oCurrOption);
   
  if (  navigator.appName.indexOf("Microsoft") == -1 ) {
    p.top = p.top  - oCurrOption.parentNode.scrollTop;
    }
  else { 
  
    p.top = p.top   +  document.documentElement.scrollTop + document.body.scrollTop;
   p.left = p.left + + document.documentElement.scrollLeft + document.body.scrollLeft;
 }
    var offsetHx = _activeMenus[_activeMenus.currentMenu].offsetHx;
    var offsetHy = _activeMenus[_activeMenus.currentMenu].offsetHy;
    var offsetVx = _activeMenus[_activeMenus.currentMenu].offsetVx;
    var offsetVy = _activeMenus[_activeMenus.currentMenu].offsetVy;

   oCurrOption.className +=  ' selected';
   l = p.left;
     
    if (sMenuType == 'HORIZONTAL') {
        t = p.top + offsetVy + oCurrOption.offsetHeight;
          
        sDir = ((l + offsetVx + oMenu.offsetWidth) > document.body.scrollWidth) ? 'rtl' : 'ltr';
        //alert(   sDir + '  ==  Cw:' +document.body.clientWidth+'  -- '+  '  left' + ( l + offsetVx + oMenu.offsetWidth) );

        if (sDir == 'rtl') 
            l = l + offsetHx + oCurrOption.offsetWidth + document.body.scrollLeft - oMenu.offsetWidth;
        else
            r = document.body.scrollWidth - l - offsetHx - oCurrOption.offsetWidth;
        
    } else {
        t = p.top + offsetHy;    // + 1;
        
        sDir = ((l + offsetHx + oCurrOption.offsetWidth + oMenu.offsetWidth) > document.body.scrollWidth) ? 'rtl' : 'ltr';
        if (sDir == 'rtl')
            l = p.left - oMenu.offsetWidth - offsetHx;
        else
            l = p.left + offsetHx + oCurrOption.offsetWidth;
            
    }
//alert( sDir  + " " + p.left + "  " + oCurrOption.offsetWidth + oMenu.offsetWidth+  "  " + document.body.scrollWidth);
    //alert( 'R:' + r + '  SL:' + document.body.scrollLeft  + ' SW:' + document.body.scrollWidth + ' CW:' +  document.body.clientWidth);

    // read menu specific attributes from UL Element
    var oAttr = oMenu.getElementsByTagName('UL');
    if (oAttr) {
        oAttr = oAttr[0];
        if (oAttr.getAttribute("_offsetX")) l += parseInt(oAttr.getAttribute("_offsetX"));
        if (oAttr.getAttribute("_offsetY")) t += parseInt(oAttr.getAttribute("_offsetY"));
        if (oAttr.getAttribute("_top")) t = oAttr.getAttribute("_top");
        if (oAttr.getAttribute("_left")) l = oAttr.getAttribute("_left");
        if (oAttr.getAttribute("_dir")) sDir = oAttr.getAttribute("_dir");
    }  
        t += 'px';
        l += 'px';
        r += 'px';
  
    setFilters(oMenu.style, 'apply');
    oMenu.firstChild._oPrevOption = null;
    oMenu.style.top = t;
    
    oMenu.style.left = "0px";
    oMenu.style.width = oMenu.offsetWidth + "px";
    oMenu.style.left = l;
    oMenu.style.zIndex = _zIndex++;
    oMenu.style.visibility = 'visible';
   setFilters(oMenu.style, 'play');
    menuOverlay(oMenu, 'visible');
};

function getOptionId(o) {
    while (o && o.tagName != 'LI' && o.tagName != "UL") {
        o = o.parentNode;
    }
    if (o && o.tagName == 'LI') return o;
    else return null;
};

function menuOverlay(o, vis) {
var bOverlay = o.getElementsByTagName('UL')[0]._overlay;

    if ( ! bOverlay ) return;
    
    var sElement = (document.all && !window.opera&&navigator.appVersion.indexOf('MSIE 5.0')) ? 'iframe' : 'div';

   
   sElement = 'iframe';
    
// is showScrollBars available
if( _activeMenus.currentMenu > '' && _activeMenus[_activeMenus.currentMenu].scrollBars && typeof( showScrollBars ) == 'function' && !window.opera)
   menuScrollBars(o, vis );

    var d = $('s_' + o.id);
    if (!d) {
   
        d = document.createElement(sElement);
        d.id = 's_' + o.id;
        d.frameBorder='0';
        d.scrolling="no";
        d.allowTransparency=true;
        
        
        document.body.appendChild(d);
         
       
    }
    var offset = (document.all && !window.opera&&navigator.appVersion.indexOf('MSIE 5.0') == -1) ? 0 : 3;
     
    
    var p = getPosTopLeft(o);
    //if Internet Explorer
    if( document.all ) {
    p.top = p.top   +  document.documentElement.scrollTop + document.body.scrollTop;
    p.left = p.left + document.documentElement.scrollLeft + document.body.scrollLeft;
  }
  else {
      p.top = p.top; 
      p.left = p.left;
  }
   
       d.className = 'shadow';
       //alert( o.offsetHeight ) ;
    d.style.position = 'absolute';
    d.style.top = (p.top + offset)  + 'px';
    d.style.left = (p.left + offset) + 'px';
    d.style.width = (o.offsetWidth) + 'px';
    d.style.height = (o.offsetHeight) +  'px';
    d.style.visibility = vis;
    d.style.zIndex = o.style.zIndex -1;
    
    };

function getPosTopLeft(el) {
    var pos = new Object();
    pos.top = 0;
    pos.left = 0;
   
    while (el  ) {
         pos.top = pos.top + el.offsetTop  ;
          pos.left  = pos.left + el.offsetLeft ;

        if( el.tagName != 'BODY' ){
               pos.top = pos.top - el.scrollTop ;
              pos.left  = pos.left  - el.scrollLeft ;
        }     
        el = el.offsetParent;
    }
    return pos;
};

function setFilters(o, sMode) {
    if (o.filter) {
        for (i = 0; i < o.filters.length; i++) {
            if (sMode == 'apply') o.filters[i].apply();
            else o.filters[i].play();
        }
    }
};

var _menuId = 0;
function activateMenu(sMenuId, sType, sVClass, sHClass, bOverlay, offsetHx, offsetHy, offsetVx, offsetVy,bOnClick,bScrollBars) {
    var oMenu = $(sMenuId);
    
    bOverlay = (bOverlay) ? bOverlay : false;
    oMenu.style.zIndex = 90;

    oMenu.className = (sType == 'HORIZONTAL' ? sHClass : sVClass);
    var oUls = oMenu.getElementsByTagName("UL");
    oMenu = oUls[0];
    oMenu._menuType = sType;
    oMenu._overlay = bOverlay;
    oMenu.onmouseover = function(event) { mouseover(event, sMenuId) } ;
     oMenu.onmouseout = function() { closeMenu(sMenuId) } ;

    oMenu.onclick = function(event) {return mouseclick(event, sMenuId) } ;
    oMenu.onmousedown = function(event) { mousedown(event, sMenuId) } ;
    

    // register menu and set default for vertical and horizontal submenu offsets
    _activeMenus[sMenuId] = oMenu;
    _activeMenus[sMenuId].offsetHx = offsetHx || 1;
    _activeMenus[sMenuId].offsetHy = offsetHy || -2;
    _activeMenus[sMenuId].offsetVx = offsetVx || 0;
    _activeMenus[sMenuId].offsetVy = offsetVy || -1;
    _activeMenus[sMenuId].scrollBars = bScrollBars;
   if(  bOnClick ) {
    oUls[0]._onClick=true;
     _activeMenus[sMenuId].clicked = false;
   }
     
    //if (sType == 'VERTICAL') {menuOverlay(oMenu, 'visible');}

    var l = oUls.length - 1;
    for (var i = l; i >= 1; i--) {
        var oParent = oUls[i].parentNode; //LI item
        oParent.className = 'submenu';
        var oSubMenu = oParent.removeChild(oUls[i]);

        if (!oSubMenu.id) oSubMenu.id = 'm' + _menuId++;
        var d = document.createElement('DIV');

        if (oSubMenu._menuType && oSubMenu._menuType == "HORIZONTAL") d.className = sHClass;
        else d.className = sVClass;
         d.style.top='-1000px';
         d.style.left="0px";
       d.style.visibility = 'hidden';
       d.style.position = 'absolute';
        d.id = 'menu_' + oSubMenu.id;
        d.onmouseover = function(event) { mouseover(event, sMenuId) } ;
        d.onmouseout = function() { closeMenu(sMenuId) } ;
        d.onclick = function(event) { mouseclick(event, sMenuId) } ;
        if (bOverlay) oSubMenu._overlay = bOverlay;
        d.appendChild(oSubMenu);
        
        //document.body.appendChild(d);
        // Use inserBefore insted for appendChild because Internet exporer chokes if appending child elements withing a FORM element
        document.body.insertBefore(d,document.body.childNodes[0]);
        
        
        oParent._subMenuId = d.id;
         
    }


/*special case gecko overflow adds a right margin when overflow is set; fix manually */
//var adj=0;
// if( navigator.userAgent.indexOf('Gecko')!=-1 && document.defaultView.getComputedStyle(oMenu, '').getPropertyValue("overflow") == 'hidden')
//  adj=7;
//oMenu.style.width = (oMenu.offsetWidth - adj) + 'px';

};

function displayPopUpMenu(event, id) {
            var el, x, y;

            el = document.getElementById(id);

            if (window.event) {
                x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
                y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
            } else {
                x = event.clientX + window.scrollX;
                y = event.clientY + window.scrollY;
            }

            x -= 10;
            y -= 20;
            el.style.left = x + "px";
            el.style.top = y + "px";
            el.style.display = "block";
            el.style.position="absolute";
            var currOption= el.getElementsByTagName('LI')[0];  
            select(currOption); 
            _activeMenus.currentMenu = id;
            displayMenu(currOption)
            el.style.display = "none";
            
            // stop bubbling 
            if (document.all ) event.returnValue = false; //IE
            else event.preventDefault();//Netscape, Gecko
}

function ToggleChecked( oOption ){
 var o = GetOptionAttributes(oOption);
 if( ! o.isCheckbox & ! o.isRadio ) return false;
 if( o.checked )
    oOption.className  = oOption.className.replace('Checked','');
 else {
   if( o.isCheckbox )
    oOption.className  = oOption.className .replace('checkbox','checkboxChecked');
   else
   oOption.className  = oOption.className .replace('radio','radioChecked');
}
    return  true;
};


function GetOptionAttributes( oOption ){
   var c = oOption.className;
    this.isCheckbox = (c.indexOf('checkbox') != -1);
    this.isRadio  = (c.indexOf('radio') != -1);
    this.checked  = (c.indexOf('Checked') != -1);
    this.href = oOption.getElementsByTagName('HREF')[0];
      //alert( "Option Properties\nIs checkbox:" + this.isCheckbox + "\nIs Radio:" + this.isRadio +    "\nState is checked:" + this.checked + "\n");
    return this;
};
    
    _.wrongParams=function( oFn, params){
         var s = oFn.toString();
         var sErr='';
         for(var param in params ){
              if(  s.indexOf( '_' + param  ) == -1 )
               sErr = sErr + ' , ' + param ;
         }
         if( sErr > '')   return sErr.substring(2);
         else return '';
    };
    
    WC.Menu.activate = function(a){
       var _id = a.id;
       var _horizontalCss=a.horizontalCss||'menu';
       var _verticalCss=a.verticalCss||'menuBar';
       var _layout = a.layout?a.layout.toUpperCase()=='HORIZONTAL'?'HORIZONTAL':'VERTICAL':'HORIZONTAL';
       var _clickToOpen = a.clickToOpen == true||false;
       var _scrollBars= a.scrollBars==true||true;
       var _postBack= a.postBack==true||false;
       var _keyboardSupport=a.keyboardSupport==true||false;
       var _datasourceXML=a.datasourceXML?a.datasourceXML>''?a.datasourceXML:null:null;
       var _clientOnMouseover=a.clientOnMouseover?a.clientOnMouseover>''?a.clientOnMouseover:null:null;
       var _clientOnClick=a.clientOnClick?a.clientOnClick>''?a.clientOnClick:null:null;
       var _contextMenuControlId=a.contextMenuControlId;
       var _horizontalMenuOffsetX=a.horizontalMenuOffsetX||1;
       var _horizontalMenuOffsetY=a.horizontalMenuOffsetY||-2;
       var _verticalMenuOffsetX=a.verticalMenuOffsetX||0;
       var _verticalMenuOffsetY=a.verticalMenuOffsetY||-1;
       var _overlayWindowObjects=a.overlayWindowObjects||false;
      
       var e = _.wrongParams( _.Menu.activate, a );
       if(  e > '') alert('Error!\nWC.Menu.' + this._id + ' cannot set variable<s>:\n' + e);
     activateMenu( _id,_layout,_verticalCss,_horizontalCss,_overlayWindowObjects,_horizontalMenuOffsetX,_horizontalMenuOffsetY,
     _verticalMenuOffsetX,_verticalMenuOffsetY,_clickToOpen,_scrollBars);
    };
    
    
 /*  
//Tempate 
  WC.Menu.activate(
            {
       		id: "menuBar1",
    		layout: "horizontal",
    		verticalCss: "menu",
    		horizontalCss: "menuBar",
    		clickToOpen: true,
    		datasourceXML: "menus/someMenu.xml",
    		clientOnMouseover: "myOnMouseoverMenu",
    		clientOnClick: "myOnClickMenu",
    		scrollBars:	false,
    		postBack: false,
    		keyboardSupport: false,
    		contextMenuControlId: '',
    		horizontalMenuOffsetX:1,
    		horizontalMenuOffsetY:-2,
    		verticalMenuOffsetX:0,
    		verticalMenuOffsetY:-1
    		});
    
 */

WC.Menu.setMenuBarWidth=function(sId){
var  oMenuBar = $(sId).getElementsByTagName('UL')[0];
var menuItems = $(sId).getElementsByTagName('LI');
var lastItem = menuItems.length - 1;
var firstItem = 0; 
var p = getPosTopLeft( menuItems[lastItem]);
var rightSide = p.left + menuItems[ lastItem ].offsetWidth;
p = getPosTopLeft( menuItems[ firstItem ]);
var width = rightSide  - p.left; 
oMenuBar.style.width = width + 'px';
};


