var timeOn = null;

var numMenus = 50;

var currentMenuNo = 0;
var menuActive = new Array(numMenus);
var tier = new Array(numMenus);
var borderMod = new Array(numMenus);
var offClass = new Array(numMenus);
var onClass = new Array(numMenus);
var offColours = new Array(numMenus);
var onColours = new Array(numMenus);
var labelBulletName = new Array(numMenus);
var menuType = new Array(numMenus);
var menus = new Array(numMenus);
var iTotalHiddenSelects = 0;
var HiddenSelects = new Array(numMenus);


function bulletPoint(offURL, onURL) {
    this.offImage = new Image();
    this.offImage.src = offURL;
    this.onImage = new Image();
    this.onImage.src = onURL;
    this.URL = String(offURL);
}

function openMe(newin) {
        flyout=window.open(newin,"flyout","")
}

function borderCell(B) {
    return '<td width="1" bgcolor="' + B + '"><img src="images/shim.gif" width="1" height="1" border="0"></td>';
}

function borderRow(B, C) {
    return '<tr><td height="1" colspan="' + C + '" bgcolor="' + B + '"><img src="images/shim.gif" width="1" height="1" border="0"></td></tr>';
}

function menuOver() {
    clearTimeout(timeOn);
}

function menuOut() {
    //timeOn = setTimeout("hideAllMenus()", 50);
}


function showMenu(m_No, eventObj) {
	/*for (i = 0; i < document.getElementsByTagName('SELECT').length; i++)
	{
		if(document.getElementsByTagName('SELECT')[i].style.display != "none")
		{
		    HiddenSelects[iTotalHiddenSelects++] = document.getElementsByTagName('SELECT')[i].id
		    document.getElementsByTagName('SELECT')[i].style.display = "none"; 
		}    
	} */	    
    hideAllMenusTier(tier[m_No]-1);
    var borderModSize = borderMod[m_No];
    if (ns4) {
        changeBGColour('menuLabel' + m_No, onColours[m_No]);
    } else {
        changeBGColour('labelCell' + m_No, onColours[m_No]);
        changeClass('menuLink' + m_No, onClass[m_No]);
    }
    if (labelBulletName[m_No] != null){
        changeImage('menuBullet' + m_No, labelBulletName[m_No] + '.onImage');
    }
    menuActive[m_No] = true;
    if (menuType[m_No] != 'blank') {
        if (ns4) labelObj = 'menuLabel'+m_No;
        else labelObj = 'labelCell'+m_No;

        x = getElementLeft(labelObj)-borderModSize;
        y = getElementTop(labelObj) + getElementHeight(labelObj);
        if (menus[m_No].align == 'center')  x = x + ((getElementWidth(labelObj)-getElementWidth('menu'+m_No))/2);
        if (menus[m_No].align == 'right') x = x + ((getElementWidth(labelObj)-getElementWidth('menu'+m_No))) + (borderModSize*2);

        var browserName=navigator.appName; 
        if (browserName=="Netscape")
        { 
         y = 200;
        }
        else 
        { 
         if (browserName=="Microsoft Internet Explorer")
         {
          y = 115;
         }
         else
          {
            y = 115;
           }
        }

        moveXY('menu' + m_No, x+10, y);

        if(changeObjectVisibility('menu' + m_No, 'visible')) return true;
        else return false;
    }
}

function showMenuSide(m_No, eventObj, myTier) {
    hideAllMenusTier(tier[m_No]-1);
    var borderModSize = borderMod[m_No];
    if (ns4) {
        changeBGColour('menuLabel' + m_No, onColours[m_No]);
    } else {
        changeBGColour('labelCell' + m_No, onColours[m_No]);
        changeClass('menuLink' + m_No, onClass[m_No]);
    }
    if (labelBulletName[m_No] != null) changeImage('menuBullet' + m_No, labelBulletName[m_No] + '.onImage');
    menuActive[m_No] = true;
    if (menuType[m_No] != 'blank') {
        if (ns4) {
            labelObj = 'menuLabel'+m_No;
        } else {
            labelObj = 'labelCell'+m_No;
            if (mac_ie) labelObj = 'labelRow'+m_No;
        }
        x = getElementLeft(labelObj);
        y = getElementTop(labelObj) - borderModSize;

        if (menus[m_No].align=='right') x = x + getElementWidth(labelObj);
        else x = x - getElementWidth('menu'+m_No);

        moveXY('menu' + m_No, x, y);

        if(changeObjectVisibility('menu' + m_No, 'visible')) return true;
        else return false;
    }
}

function hideAllMenus() {
	for (i = 0; i < iTotalHiddenSelects; i++)
	{
		document.getElementById(HiddenSelects[i]).style.display = "inline"; 
	}	    
	iTotalHiddenSelects = 0;
    for (var i = 1; i < (currentMenuNo+1); i++) {
        if(menuActive[i] == true) hideMenu(i);
    }
}

function hideAllMenusTier(myTier) {
    for (var i = 1; i < (currentMenuNo+1); i++) {
        if( tier[i] > myTier && menuActive[i] == true) hideMenu(i);
    }
}

function hideMenu(m_No) {
    if (ns4) {
        changeBGColour('menuLabel' + m_No, offColours[m_No]);
    } else {
        changeBGColour('labelCell' + m_No, offColours[m_No]);
        changeClass('menuLink' + m_No, offClass[m_No]);
    }
    if (labelBulletName[m_No] != null){
        changeImage('menuBullet' + m_No, labelBulletName[m_No] + '.offImage');
    }
    menuActive[m_No] = false;

    if(changeObjectVisibility('menu' + m_No, 'hidden'))  return true;
    else return false;

}



function menuBar(barName, barWidth, orientation, i_Bor, o_Bor, useclick) {
    this.numLabels = 0;
    this.i_Bor = i_Bor;
    this.o_Bor = o_Bor;
    this.height = 15;
    this.orientation = orientation;
    this.labelText = new Array();
    this.rowText = new Array();
    this.offClass = 'MenuLabelLink';
    this.onClass = 'MenuLabelLinkOn';
    this.bulletAlign = 'left';
    this.targetType = 'self'; // self, iframe, frame, new
    this.targetFrame = '_self'; // _self, _blank or (i)frame name


    this.addLabel = function(bullet, labelText, menuNo, labelWidth, offColour, onColour, labelURL, align) {
        this.numLabels += 1;
        tier[menuNo] = 0;
        if (this.o_Bor != null) borderMod[menuNo] = 1;
        else borderMod[menuNo] = 0;
        if (menuNo != null) {
            onColours[menuNo] = onColour;
            offColours[menuNo] = offColour;
            onClass[menuNo] = this.onClass;
            offClass[menuNo] = this.offClass;
            labelBulletName[menuNo] = bullet;
        }

        temp = new String('');
        this.rowText[this.numLabels] = new String('');
        if (this.orientation == 'vertical') this.rowText[this.numLabels] += '<tr id="labelRow'+ menuNo + '">';

        temp += '<tr><td id="labelCell' + menuNo + '" width="'+ labelWidth + '" bgcolor="' + offColour + '" valign="middle" height="' + this.height + '" ';

        if (!ns4) {
            if (useclick == "1") {
            temp += ' onclick="menuOver(); '; }
            else {
            temp += ' onmouseover="menuOver(); '; 
            }
            if (this.orientation == 'vertical') temp += 'return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']);" ';
            else temp += 'return !showMenu(' + menuNo + ', event);" ';
            if (this.targetType=='self') temp += ' onclick="document.location.href=\'' + labelURL + '\';" ';
            if (this.targetType=='new') temp += ' onclick="openMe(\'' + labelURL + '\'); return false;" ';
            if (this.targetType=='frame') temp += ' onclick="parent.' + this.targetFrame + '.document.location.href=\'' + labelURL + '\';" ';
            if (this.targetType=='iframe') temp += ' onclick="' + this.targetFrame + '.location.href=\'' + labelURL + '\';" ';
        }
        temp +='>';

        if (ns4) {
            temp +='<ilayer><layer onmouseout="menuOut();" onmouseover="menuOver(); ';
            if (this.orientation == 'vertical') temp +='return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']);" ';
            else temp +='return !showMenu(' + menuNo + ', event);" ';
        } else {
            temp +='<div ';
        }

        temp += ' class="AllianceMenuLabel' + align + '" width="' + labelWidth + '"  id="menuLabel' + menuNo +'"><a href="' + labelURL +'" target="' + this.targetFrame + '" class="' + this.offClass + '" id="menuLink' + menuNo +'">';

        if (bullet != null) temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" id="menuBullet' + menuNo + '" name="menuBullet' + menuNo + '">';

        temp += labelText + '</a>';

        if (ns4) temp += '</layer></ilayer>';
        else temp += '</div>';

        temp += '</td></tr>';
        this.labelText[this.numLabels] = new String(temp);

    }

    this.writeMenuBar = function() {
        o_Bor = this.o_Bor;
        i_Bor = this.i_Bor;
        menuBarStr = new String();
        menuBarStr += '<div id="' + barName + '"><table border="0" cellpadding="0" cellspacing="0">';
        if (this.orientation == 'vertical') {
            if (o_Bor != null) menuBarStr += borderRow(o_Bor, 3);
            for (var count = 0; count < this.numLabels; count++) {
                menuBarStr += this.rowText[count+1];
                if (o_Bor != null) menuBarStr += borderCell(o_Bor);
                menuBarStr += this.labelText[count+1];
                if (o_Bor != null) menuBarStr += borderCell(o_Bor);
                menuBarStr += '</tr>';
                if (i_Bor != null && count < (this.numLabels-1)) {
                    if (o_Bor != null) menuBarStr += '<tr>' + borderCell(o_Bor) + borderCell(i_Bor) + borderCell(o_Bor) + '</tr>';
                    else menuBarStr += borderRow(i_Bor, 1);
                }
            }
            if (o_Bor != null) menuBarStr += borderRow(o_Bor, 3);
        } else {
            if (o_Bor != null) {
            //top of menu
                //if (i_Bor != null) menuBarStr += borderRow(o_Bor, ((this.numLabels*2)+1));
                //else menuBarStr += borderRow(o_Bor, (this.numLabels+2));
            }
            menuBarStr += '<tr>';
            // left of menu
            //if (o_Bor != null) menuBarStr += borderCell(o_Bor);
            for (var count = 0; count < this.numLabels; count++) {
                menuBarStr += this.rowText[count+1];
                menuBarStr += this.labelText[count+1];
                if (i_Bor != null && count < (this.numLabels-1)) {
                // seperator
                    menuBarStr += '<td></td>';
                }
            }
            if (o_Bor != null) {
                // right of menu
                //menuBarStr += borderCell(o_Bor);
                //bottom of menu
                //if (i_Bor != null) menuBarStr += borderRow(o_Bor, ((this.numLabels*2)+1));
                //else menuBarStr += borderRow(o_Bor, (this.numLabels+2));
            }
            menuBarStr +=  '</tr>';
        }
        menuBarStr += '</table></div>';
        document.write(menuBarStr);
    }
}


function menu(menuWidth, orientation, i_Bor, o_Bor) {
    currentMenuNo += 1;
    this.numItems = 0;
    this.i_Bor = i_Bor;
    this.o_Bor = o_Bor;
    this.height = 15;
    this.itemText = new Array();
    this.rowText = new Array();
    this.align = 'left';
    this.offClass = 'MenuItemLink';
    this.onClass = 'MenuItemLinkOn';
    this.orientation = orientation;
    this.bulletAlign = 'left';
    this.targetType = 'self'; // self, iframe, frame, new
    this.targetFrame = '_self'; // _self, _blank or (i)frame name

    this.addItem = function(bullet, itemText, menuNo, itemWidth, offColour, onColour, itemURL, align, newwindow) {
        this.numItems += 1;
    
        if( newwindow == 1)
        {
            this.targetType = 'new';
            this.targetFrame = '_blank';
        }
        else
        {
            this.targetType = 'self';
            this.targetFrame = '_self';
        }
        
        var tempId = currentMenuNo + '_' + this.numItems;

        if (menuNo != null) {
            tier[menuNo] = tier[currentMenuNo] + 2;
            onColours[menuNo] = onColour;
            offColours[menuNo] = offColour;
            onClass[menuNo] = this.onClass;
            offClass[menuNo] = this.offClass;
            labelBulletName[menuNo] = bullet;
            if (this.o_Bor != null) borderMod[menuNo] = 1;
            else borderMod[menuNo] = 0;
        }

        temp = new String('');
        this.rowText[this.numItems] = new String('');

        if (menuNo != null) {
            if (this.orientation =='vertical') this.rowText[this.numItems] += '<tr id="labelRow'+ menuNo + '">';
            temp += '<td id="labelCell'+ menuNo + '" width="'+ itemWidth + '" bgcolor="' + offColour + '" valign="middle" height="' + this.height + '" ';
        } else {
            if (this.orientation =='vertical') this.rowText[this.numItems] += '<tr>';
            temp += '<td id="itemCell' + tempId + '" width="'+ itemWidth + '" bgcolor="' + offColour + '" valign="middle" height="' + this.height + '" class="' + align + 'Menu"';
        }
        if (!ns4) {
            if (this.targetType=='self') temp += ' onclick="document.location.href=\'' + itemURL + '\';" ';
            if (this.targetType=='new') temp += ' onclick="openMe(\'' + itemURL + '\'); return false;" ';
            if (this.targetType=='frame') temp += ' onclick="parent.' + this.targetFrame + '.document.location.href=\'' + itemURL + '\';" ';
            if (this.targetType=='iframe') temp += ' onclick="' + this.targetFrame + '.location.href=\'' + itemURL + '\';" ';
            if (menuNo != null) {
                if (this.orientation =='vertical') temp += ' onmouseover="menuOver(); return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']); " onmouseout=" menuOut(); "';
                else temp += ' onmouseover="menuOver(); return !showMenu(' + menuNo + ', event); " onmouseout=" menuOut(); "';
            } else {
                temp += ' onmouseover="changeClass(\'menuLink' + tempId + '\',\'' + this.onClass + '\'); hideAllMenusTier(tier[' + currentMenuNo + ']); menuOver();  changeBGColour(\'itemCell' + tempId + '\', \'' + onColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.onImage\'); " onmouseout="menuOut(); changeClass(\'menuLink' + tempId + '\',\'' + this.offClass + '\'); changeBGColour(\'itemCell' + tempId + '\', \'' + offColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.offImage\'); "';
            }
        }
        temp += '>';

        if (ns4) {
            temp += '<ilayer><layer ';
            if(menuNo != null) {
                if (this.orientation == 'vertical') temp += 'onmouseover="menuOver(); return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']);" onmouseout="menuOut();"';
                else temp += 'onmouseover="menuOver(); return !showMenu(' + menuNo + ', event);" onmouseout="menuOut();"';
            } else {
                temp += 'onmouseover="hideAllMenusTier(tier[' + currentMenuNo + ']); menuOver(); changeBGColour(\'menuItem' + tempId + '\', \'' + onColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.onImage\'); " onmouseout="menuOut(); changeBGColour(\'menuItem' + tempId + '\', \'' + offColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.offImage\'); "';
            }
        } else {
            temp +='<div ';
        }
        temp += ' class="AllianceMenuItem' + align + '" width="' + itemWidth + '"';

        if (menuNo != null) temp += ' id="menuLabel' + menuNo +'"';
        else temp += ' id="menuItem' + tempId +'"';

        temp += '><a href="' + itemURL +'" target="' + this.targetFrame + '" class="' + this.offClass + '"';
        if (menuNo != null) temp += 'id="menuLink' + menuNo +'"';
        else temp += 'id="menuLink' + tempId +'"';
        temp +='>';

        if (bullet != null) {
            if (menuNo != null) temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" id="menuBullet' + menuNo + '" name="menuBullet' + menuNo + '">';
            else temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" id="menuItemBullet' + tempId + '" name="menuItemBullet' + tempId + '">';
        }

        temp += itemText + '</a>';

        if (ns4) temp += '</layer></ilayer>';
        else temp += '</div>';

        temp += '</td>';
        this.itemText[this.numItems] = new String(temp);
    }

    this.writeMenu = function() {
        var menuStr = new String();
        o_Bor = this.o_Bor;
        i_Bor = this.i_Bor;
        if (this.numItems == 0) menuType[currentMenuNo] = 'blank';
        else menuType[currentMenuNo] = 'default';
        menuStr += '<div id="menu' + currentMenuNo + '" name="menu' + currentMenuNo + '" class="AllianceMenu" width="' + menuWidth + '"';
        if (!ns4) menuStr += ' style="width:' + menuWidth + ';"';
        menuStr+= '><table border="0" cellpadding="0" cellspacing="0" width="' + menuWidth + '">';
        if (this.orientation == 'vertical') {
            //top of menu
            if (o_Bor != null) menuStr += borderRow(this.o_Bor, 3);
            for (var count = 0; count < this.numItems; count++) {
                menuStr += this.rowText[count+1];
                // left of menu
                if (o_Bor != null) menuStr += borderCell(o_Bor);
                menuStr += this.itemText[count+1];
                // right of menu
                if (o_Bor != null) menuStr += borderCell(o_Bor);
                menuStr += '</tr>';
                if (i_Bor != null && count < (this.numItems-1)) {
                       // seperator
                    if (o_Bor != null) menuStr += '<tr><td height="1" bgcolor="#ffffff"></td><td height="1" bgcolor="#ffffff"></td><td height="1" bgcolor="#ffffff"></td></tr>';
                    else menuStr += borderRow(i_Bor, 1);
                }
            }
            // Bottom of menu
            if (o_Bor != null) menuStr += borderRow(o_Bor, 3);
        } else {
            if (o_Bor != null) {
                if (i_Bor != null) menuStr += borderRow(o_Bor, ((this.numItems*2)+1));
                else menuStr += borderRow(o_Bor, (this.numItems+2));
            }
            menuStr += '<tr>';
            if (o_Bor != null) menuStr += borderCell(o_Bor);
            for (var count = 0; count < this.numItems; count++) {
                menuStr += this.rowText[count+1];
                menuStr += this.itemText[count+1];
                if (i_Bor != null && count < (this.numItems-1)) {
                    menuStr += borderCell(i_Bor);
                }
            }
            if (o_Bor != null) {
                menuStr += borderCell(o_Bor);
                if (i_Bor != null) menuStr += borderRow(o_Bor, ((this.numItems*2)+1));
                else menuStr += borderRow(o_Bor, (this.numItems+2));
            }
            menuStr +=  '</tr>';
        }
        menuStr += '</table></div>';
        document.write(menuStr);
    }
}
