// 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 = '
';
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