
// Implementation
function MenuClass(name, items){
   this.className = "MenuClass";
   this.name  = name;
   this.items = items;
}

function MenuItemClass(name, target, label, link, subMenu){
   this.className = "MenuItemClass";
   this.name    = name;
   this.target  = target;
   this.label   = label;
   this.link    = link;
   this.subMenu = subMenu;
}
MenuItemClass.prototype = new MenuClass;

function SubMenuClass(name, subItem, width){
   this.className = "SubMenuClass";
   this.name      = name;
   this.subItem   = subItem;
   this.width     = width;
}

function SubMenuItemsClass(name, label, link){
   this.className = "SubMenuClass";
   this.name  = name;
   this.label = label;
   this.link  = link;
}
SubMenuItemsClass.prototype = new SubMenuClass;

function buildMenu(menu, divId){

   var divElement = document.getElementById(divId);
   var tableElement = document.createElement("TABLE");
   tableElement.setAttribute("cellPadding", "0");
   tableElement.setAttribute("cellSpacing", "0");
   tableElement.setAttribute("border", "0");

   var trElement = tableElement.insertRow();

   for(var i=0;i<menu.items.length;i++){
       var menuItem  = menu.items[i];

       var tdElement = trElement.insertCell();
       imgElement = document.createElement("IMG");
       imgElement.setAttribute("src", GetPath("static") + "images/menu/tab_left.gif");
       imgElement.setAttribute("width", "5");
       imgElement.setAttribute("height", "20");
       imgElement.setAttribute("border", "0");
       tdElement.appendChild(imgElement);

       var tdElement = trElement.insertCell();
       tdElement.setAttribute("id", menuItem.name);
       tdElement.setAttribute("className", "bgmenuitem");
       tdElement.setAttribute("className", "bgmenuitem");
       tdElement.setAttribute("onmouseover", menuMouseOver);
       tdElement.setAttribute("onmouseout", menuMouseOut);
       tdElement.setAttribute("menu", menuItem);

       var aElement = document.createElement("A");
       aElement.setAttribute("className", "menubar");
       aElement.setAttribute("href", menuItem.link);
       aElement.setAttribute("target", menuItem.target);
       aElement.innerHTML = menuItem.label;
       tdElement.appendChild(aElement);

       var tdElement = trElement.insertCell();
       imgElement = document.createElement("IMG");
       imgElement.setAttribute("src", GetPath("static") + "images/menu/tab_right.gif");
       imgElement.setAttribute("width", "5");
       imgElement.setAttribute("height", "20");
       imgElement.setAttribute("border", "0");
       tdElement.appendChild(imgElement);

       var tdElement = trElement.insertCell();
       imgElement = document.createElement("IMG");
       imgElement.setAttribute("src", GetPath("static") + "images/1.gif");
       imgElement.setAttribute("width", "2");
       imgElement.setAttribute("height", "1");
       imgElement.setAttribute("border", "0");
       tdElement.appendChild(imgElement);

       if (menuItem.subMenu != null){
           var subSpan = buildSubMenu(menuItem.subMenu);
           divElement.appendChild(subSpan);
       }
   }
   divElement.appendChild(tableElement);
}

function buildSubMenu(subMenu){

   var spanElement  = document.createElement("SPAN");
   spanElement.setAttribute("id", subMenu.name);
   spanElement.setAttribute("submenu", subMenu);
   spanElement.setAttribute("onmouseover", submenuMouseOver);
   spanElement.setAttribute("onmouseout", submenuMouseOut);
   spanElement.style.position   = "absolute";
   spanElement.style.left       = "0px";
   spanElement.style.top        = "0px";
   spanElement.style.visibility = "hidden";

   var otableElement = document.createElement("TABLE");
   otableElement.setAttribute("cellPadding", "0");
   otableElement.setAttribute("cellSpacing", "0");
   otableElement.setAttribute("border", "0");
   var otrElement = otableElement.insertRow();
   var otdElement = otrElement.insertCell();

       var tableElement = document.createElement("TABLE");
       tableElement.setAttribute("cellPadding", "0");
       tableElement.setAttribute("cellSpacing", "0");
       tableElement.setAttribute("border", "0");
       tableElement.setAttribute("width", subMenu.width);

       var trElement = tableElement.insertRow();
       var tdElement = trElement.insertCell();
       tdElement.setAttribute("colSpan", "2");
       tdElement.setAttribute("bgColor", "#AEAD5F");

       for(var i=0;i<subMenu.subItem.length;i++){
           var trElement = tableElement.insertRow();
           trElement.setAttribute("bgColor", "#EFEF8C");

           var tdElement = trElement.insertCell();
           imgElement = document.createElement("IMG");
           imgElement.setAttribute("src", GetPath("static") + "images/1.gif");
           imgElement.setAttribute("width", "11");
           imgElement.setAttribute("height", "20");
           imgElement.setAttribute("border", "0");
           tdElement.appendChild(imgElement);

           var tdElement = trElement.insertCell();
           tdElement.setAttribute("width", "100%");

           aElement = document.createElement("A");
           aElement.setAttribute("className", "dropdown");
           aElement.setAttribute("href", subMenu.subItem[i].link);
           aElement.innerHTML = subMenu.subItem[i].label;
           tdElement.appendChild(aElement);

           var trElement = tableElement.insertRow();
           var tdElement = trElement.insertCell();
           tdElement.setAttribute("colSpan", "2");
           tdElement.setAttribute("bgColor", "#AEAD5F");

           imgElement = document.createElement("IMG");
           imgElement.setAttribute("src", GetPath("static") + "images/1.gif");
           imgElement.setAttribute("width", "1");
           imgElement.setAttribute("height", "1");
           imgElement.setAttribute("border", "0");
           tdElement.appendChild(imgElement);
       }
   otdElement.appendChild(tableElement);

   var otrElement = otableElement.insertRow();
   var otdElement = otrElement.insertCell();

   var tableElement = document.createElement("TABLE");
   tableElement.setAttribute("cellPadding", "0");
   tableElement.setAttribute("cellSpacing", "0");
   tableElement.setAttribute("border", "0");
   tableElement.setAttribute("width", "100%");

   var trElement = tableElement.insertRow();

   var tdElement = trElement.insertCell();
   imgElement = document.createElement("IMG");
   imgElement.setAttribute("src", GetPath("static") + "images/menu/dropdown_corner_left.gif");
   imgElement.setAttribute("width", "5");
   imgElement.setAttribute("height", "4");
   imgElement.setAttribute("border", "0");
   tdElement.appendChild(imgElement);

   var tdElement = trElement.insertCell();
   tdElement.setAttribute("width", "100%");
   tdElement.setAttribute("background", GetPath("static") + "images/menu/dropdown_bottom_bg.gif");
   imgElement = document.createElement("IMG");
   imgElement.setAttribute("src", GetPath("static") + "images/1.gif");
   imgElement.setAttribute("height", "1");
   imgElement.setAttribute("border", "0");
   tdElement.appendChild(imgElement);

   var tdElement = trElement.insertCell();
   imgElement = document.createElement("IMG");
   imgElement.setAttribute("src", GetPath("static") + "images/menu/dropdown_corner_right.gif");
   imgElement.setAttribute("width", "5");
   imgElement.setAttribute("height", "4");
   imgElement.setAttribute("border", "0");
   tdElement.appendChild(imgElement);

   otdElement.appendChild(tableElement);
   spanElement.appendChild(otableElement);
   return spanElement;
}

function menuMouseOver(){
    var caller = window.event.srcElement;
    if (caller.tagName != "TD") caller = caller.parentElement;
    hideSubMenus();
    var menuItem = caller.menu;
    if (menuItem.subMenu != null) showSubMenu(menuItem);
}
function menuMouseOut(){
    var caller = window.event.srcElement;
    if (caller.tagName != "TD") caller = caller.parentElement;
    hideSubMenus();
}

function submenuMouseOver(){
    var caller = window.event.srcElement;
    while (caller.tagName != "SPAN") caller = caller.parentElement;
    document.all[caller.submenu.name].style.visibility = "visible"
}

function submenuMouseOut(){
    var caller = window.event.srcElement;
    while (caller.tagName != "SPAN") caller = caller.parentElement;
    document.all[caller.submenu.name].style.visibility = "hidden"
}

function showSubMenu(menuItem){
    var currMenu = document.all(menuItem.name);

    var x = currMenu.offsetLeft;
    var y = currMenu.offsetTop;
    var h = currMenu.offsetHeight;
    var w = currMenu.offsetWidth;

    var p = currMenu;

    while ((p = p.offsetParent)!= null){
        x += p.offsetLeft;
        y += p.offsetTop;
    }

    var currSubMenu = document.all[menuItem.subMenu.name];
    currSubMenu.style.left = x - 4; //x + w - document.all["tt1"].offsetWidth + 7 ;
    currSubMenu.style.top  = y + h;
    currSubMenu.style.visibility = "visible";
}

function hideSubMenus(){
    var menu = mainMenu;
    for (var i=0;i<menu.items.length;i++){
        var item = menu.items[i];
        if (item.subMenu != null)  document.all[item.subMenu.name].style.visibility = "hidden";
    }
}

