255 lines
7.5 KiB
JavaScript
255 lines
7.5 KiB
JavaScript
|
// Determine browser type (Netscape 6 or IE 5.5).
|
||
|
|
||
|
|
||
|
var isIE5 = (navigator.userAgent.indexOf("MSIE 5.5") > 0) ? 1 : 0;
|
||
|
var isNS6 = (navigator.userAgent.indexOf("Gecko") > 0) ? 1 : 0;
|
||
|
|
||
|
// For IE, adjust menu bar styling.
|
||
|
|
||
|
if (isIE5) {
|
||
|
document.styleSheets[document.styleSheets.length - 1].addRule("#menuBar", "padding-top:3px");
|
||
|
document.styleSheets[document.styleSheets.length - 1].addRule("#menuBar", "padding-bottom:3px");
|
||
|
}
|
||
|
|
||
|
// Global variable for tracking the currently active button.
|
||
|
|
||
|
var activeButton = null;
|
||
|
|
||
|
if (isIE5)
|
||
|
document.onmousedown = pageMousedown;
|
||
|
if (isNS6)
|
||
|
document.addEventListener("mousedown", pageMousedown, true);
|
||
|
|
||
|
function pageMousedown(event) {
|
||
|
|
||
|
var className;
|
||
|
|
||
|
// If the object clicked on was not a menu button or item, close any active
|
||
|
// menu.
|
||
|
|
||
|
if (isIE5)
|
||
|
className = window.event.srcElement.className;
|
||
|
if (isNS6)
|
||
|
className = (event.target.className ?
|
||
|
event.target.className : event.target.parentNode.className);
|
||
|
|
||
|
//Top menu mouseover
|
||
|
if (className != "menuButton" && className != "menuItem" && className != "menuItemDiff" && activeButton)
|
||
|
resetButton(activeButton);
|
||
|
|
||
|
|
||
|
//Left menu show hide
|
||
|
var eSrc = window.event.srcElement;
|
||
|
window.event.cancelBubble = true;
|
||
|
if ("clsShowHide" == eSrc.className) return contentsHeading_click(eSrc);
|
||
|
|
||
|
//Original version of this (with frames support)
|
||
|
//while ("BODY" != eSrc.tagName) {
|
||
|
// if ("clsItem" == eSrc.className || "clsItemSelect" == eSrc.className) return contentsItem_click(eSrc);
|
||
|
// else if ("clsShowHide" == eSrc.className || "clsHeading" == eSrc.className) return contentsHeading_click(eSrc);
|
||
|
// eSrc = eSrc.parentElement;
|
||
|
//}
|
||
|
}
|
||
|
|
||
|
function buttonClick(button, menuName) {
|
||
|
|
||
|
// Blur focus from the link to remove that annoying outline.
|
||
|
|
||
|
button.blur();
|
||
|
|
||
|
// Associate the named menu to this button if not already done.
|
||
|
|
||
|
if (!button.menu)
|
||
|
button.menu = document.getElementById(menuName);
|
||
|
|
||
|
// Reset the currently active button, if any.
|
||
|
|
||
|
if (activeButton && activeButton != button)
|
||
|
resetButton(activeButton);
|
||
|
|
||
|
// Toggle the button's state.
|
||
|
|
||
|
if (button.isDepressed)
|
||
|
resetButton(button);
|
||
|
else
|
||
|
depressButton(button);
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
function buttonMouseover(button, menuName) {
|
||
|
|
||
|
// If any other button menu is active, deactivate it and activate this one.
|
||
|
// Note: if this button has no menu, leave the active menu alone.
|
||
|
|
||
|
if (activeButton) {
|
||
|
if (activeButton != button) {
|
||
|
resetButton(activeButton);
|
||
|
if (menuName)
|
||
|
buttonClick(button, menuName);
|
||
|
}
|
||
|
else {
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (menuName)
|
||
|
buttonClick(button, menuName);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function depressButton(button) {
|
||
|
|
||
|
// Save current style values so they can be restored later.
|
||
|
// Only needs to be done once.
|
||
|
|
||
|
if (!button.oldBackgroundColor) {
|
||
|
button.oldBackgroundColor = button.style.backgroundColor;
|
||
|
button.oldBorderBottomColor = button.style.borderBottomColor;
|
||
|
button.oldBorderRightColor = button.style.borderRightColor;
|
||
|
button.oldBorderTopColor = button.style.borderTopColor;
|
||
|
button.oldBorderLeftColor = button.style.borderLeftColor;
|
||
|
button.oldColor = button.style.color;
|
||
|
button.oldLeft = button.style.left;
|
||
|
button.oldPosition = button.style.position;
|
||
|
button.oldTop = button.style.top;
|
||
|
}
|
||
|
|
||
|
// Change style value to make the button looks like it's
|
||
|
// depressed.
|
||
|
|
||
|
button.style.backgroundColor = "#99CC99";
|
||
|
button.style.borderBottomColor = "#99CC99";
|
||
|
button.style.borderRightColor = "#99CC99";
|
||
|
button.style.borderTopColor = "#99CC99";
|
||
|
button.style.borderLeftColor = "#99CC99";
|
||
|
button.style.color = "#E9E9E9";
|
||
|
button.style.left = "0px";
|
||
|
button.style.position = "relative";
|
||
|
button.style.top = "0px";
|
||
|
|
||
|
// For IE, force first menu item to the width of the parent menu,
|
||
|
// this causes mouseovers work for all items even when cursor is
|
||
|
// not over the link text.
|
||
|
|
||
|
if (isIE5 && !button.menu.firstChild.style.width)
|
||
|
button.menu.firstChild.style.width =
|
||
|
button.menu.offsetWidth + "px";
|
||
|
|
||
|
// Position the associated drop down menu under the button and
|
||
|
// show it. Note that the position must be adjusted according to
|
||
|
// browser, styling and positioning.
|
||
|
|
||
|
x = getPageOffsetLeft(button);
|
||
|
y = getPageOffsetTop(button) + button.offsetHeight;
|
||
|
if (isIE5)
|
||
|
y += 2;
|
||
|
if (isNS6) {
|
||
|
x--;
|
||
|
y--;
|
||
|
}
|
||
|
button.menu.style.left = x + "px";
|
||
|
button.menu.style.top = y + "px";
|
||
|
button.menu.style.visibility = "visible";
|
||
|
|
||
|
// Set button state and let the world know which button is
|
||
|
// active.
|
||
|
|
||
|
button.isDepressed = true;
|
||
|
activeButton = button;
|
||
|
}
|
||
|
|
||
|
function resetButton(button) {
|
||
|
|
||
|
// Restore the button's style settings.
|
||
|
|
||
|
button.style.backgroundColor = button.oldBackgroundColor;
|
||
|
button.style.borderBottomColor = button.oldBorderBottomColor;
|
||
|
button.style.borderRightColor = button.oldBorderRightColor;
|
||
|
button.style.borderTopColor = button.oldBorderTopColor;
|
||
|
button.style.borderLeftColor = button.oldBorderLeftColor;
|
||
|
button.style.color = button.oldColor;
|
||
|
button.style.left = button.oldLeft;
|
||
|
button.style.position = button.oldPosition;
|
||
|
button.style.top = button.oldTop;
|
||
|
|
||
|
// Hide the button's menu.
|
||
|
|
||
|
if (button.menu)
|
||
|
button.menu.style.visibility = "hidden";
|
||
|
|
||
|
// Set button state and clear active menu global.
|
||
|
|
||
|
button.isDepressed = false;
|
||
|
activeButton = null;
|
||
|
}
|
||
|
|
||
|
function getPageOffsetLeft(el) {
|
||
|
|
||
|
// Return the true x coordinate of an element relative to the page.
|
||
|
|
||
|
return el.offsetLeft + (el.offsetParent ? getPageOffsetLeft(el.offsetParent) : 0);
|
||
|
}
|
||
|
|
||
|
function getPageOffsetTop(el) {
|
||
|
|
||
|
// Return the true y coordinate of an element relative to the page.
|
||
|
|
||
|
return el.offsetTop + (el.offsetParent ? getPageOffsetTop(el.offsetParent) : 0);
|
||
|
}
|
||
|
|
||
|
|
||
|
// Swap background colour
|
||
|
function bgcolour(obj, Colour) {
|
||
|
obj.style.backgroundColor=Colour
|
||
|
}
|
||
|
|
||
|
//Pop up window
|
||
|
function MM_openBrWindow(theURL,winName,features) { //v2.0
|
||
|
window.open(theURL,winName,features);
|
||
|
}
|
||
|
|
||
|
function MM_findObj(n, d) { //v3.0
|
||
|
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&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<d.forms.length;i++) x=d.forms[i][n];
|
||
|
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
|
||
|
}
|
||
|
/* Functions that swaps %PUBURLPATH%/skins/tiger. */
|
||
|
function MM_swapImage() { //v3.0
|
||
|
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
|
||
|
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
|
||
|
}
|
||
|
|
||
|
//Left menu folders
|
||
|
var eSelected = null;
|
||
|
function contentsHeading_click(eSrc) {
|
||
|
if ("clsShowHide" == eSrc.className) eSrc = document.all[eSrc.sourceIndex + 1];
|
||
|
var iNumElements = document.all.length;
|
||
|
for (var i=eSrc.sourceIndex+1;i<iNumElements;i++) {
|
||
|
var eTemp = document.all[i];
|
||
|
if ("clsHeading" == eTemp.className) return;
|
||
|
else if ("clsItemsHide" == eTemp.className) {
|
||
|
eTemp.className = "clsItemsShow";
|
||
|
//No image url in .js - not subject to wiki vars
|
||
|
//eSrc.style.listStyleImage = "url('images/blueminus.gif')";
|
||
|
return eSrc.blur();
|
||
|
}
|
||
|
else if("clsItemsShow" == eTemp.className) {
|
||
|
eTemp.className = "clsItemsHide";
|
||
|
//No image url in .js - not subject to wiki vars
|
||
|
//eSrc.style.listStyleImage = "url('images/blueplus.gif')";
|
||
|
return eSrc.blur();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
function contentsItem_click(eSrc) {
|
||
|
if (document.all["styleView"]) eSrc.target = document.all["styleView"].checked ? "_blank" : "TEXT";
|
||
|
else if ("" == eSrc.target) eSrc.target = "TEXT"
|
||
|
if(null != eSelected) eSelected.className = "clsItem";
|
||
|
eSrc.className = "clsItemSelect";
|
||
|
eSelected = eSrc;
|
||
|
}
|
||
|
|
||
|
|
||
|
|