// written by Tan Ling Wee
// last updated 14 September 2003
// email : fuushikaden@yahoo.com

//modified by Martin Venter 14 September
//    - Added Opera detection code.
//    - Added HideIEObjects property to enable or disable the code execution of 
//      hiding/showing IE objects. It will also hide\show <OBJECTS> like flash objects.
//    - Added OverlayIEObjects property. If set true and its an IE browser some extra logic is added so that 
//      the calendar will show above IE objects. I cant take all the credit for this, I got the idea from 
//      this url - http://dotnetjunkies.com/weblog/jking/posts/488.aspx and implemented it.
//    - Added addIFrame(), showIFrame() and hideIFrame() functions. Used to implement the OverlayIEObjects
//      property.
//    - Added missing semi-colons so that one can run the script through a code chruncher.
//    - Fixed image tag in the DrawMenu() function.
//    - The menuFont property was not implemented anywhere in the code. This has been fixed.
//    - Added menuFontSize property.
//    - menuSize property is not implemented anywhere. I'm not going to implement it at this stage. 
//email: martin@unirnd.co.za

var orientation=1; // 0-horizontal 1-vertical
var imgPath = "/menu/images/";

var OverlayIEObjects = true; //It will display the menu above any IE objects
var HideIEObjects = false; //Hides IE objects. Not applicable to Netscape and Opera

var mainItemForeground = "#09007d";
var mainItemBorder = "#ffffff";
var mainItemBackground = "#ffffff";

var mainItemHoverForeground = "#ffffff";
var mainItemHoverBorder = "#ffffff";
var mainItemHoverBackground = "#ecebfa";

var subItemForeground = "#ffffff";
var subItemBorder = "#ffffff";
var subItemBackground = "#f8fafe";

var subItemHoverForeground = "#ffffff";
var subItemHoverBorder = "#cedceb";
var subItemHoverBackground = "#ecebfa";

var menuFont = "verdana";
var menuFontColor = "#4c0b00";
var menuFontSize = "12px";
var menuSize = "11px";

/////////////////////////////////////////////////////////////////////////////

var ie=(navigator.appName=='Microsoft Internet Explorer');
var ns=(navigator.appName=='Netscape');
var dom=document.getElementById;
var opera = (navigator.userAgent.indexOf("Opera")!=-1)?true:false;
var lw_menuId, lw_trigger, to1;
var s1;

/////////////////////////////////////////////////////////////////////////////

function Tmenu (id, parentId, url, description, img) {
this.id = id;
this.parentId = parentId;
this.url = url;
this.description = description;
this.numChild = 0;
this.levelId = 0;
this.img = img;
}

/////////////////////////////////////////////////////////////////////////////

var menu = new Array();
var menuCounter = 0;
var numLevel = 0;
var prevMenuId = -1;
var nNowAt = 0;

function displayMenuItem(menuId) {
var sHTML;

if (menu[menuId].parentId>0)
{
 ItemForeground = subItemForeground;
 Border = subItemBorder;
 Background = subItemBackground;

 HoverForeground = subItemHoverForeground;
 HoverBorder = subItemHoverBorder;
 HoverBackground = subItemHoverBackground;
}
else
{
 ItemForeground = mainItemForeground;
 Border = mainItemBorder;
 Background = mainItemBackground;

 HoverForeground = mainItemHoverForeground;
 HoverBorder = mainItemHoverBorder;
 HoverBackground = mainItemHoverBackground;
}

if ((orientation==1)||(menu[menuId].levelId>0))
{
 sHTML += "<tr>";
} 

if (menu[menuId].description!='-')
{
 sHTML = "<td id='menu_"+menuId+"' style='cursor:pointer;cursor:hand;border-style:solid;border-width:1px;background-color:"+ Background +";color=\""+ ItemForeground +"\";border-color:"+ Border +"' onmouseover='clearInterval(s1);this.style.backgroundColor=\"" + HoverBackground + "\";this.style.color=\"" + HoverForeground + "\";this.style.borderColor=\"" + HoverBorder + "\";";

 if (menu[menuId].numChild!=0) {
  sHTML += "showSubmenu("+menu[menuId].id+",this);hideSubmenu(menu["+menuId+"].levelId+1);";
 }
 else
 {
  sHTML += "prevMenuId = "+menuId+";hideSubmenu(menu["+menuId+"].levelId);";
 }

 sHTML += ";nNowAt="+menuId+";clearAll("+menu[menuId].levelId+","+menu[menuId].parentId+")' onclick='document.location.href=\""+menu[menuId].url+"\"' onmouseout='s1=setInterval(\"resetMenu();hideSubmenu(0)\",1000);'><table cellpadding=1 cellspacing=0 border=0 width='100%'><tr>";

 if (menu[menuId].levelId>0)
 {
  sHTML += "<td style='padding-left:0px' width=0><img src='";
  if (menu[menuId].img=="")
  {
   sHTML += imgPath + "";
  }
  else
  {
   sHTML += imgPath + menu[menuId].img;
  }
  sHTML += "' width=0 height=0 border=0></td>";
 }

 if ((orientation==0) && (menu[menuId].levelId==0))
 {
  nArrowWidth = 0;
 }
 else
 {
  nArrowWidth = 25;
 }

sHTML += "<td nowrap style='padding-left:3px;padding-right:4px;font-family:" + menuFont + ";font-size:" + menuFontSize + ";color:" + menuFontColor + ";' align=left><img src=/menu/images/arrow_right.gif border=0> <B>" + menu[menuId].description.replace(" ","&nbsp;") + "</td><td style='padding-right:2px' align=right width="+nArrowWidth+">";

 if (menu[menuId].numChild>0)
 {
  if ((orientation==0)&&(menu[menuId].levelId==0))
  {
   sHTML += "<img src='" + imgPath + "arrow_down.gif'>";
  }
  else
  {
   sHTML += "<img src='" + imgPath + "arrow_right.gif'>";
  }
 }
 else
 {
  sHTML += "";
 }
 sHTML += "</td></tr></table></td>";
}
else
{
 sHTML = "<td><img src='" + imgPath + "trans.gif' height=2></td></tr><tr><td onmouseover='' bgcolor='#d0d0d0'><img src='" + imgPath + "trans.gif' height=1></td></tr><tr><td><img src='" + imgPath + "trans.gif' height=2></td>";
}

if ((orientation==1)||(menu[menuId].levelId>0))
{
 sHTML += "</tr>";
} 
return sHTML;
}

function clearAll(levelId, parentId) {

if (levelId>0)
{
 Border = subItemBorder;
 Background = subItemBackground;
}
else
{
 Border = mainItemBorder;
 Background = mainItemBackground;
}

for (i=0;i<menuCounter;i++)
{
 if (menu[i].levelId==levelId)
 {
  if ((i!=nNowAt) && (menu[i].parentId==parentId) && (menu[i].description!="-")) {
   lw_getObj("menu_"+i).backgroundColor=Background;
   lw_getObj("menu_"+i).borderColor=Border;
  }
 }
}

}

function mapID (id) {
for (var i=0;i<menuCounter;i++)
{
 if (menu[i].id==id)
 {
  return i;
 }
}
return -1;
}

function showSubmenu(menuId,trigger) {
lw_menuId = menuId;
lw_trigger = trigger;

if (ns)
{
 to1 = setTimeout("showActualSubmenu(lw_menuId,lw_trigger)",50);
}
else
{
 showActualSubmenu(lw_menuId,lw_trigger);
}
}

function showActualSubmenu(menuId,trigger) {
var nLevel = 0;
var leftpos = 0;
var nIndex=0;

if (menuId>0)
{
 lw_calcpos(trigger);

 for (var i=0;i<menuCounter;i++)
 {
  if (menu[i].id==menuId)
  { 
   nLevel = menu[i].levelId;
   nIndex = i;
  }
 }

 if ((orientation==1)||(menu[nIndex].parentId>0))
 {
  lw_getObj("menu_level_"+nLevel).top=lw_toppos;
  leftpos = lw_leftpos + lw_width + 5;

  if (nLevel==0) {
   leftpos -= 3;
  }
 }
 else {
  lw_getObj("menu_level_"+nLevel).top = lw_toppos + lw_height + 2;
  leftpos = lw_leftpos;
 }

 lw_getObj("menu_level_"+nLevel).left=leftpos;

 sHTML = "<table cellpadding=1 cellspacing=0 border=0>";
 for (var i=0;i<menuCounter;i++)
 {
  if (menu[i].parentId==menuId)
  {
   sHTML += displayMenuItem (i);
  }
 }
 sHTML += "</table>";

 document.getElementById("menu_level_"+nLevel+"_content").innerHTML=sHTML;
 lw_showLayer('menu_level_'+nLevel);
} 
}

function hideSubmenu(levelId) {
for (var cnt=levelId; cnt<numLevel; cnt++)
{
 lw_hideLayerName("menu_level_"+cnt);
}
}

function DrawMenu ()  {
var sHTML = "";
for (var i=0; i<numLevel; i++)
{
 lw_createLayer("menu_level_"+i,0,0,0,0,"#ffffff","#e0e9f0",100);
}

sHTML='<div id=\"fwwMenuBar\" style=\"background-color:' + mainItemBackground + ';\" onselectstart="return false;">';
sHTML+="<table cellpadding=0 cellspacing=0>";
for (var i=0; i<menuCounter; i++)
{
 if (menu[i].parentId==0)
 {  
  sHTML += displayMenuItem (i);
 }
 else if (menu[i].parentId==-1)
 {  
  sHTML += "<tr><td><img src='" + imgPath + "trans.gif' height=2></td></tr><tr bgcolor='"+mainItemBackground+"'><td style='padding:2px'><b>" + menu[i].description + "</b></td></tr>";
 }
}
sHTML += "</table>";
 sHTML += "</div>";
document.writeln(sHTML);
}

function getLevel (menuId) {
var pId=menuId;
var nLevel=0;

while (pId!=0)
{
 nLevel++;
 for (var i=0;i<menuCounter;i++)
 {
  if (menu[i].id==pId)
  { 
   pId = menu[i].parentId;
  }
 }
}

return nLevel;
}

function AddMenuItem (id, parentId, url, description, img)  {

menu[menuCounter++] = new Tmenu (id, parentId, url, description, img);

if (parentId>0)
{
 for (i=0;i<menuCounter;i++)
 {
  if (menu[i].id==parentId)
  {
   menu[i].numChild++;
  }
 }
 menu[menuCounter-1].levelId = getLevel(parentId);

 if ( numLevel < menu[menuCounter-1].levelId)
 { 
  numLevel = menu[menuCounter-1].levelId;
 }
}  
else if (parentId==0)
{
 menu[menuCounter-1].levelId = 0;
}
else
{
 menu[menuCounter-1].levelId = -1;
}
}

function handleonclick() {
if (ns)
{
 lw_closeAllLayers();
}
else
{
 lw_closeAllLayers(event);
}

resetMenu();
}

function handlekeypress(e) {
if (ns)
{
 var keyCode = e.keyCode?e.keyCode:e.which?e.which:e.charCode;
 if ((keyCode==27)||(keyCode==1))
 {
  handleonclick();
 }
}
else
if ((event.keyCode==0)||(event.keyCode==27))
{
 handleonclick();
}
resetMenu();
}

function resetMenu () {
for (i=0;i<menuCounter;i++)
{
 if (menu[i].levelId==0)
 {
  lw_getObj("menu_"+i).backgroundColor=mainItemBackground;
  lw_getObj("menu_"+i).borderColor=mainItemBorder;
 }
}
}

document.onkeypress = handlekeypress;
document.onclick = handleonclick;

