// Shared routines function openPopup(url,windowName,features) { window.open(url,windowName,features); } function preloadImage(Url) { var i = new Image(); i.src = Url; } function showOrHideElement(element,show) { element.style.display = show ? "block" : "none"; } /* unused function getFirstAncestorOfClass (sourceElement, className) { // recursively search for ancestor of sourceElement that matches className var elementBeingTested = sourceElement.parentNode; if (elementBeingTested.className == className) return elementBeingTested; if (!elementBeingTested.className) return null; // if run out of elements (like at document) stop return getFirstAncestorOfClass(elementBeingTested, className); } */ function getFirstDescendentOrSelfOfClass (sourceElement, className) { // recursively search for descendent of sourceElement that matches className // test self if (sourceElement.className == className) return sourceElement; // test children var child = sourceElement.firstChild; if (child) { while (child) { var elementBeingTested = getFirstDescendentOrSelfOfClass (child, className); if (elementBeingTested) return elementBeingTested; child = child.nextSibling; } } return null; } function getElement(frameObject,elementId) { if (document.getElementById) return frameObject.document.getElementById(elementId); if (document.all) return frameObject.document.all[elementId]; if (document.layers) return frameObject.document.layers[elementId]; return null; } function getElementsStyleObject(frameObject,elementId) { if (document.getElementById) return frameObject.document.getElementById(elementId).style; if (document.all) return frameObject.document.all[elementId].style; if (document.layers) return frameObject.document.layers[elementId]; return null; } function getWindowHeight(frameObject) { if (document.all) return frameObject.document.body.clientHeight; // IE on Mac and Windows if (document.layers) return frameObject.document.clientHeight; } function getWindowWidth(frameObject) { if (document.all) return frameObject.document.body.clientWidth; // IE on Mac and Windows if (document.layers) return frameObject.document.clientWidth; } function trace (anObject) { alert(listObject(anObject)); } function listObject(theObject) { var m = ''; for (prop in theObject) { m+= prop + ":" + theObject[prop] + "\n"; //* if theObject[prop] == } return(m); } function wasLeftButton(e) { // takes event object (e) and decides if left button was pressed (as opposed to middle wheel button) var buttonPressed = /* (navigator.appName=="Netscape") ? e.which : */ e.button; if (buttonPressed == 1 | buttonPressed == 0 ) return true; return false; } function appendToCookieString ( cookieString, property, value ) { if (cookieString!="") cookieString += "&"; cookieString += property + ":" + escape(value); } function getValueFromCookieString ( cookieString, property) { // extract value of given property from encoding like this: "property1:value1&property2:value2" var pos = cookieString.indexOf(property); // at start of property label if (pos==-1) return null; pos += property.length + 1; // at start of value var start = pos; pos = cookieString.indexOf("&",pos+1); // if "&" not found, must be last property:value pair -- end of value is end of cookieString // else end of value is just before "&" var end = (pos==-1) ? cookieString.length : pos; var value = cookieString.substring(start,end); return unescape(value); } // SystemInfo Class // class to handle system check (browser, etc.) // Thanks to http://www.xs4all.nl/~ppk/js/detect.html for this code // TODO: Rewrite? /* function SystemInfo() { this.detect = navigator.userAgent.toLowerCase(); this.OS = null; this.browser = null; this.version = null; //this.subVersion = null; this.total = null; this.thestring = null; this.place = null; if (this.checkIt('konqueror')) { this.browser = "Konqueror"; this.OS = "Linux"; } else if (this.checkIt('safari')) { this.browser = "Safari" //this.subVersion = this.detect.substring(8,12); } else if (this.checkIt('omniweb')) this.browser = "OmniWeb" else if (this.checkIt('opera')) this.browser = "Opera" else if (this.checkIt('webtv')) this.browser = "WebTV"; else if (this.checkIt('icab')) this.browser = "iCab" else if (this.checkIt('msie')) this.browser = "Internet Explorer" else if (!this.checkIt('compatible')) { this.browser = "Netscape Navigator" this.version = this.detect.charAt(8); } else this.browser = "An unknown browser"; if (!this.version) this.version = this.detect.charAt(this.place + this.thestring.length); if (!this.OS) { if (this.checkIt('linux')) this.OS = "Linux"; else if (this.checkIt('x11')) this.OS = "Unix"; else if (this.checkIt('mac')) this.OS = "Mac" else if (this.checkIt('win')) this.OS = "Windows" else this.OS = "an unknown operating system"; } } SystemInfo.prototype.checkIt = function(string) { this.place = this.detect.indexOf(string) + 1; this.thestring = string; return this.place; // HACK: Weird } */ // Saving state using cookies /* expires domain document.cookie = "version=" + escape(document.lastModified) + "; expires=" + // cookie values may not include semicolons, commas, or whitespace */