/////////////
// globals //
/////////////
   var temp = new Number(0);
   var temp1 = new Number(0);
   var temp2 = new Number(0);
/////////////////////////////////
// deal with cursor over layer //
/////////////////////////////////
document.onmousemove = getmousepos;
if (is_nav4){ document.captureEvents(Event.MOUSEMOVE | Event.MOUSEOUT); }

function getmousepos(e){
   if(is_nav4){mousex=e.pageX; mousey=e.pageY}
   if(is_ie){mousex=event.clientX; mousey=event.clientY;}
   if(is_nav5up){ mousex = evt.clientX + 'px'; mousey  = evt.clientY + 'px'; }

}

///////////////////////////////////////////////////////////////////
// deal with NS4 resize requires reload problem with this script //
///////////////////////////////////////////////////////////////////
if (is_nav4){
   window.captureEvents(Event.RESIZE);
   window.onresize = handleNSResize;
}

function handleNSResize() { location.reload();};

//////////////////////////
// function definitions //   
//////////////////////////
function status_checking(len){

   for(i=0;i<len+1;i++){
      if(menu_status[i] == -1){
         menu_change(menu_name[i],'hidden',menu_parent[i],i,len);
         menu_status[i] = 0;
      }
   }

   //////////////////////////
   // loop status_checking //
   //////////////////////////
   temp2 = Number(len);
   setTimeout("status_checking(temp2)",50);
}

function menu_mouseover(menu_tochange,of){
   temp1 = menu_tochange;
   // reset all parent menus positions 
   for(k=0;k<of;k++){    
      menu_parent_move(menu_parent[k],menu_orig[k],0);
   }
   
   // reset all visible status to status to -1
   for(j=0;j<of;j++){
      if(menu_status[j] == 1){menu_status[j] = -1;}
   }
   menu_status[menu_tochange] = 1;
   menu_change(menu_name[menu_tochange],'visible',menu_parent[menu_tochange],menu_tochange,of);
   setTimeout("timeout(" + menu_tochange + "," + of + ")",10000);
}

function timeout(id,count){
   menu_status[id] = -1;
   if(id == temp1){ //only collapse parents if current clicked index is same as index passed to that particular timeout functiuon call  
      for(k=0;k<count;k++){    
         menu_parent_move(menu_parent[k],menu_orig[k],0);
      }
   }  
}

function menu_change(menu_id,vis,menu_parent_id,index,max){
   // hide menu's (recursively called)
   if(vis == 'hidden'){
      if (document.layers){ 
         document.layers[menu_id].visibility = vis;
      }
      if (is_nav5up){
         document.getElementById(menu_id).style.visibility = vis;
      }
      if (is_ie){
         document.all[menu_id].style.visibility = vis;
      }
   }
   else{
      // expose new menu
      if (document.layers){ 
         document.layers[menu_id].visibility = vis;
         tall = document.layers[menu_id].clip.height;
      }
      if (is_nav5up){
         document.getElementById(menu_id).style.visibility = vis;
         tall = document.getElementById(menu_id).offsetHeight;
      }
      if (is_ie){
         document.all[menu_id].style.visibility = vis;
         tall = document.all[menu_id].offsetHeight;
      }
      // move parent menus after index
      for(l=index+1;l<max;l++){    
         tmp = tall + 5;
         // setTimeout required to make sure all menus at original positions before new move
         setTimeout("menu_parent_move(menu_parent[" + l + "],menu_orig[" + l + "]," + tmp + ")",100);
      }
   }
}

function menu_parent_move (menu_parnt,currentH,movement){
   temp = Number(currentH) + Number(movement);
   
   if (document.layers){ 
      document.layers[menu_parnt].top = temp;
   }
   if (is_nav5up){
      document.getElementById(menu_parnt).style.top = temp;
   }
   if (is_ie){
      document.all[menu_parnt].style.posTop = temp;
   }
}