var isDOM = document.getElementById?1:0;var isIE = document.all?1:0;var isNS4 = (navigator.appName=='Netscape' && !isDOM)?1:0;var isIE4 = (isIE && !isDOM)?1:0;var isDyn = (isDOM||isIE||isNS4);function getRef(id, par){ par = !par ? document : (par.navigator?par.document:par); return (isIE ? par.all[id] :  (isDOM ? (par.getElementById?par:par.ownerDocument).getElementById(id) :  par.layers[id]));}function getSty(id, par){ return (isNS4 ? getRef(id, par) : getRef(id, par).style)}if (!window.LayerObj) var LayerObj = new Function('id', 'par', 'this.ref=getRef(id, par); this.sty=getSty(id, par); return this');function getLyr(id, par) { return new LayerObj(id, par) }function LyrFn(fn, fc){ LayerObj.prototype[fn] = new Function('var a=arguments,p=a[0]; with (this) { '+fc+' }');}LyrFn('x','if (!isNaN(p)) sty.left=p; else return parseInt(sty.left)');LyrFn('y','if (!isNaN(p)) sty.top=p; else return parseInt(sty.top)');LyrFn('vis','sty.visibility=p');LyrFn('bgColor','if (isNS4) sty.bgColor=(p?p:null); ' + 'else sty.background=p?p:"transparent"');LyrFn('bgImage','if (isNS4) sty.background.src=(p?p:null); ' +  'else sty.background=(p?"url("+p+")":"") ');LyrFn('clip','if (isNS4) with(sty.clip) { left=a[0]; top=a[1]; right=a[2]; bottom=a[3] } ' + 'else sty.clip="rect("+a[1]+"px "+a[2]+"px "+a[3]+"px "+a[0]+"px)" ');LyrFn('write','if (isNS4) with (ref.document) {write(p);close()} else ref.innerHTML=p');LyrFn('alpha','var f=ref.filters; if (f) {' + 'if (sty.filter.indexOf("alpha")==-1) sty.filter+="alpha()"; ' + 'if (f.length&&f.alpha) f.alpha.opacity=p } else if (isDOM) sty.MozOpacity=(p/100)');function setLyr(lVis, docW, par){ if (!setLyr.seq) setLyr.seq=0; if (!docW) docW=0; var obj = (!par ? (isNS4 ? window : document.body) :  (!isNS4 && par.navigator ? par.document.body : par)); var newID='_js_layer_'+setLyr.seq++; if (isIE&&!window.opera) obj.insertAdjacentHTML('beforeEnd', '<div id="'+newID+  '" style="position:absolute"></div>'); else if (isDOM) {  var newL=document.createElement('div');  obj.appendChild(newL);  newL.id=newID; newL.style.position='absolute'; } else if (isNS4) {  var newL=new Layer(docW, obj);  newID=newL.id; } var lObj=getLyr(newID, par); with (lObj.sty) { visibility=lVis; left=0; top=0; width=docW } return lObj;}if (!window.page) var page = { win: window, minW: 0, minH: 0, MS: isIE&&!window.opera }page.winW=function() { with (this) return Math.max(minW, MS?win.document.body.clientWidth:win.innerWidth) }page.winH=function() { with (this) return Math.max(minH, MS?win.document.body.clientHeight:win.innerHeight) }page.scrollX=function() { with (this) return MS?win.document.body.scrollLeft:win.pageXOffset }page.scrollY=function() { with (this) return MS?win.document.body.scrollTop:win.pageYOffset }// *** MOUSE EVENT CONTROL FUNCTIONS ***function popOver(mN, iN) { with (this){clearTimeout(hideTimer);overM = mN;overI = iN;var thisI = menu[mN][iN];if (iN && this.onmouseover) this.onmouseover(); litOld = litNow; litNow = new Array(); var litM = mN, litI = iN; while(1) {  litNow[litM] = litI;  if (litM == 'root') break;  litI = menu[litM][0].parentItem;  litM = menu[litM][0].parentMenu; } var same = true; for (var z in menu) if (litNow[z] != litOld[z]) same = false; if (same) return; for (thisM in menu) with (menu[thisM][0]) {   if (!lyr) continue;  litI = litNow[thisM];  oldI = litOld[thisM];  if (litI && (litI != oldI)) changeCol(thisM, litI, true);  if (oldI && (oldI != litI)) changeCol(thisM, oldI, false);  if (litI && !visNow && (thisM != 'root'))  {   showMenu(thisM);   visNow = true;  }  if (isNaN(litI) && visNow)  {   hideMenu(thisM);   visNow = false;  } } clearTimeout(showTimer); nextMenu = ''; if (thisI.type == 'sm:') {  var targ = thisI.href, lyrM = menu[mN][0].lyr;  with (menu[targ][0])  {   if (!lyr || !lyr.ref) return;   lyr.x(eval(offX) + (typeof(offX)=='number' ? lyrM.x() + thisI.lyr.x() : 0));   lyr.y(eval(offY) + (typeof(offY)=='number' ? lyrM.y() + thisI.lyr.y() : 0));   showStr = myName + '.showMenu("' + targ + '"); ' +    myName + '.menu.' + targ + '[0].visNow = true';   nextMenu = targ;   if (showDelay) showTimer = setTimeout(showStr, showDelay);   else eval(showStr);  } }}}function popChangeCol(mN, iN, isOver) { with (this.menu[mN][iN]){ var col = isOver ? overCol : outCol; if (col.indexOf('.') == -1) lyr.bgColor(col); else lyr.bgImage(col); var doFX = ((overClass != outClass) || (outBorder != overBorder)); if (doFX && isNS4) lyr.write(this.getHTML(mN, iN, isOver)); else if (doFX) with (lyr) {  ref.className = (isOver ? overBorder : outBorder);  var chl = (isDOM ? ref.childNodes : ref.children)  if (chl) for (var i = 0; i < chl.length; i++)   chl[i].className = (isOver ? overClass : outClass); } if (typeof(outAlpha)=='number') lyr.alpha(isOver ? overAlpha : outAlpha);}}function popOut(mN, iN) { with (this){ if ((mN != overM) || (iN != overI)) return; if (this.onmouseout) this.onmouseout(); var thisI = menu[mN][iN]; if (thisI.href != nextMenu) clearTimeout(showTimer); if (hideDelay) {  var delay = ((mN == 'root') && (thisI.type != 'sm:')) ? 50 : hideDelay;  hideTimer = setTimeout(myName + '.over("root", 0)', delay); } overM = 'root'; overI = 0;}}function popClick(evt) { with (this){ if (overI) {  if (this.onclick) this.onclick();  var thisI = menu[overM][overI];  with (thisI) switch (type)  {   case 'sm:': return;   case 'js:': { eval(href); break }   case '': type = 'window';   default: if (href) eval(type + '.location.href = "' + href + '"');  } } over('root', 0);}}function popClearLyr(wN) { with (this){ for (mN in menu) with (menu[mN][0]) if (par == wN) lyr = null;}}// *** MENU OBJECT CONSTRUCTION FUNCTIONS ***function addProps(obj, data, names, addNull){ for (var i = 0; i < names.length; i++) if(i < data.length || addNull) obj[names[i]] = data[i];}function ItemStyle(){ var names = ['len', 'spacing', 'popInd', 'popPos', 'pad', 'outCol', 'overCol', 'outClass',  'overClass', 'outBorder', 'overBorder', 'outAlpha', 'overAlpha']; addProps(this, arguments, names, true);}function popStartMenu(mName) { with (this){ if (!menu[mName]) { menu[mName] = new Array(); menu[mName][0] = new Object(); } actMenu = mName; menu[mName].length = 1; nextItem = 1; var aM = menu[mName][0]; var names = ['isVert', 'isVert', 'offX','offY', 'width', 'itemSty', 'par', 'parentMenu',  'parentItem', 'visNow', 'menuW', 'menuH']; addProps(aM, arguments, names, true); if (!aM.lyr) aM.lyr = null;}}function popAddItem() { with (this){ var aI = menu[actMenu][nextItem++] = new Object(); var names = ['text', 'href', 'type', 'itemSty', 'len', 'spacing', 'popInd', 'popPos',  'pad', 'outCol', 'overCol', 'outClass', 'overClass', 'outBorder', 'overBorder',  'outAlpha', 'overAlpha', 'iW', 'iH', 'lyr']; addProps(aI, arguments, names, true); var iSty = (arguments[3] ? arguments[3] : menu[actMenu][0].itemSty); for (prop in iSty) if (aI[prop] == window.UnDeFiNeD) aI[prop] = iSty[prop]; if (aI.outBorder) {  if (isNS4) aI.pad++; }}}// *** MAIN MENU CREATION/UPDATE FUNCTIONS ***function popGetHTML(mN, iN, isOver) { with (this){ var itemStr = ''; with (menu[mN][iN]) {  var textClass = (isOver ? overClass : outClass);  if ((type == 'sm:') && popInd)  {   if (isNS4) itemStr += '<layer class="' + textClass + '" left="'+ ((popPos+iW) % iW) +    '" top="' + pad + '">' + popInd + '</layer>';   else itemStr += '<div class="' + textClass + '" style="position: absolute; left: ' +    ((popPos+iW) % iW) + '; top: ' + pad + '">' + popInd + '</div>';  }  if (isNS4) itemStr += (outBorder ? '<span class="' + (isOver ? overBorder : outBorder) +   '"><spacer type="block" width="' + (iW - 8) + '" height="' + (iH - 8) + '"></span>' : '') +   '<layer left="' + pad + '" top="' + pad + '" width="' + (iW - (2 * pad)) + '" height="' +   (iH - (2 * pad)) + '"><a class="' + textClass + '" href="#" ' +   'onClick="return false" onMouseOver="status=\'\'; ' + myName + '.over(\'' + mN + '\',' +   iN + '); return true">' + text + '</a></layer>';  else itemStr += '<div class="' + textClass + '" style="position: absolute; left: ' + pad +   '; top: ' + pad + '; width: ' + (iW - (2 * pad)) + '; height: ' + (iH - (2 * pad)) +   '">' + text + '</div>'; } return itemStr;}}function popUpdate(docWrite, upMN) { with (this){ if (!isDyn) return; for (mN in menu) with (menu[mN][0]) {  if (upMN && (upMN != mN)) continue;  var str = '', iX = 0, iY = 0;  for (var iN = 1; iN < menu[mN].length; iN++) with (menu[mN][iN])  {   var itemID = myName + '_' + mN + '_' + iN;   var targM = menu[href];   if (targM && (type == 'sm:'))   {    targM[0].parentMenu = mN;    targM[0].parentItem = iN;   }   var shrink = (outBorder && ((isDOM && !isIE) || window.opera) ? 2 : 0)   iW = (isVert ? width : len) - shrink;   iH = (isVert ? len : width) - shrink;   var isImg = (outCol.indexOf('.') != -1) ? true : false;   if (isDOM || isIE4)   {    str += '<div id="' + itemID + '" ' + (outBorder ? 'class="' + outBorder + '" ' : '') +     'style="position: absolute; left: ' + iX + '; top: ' + iY + '; width: ' + iW + '; height: ' +     iH + '; background: ' + (isImg ? 'url('+outCol+')' : outCol) +     ((typeof(outAlpha)=='number') ? '; filter: alpha(opacity='+ outAlpha + '); -moz-opacity: ' +      (outAlpha/100) : '') +     '; cursor: ' + ((type!='sm:' && href) ? (isIE ? 'hand' : 'pointer') : 'default') + '" ';   }   else if (isNS4)   {    str += '<layer id="' + itemID + '" left="' + iX + '" top="' + iY + '" width="' +     iW + '" height="' + iH + '" ' + (outCol ? (isImg ? 'background="' : 'bgcolor="') +     outCol + '" ' : '');   }   str += 'onMouseOver="' + myName + '.over(\'' + mN + '\',' + iN + ')" ' +     'onMouseOut="' + myName + '.out(\'' + mN + '\',' + iN + ')">' +     getHTML(mN, iN, false) + (isNS4 ? '</layer>' : '</div>');   var spc = (outBorder ? 1 : 0)   if (isVert) iY += len + spacing - spc;   else iX += len + spacing - spc;  }  menuW = isVert ? width : iX;  menuH = isVert ? iY : width;  var eP = eval(par);  setTimeout(myName + '.setupRef("' + mN + '")', 50);    if (docWrite)  {   var targFr = (eP && eP.navigator ? eP : window);   targFr.document.write('<div id="' + myName + '_' + mN + '_Div" style="position: absolute; ' +    'visibility: hidden; width: ' + menuW + '; height: ' + menuH + '; z-index: 1000">' +    str + '</div>');  }  else  {   if (!lyr) lyr = setLyr('hidden', menuW, eP);   else if (isIE4) setTimeout(myName + '.menu.' + mN + '[0].lyr.sty.width=' + (menuW+2), 50);   with (lyr) { sty.zIndex = 1000; write(str) }  } }}}function popSetupRef(mN) { with (this) with (menu[mN][0]){ if (!lyr || !lyr.ref) lyr = getLyr(myName + '_' + mN + '_Div', eval(par)); for (var i = 1; i < menu[mN].length; i++)  menu[mN][i].lyr = getLyr(myName + '_' + mN + '_' + i, lyr.ref); if (mN == 'root') {  position();  lyr.vis('visible'); }}}function popPosition(wN) { with (this){ for (mN in menu) if (!wN || menu[mN][0].par == wN) with (menu[mN][0]) {  if (!lyr || !lyr.ref) continue;  if (typeof(offX)!='number' || mN=='root') lyr.x(eval(offX));  if (typeof(offY)!='number' || mN=='root') lyr.y(eval(offY)); }}}// *** POPUP MENU MAIN OBJECT CONSTRUCTOR ***function PopupMenu(myName){ this.myName = myName; this.showTimer = 0; this.hideTimer = 0; // GDR - delay menu start for 1 second to avoid false fires on random mouseovers this.showDelay = 1000; this.hideDelay = 500; this.showMenu = ''; this.menu =  new Array(); this.litNow = new Array(); this.litOld = new Array(); this.overM = 'root'; this.overI = 0; this.actMenu = ''; this.nextItem = 1; this.over = popOver; this.changeCol = popChangeCol; this.out = popOut; this.click = popClick; this.clearLyr = popClearLyr; this.startMenu = popStartMenu; this.addItem = popAddItem; this.getHTML = popGetHTML; this.update = popUpdate; this.setupRef = popSetupRef; this.position = popPosition;  this.showMenu = function(mName) { this.menu[mName][0].lyr.vis('visible') } this.hideMenu = function(mName) { this.menu[mName][0].lyr.vis('hidden') }}// *** START EDITING HERE, READ THIS SECTION CAREFULLY! ***//// This menu script is split up into several sections. They are://// (1) ITEMSTYLES - These define the colour and size of menu items. Compulsory.// (2) MENU DATA - These specify the text and links in the menu. Compulsory.// (3) EVENTS - Activate the menu(s), and choose creation mode (Dynamic / Fast) etc. I recommend//     you read it, but you only really need to change it if you want multiple menus on one page,//     or are trying to combine this with other JavaScripts.// (4) ANIMATION - Change or remove menu animation here. Multiple menu users need to edit this.// (5) FRAMESETS - Read this if you're using the menu across frames. Otherwise delete it.// (6) OPTIONAL CODE - Extra features like adding clicking to 'sm:' items or status messages etc.//     on mouseover. You can skip or delete this section.// GDR - background cell color is #2b4868; .itemText/Hover/Hovera controls text - see main docvar hBar = new ItemStyle(0, 10, '', 0, 0, '#2B4868', '#2B4868', 'itemText', 'itemHovera', '', '', null, null);var hlBar = new ItemStyle(0, 10, '', 0, 0, '#008080', '#669999', 'itemText', 'itemText', '', '', null, null);// The 'sub Menu' items: 22px long, 0px spacing, a 'greater than' sign for a popout indicator// (you may wish to use an image tag?), the popout indicator is positioned 15px from the right// edge of the item, items have 3px padding, some colours, it uses 'itemText' as the dimmed text// class but 'itemHover' when it is moused over, and 'itemBorder' as the border stylesheet class.var subM = new ItemStyle(22, 0, '&gt;', 50, 3, '#2B4868', '#00008B', 'itemText', 'itemHover', 'itemBorder', 'itemBorder', null, null);var subMh = new ItemStyle(19, 0, '&gt;', 50, 3, '#2B4868', '#2b4868', 'itemText', 'itemHover', 'itemBorder', 'itemBorder', null, null);// The purplish 'crazy' style, same length but extra 1px spacing (to show up the fancy border) and// different colours/text and less padding. They also have translucency set -- these items// are 80% opaque when dim and 90% when highlighted.var crazy = new ItemStyle(22, 1, '&gt;', 50, 2, '#666699', '#CC6600', 'crazyText', 'crazyHover', 'crazyBorder', 'crazyBorderOver', 80, 90);// A PopupMenu() object must be passed its own name so it can reference itself when the menu// is active. We also use a 'with' block to work with its properties and functions below.var pMenu = new PopupMenu('pMenu');with (pMenu){// *** MOVE OR CENTRE THE MENU HERE ***// The 'root' menu is horizontal, positioned at (x = 10, y = 0) and is 17px high, and items// by default use the colours and dimensions in the 'hBar' ItemStyle defined above.//startMenu('root', false, 225, 115, 13, hBar);//startMenu('root', false, 'page.winW()/2', 'page.scrollY()', 13, hBar);// GDR - change menu position to -278 from page center and 50 down from topstartMenu('root', false, 'page.winW()/2 - -300', 50, 13, hBar);// The text is a space then 'File', and this item pops out the 'mFile' submenu when moused over// as we've set 'sm:' as the action type. If you want to assign a click action (i.e. navigating to// a file) to one of these 'sm:' items, see the 'Optional Code' section below.// GDR - modified top menu title to include PRODUCTS-HERE.JPG image and use different style to// change positionaddItem('<IMG src=img/buttons/products-here.jpg>', 'mproducts', 'sm:', hBar, 60);// Next is an example of a Javascript function embedded in the menu, to open a new window...// Also extra optional parameters at the end -- ItemStyle and longer length.//addItem('&nbsp; Visit My Site', 'window.open("http://www.twinhelix.com")', 'js:', hBar, 80);// To open a file in a frame named 'main' we would use the following syntax:// addItem('Text', 'file.html', 'parent.main');// This is a vertical menu positioned 0px across and 22px down from its trigger, and is 80px wide.// GDR - Here's the list of products with links, repositioned at -215 trigger, 26 down,// and 305 widestartMenu('mproducts', true, -320, 30, 410, subMh);addItem('AIO Ferramentas de Decapagem/Retirada do Dielétrico Tudo-Em-Um','aio.htm','');addItem('ART Ferramentas de Retirada de Blindagem','art.htm','');addItem('Solução de Limpeza Cable Clear','access.htm','');addItem('Alicates para Cabos Flexíveis','dcc.htm','');addItem('Alicate para Cabos Rígidos','hcc.htm','');addItem('Cortador de Carpetes e Guia de Brocas','carpet.htm','');addItem('CPT Decapadores para Cabos Flexíveis', 'cpt.htm', '');addItem('CPT/WCPT Decapadores para Cabos em Aplicações sem Fio','cptwl.htm','');addItem('Cortadores de Tubo de Buffer de Fibra Óptica','cptfr.htm','');addItem('FOCUS Ferramenta de Colocação e Retirada de Conectores de Fibra Óptica', 'focus.htm', '');addItem('GATOR Chanfrador e Limpador do Condutor Central', 'gator.htm', '');addItem('HCT/ACT Alicates Crimpadores Sextavados','hex.htm','');addItem('HCT/ACT Alicates Crimpadores Sextavados para Cabos em Aplicações sem Fio','hexwl.htm','');addItem('Alicates Crimpadores Sextavados para Cabos de Fibra Óptica','hexfr.htm','');addItem('Kit de Manutenção MK-1050 para HCT/ACT', 'access.htm', '');addItem('JCS Decapadores de Capa Exterior para Cabos Rígidos','jcs.htm','');addItem('JCS Decapadores de Capa Exterior para Cabos em Aplicações sem Fio','jcswl.htm','');addItem('MRT Ferramentas de Retirada do Mensageiro','mrt.htm','');addItem('MSS Decapadores de Seção Intermediária da Capa Exterior','mss.htm','');addItem('PIK Kit de Instalação em Edifícios','pik.htm','');addItem('SCT Ferramentas de Decapagem/Retirada do Dielétrico para Cabos Rígidos', 'sct.htm', '');addItem('SCT-QR Ferramentas de Decapagem/Retirada do Dielétrico para Cabos QR','sctqr.htm','');addItem('Super CPT Decapador para Cabos Flexíveis','scpt.htm','');addItem('RTH Punhos em "T"', 'access.htm', '');addItem('TerminX Ferramentas de Compressão','term.htm','');addItem('TerminX de Bolso Ferramentas de Compressão','term.htm','');addItem('Cinto para Ferramentas', 'access.htm', '');addItem('Wing Ding Torquímetros e Anéis Codificados', 'wing.htm', '');}if (!isNS4){ // Write menus now in non-NS4 browsers, by calling the "Fast" mode .update(true) method. pMenu.update(true); //anotherMenu.update(true);}else{ // For Netscape 4, back up the old onload function and make a new one to update our menus. // This is the regular "Dynamic" mode menu update, it works in IE and NS6 too. var popOldOL = window.onload; window.onload = function() {  if (popOldOL) popOldOL();  pMenu.update();  //anotherMenu.update(); }}// Other events must be assigned, these are less complicated, just add or remove menu objects.window.onresize = function(){ ns4BugCheck(); pMenu.position(); //anotherMenu.position();}window.onscroll = function(){ pMenu.position(); //anotherMenu.position();}if (isNS4) document.captureEvents(Event.CLICK);document.onclick = function(evt){ pMenu.click(); //anotherMenu.click(); if (isNS4) return document.routeEvent(evt);}// A small function that refreshes NS4 on window resize to avoid bugs, called above.var nsWinW = window.innerWidth, nsWinH = window.innerHeight;function ns4BugCheck(){ if (isNS4 && (nsWinW!=innerWidth || nsWinH!=innerHeight)) location.reload()}// Activate the useful 'onscroll' event for non-Microsoft browsers.if (!isIE || window.opera){ var nsPX=pageXOffset, nsPY=pageYOffset; setInterval('if (nsPX!=pageXOffset || nsPY!=pageYOffset) ' + '{ nsPX=pageXOffset; nsPY=pageYOffset; window.onscroll() }', 50);}// *** (4) ANIMATION ***//// Each menu object you create by default shows and hides its menus instantaneously.// However you can override this behaviour with custom show/hide animation routines.// I have included an example clipping animation below. Feel free to edit it, or delete// this entire section if you don't like the animation to turn it off.//   If you've created several menu objects, you must assign the animation functions to// each of them to override the default if you want them all to animate. Also note that not// all browsers can clip happily, such as Opera, so they don't have these functions assigned.// This is the clipping animation function. Customisers: My lyr.clip() command gets passed the// parameters (x1, y1, x2, y2) so you might want to adjust the direction etc. Oh, and I'm// adding 2 to the dimensions to be safe due to different box models in some browsers.// Another idea: add some if/thens to test for specific menu names...?function menuClip(menuObj, menuName, dir){ // The array index of the named menu (e.g. 'mFile') in the menu object (e.g. 'pMenu'). var mD = menuObj.menu[menuName][0]; // Add timer and counter variables to the menu data structure, we'll need them. if (!mD.timer) mD.timer = 0; if (!mD.counter) mD.counter = 0; with (mD) {  // Stop any existing animation.  clearTimeout(timer);  // If the layer doesn't exist (cross-frame navigation) quit.  if (!lyr || !lyr.ref) return;  // Show the menu if that's what we're doing.  if (dir==1) lyr.vis('visible');  // Also raise showing layers above hiding ones.  lyr.sty.zIndex = 1001 + dir;  // Clip the visible area. Tweak this if you want to change direction/acceleration etc.  lyr.clip(0, 0, menuW+2, (menuH+2)*Math.pow(Math.sin(Math.PI*counter/20),0.75) );  // Increment the counter and if it hasn't reached the end (10 steps either way) set the timer.  // Clear the clipping value in DOM browsers as early NS6 versions are quite terrible at this.  counter += dir;  if (counter==11) { counter = 10; if (isDOM&&!isIE) lyr.sty.clip='' }  else if (counter<0) { counter = 0; lyr.vis('hidden') }  else timer = setTimeout(menuObj.myName+'.'+(dir==1?'show':'hide')+'Menu("'+menuName+'")', 40); }}// Add the effect to the 'pMenu' menu object for supported browsers. Opera doesn't support clipping// so we turn it off, neither does IE4/Mac.if (!window.opera){ pMenu.showMenu = new Function('mN','menuClip(pMenu, mN, 1)'); pMenu.hideMenu = new Function('mN','menuClip(pMenu, mN, -1)'); // Add it to other menu objects like this... //anotherMenu.showMenu = new Function('mN','menuClip(anotherMenu, mN, 1)'); //anotherMenu.hideMenu = new Function('mN','menuClip(anotherMenu, mN, -1)');}// This illustrates changing the contents of the menu -- delete this, it's unnecessary...// This DOES NOT WORK in Opera yet (as of v6.00 at time of writing) by the way.function changeMenu() { with (pMenu){ // If your modifications are quite extensive, probably hide the menu before commencing // them, as the script relies on the menu array in realtime to handle highlighting etc. //over('root', 0); //menu.root[0].lyr.vis('hidden'); // Create a whole new menu... startMenu('mNewMenu', true, 0, 22, 130, subM); addItem('<b>TwinHelix Designs:</b><br>Extreme DHTML.<br>Small Code.<br>Click to Visit...',  'window.open("http://www.twinhelix.com")', 'js:', subM, 70); // Alter just the 'Visit My Site' menu item to pop it out... setting nextItem tells the // addItem() command which item number we are up to in the sequence. actMenu = 'root'; nextItem = 4; addItem('&nbsp; Dynamism...', 'mNewMenu', 'sm:', hBar, 80); // Call the update function to implement our changes. update();}}// This is just the moving command called when you click the feature list.function moveRoot(){ with (pMenu.menu.root[0].lyr) x( (x()<100) ? 100 : 10);}