var JDWMinNS4 = (navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) >= 4) ? 1 : 0; var JDWMinNS6 = (navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) == 6) ? 1 : 0; var JDWMinIE4 = (document.all) ? 1 : 0; var JDWMinIE5 = (JDWMinIE4 && navigator.appVersion.indexOf("5.") >= 0) ? 1 : 0; var JDWMinIE55 = (JDWMinIE5 && navigator.appVersion.indexOf("5.5") >= 0) ? 1 : 0; function hideLayer(layer) { if (JDWMinNS4) layer.visibility = "hide"; if (JDWMinIE4) layer.style.visibility = "hidden"; } function showLayer(layer) { if (JDWMinNS4) layer.visibility = "show"; if (JDWMinIE4) layer.style.visibility = "visible"; } function inheritLayer(layer) { if (JDWMinNS4) layer.visibility = "inherit"; if (JDWMinIE4) layer.style.visibility = "inherit"; } function getVisibility(layer) { if (JDWMinNS4) { if (layer.visibility == "show") return "visible"; if (layer.visibility == "hide") return "hidden"; return layer.visibility; } if (JDWMinIE4) return layer.style.visibility; return ""; } function moveLayerTo(layer, x, y) { if (JDWMinNS4) layer.moveTo(x, y); if (JDWMinIE4) { layer.style.left = x; layer.style.top = y; } } function moveLayerBy(layer, dx, dy) { if (JDWMinNS4) layer.moveBy(dx, dy); if (JDWMinIE4) { layer.style.pixelLeft += dx; layer.style.pixelTop += dy; } } function getLeft(layer) { if (JDWMinNS4) return layer.left; if (JDWMinIE4) return layer.style.pixelLeft; return -1; } function getTop(layer) { if (JDWMinNS4) return layer.top; if (JDWMinIE4) return layer.style.pixelTop; return -1; } function getRight(layer) { if (JDWMinNS4) return layer.left + getWidth(layer); if (JDWMinIE4) return layer.style.pixelLeft + getWidth(layer); return -1; } function getBottom(layer) { if (JDWMinNS4) return layer.top + getHeight(layer); if (JDWMinIE4) return layer.style.pixelTop + getHeight(layer); return -1; } function getPageLeft(layer) { var x; if (JDWMinNS4) return layer.pageX; if (JDWMinIE4) { x = 0; while (layer.offsetParent != null) { x += layer.offsetLeft; layer = layer.offsetParent; } x += layer.offsetLeft; return x; } return -1; } function getPageTop(layer) { var y; if (JDWMinNS4) return layer.pageY; if (JDWMinIE4) { y = 0; while (layer.offsetParent != null) { y += layer.offsetTop; layer = layer.offsetParent; } y += layer.offsetTop; return y; } return -1; } function getWidth(layer) { if (JDWMinNS4) { if (layer.document.width) return layer.document.width; else return layer.clip.right - layer.clip.left; } if (JDWMinIE4) { if (layer.style.pixelWidth) return layer.style.pixelWidth; else return layer.clientWidth; } return -1; } function getHeight(layer) { if (JDWMinNS4) { if (layer.document.height) return layer.document.height; else return layer.clip.bottom - layer.clip.top; } if (JDWMinIE4) { if (layer.style.pixelHeight) return layer.style.pixelHeight; else return layer.clientHeight; } return -1; } function getzIndex(layer) { if (JDWMinNS4) return layer.zIndex; if (JDWMinIE4) return layer.style.zIndex; return -1; } function setzIndex(layer, z) { if (JDWMinNS4) layer.zIndex = z; if (JDWMinIE4) layer.style.zIndex = z; } function clipLayer(layer, clipleft, cliptop, clipright, clipbottom) { if (JDWMinNS4) { layer.clip.left = clipleft; layer.clip.top = cliptop; layer.clip.right = clipright; layer.clip.bottom = clipbottom; } if (JDWMinIE4) layer.style.clip = 'rect(' + cliptop + ' ' + clipright + ' ' + clipbottom + ' ' + clipleft +')'; } function getClipLeft(layer) { if (JDWMinNS4) return layer.clip.left; if (JDWMinIE4) { var str = layer.style.clip; if (!str) return 0; var clip = getIEClipValues(layer.style.clip); return(clip[3]); } return -1; } function getClipTop(layer) { if (JDWMinNS4) return layer.clip.top; if (JDWMinIE4) { var str = layer.style.clip; if (!str) return 0; var clip = getIEClipValues(layer.style.clip); return clip[0]; } return -1; } function getClipRight(layer) { if (JDWMinNS4) return layer.clip.right; if (JDWMinIE4) { var str = layer.style.clip; if (!str) return layer.style.pixelWidth; var clip = getIEClipValues(layer.style.clip); return clip[1]; } return -1; } function getClipBottom(layer) { if (JDWMinNS4) return layer.clip.bottom; if (JDWMinIE4) { var str = layer.style.clip; if (!str) return layer.style.pixelHeight; var clip = getIEClipValues(layer.style.clip); return clip[2]; } return -1; } function getClipWidth(layer) { if (JDWMinNS4) return layer.clip.width; if (JDWMinIE4) { var str = layer.style.clip; if (!str) return layer.style.pixelWidth; var clip = getIEClipValues(layer.style.clip); return clip[1] - clip[3]; } return -1; } function getClipHeight(layer) { if (JDWMinNS4) return layer.clip.height; if (JDWMinIE4) { var str = layer.style.clip; if (!str) return layer.style.pixelHeight; var clip = getIEClipValues(layer.style.clip); return clip[2] - clip[0]; } return -1; } function getIEClipValues(str) { var clip = new Array(); var i; i = str.indexOf("("); clip[0] = parseInt(str.substring(i + 1, str.length), 10); i = str.indexOf(" ", i + 1); clip[1] = parseInt(str.substring(i + 1, str.length), 10); i = str.indexOf(" ", i + 1); clip[2] = parseInt(str.substring(i + 1, str.length), 10); i = str.indexOf(" ", i + 1); clip[3] = parseInt(str.substring(i + 1, str.length), 10); return clip; } function scrollLayerTo(layer, x, y, bound) { var dx = getClipLeft(layer) - x; var dy = getClipTop(layer) - y; scrollLayerBy(layer, -dx, -dy, bound); } function scrollLayerBy(layer, dx, dy, bound) { var cl = getClipLeft(layer); var ct = getClipTop(layer); var cr = getClipRight(layer); var cb = getClipBottom(layer); if (bound) { if (cl + dx <0) dx="-cl;" else if (cr + dx> getWidth(layer)) dx = getWidth(layer) - cr; if (ct + dy <0) dy="-ct;" else if (cb + dy> getHeight(layer)) dy = getHeight(layer) - cb; } clipLayer(layer, cl + dx, ct + dy, cr + dx, cb + dy); moveLayerBy(layer, -dx, -dy); } function setBgColor(layer, color) { if (JDWMinNS4) layer.bgColor = color; if (JDWMinIE4) layer.style.backgroundColor = color; } function setBgImage(layer, src) { if (JDWMinNS4) layer.background.src = src; if (JDWMinIE4) layer.style.backgroundImage = "url(" + src + ")"; } function getLayer(name) { if (JDWMinNS4) return findLayer(name, document); if (JDWMinIE4) return eval('document.all.' + name); return null; } function findLayer(name, doc) { var i, layer; for (i = 0; i 0) if ((layer = findLayer(name, layer.document)) != null) return layer; } return null; } function getImage(name) { if (JDWMinNS4) { return findImage(name, document); } if (JDWMinIE4) return eval('document.all.' + name); return null; } function findImage(name, doc) { var i, img; for (i = 0; i \n' + '\n'; if (JDWMinIE4) str += '

' + '

\n' + '

\n'; // Build HTML for the headers. for (i = 0; i 0 ? ' width=' + this.menus[i].hdrWidth : '') + ((JDWMinIE4 && !JDWMinIE5) ? ' id="JDWITEM' + this.index + '_tbl' + i + '"': '') + '>' + ''; high = '

0 ? ' width=' + this.menus[i].hdrWidth : '') + '>
' + ''; end = '

'; if (JDWMinNS4) str += '' + norm + this.menus[i].items[0].text + end + '\n' + '' + high + this.menus[i].items[0].text + end + '\n' + '' + '\n'; if (JDWMinIE4) { str += '

' + norm + this.menus[i].items[0].text + end + '

\n' + '

' + high + this.menus[i].items[0].text + end + '

\n' + '

'; if (JDWMinIE55) str += '

'; str += '

\n'; } } if (JDWMinNS4) { str += '\n'; this.baseLayer = new Layer(this.width); this.baseLayer.document.open(); this.baseLayer.document.write(str); this.baseLayer.document.close(); } if (JDWMinIE4) { str += '

\n'; str = '

\n' + str + '

\n'; document.body.insertAdjacentHTML("beforeEnd", str); this.baseLayer = getLayer("JDWITEM" + this.index); } // Position and G6JDWinitialize each header. width = 0; height = 0; for (i = 0; i this.width) this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrRight - this.menus[i].width; this.menus[i].hdrDmmyLayer.offsetY = this.height - this.border; this.menus[i].hdrDmmyLayer.onmouseover = JDWITEMHeaderOn; this.menus[i].hdrDmmyLayer.onmouseout = JDWITEMHeaderOff; if (JDWMinNS4) { this.menus[i].hdrDmmyLayer.document.highLayer = this.menus[i].hdrHighLayer; this.menus[i].hdrDmmyLayer.document.link = this.menus[i].items[0].link; this.menus[i].hdrDmmyLayer.document.captureEvents(Event.MOUSEUP); this.menus[i].hdrDmmyLayer.document.onmouseup = JDWITEMItemClick; } if (JDWMinIE4) { this.menus[i].hdrDmmyLayer.highLayer = this.menus[i].hdrHighLayer; this.menus[i].hdrDmmyLayer.link = this.menus[i].items[0].link; this.menus[i].hdrDmmyLayer.onclick = JDWITEMItemClick; } } // Build the drop down menus. norm = '

' + ''; high = '
' + ''; end = '

'; for (i = 0; i ' + norm + this.menus[i].items[j].text + end + '\n' + '' + high + this.menus[i].items[j].text + end + '\n' + '' + '\n'; if (JDWMinIE4) { str += '

' + norm + this.menus[i].items[j].text + end + '

\n' + '

' + high + this.menus[i].items[j].text + end + '

\n' + '

'; if (JDWMinIE55) str += '

'; str += '

\n'; } } if (JDWMinNS4) { this.menus[i].baseLayer = new Layer(this.menus[i].width); this.menus[i].baseLayer.document.open(); this.menus[i].baseLayer.document.write(str); this.menus[i].baseLayer.document.close(); } if (JDWMinIE4) { str = '

\n'; document.body.insertAdjacentHTML("beforeEnd", str); this.menus[i].baseLayer = getLayer("JDWITEM" + this.index + "_menu" + i); } } // Restore original scroll position in IE4. if (JDWMinIE4 && !JDWMinIE5) window.scrollTo(x, y); // Position and G6JDWinitialize each menu. for (i = 0; i 1) { this.menus[i].hdrDmmyLayer.menuLayer = this.menus[i].baseLayer; if (JDWMinNS4) this.menus[i].hdrDmmyLayer.document.menuLayer = this.menus[i].baseLayer; } else { this.menus[i].hdrDmmyLayer.menuLayer = null; if (JDWMinNS4) this.menus[i].hdrDmmyLayer.document.menuLayer = this.menus[i].baseLayer; } // Position and G6JDWinitialize each item in the menu. x = this.border; y = this.border; width = this.menus[i].width - 2 * this.border; for (j = 1; j this.width) this.menus[i].hdrDmmyLayer.offsetX = this.menus[i].hdrRight - this.menus[i].width; } } else this.width = width; } function JDWITEMInvert() { this.inverted = !this.inverted; } function JDWITEMIsInverted() { return this.inverted; } // Layer resize function for IE. function JDWITEMIEResizeLayer(layer, width, height) { layer.style.pixelWidth = width; layer.style.pixelHeight = height; } // Event handlers for the navigation bar. function JDWITEMHeaderOn(e) { var bar; var x, y; bar = JDWITEMs[this.index]; // Position drop down menu. if (this.menuLayer != null) { x = bar.x + bar.hdrsOffsetX + this.offsetX; y = bar.y + this.offsetY; if (bar.inverted) y = bar.y - this.menuLayer.height + bar.border; moveLayerTo(this.menuLayer, x, y); // Save drop down menu position and show it. this.menuLayer.left = getPageLeft(this.menuLayer); this.menuLayer.top = getPageTop(this.menuLayer); this.menuLayer.right = this.menuLayer.left + this.menuLayer.width + 1; this.menuLayer.bottom = this.menuLayer.top + this.menuLayer.height + 1; } // Hide any currently active header and drop down. if (JDWMinIE4) { if (bar.activeHeader != null && bar.activeHeader != this) { hideLayer(bar.activeHeader.highLayer); if (bar.activeHeader.menuLayer != null) hideLayer(bar.activeHeader.menuLayer); } bar.activeHeader = this; } // Display the header highlight layer and drop down menu. showLayer(this.highLayer); if (this.menuLayer != null) showLayer(this.menuLayer); } function JDWITEMHeaderOff(e) { // If over drop down menu, exit. Otherwise hide menu and highlight layers. if (this.menuLayer != null) { if (JDWMinIE4) { mouseX = window.event.clientX + document.body.scrollLeft; mouseY = window.event.clientY + document.body.scrollTop; } if (mouseX >= this.menuLayer.left &&mouseX <= this.menuLayer.right && mouseY>= this.menuLayer.top &&mouseY <= this.menuLayer.bottom) return; hideLayer(this.menuLayer); } hideLayer(this.highLayer); } function ECSmenuOff(e) { // If over header, exit. if (JDWMinIE4) { mouseX="window.event.clientX" + document.body.scrollLeft; mouseY="window.event.clientY" + document.body.scrollTop; if (mouseX>= this.left &&mouseX <= this.right && mouseY>= this.top &&mouseY <= this.bottom) return; } // Otherwise, hide menu and header highlight layers. hideLayer(this); hideLayer(this.parentHighLayer); } function JDWITEMItemOn() { showLayer(this.highLayer); } function JDWITEMItemOff() { hideLayer(this.highLayer); } function JDWITEMItemClick(e) { // If there is no link, exit. if (this.link="=" "") return true; // Hide the drop down menu and highlight layer. if (this.menuLayer !="null)" { hideLayer(this.menuLayer); } if (this.parentHighLayer !="null)" { hideLayer(this.parentHighLayer); } hideLayer(this.highLayer); // If the link starts with "javascript:" execute the code. Otherwise just // link to the URL. if (this.link.indexOf("javascript:")="=" 0) eval(this.link); else window.location.href="this.link;" return true; } // MOUSE TRACKING // These variables will hold the current mouse pointer position. var mouseX="0;" var mouseY="0;" // Set up event capturing. if (JDWMinNS4) document.captureEvents(Event.MOUSEMOVE); document.onmousemove="JDWITEMGetMousePosition;" function JDWITEMGetMousePosition(e) { // Save mouse pointer position. if (JDWMinNS4) { mouseX="e.pageX;" mouseY="e.pageY;" } if (JDWMinIE4) { mouseX="window.event.clientX" + document.body.scrollLeft; mouseY="window.event.clientY" + document.body.scrollTop; } } // EVENT: Window Resizing // These variables are used to determine if a resize event is a true one in // older releases of NS4. var origWidth; var origHeight; // Reload page in case of a browser resize. if (JDWMinNS4) { origWidth="window.innerWidth;" origHeight="window.innerHeight;" } window.onresize="JDWITEMReload;" function JDWITEMReload() { if (JDWMinNS4 && origWidth="=" window.innerWidth && origHeight="=" window.innerHeight) return; // For IE, reload on a timer in case the Windows 'Show window contents while // dragging' display option is on. if (JDWMinIE4) setTimeout('window.location.href="window.location.href'," 2000); else window.location.href="window.location.href;" } function G6JDWinit() { fullWidth="getWindowWidth()" (JDWMinNS4 && getWindowHeight() < getPageHeight() ? 16 : 0); JDWBAR1.create(); JDWBAR1.moveTo(0,-getWindowHeight()+43); JDWBAR1.setzIndex(1); JDWBAR1.resize(fullWidth); JDWBAR1.setAlign(getWindowWidth()+60); JDWBAR1.hide();JDWBAR2.create(); JDWBAR2.moveBy(0,-getWindowHeight()+17); JDWBAR2.resize(fullWidth); JDWBAR2.setzIndex(2); NAVupdatePOSY(); } /* Fire It Up!! */ window.onload="G6JDWinit;" function NAVupdatePOSY() { var viewTop; var viewBottom; var dy; viewTop="getPageScrollY();" viewBottom="viewTop" + getWindowHeight(); dy="Math.round(Math.abs(viewTop" JDWBAR1.y)); /* NO ANIM */ if (viewTop < JDWBAR1.y) dy="-dy;" dy="Math.round(Math.abs(viewTop" JDWBAR2.y)); /* NO ANIM */ if (viewTop < JDWBAR2.y) dy="-dy;" if (JDWBAR1.bottom < viewTop) JDWBAR1.moveTo(0, viewTop JDWBAR1.height); if (JDWBAR1.top> viewBottom) JDWBAR1.moveTo(0, viewBottom); if (JDWBAR2.bottom viewBottom) JDWBAR2.moveTo(0, viewBottom); JDWBAR1.moveBy(0, dy); JDWBAR2.moveBy(0, dy); setTimeout('NAVupdatePOSY()', 0); /* INFINITLY SMALL VALUE */ } /************* This Is a Function To Maximize The Window in MSIE and NS. When Called, The Window Will Maximize. *************/ function maximizeWin() { if (window.screen) { var aw = screen.availWidth; var ah = screen.availHeight; window.moveTo(0, 0); window.resizeTo(aw, ah); } } /* MENU ITEMS: (Border col, menu title col, top menu BGcolor, title selected font col, main sel bgcol, dd font col, ddbgc, ddfont sel col, dd sel bgcol, */ // ___________________________________ var JDWBAR2 = new JDWITEM(0); JDWBAR2.setSizes (1, 4, 1); JDWBAR2.setColors ("#808080","#FFFFFF","#000000","#000000","#0D7CA1","#FFFFFF","#000000","#000000","#0D7CA1"); JDWBAR2.setFonts ("Arial, Verdana","plain","bold","10px","Arial, Verdana","plain","bold","10px"); var JDWBAR1 = new JDWITEM(0); JDWBAR1.setSizes (1, 1, 1); JDWBAR1.setColors ("#000000","#000000","#F5E4C1","#000000","#1CA0E4","#000000","#F5E4C1","#000000","#1CA0E4"); JDWBAR1.setFonts ("Arial, Verdana","plain","bold","10px","Arial, Verdana","plain","bold","10px"); // ___________________________________ /* MENU ITEMS */ siteMenu = new ECSmenu(0, 80); // 80 = width in pixels of menu siteMenu.addItem(new ITEM(" HOME ", "index.html")); siteMenu.addItem(new ITEM(" Go Home", "http://javascript.internet.com/index.html")); siteMenu.addItem(new ITEM(" Contribute", "http://javascript.internet.com/contribute/")); siteMenu.addItem(new ITEM(" Link to Us", "http://javascript.internet.com/link-us.html")); siteMenu.addItem(new ITEM(" Feedback", "http://javascript.internet.com/feedback.html")); JDWBAR2.addNAVm(siteMenu); // add this menu category siteMenu = new ECSmenu(0, 100); siteMenu.addItem(new ITEM(" SCRIPTS ", "")); siteMenu.addItem(new ITEM("What's New?","http://javascriptsource.com/new/")); siteMenu.addItem(new ITEM("All Categories","http://javascriptsource.com/toc.html")); siteMenu.addItem(new ITEM("A-Z Script List","http://javascriptsource.com/master-list.html")); siteMenu.addItem(new ITEM("JS Books","http://javascriptsource.com/books/")); siteMenu.addItem(new ITEM("JS Tutorial","http://www.stars.com/Authoring/JavaScript/Tutorial/index.html")); JDWBAR2.addNAVm(siteMenu); siteMenu = new ECSmenu(0, 100); siteMenu.addItem(new ITEM(" JS FORUM ", "")); siteMenu.addItem(new ITEM("How Do I....?","http://forums.internet.com/cgi-bin/WebX?13@147.vVbKaNERkdp^25@.ee6b7af")); siteMenu.addItem(new ITEM("Intro to JS","http://forums.internet.com/cgi-bin/WebX?13@147.vVbKaNERkdp^25@.ee6b7a7")); siteMenu.addItem(new ITEM("Script Help","http://forums.internet.com/cgi-bin/WebX?13@147.vVbKaNERkdp^25@.ee6b7ab")); siteMenu.addItem(new ITEM("Script Requests","http://forums.internet.com/cgi-bin/WebX?13@147.vVbKaNERkdp^25@.ee6b7ad")); JDWBAR2.addNAVm(siteMenu); siteMenu = new ECSmenu(0, 100); siteMenu.addItem(new ITEM(" HELP ", "")); siteMenu.addItem(new ITEM("Site FAQs","http://faq.javascriptsource.com")); siteMenu.addItem(new ITEM("JS Forum","http://forum.javascriptsource.com")); JDWBAR2.addNAVm(siteMenu);