var BV=parseInt(navigator.appVersion.indexOf("MSIE")>0?navigator.appVersion.split(";")[1].substr(6):navigator.appVersion);
var BN=window.navigator.appName;
var OP=(navigator.userAgent.indexOf('Opera')!=-1&&BV>=4)?true:false;
var NS=((BN.indexOf('Netscape')!=-1)||(BN.indexOf('Mozilla')!=-1))?true:false;
var SM=(BN.indexOf('Netscape')!=-1&&(BV>=5))?true:false;
var IE=(BN.indexOf('Explorer')!=-1&&(BV>=4))?true:false;

var menus = new Array;
var menuCount = 0;
var menuItems = new Array;
var menuItemsClass = new Array;
var menuItemsClassSelected = new Array;
var pathItems = new Array;
var pathItemsClass = new Array;
var pathItemsClassSelected = new Array;
var activemenu = -1;

var delay = 200;
var actid = new Array();
for (i = 0; i < 10; i++) actid[i] = 0;

function Max(a,b) {
  return (a > b) ? a : b;
}

function Min(a,b) {
  return (a < b) ? a : b;
}

function SetElementClass(id,cl){
  obj = document.getElementById(id);
  if (obj) obj.className = cl;
}

function GetElementClass(id){
  obj = document.getElementById(id);
  if (obj) return obj.className; else return "";
}

function HideObject(obj) {
  if (obj) obj.style.visibility = 'hidden';
}

function ShowObject(obj) {
  if (obj) obj.style.visibility = 'visible';
}

function IsObjectVisible(obj) {
  return (obj)? (obj.style.visibility == 'visible') : false; 
}
function GetObjectWidth(obj) {
  if (obj) return obj.offsetWidth;
    else return 0;
}

function GetObjectHeight(obj) {
  if (obj) return obj.offsetHeight;
    else return 0;
}

function GetObjectLeft(obj) {
  if (obj) return parseInt(obj.offsetLeft);
}

function GetObjectTop(obj) {
  if (obj) return parseInt(obj.offsetTop);
}

function SetObjectLeft(obj, n) {
  if (obj) obj.style.left = n;
}

function SetObjectTop(obj, n) {
  if (obj) obj.style.top = n;
}

function HideElement(name){
  HideObject(document.getElementById(name));
}

function ShowElement(name){
  ShowObject(document.getElementById(name));
}

function HideMenu(level) {
  UnselectMenuItem(level+1);
  obj = document.getElementById(menus[level]);
  if (obj) {
    HideObject(obj);
    SetObjectLeft(obj, -1000);
    menus[level] = "";
  }
}

function ShowMenu(level,name,left,top) {
  obj = document.getElementById(name);
  if (obj) {
    menus[level] = name;
    SetObjectLeft(obj, left);
    SetObjectTop(obj, top);
    ShowObject(obj);
  }
}

function UnselectMenuItem(level) {
  if (menuItems[level] != "") {
    SetElementClass(menuItems[level],menuItemsClass[level]);
    menuItems[level] = "";
  }
}

function SelectMenuItem(level,menuitem,cl,selcl) {
// new cl can be wrong if select item currently selected
  if (menuItems[level] != menuitem) {
    SetElementClass(menuItems[level],menuItemsClass[level]);
    menuItems[level] = menuitem;
    menuItemsClass[level] = cl;
    menuItemsClassSelected[level] = selcl;
    SetElementClass(menuitem,selcl);
  }
}

function SavePath(level,menuitem,cl,selcl) {
// new cl can be wrong if select item currently selected
  if (pathItems[level] != menuitem) {
    pathItems[level] = menuitem;
    pathItemsClass[level] = cl;
    pathItemsClassSelected[level] = selcl;
  }
}


function OpenMenu(menuitem,cl,sel,submenu,level,left,top) {
  for(i = level; i < menuCount;i++) HideMenu(i);
  SavePath(level,menuitem,cl,sel);
  ShowMenu(level,submenu,left,top);
  menuCount = level + 1;
}

function TryOpenMenu(muid,menuitem,cl,sel,submenu,level,act,left,top) {
  if (act == actid[muid]) OpenMenu(menuitem,cl,sel,submenu,level,left,top);
}

function HideMenus(from) {
  for(i = from; i < menuCount; i++) HideMenu(i);
  menuCount = from;
}

function TryHideMenus(muid,from,act) {
  if (act == actid[muid]) HideMenus(from);
}


function HideAllMenus() {
  HideMenus(0);
  UnselectMenuItem(0);
  activemenu = -1;
}

function TryHideAllMenus(muid,act) {
  if (act == actid[muid]) HideAllMenus();
}

function SetActiveMenu(muid) {
  if ((activemenu >= 0) && (activemenu != muid)) {
    actid[activemenu]++;
    HideAllMenus();
  }
  activemenu = muid;
}

function miMouseOver(muid,obj,cl,clsel,level,submenu,left,top) {
// two menus couldn't be active at the same time
  SetActiveMenu(muid);
  SelectMenuItem(level,obj.id,cl,clsel);
  for (i = 0;i < level;i++)
    SelectMenuItem(i,pathItems[i],pathItemsClass[i],pathItemsClassSelected[i]);
  actid[muid]++;
  if (submenu == "")
    setTimeout("TryHideMenus("+muid+","+level+","+actid[muid]+")",delay);
  else
    setTimeout("TryOpenMenu("+muid+",'"+obj.id+"','"+cl+"','"+clsel+"','"+
                          submenu+"',"+level+","+actid[muid]+","+left+","+top+")",delay);
}

function miMouseOut(muid,level){
//  UnselectMenuItem(level);
  setTimeout("TryHideAllMenus("+muid+","+actid[muid]+")",delay);
}

function SetElementLeftTop(name, left, top) {
  obj = document.getElementById(name);
  SetObjectLeft(obj, left);
  SetObjectTop(obj, top);
}

function GetEventAbsCoords(e) {
  if(IE&&!SM) e = window.event;
  return [(OP&&(BV<7)?0:SM?scrollX:document.body.scrollLeft) + e.clientX,
          (OP&&(BV<7)?0:SM?scrollY:document.body.scrollTop)  + e.clientY ];
}

function GetEventCoords(e) {
  XY = GetEventAbsCoords(e);
  XY[0] -= document.body.scrollLeft;
  XY[1] -= document.body.scrollTop;
  return XY;
}

function GetClientHeight() {
  return (OP&&(BV<7))? window.innerHeight : document.body.clientHeight;
}

function GetClientWidth() {
  return (OP&&(BV<7))? window.innerWidth : document.body.clientWidth;
}

function IsPointOverObject(x,y,obj) {
  l = GetObjectLeft(obj);
  t = GetObjectTop(obj);
  w = GetObjectWidth(obj);
  h = GetObjectHeight(obj);
  return ((x >= l) && (x < l + w) && (y >= t) && (y < t + h));
}

function ToggleElement(name){
  t = document.getElementById(name);
  if (IsObjectVisible(t)) {
    t.style.display = 'none';
    HideObject(t);
  }
    else {
      t.style.display = IE?'block':'table';
      ShowObject(t);
    }
}

function SetImage(obj,src) {
  if (obj) obj.src = src;
}


