// Don't change these parameters var delay = 500; ///// var menuElement = new Array (); var usedWidth = 0; var numOfMenus = 0; /// ---------------------------- // check browser version isNC = (document.layers) ? 1 : 0; isOPERA = (navigator.userAgent.indexOf('Opera') >= 0)? true : false; isIE = (document.all && !isOPERA)? true : false; //isDOM = (document.getElementById && !isIE && !isOPERA)? true : false; isDOM = (document.getElementById)? true : false; var topID = -1; // constructor of menu elements function menuConstructor (id, content) { this.ID = id; this.parentID = content [0]*1; this.parentItemID = content [1]*1; this.width = content [2]*1; this.timerID = -1; this.isOn = false; this.item = new Array (); this.currItemID = -1; this.x = content [3]*1; if (this.x < 0 && this.parentID == -1) { this.x = initX + usedWidth; usedWidth = usedWidth + this.width; } else if (this.x < 0 && this.parentID > -1) { this.x = menuElement [this.parentID].x + menuElement [this.parentID].width - xOverlap; } this.y = content [4]*1; if (this.y < 0 && this.parentID == -1) this.y = initY; else if (this.y < 0 && this.parentID > -1) this.y = menuElement [this.parentID].y + itemHeight*this.parentItemID + yOverlap; items = content [5]; layerBody = ''; for (j = 0; j <= items.length - 2; j = j + 2) { controlBlock = ' onMouseOver = "enterItem (' + this.ID + ', ' + ((j + 2)/2 - 1) + ');" onMouseOut = "exitItem (' + this.ID + ', ' + ((j + 2)/2 - 1) + ');" '; layerBody += ''; if (j < items.length - 2) layerBody = layerBody + '\n'; else layerBody = layerBody + '\n'; } if (!isNC) layerHeader = '
' + items [j] + '
' + '
'; layerFooter = '
'; if (!isNC) layerFooter = layerFooter + ''; else layerFooter = layerFooter + ''; document.writeln (layerHeader + layerBody + layerFooter); return this; } function enterTopItem (ID) { if (topID != ID && topID != -1) hideTree (topID); releaseTree (ID); topID = ID; show (ID); } function exitTopItem (ID) { menuElement [ID].timerID = setTimeout ('hide (' + ID + ')', delay); } function enterItem (menuID, itemID) { var currItemID = menuElement [menuID].currItemID; if (currItemID != i & currItemID > -1) hide (currItemID); for (var i = 0; i < numOfMenus; i++) { if (menuElement [i].parentID == menuID && menuElement [i].parentItemID == itemID) { clearTimeout (menuElement [i].timerID); menuElement [i].timerID = -1; show (i); return 0; } } return -1; } function exitItem (menuID, itemID) { for (var i = 0; i < numOfMenus; i++) { if (menuElement [i].parentID == menuID && menuElement [i].parentItemID == itemID) { menuElement [i].timerID = setTimeout ('hide (' + i + ')', delay); return 0; } } } function enterMenu (ID) { var parentID = menuElement [ID].parentID; if (parentID == -1) { clearTimeout (menuElement [ID].timerID); menuElement [ID].timerID = -1; } else releaseTree (ID); } function exitMenu (ID) { timeoutTree (ID); } function hideTree (ID) { hide (ID); for (var j = 0; j < numOfMenus; j++) { if (menuElement [j].parentID == ID && menuElement [j].isOn) { hideTree (j); return 0; } } } function releaseTree (ID) { clearTimeout (menuElement [ID].timerID); menuElement [ID].timerID = -1; var parentID = menuElement [ID].parentID; if (parentID > -1) releaseTree (parentID); } function timeoutTree (ID) { menuElement [ID].timerID = setTimeout ('hide (' + ID + ')', delay); var parentID = menuElement [ID].parentID; if (parentID > -1) timeoutTree (parentID); } function show (ID) { if (isDOM) document.getElementById('Menu' + ID).style.visibility = "visible"; else if (isIE || isOPERA) document.all['Menu' + ID].style.visibility = "visible"; else if (isNC) document.layers[ID].visibility = "show"; menuElement [ID].isOn = true; if (menuElement [ID].parentID > -1) menuElement [menuElement [ID].parentID].currItemID = ID; hideselector(ID); } function hide (ID) { if (isDOM) document.getElementById('Menu' + ID).style.visibility = "hidden"; else if (isIE || isOPERA) document.all['Menu' + ID].style.visibility = "hidden"; else if (isNC) document.layers[ID].visibility = "hide"; menuElement [ID].isOn = false; showselector(ID); if (menuElement [ID].parentID > -1) menuElement [menuElement [ID].parentID].currItemID = -1; } function createMenuTree () { for (var i = 0; i < menuContent.length; i++) { menuElement [i] = new menuConstructor (i, menuContent [i]); numOfMenus++; } } //------------- addons var hassel = 0; var stackshow = 0; function CheckSel() { // if (isIE) { // var v5=navigator.appVersion; // if (v5.indexOf("MSIE 5.0")!=-1) { alert('version 5'); } // } for (var i=0; i0) { if (hassel==1) document.goform.gochoice.style.visibility = 'visible'; if (hassel==2) document.searchform.m.style.visibility = 'visible'; } } } function hideselector(id) { if ( (document.all || isOPERA) && hassel) { for (j = 0; j < hidesel.length; j++) { if (id==hidesel[j]) { if (hassel==1) document.goform.gochoice.style.visibility = 'hidden'; if (hassel==2) document.searchform.m.style.visibility = 'hidden'; } } } } function findPosX(obj) { var curleft = 0; if (document.getElementById || document.all) { while (obj.offsetParent) { curleft += obj.offsetLeft obj = obj.offsetParent; } } else if (document.layers) curleft += obj.x; return curleft; } function findPosY(obj) { var curtop = 0; var printstring = ''; if (document.getElementById || document.all) { while (obj.offsetParent) { printstring += ' element ' + obj.tagName + ' has ' + obj.offsetTop; curtop += obj.offsetTop obj = obj.offsetParent; } } else if (document.layers) curtop += obj.y; window.status = printstring; return curtop; } function getObj(id) { var name = 'Main'+id; if (isDOM) return document.getElementById(name); else if (isIE) return document.all[name]; else if (isOPERA) return document.all[name]; else return document.layers[id]; } function RecalcMenuPosition(){ usedWidth = 0; for (var i = 0; i < menuContent.length; i++) { menuUpdate (i, menuContent [i]); } } function menuUpdate(id, content) { var obj; this.ID = id; this.parentID = content [0]*1; this.parentItemID = content [1]*1; this.width = content [2]*1; this.timerID = -1; this.isOn = false; this.item = new Array (); this.currItemID = -1; this.x = content [3]*1; if (this.x < 0 && this.parentID == -1) { this.x = initX + usedWidth; usedWidth = usedWidth + this.width; } else if (this.x < 0 && this.parentID > -1) { this.x = menuElement [this.parentID].x + menuElement [this.parentID].width - xOverlap; } if (this.parentID == -1) { obj = new getObj(this.ID); if (isNC) { // determine pos based on anchor location newX = getAnchorXPosition('Main'+this.ID); //alert(newX); } else newX = findPosX(obj); this.x = newX; menuElement [this.ID].x = this.x; } if (isDOM) document.getElementById('Menu'+this.ID).style.left = this.x; else if (isIE || isOPERA) document.all['Menu' + this.ID].style.left = this.x; else if (isNC) document.layers['Menu' + this.ID].left = this.x; return this; } function getAnchorXPosition(aname) { var x=0; for (var i=0; i