Mercurial > hg > digilib-old
changeset 14:2aa1205e3b71 vendor
First import of client module
author | robcast |
---|---|
date | Thu, 17 Jan 2002 15:29:52 +0100 |
parents | c46867558f1d |
children | 1bf86dca706b |
files | client/digitallibrary/buttons/menu.js |
diffstat | 1 files changed, 228 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/buttons/menu.js Thu Jan 17 15:29:52 2002 +0100 @@ -0,0 +1,228 @@ +function checkBrowser(){ + this.ver = navigator.appVersion; + this.dom = document.getElementById ? 1 : 0; + this.ie5 = (this.ver.indexOf("MSIE 5")>-1 && this.dom) ? 1 : 0; + this.ie4 = (document.all && !this.dom) ? 1 : 0; + this.ns5 = (this.dom && parseInt(this.ver) >= 5) ? 1 : 0; + this.ns4 = (document.layers && !this.dom) ? 1 : 0; + this.ie = (this.ie4 || this.ie5); + return this; +} + +browser = new checkBrowser(); + +function changeBc(obj, color){ + var div; + + if (color == '' && browser.ns4) color = null; + + if (browser.ns4) div = document.layers[obj]; + else if (browser.dom) div = document.getElementById(obj).style; + else if (browser.ie) div = document.all[obj].style; + + if (browser.dom || browser.ie) div.backgroundColor = color; + if (browser.ns4) div.bgColor = color; +} + +function makeArray(n){ + this.length = n; + for (var i = 0; i < n; i++) { + this[i] = new Image(); + } + + return this; +} + +function preloadImages() { + over = new makeArray(document.images.length); + away = new makeArray(document.images.length); + + for (i = 0; i < document.images.length; i++) { + currName = document.images[i].src.slice(0, document.images[i].src.lastIndexOf('.')-1); + away[i].src = currName + "0.gif"; + over[i].src = currName + "1.gif"; + } +} + +function overButton(n) { + currButton = document.images[n]; + + currButton.src = over[n].src; + if (showHelp) contextHelp(n); +} + +function awayButton(n) { + currButton = document.images[n]; + + currButton.src = away[n].src; +} + +function overItem(obj) { + changeBc("menu" + obj, '#770000'); + clearTimeout(timeID); +} + +function awayItem(obj) { + changeBc("menu" + obj, ''); + timeID = setTimeout("hideMenu()", 700); +} + +var timeID = null; + +function changeMark(obj) { + var object; + + if (browser.ns4) object = document.layers["menu" + obj].document.images[0]; + else if (browser.dom) object = document.getElementById("mark" + obj); + else if (browser.ie) object = document.all["mark" + obj]; + + var path = object.src.slice(0, object.src.lastIndexOf('/')+1); + + object.src = (object.src.indexOf("nomark") > -1) ? path + "mark.gif" : path + "nomark.gif"; +} + +function showMenu(obj) { + menu(obj, true); +} + +function menu(obj, show) { + var currObj = "menu" + obj; + var idx = 0; + while(true) { + if (browser.ns4 && document.layers[currObj]) document.layers[currObj].visibility = (show) ? "show" : "hide"; + else if (browser.dom && document.getElementById(currObj)) document.getElementById(currObj).style.visibility = (show) ? "visible" : "hidden"; + else if (browser.ie && document.all[currObj]) document.all[currObj].style.visibility = (show) ? "visible" : "hidden"; + else break; + + currObj = "menu" + obj + (++idx); + } + if (!show) activeMenu = ''; + else activeMenu = obj; + + timeID = setTimeout("hideMenu()", 2000); +} + +function hideMenu() { + if (activeMenu != '') menu(activeMenu, false); + clearTimeout(timeID); +} + +var activeMenu = ''; + + +// just to be sure, that no buffer overflow can arrive +var semaphor = true; + +function contextHelp(n) { + + if (helpWindow.closed) { + changeMark(31); + changeHelp(); + return; + } + + if ((navigator.appVersion.indexOf("Macintosh") < 0) && semaphor) { + semaphor = false; + var help = helpText[n].split("|"); + + helpWindow.focus(); + helpWindow.document.open(); + helpWindow.document.write('<html><head><title>Context Help</title>'); + helpWindow.document.write('<style type="text/css">'); + helpWindow.document.write('.title {font-family: Verdana, sans-serif, Arial; font-size: 12px; font-weight: bold; color: #FFFFFF}'); + helpWindow.document.write('.text {font-family: Verdana, sans-serif, Arial; font-size: 10px; color: #000000}'); + helpWindow.document.write('</style></head><body bgcolor="#CCCCCC" leftmargin="7" topmargin="7" marginwidth="7" marginheight="7" onload="opener.semaphor = true;">'); + helpWindow.document.write('<table width="99%" border="0" cellspacing="0" cellpadding="3"><tr><td bgcolor="#666666" class="title">'); + helpWindow.document.write(help[0] + '</tr><tr><td class="text">'); + helpWindow.document.write(help[1] + '</tr></td></table></body></html>'); + helpWindow.document.close(); + + // stupid workaround because of netscape 6, that doesen't know the opener property + // this workaround is still ok cause netscape 6 has eventbuffer checks so no overflow + if (browser.ns5) { + semaphor = true; + } + } + +} + +function openContextHelp() { + if (navigator.appVersion.indexOf("Macintosh") > -1) { + openContextHelpMac(); + return; + } + + semaphor = false; + + var winWidth = 270; + var winHeight = 130; + + var xScreen = 0.9*(screen.width-winWidth); + var yScreen = 0.8*(screen.height-winHeight); + + helpWindow = window.open("", "ContextHelp", "width=" + winWidth + ",height=" + winHeight + ",screenX=" + xScreen + ",screenY=" + yScreen + ",left=" + xScreen + ",top=" + yScreen); + + helpWindow.focus(); + helpWindow.document.open(); + helpWindow.document.write('<html><head><title>Context Help</title>'); + helpWindow.document.write('<style type="text/css">'); + helpWindow.document.write('.title {font-family: Verdana, sans-serif, Arial; font-size: 12px; font-weight: bold; color: #FFFFFF}'); + helpWindow.document.write('.text {font-family: Verdana, sans-serif, Arial; font-size: 10px; color: #000000}'); + helpWindow.document.write('</style></head><body bgcolor="#CCCCCC" leftmargin="7" topmargin="7" marginwidth="7" marginheight="7">'); + helpWindow.document.write('<table width="99%" border="0" cellspacing="0" cellpadding="3"><tr><td bgcolor="#666666" class="title">'); + helpWindow.document.write('Context Help</tr><tr><td class="text">'); + helpWindow.document.write('Move over any button to get some more information about its function</tr></td></table></body></html>'); + helpWindow.document.close(); + + // for some safety reason help-requests have to be blocked while opening the window + setTimeout("semaphor = true;", 200); +} + +// because macs have a strange window focus behaviour we have to go a special +// way for them - just opening a window that contains all button-descriptions +function openContextHelpMac() { + + var winWidth = 270; + var winHeight = 600; + + var xScreen = 0.9*(screen.width-winWidth); + var yScreen = 0.8*(screen.height-winHeight); + + helpWindow = window.open("", "ContextHelp", "width=" + winWidth + ",height=" + winHeight + ",screenX=" + xScreen + ",screenY=" + yScreen + ",left=" + xScreen + ",top=" + yScreen + ",scrollbars"); + + helpWindow.focus(); + helpWindow.document.open(); + helpWindow.document.write('<html><head><title>Context Help Macintosh</title>'); + helpWindow.document.write('<style type="text/css">'); + helpWindow.document.write('.title {font-family: Verdana, sans-serif, Arial; font-size: 12px; font-weight: bold; color: #FFFFFF}'); + helpWindow.document.write('.text {font-family: Verdana, sans-serif, Arial; font-size: 10px; color: #000000}'); + helpWindow.document.write('</style></head><body bgcolor="#CCCCCC" leftmargin="7" topmargin="7" marginwidth="7" marginheight="7">'); + helpWindow.document.write('<table width="99%" border="0" cellspacing="0" cellpadding="3">'); + + for (n = 0; n < helpText.length; n++) { + + help = helpText[n].split("|"); + helpWindow.document.write('<tr><td bgcolor="#666666" class="title">'); + helpWindow.document.write(help[0] + '</tr><tr><td class="text">'); + helpWindow.document.write('<p>' + help[1] + '<br> </p></tr></td>'); + } + helpWindow.document.write('</table></body></html>'); + helpWindow.document.close(); +} + + +function closeContextHelp() { + if (helpWindow != '' && !helpWindow.closed) { + helpWindow.close(); + } + helpWindow = ''; +} + +function changeHelp() { + showHelp = !showHelp; + showHelp ? openContextHelp() : closeContextHelp(); +} + + +// variable containing the contextwindow +var helpWindow = ''; \ No newline at end of file