// DHTMLapi.js // // $Id: DHTMLapi.js,v 1.11 2006-08-26 18:50:36 bergsma Exp $ // // $Log: DHTMLapi.js,v $ // Revision 1.11 2006-08-26 18:50:36 bergsma // no message // // Revision 1.10 2005/12/26 14:52:29 bergsma // no message // // Revision 1.9 2005/12/23 15:22:51 bergsma // no message // // Revision 1.7 2005/12/16 00:17:51 bergsma // *** empty log message *** // // Revision 1.6 2005/11/22 16:57:25 bergsma // *** empty log message *** // // // Global variables var isCSS, isW3C, isIE4, isNN4; // initialize upon load to let all browsers establish content objects function initDHTMLAPI() { if ( document.images ) { isCSS = (document.body && document.body.style) ? true : false; isW3C = (isCSS && document.getElementById) ? true : false; isIE4 = (isCSS && document.all) ? true : false; isNN4 = (document.layers) ? true : false; isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? true : false; } initialize() ; } // set event handler to initialize API // If the onload attribute exists in the HTML document on // the BODY tag, then the following statement is overridden // by that. window.onload = initDHTMLAPI; var detect = navigator.userAgent.toLowerCase(); var OS,browser,version,total,thestring; if (checkIt('konqueror')) { browser = "Konqueror"; OS = "Linux"; } else if (checkIt('safari')) browser = "Safari" else if (checkIt('omniweb')) browser = "OmniWeb" else if (checkIt('opera')) browser = "Opera" else if (checkIt('webtv')) browser = "WebTV"; else if (checkIt('icab')) browser = "iCab" else if (checkIt('msie')) browser = "Internet Explorer" else if (!checkIt('compatible')) { browser = "Netscape Navigator" version = detect.charAt(8); } else browser = "An unknown browser"; if (!version) version = detect.charAt(place + thestring.length); if (!OS) { if (checkIt('linux')) OS = "Linux"; else if (checkIt('x11')) OS = "Unix"; else if (checkIt('mac')) OS = "Mac" else if (checkIt('win')) OS = "Windows" else OS = "an unknown operating system"; } function checkIt(string) { place = detect.indexOf(string) + 1; thestring = string; return place; } // Seek nested NN4 layer from string name function seekLayer(doc, name) { var theObj; for (var i = 0; i < doc.layers.length; i++) { if (doc.layers[i].name == name) { theObj = doc.layers[i]; break; } // dive into nested layers if necessary if (doc.layers[i].document.layers.length > 0) { theObj = seekLayer(document.layers[i].document, name); } } return theObj; } // Convert object name string or object reference // into a valid element object reference function getRawObject(obj) { var theObj; if (typeof obj == "string") { if (isW3C) { theObj = document.getElementById(obj); } else if (isIE4) { theObj = document.all(obj); } else if (isNN4) { theObj = seekLayer(document, obj); } } else { // pass through object reference theObj = obj; } return theObj; } // Convert object name string or object reference // into a valid style (or NN4 layer) reference function getObject(obj) { var theObj = getRawObject(obj); if (theObj && isCSS) { theObj = theObj.style; } return theObj; } function getEventTarget(e) { var targ; var lEvt; if (!e ) { e = window.event; } if ( e.target ) { targ = e.target; } else if ( e.srcElement ) { targ = e.srcElement; } if ( targ.nodeType == 3 ) { targ = targ.parentNode; // defeat Safari bug } return targ; } // Position an object at a specific pixel coordinate function shiftTo(obj, x, y) { var theObj = getObject(obj); if (theObj) { if (isCSS) { // equalize incorrect numeric value type var units = (typeof theObj.left == "string") ? "px" : 0 theObj.left = x + units; theObj.top = y + units; } else if (isNN4) { theObj.moveTo(x,y) } } } // Move an object by x and/or y pixels function shiftBy(obj, deltaX, deltaY) { var theObj = getObject(obj); if (theObj) { if (isCSS) { // equalize incorrect numeric value type var units = (typeof theObj.left == "string") ? "px" : 0 theObj.left = getObjectLeft(obj) + deltaX + units; theObj.top = getObjectTop(obj) + deltaY + units; } else if (isNN4) { theObj.moveBy(deltaX, deltaY); } } } // Set the z-order of an object function setZIndex(obj, zOrder) { var theObj = getObject(obj); if (theObj) { theObj.zIndex = zOrder; } } // Set the background color of an object function setBGColor(obj, color) { var theObj = getObject(obj); if (theObj) { if (isNN4) { theObj.bgColor = color; } else if (isCSS) { theObj.backgroundColor = color; } } } // Set the visibility of an object to visible function show(obj) { var theObj = getObject(obj); if (theObj) { theObj.visibility = "visible"; } } // Set the visibility of an object to hidden function hide(obj) { var theObj = getObject(obj); if (theObj) { theObj.visibility = "hidden"; } } function hideElement(pNd){ var node = getRawObject(pNd); if (node) {node.style.display = "none"}; return node; } function showElement(pNd){ var node = getRawObject(pNd); if (node) {node.style.display = ""}; return node; } function findPosX(obj){ obj = getRawObject(obj); var leftOff = 0; var curleft = 0; if (obj.x) { return obj.x; } else if (obj.offsetParent) { while (obj.offsetParent){ if ( obj.style.left ) { curleft += parseInt(obj.style.left.substring(0,obj.style.left.length-2)); return curleft; }else { curleft += obj.offsetLeft } obj = obj.offsetParent; } } return curleft; } function findPosY(obj){ obj = getRawObject(obj); var curtop = 0; if (obj.y){ return obj.y; } else if (obj.offsetParent) { while (obj.offsetParent){ if ( obj.style.top ) { curtop += parseInt(obj.style.top.substring(0,obj.style.top.length-2)); return curtop; }else { curtop += obj.offsetTop } obj = obj.offsetParent; } } return curtop; } // Retrieve the x coordinate of a positionable object function getObjectLeft(obj) { var elem = getRawObject(obj); var result = 0; if (document.defaultView) { var style = document.defaultView; var cssDecl = style.getComputedStyle(elem, ""); result = cssDecl.getPropertyValue("left"); } else if (elem.currentStyle) { result = elem.currentStyle.left; } else if (elem.style) { result = elem.style.left; } else if (isNN4) { result = elem.left; } return parseInt(result); } // Retrieve the y coordinate of a positionable object function getObjectTop(obj) { var elem = getRawObject(obj); var result = 0; if (document.defaultView) { var style = document.defaultView; var cssDecl = style.getComputedStyle(elem, ""); result = cssDecl.getPropertyValue("top"); } else if (elem.currentStyle) { result = elem.currentStyle.top; } else if (elem.style) { result = elem.style.top; } else if (isNN4) { result = elem.top; } return parseInt(result); } // Retrieve the rendered width of an element function getObjectWidth(obj) { var elem = getRawObject(obj); var result = 0; if (elem.offsetWidth) { result = elem.offsetWidth; } else if (elem.clip && elem.clip.width) { result = elem.clip.width; } else if (elem.style && elem.style.pixelWidth) { result = elem.style.pixelWidth; } return parseInt(result); } // Retrieve the rendered height of an element function getObjectHeight(obj) { var elem = getRawObject(obj); var result = 0; if (elem.offsetHeight) { result = elem.offsetHeight; } else if (elem.clip && elem.clip.height) { result = elem.clip.height; } else if (elem.style && elem.style.pixelHeight) { result = elem.style.pixelHeight; } return parseInt(result); } // Return the available content width space in browser window function getInsideWindowWidth() { if (window.innerWidth) { return window.innerWidth; } else if (isIE6CSS) { // measure the html element's clientWidth return document.body.parentElement.clientWidth } else if (document.body && document.body.clientWidth) { return document.body.clientWidth; } return 0; } // Return the available content height space in browser window function getInsideWindowHeight() { if (window.innerHeight) { return window.innerHeight; } else if (isIE6CSS) { // measure the html element's clientHeight return document.body.parentElement.clientHeight } else if (document.body && document.body.clientHeight) { return document.body.clientHeight; } return 0; } function inspect(elm){ var str = ""; for (var i in elm) { str += i + ": " + elm.getAttribute(i) + "\n"; } alert(str); } var isDOM_HS = 0 ; var isAJAX_HS = 0 ; function initialize() { var dashboard = getRawObject('dashboard') ; var vt_ajax = getRawObject('vt_ajax') ; if ( vt_ajax ) { // VT AJAX interface. isAJAX_HS = 1 ; initAjaxVT() ; } else if ( dashboard ) { // DOM-HS interface isDOM_HS = 1 ; vt_table = getRawObject('vt_table') ; if ( vt_table ) { initDomHsVT() ; } else { // Regular DOM-HS } } }