////////////////////////////////////////////////////////////////////// ///////// Dynamic JavaScript Menu For Actox ////////////////////// ///////// rewritten & adapted by Ihar Hrunt, smartcgi@mail.ru ////// ///////// FOR DOM BROWSERS: IE5, IE6, OPERA, Mozilla, /////////// ///////// Netscape, FireFox /////////// ////////////////////////////////////////////////////////////////////// var IHAR =0; // keep length of menu for submenu var prevId = null; var Timer; var borderColor ="bordercolor = #1b5665"; //var onStyle="FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: normal; color:#ffffff; background-color: #468499; cursor:hand; padding:2"; //var offStyle="FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: normal; color:#000000; background-color: #F7FCFF; cursor:hand; padding:2"; var onStyle1="FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: normal; color:#ffffff; background-color: #468499; cursor:hand; padding:2"; var offStyle1="FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: normal; color:#000000; background-color: #F7FCFF; cursor:hand; padding:2"; var onStyle2="FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: normal; color:#aaaaaa; background-color: #468499; padding:2"; var offStyle2="FONT-FAMILY: Arial, Helvetica, sans-serif; font-size: 9pt; font-weight: normal; color:#aaaaaa; background-color: #F7FCFF; padding:2"; var onStyle =onStyle1; var offStyle=offStyle1; var onStyleExpandOver = "FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #FF0000; FONT-FAMILY: Arial, Helvetica, Verdana, sans-serif; TEXT-DECORATION: none; cursor:hand;"; var onStyleExpandOut = "FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #456789; FONT-FAMILY: Arial, Helvetica, Verdana, sans-serif; TEXT-DECORATION: none; cursor:hand;"; var isDOM = false; var isIE = false; var isOpera7 = false; var isNN4 = false; var flagMenu = "M"; var flagLink = "L"; var flagCommand = "C"; var flagSeparator = "S"; var charWidth = 5; // item character width var charWidthAdd = 55; var charHeight = 19; // item character height var colorNormal = "#F7FCFF"; // menu pad color var colorHighlighted = "#5FA0B2"; // menu highlighted item color var colorTopLine = "#F7FCFF"; // separator upper line color var colorBottomLine = "#1b5665"; // separator lower line color var borderSize = 1; var marginSize = 4; var marginString = "  "; var subMenuFlagSize = 4; var menuShown = -1; var itemOn = false; var nnWidth = 0, nnHeight = 0; var menuItemCount = -1; var menuItem = new Array(); var menuFolderCount = -1; var menuFolder = new Array(); var menuFolderSwitch = new Array(); var menuWidth = new Array(); var itemLayer = new Array(); var menuLayer = new Array(); var menuHolder = new Array(); var menuDone = new Array(); var focusIt = 0; if(typeof HTMLElement!="undefined" && ! HTMLElement.prototype.insertAdjacentElement){ HTMLElement.prototype.insertAdjacentHTML = function (sWhere, sHTML) { var df; // : DocumentFragment var r = this.ownerDocument.createRange(); switch (String(sWhere).toLowerCase()) { // convert to string and unify case case "beforebegin": r.setStartBefore(this); df = r.createContextualFragment(sHTML); this.parentNode.insertBefore(df, this); break; case "afterbegin": r.selectNodeContents(this); r.collapse(true); df = r.createContextualFragment(sHTML); this.insertBefore(df, this.firstChild); break; case "beforeend": r.selectNodeContents(this); r.collapse(false); df = r.createContextualFragment(sHTML); this.appendChild(df); break; case "afterend": r.setStartAfter(this); df = r.createContextualFragment(sHTML); this.parentNode.insertBefore(df, this.nextSibling); break; } }; } function outliner(name1,name2,name3) { var child = document.getElementById(name1); if (null != child) child.className = child.className == "collapsed2" ? "expanded2" : "collapsed2"; var child2 = document.getElementById(name2); if (null != child2) child2.className = child2.className == "collapsed" ? "expanded" : "collapsed"; var child3 = document.getElementById(name3); if (null != child3) child3.className = child3.className == "collapsed" ? "expanded" : "collapsed"; } function outliner2(name1,name2,name3,name4) { var child1 = document.getElementById(name1); var child2 = document.getElementById(name2); var child3 = document.getElementById(name3); var child4 = document.getElementById(name4); if (null != child1){ child1.className = "expanded2"; } if (null != child2){ child2.className = "collapsed2"; } if (null != child3){ child3.className = "collapsed2"; } if (null != child4){ child4.className = "collapsed2"; } } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i'; var htmlString = (menuItem[menuNum][itemIndex].type == flagSeparator)?('
'):('
'+ marginString + menuItem[menuNum][itemIndex].name + marginString + '
' + subMenuFlag + '  
'); if (!itemLayer[menuNum][itemIndex]) { itemLayer[menuNum][itemIndex] = true; if (isDOM) { document.getElementById(menuHolder[menuNum]).insertAdjacentHTML("BeforeEnd",layerString); thisItem = document.getElementById(itemID); document.getElementById(itemID).innerHTML = htmlString; thisItem.style.zIndex = menuIndex * 2 + 1; thisItem.onmouseover = mouseOver; //////////////// // if (menuItem[menuNum][itemIndex].type != flagSeparator) thisItem.onmouseout = mouseOut; } else if (isNN4) { document.layers[itemID] = new Layer(itemDimX,document.layers[menuHolder[menuNum]]); thisItem = document.layers[itemID]; thisItem.visibility = "hidden"; thisItem.document.open(); thisItem.document.writeln(htmlString); thisItem.document.close(); thisItem.document.bgColor = colorNormal; thisItem.zIndex = menuIndex * 2 + 1; thisItem.onmouseover = mouseOver; if (menuItem[menuNum][itemIndex].type != flagSeparator) thisItem.onmouseout = mouseOut; } thisItem.itemIndex = itemIndex; thisItem.menuNum = menuNum; } return itemID; } function getMenu(menuNum,menuIndex,menuDimX,menuDimY, myY, myX) { var menuID = "m" + menuNum + "f" + menuIndex + ""; var menuPadX = menuDimX + borderSize * 2; var menuPadY = menuDimY + borderSize * 2; // Mozilla myTop = myY - charHeight; myLeft = myX; var layerString = ''; if ((isIE) || (isOpera7)) { var htmlString = '
'; } else { var htmlString = '
'; } var theLayer = null; if (!menuLayer[menuNum][menuIndex]) { menuLayer[menuNum][menuIndex] = true; if (isDOM) { document.getElementById(menuHolder[menuNum]).insertAdjacentHTML("afterbegin",layerString); theLayer = document.getElementById(menuID); document.getElementById(menuID).innerHTML= htmlString; theLayer.style.zIndex = menuIndex * 2; } else if (isNN4) { document.layers[menuID] = new Layer(menuPadX,document.layers[menuHolder[menuNum]]); theLayer = document.layers[menuID]; theLayer.visibility = "hidden"; theLayer.zIndex = menuIndex * 2; theLayer.document.open(); theLayer.document.writeln(htmlString); theLayer.document.close(); } theLayer.padWidth = menuPadX; theLayer.padHeight = menuPadY; theLayer.paDimX = 0; theLayer.paDimY = 0; theLayer.seDimX = 0; theLayer.seDimY = 0; } return menuID; } function showLayer(layerID) { if (isDOM) document.getElementById(layerID).style.visibility = "visible" else if (isNN4) document.layers[layerID].visibility = "show"; } function hideLayer(layerID) { if (isDOM) document.getElementById(layerID).style.visibility = "hidden" else if (isNN4) document.layers[layerID].visibility = "hidden"; } function moveLayerTo(layerID,x,y) { if (isDOM) { document.getElementById(layerID).style.pixelLeft = x; document.getElementById(layerID).style.pixelTop = y; } else if (isNN4) { document.layers[layerID].left = x; document.layers[layerID].top = y; } } function hideMenu(menuNum,menuIndex) { var menuLength = menuFolder[menuNum][menuIndex].length; var menuID = getMenu(menuNum,menuIndex,0,0,0,0); var itemID = ""; var itemIndex = 0; var theLayer = getLayer(menuID); for (var i = 0; i < menuLength; i++) { itemIndex = menuFolder[menuNum][menuIndex][i]; if (menuItem[menuNum][itemIndex].type == flagMenu) if (menuFolderSwitch[menuNum][menuItem[menuNum][itemIndex].folder]) hideMenu(menuNum,menuItem[menuNum][itemIndex].folder); itemID = getItem(menuNum,itemIndex,0,0,0,0,0,0); hideLayer(itemID); } hideLayer(menuID); if (isNN4) { setMenuSize(menuHolder[menuNum],theLayer.paDimX,theLayer.paDimY); } menuFolderSwitch[menuNum][menuIndex] = false; } function _getLeft(_holder) { return (_holder.offsetParent.tagName=="BODY")?(_holder.offsetLeft):(_holder.offsetLeft+_getLeft(_holder.offsetParent)); } function _getTop(_holder) { return (_holder.offsetParent.tagName=="BODY")?(_holder.offsetTop):(_holder.offsetTop+_getTop(_holder.offsetParent)); } function getLeft(_holder) { return (isDOM)?_getLeft(_holder):_holder.pageX; } function getTop(_holder) { return (isDOM)?_getTop(_holder):_holder.pageY; } function showX(menuNum,menuIndex,menuX,menuY,dimX,dimY,fCount) { var menuLength = menuFolder[menuNum][menuIndex].length; var menuDimX = menuWidth[menuNum][menuIndex] * charWidth + subMenuFlagSize + charWidthAdd; var menuID = ""; var itemID = ""; var itemIndex = 0; var itemDimY = menuY; if (fCount == focusIt || fCount < 0) { for (var i = 0; i < menuLength; i++) { itemID = getItem(menuNum,menuFolder[menuNum][menuIndex][i],0,0,0,0,0,0); itemIndex = menuFolder[menuNum][menuIndex][i]; menuItem[menuNum][itemIndex].x = menuX; menuItem[menuNum][itemIndex].y = itemDimY; // itemDimY += (menuItem[menuNum][itemIndex].type != flagSeparator)?charHeight:2; itemDimY += charHeight; moveLayerTo(itemID,menuItem[menuNum][itemIndex].x,menuItem[menuNum][itemIndex].y); showLayer(itemID); } menuID = getMenu(menuNum,menuIndex,0,0,0,0); moveLayerTo(menuID,menuX-borderSize,menuY-borderSize); if (isNN4) { var theLayer = document.layers[menuID]; theLayer.paDimX = dimX; theLayer.paDimY = dimY; theLayer.seDimX = (dimX < menuX + borderSize + menuDimX)?(menuX + borderSize + menuDimX):dimX; theLayer.seDimY = (dimY < itemDimY + borderSize)?(itemDimY + borderSize):dimY; setMenuSize(menuHolder[menuNum],theLayer.seDimX,theLayer.seDimY); } showLayer(menuID); menuFolderSwitch[menuNum][menuIndex] = true; } } function showSubMenu(menuNum,menuIndex,menuX,menuY,dimX,dimY,fCount) { var menuLength = menuFolder[menuNum][menuIndex].length; var menuDimX = menuWidth[menuNum][menuIndex] * charWidth + subMenuFlagSize + charWidthAdd; var menuID = ""; var itemID = ""; var theLayer = null; var itemIndex = 0; var dy=0,dx=0; var frameWidth,frameHeight,contentWidth,contentHeight,scrollX,scrollY; contentWidth=window.document.body.clientWidth; contentHeight=window.document.body.clientHeight; scrollX=window.document.body.scrollLeft; scrollY=window.document.body.scrollTop; menuID = getMenu(menuNum,menuIndex,0,0,0,0); theLayer = getLayer(menuID); var padLeft=getLeft(theLayer); var padRight=padLeft+theLayer.padWidth; var padTop=getTop(theLayer); var padBottom=padTop+theLayer.padHeight; if (padBottom-scrollY>contentHeight) { dy=contentHeight+scrollY-padBottom; if (padTop+dycontentWidth) { dx=contentWidth+scrollX-padRight; if (padLeft+dx