var PROTOTYPE_LOADED=typeof Prototype == 'object';
var MOOTOOLS_LOADED=typeof MooTools == 'object';

var mainMenuListMouseOutTimer;
var mainMenuActivatedTabId;

function showSubmenu(mm,sub){
 try{
  if(Draggables&&Draggables.activeDraggable)return;
 }catch(e){} // continue if no draggables

 clearTimeout(mainMenuListMouseOutTimer);
 var subm=$(sub);
 var dd=.15;
 var offset=0;
 var farLeft=-20;
 var farRight=757;
 var farRightSE=farRight + 3;

 var baseZ=51;
 var hoverZ=1001;

 if(PROTOTYPE_LOADED){
  Element.setStyle('menu',{
   zIndex : baseZ
  });
  $$('ul.submenu_clean>li>*').invoke('setStyle',{ visibility : 'hidden' });
  $$('ul#main_menu_list>li').invoke('removeClassName','hover');
  $$('ul.submenu_clean').each(function(e){
   if('none' != Element.getStyle(e,'display') && (!subm || subm.id != e.id)){
    new Effect.Fade(e,{
     duration : dd,
     queue : 'last'
    });
   }
  });

  if(!subm)
   return;

  new Effect.Appear(subm,{
   duration : dd,
   queue : 'last'
  });
  subm.select('li>*').invoke('setStyle',{ visibility : 'visible' });

  Element.addClassName(mm,'hover');
  Element.setStyle('menu',{
   zIndex : hoverZ
  });

  if(Element.hasClassName(subm,'leftAlreadySet'))
   return;
  Element.addClassName(subm,'leftAlreadySet');

  var mainLeft=parseInt(Element.positionedOffset(mm).left)
    - parseInt(Element.positionedOffset('menu').left);
  var mainWidth=parseInt(Element.getWidth(mm));
  var subWidth=parseInt(Element.getWidth(subm));
  var subLeft=mainLeft - offset;
  if(Element.hasClassName(mm,'centerThis'))
   subLeft-=subWidth / 2 + mainWidth / 2;
  var menuWidth=0;
  try{
   menuWidth=parseInt(Element.getWidth(mm.parentNode));
  }catch(e){
   return;
  }
  if(subLeft < farLeft)
   subLeft=farLeft;
  if(subLeft + subWidth > farRight)
   subLeft=farRight - subWidth;
  Element.setStyle(subm,{
   'left' : subLeft + 'px'
  });
 }else if(MOOTOOLS_LOADED){
  Element.setStyle($('menu'),'z-index',baseZ);
  $each($$('ul#main_menu_list>li'),function(e){
   Element.removeClass(e,'hover');
  });
  $each($$('ul.submenu_clean'),function(e){
   if('none' == Element.getStyle(e,'display') || !(!subm || subm.id != e.id))
    return;
   e.set('tween',{
    duration : dd * 1000
   });
   e.tween('opacity',0);
  });

  if(!subm)
   return;

  subm.set('tween',{
   duration : dd * 1000
  });
  subm.tween('opacity',1);
  subm.setStyle('display','block');

  try{
   Element.addClass(mm,'hover');
  }catch(e){}
  Element.setStyle($('menu'),'z-index',hoverZ);

  if(Element.hasClass(subm,'leftAlreadySet'))
   return;
  Element.addClass(subm,'leftAlreadySet');

  var mainLeft=parseInt(Element.getCoordinates(mm).left)
    - parseInt(Element.getCoordinates($('menu')).left);
  var mainWidth=parseInt(Element.getSize(mm).x);
  var subWidth=parseInt(Element.getSize(subm).x);
  var subLeft=mainLeft - offset;
  try{
   if(Element.hasClass(mm,'centerThis'))
    subLeft-=subWidth / 2 + mainWidth / 2;
  }catch(e){}
  var menuWidth=0;
  try{
   menuWidth=parseInt(Element.getSize(mm.parentNode).x);
  }catch(e){
   return;
  }
  if(subLeft < farLeft)
   subLeft=farLeft;
  if(subLeft + subWidth > farRightSE)
   subLeft=farRightSE - subWidth;
  Element.setStyle(subm,'left',subLeft);
 }
}

function _initAutoContentHideSubmenuEvent(){
 var ml=$('main_menu_list');
 var out=function(ev){
  clearTimeout(mainMenuListMouseOutTimer);
  mainMenuListMouseOutTimer=setTimeout('showSubmenu(null,null);',200);
 }
 var over=function(ev){
  clearTimeout(mainMenuListMouseOutTimer);
 }

 if(ml)
  ml.onmouseout=out;

 if(PROTOTYPE_LOADED){
  $$('ul.submenu_clean, #system_box .hi_user_box').each(function(e){
   e.onmouseout=out;
   e.onmouseover=over;
  });
 }else if(MOOTOOLS_LOADED){
  $each($$('ul.submenu_clean, #system_box .hi_user_box'),function(e){
   e.onmouseout=out;
   e.onmouseover=over;
  });
 }
}

function _initFooterImageToggler(){
 var fsi=$('footer_small_image');
 var dd=.3;
 var ff=.5;
 var tt=1;

 if(!fsi) return;

 if(PROTOTYPE_LOADED){
  fsi.onclick=function(){
   window.open('/');
  }
  fsi.onmouseover=function(){
   new Effect.Appear(this,{
    duration : dd,
    queue : 'last',
    from : ff,
    to : tt
   });
  }
  fsi.onmouseout=function(){
   new Effect.Fade(this,{
    duration : dd,
    queue : 'last',
    from : tt,
    to : ff
   });
  }
 }else{
  fsi.onclick=function(){
   window.open('/');
  }
  fsi.onmouseover=function(){
   fsi=$(this);
   fsi.set('tween',{
    duration : dd * 1000
   });
   fsi.tween('opacity',tt);
  }
  fsi.onmouseout=function(){
   fsi=$(this);
   fsi.set('tween',{
    duration : dd * 1000
   });
   fsi.tween('opacity',ff);
  }
 }
}

function _linkSubmenusWithMenuTabs(li){
 var tab_id=li.id;
 try{
  var tab=$(tab_id);
  if(tab){
   tab.onmouseover=function(ee){
    var submenu_id=tab_id.replace(/\_(tab|link)/,'');
    showSubmenu(tab_id.indexOf('_tab') > 0?this:null,submenu_id);
   }
  }
 }catch(e){}
}

if(PROTOTYPE_LOADED){
 document.observe('dom:loaded',function(){
  try{ Element.setOpacity('footer_small_image',.5); }catch(e){ }
 });
 document.observe('dom:loaded',_initFooterImageToggler);
 document.observe('dom:loaded',_initAutoContentHideSubmenuEvent);
 if(typeof stretchBody == 'function'){
  document.observe('dom:loaded',stretchBody);
 }
 document.observe('dom:loaded',function(){
  $$('ul#main_menu_list>li,div.hi_user_box span.holder').each(_linkSubmenusWithMenuTabs);
 });
}else if(MOOTOOLS_LOADED){
 window.addEvent('domready',function(){
  try{ Element.setStyle($('footer_small_image'),'opacity',.5); }catch(e){ }
 });
 window.addEvent('domready',_initFooterImageToggler);
 window.addEvent('domready',_initAutoContentHideSubmenuEvent);
 if(typeof stretchBody == 'function'){
  window.addEvent('domready',stretchBody);
 }
 window.addEvent('domready',function(){
  $each($$('ul#main_menu_list>li,div.hi_user_box span.holder'),_linkSubmenusWithMenuTabs);
 });
}
function AssignValuecmbSubjectMenu(Value){
 window.location.href='/testbank.php?mac=' + Value.replace('%20',' ') + '&units='
   + ((u=$('cmbUnitsmenu'))?u.value:'');
}
function AssignValuecmbUnitsMenu(Value){
 window.location.href='/testbank.php?mac=' + ((s=$('cmbSubjectMenu'))?s.value:'') + '&units='
   + Value.replace('%20',' ');
}
