// --------------------------------------------------------------------------- // --- Name: Easy DHTML Treeview -- // --- Original idea by : D.D. de Kerf -- // --- Updated by Jean-Michel Garnier, garnierjm@yahoo.fr -- // --------------------------------------------------------------------------- /***************************************************************************** Name : toggle Parameters : node , DOM element ( tag) Description : Description, collapse or unfold a branch Author : Jean-Michel Garnier / D.D. de Kerf *****************************************************************************/ function toggle(node) { // Get the next tag (read the HTML source) var nextDIV = node.nextSibling; // find the next DIV while(nextDIV.nodeName != "DIV") { nextDIV = nextDIV.nextSibling; } // Unfold the branch if it isn't visible if (nextDIV.style.display == 'none') { // Change the image (if there is an image) if (node.childNodes.length > 0) { if (node.childNodes.item(0).nodeName == "IMG") { node.childNodes.item(0).src = getImgDirectory(node.childNodes.item(0).src) + "minus.gif"; } } nextDIV.style.display = 'block'; } // Collapse the branch if it IS visible else { // Change the image (if there is an image) if (node.childNodes.length > 0) { if (node.childNodes.item(0).nodeName == "IMG") { node.childNodes.item(0).src = getImgDirectory(node.childNodes.item(0).src) + "plus.gif"; } } nextDIV.style.display = 'none'; } } /***************************************************************************** Name : toggle2 Parameters : node DOM element ( tag), folderCode String Description : if you use the "code" attribute in a folder element, toggle2 is called instead of toggle. The consequence is that you MUST implement a selectFolder function in your page. Author : Jean-Michel Garnier *****************************************************************************/ function toggle2(node, folderCode) { toggle(node); selectFolder(folderCode); } /***************************************************************************** Name : getImgDirectory Parameters : Image source path Return : Image source Directory Author : Jean-Michel Garnier *****************************************************************************/ function getImgDirectory(source) { return source.substring(0, source.lastIndexOf('/') + 1); } /************************************ ************* IMPORTANT ************* ************************************* The functions above are NOT used by the DHTML treeview. Netherless, have a look bc some be useful if you need to make XSLT on the client (since IE 5.5 and soon Mozilla !) */ /***************************************************************************** Name : stringExtract Parameters : - st String input string, contains n separators - position int, from 0 to n, position of the token wanted - separator char, separator between token Return : the token at the position wanted if it exists Description : Equivalent to class java.util.StringTokenizer Example -> stringExtract("A; B; C", 0, ";") = "A" Author : Jean-Michel Garnier *****************************************************************************/ function stringExtract( st, position, separator ) { var array; var result = new String(''); var s = new String(st); if (s != '' ) { array = s.split( separator); // @TODO, add a control on position value ... result = array[position]; } return result; } /***************************************************************************** Name : jsTrim Parameters : value, String Return : the same String, with space characters removed Description : equivalent to trim function Author : Jean-Michel Garnier *****************************************************************************/ function jsTrim(value) { var result = ""; for (i=0; i < value.length; i++) { if (value.charAt(i) != ' ') { result += value.charAt(i); } } return result; } /***************************************************************************** Name : findObj Parameters : - n String object's name - d Document document Return : a reference on the object if it exists Description : Search an object in a document from its name. Author : Macromedia *****************************************************************************/ function findObj(n, d) { 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 && i2 && arguments.length % 2 == 0){ for (var i=0; i < Math.floor((arguments.length)/2)-1; i++){ paramName = arguments[2*i+2]; paramValue = arguments[2*i+3]; xslProc.addParameter(paramName, paramValue); } } xslProc.transform(); return xslProc.output; } function BrowserDetectLite() { var ua = navigator.userAgent.toLowerCase(); // browser name this.isGecko = (ua.indexOf('gecko') != -1); this.isMozilla = (this.isGecko && ua.indexOf("gecko/") + 14 == ua.length); this.isNS = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) ); this.isIE = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) ); this.isOpera = (ua.indexOf("opera") != -1); this.isKonqueror = (ua.indexOf("konqueror") != -1); this.isIcab = (ua.indexOf("icab") != -1); this.isAol = (ua.indexOf("aol") != -1); this.isWebtv = (ua.indexOf("webtv") != -1); // spoofing and compatible browsers this.isIECompatible = ( (ua.indexOf("msie") != -1) && !this.isIE); this.isNSCompatible = ( (ua.indexOf("mozilla") != -1) && !this.isNS && !this.isMozilla); // browser version this.versionMinor = parseFloat(navigator.appVersion); // correct version number if (this.isNS && this.isGecko) { this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) ); } else if (this.isIE && this.versionMinor >= 4) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) ); } else if (this.isMozilla) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) ); } else if (this.isOpera) { if (ua.indexOf('opera/') != -1) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera/') + 6 ) ); } else { this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera ') + 6 ) ); } } else if (this.isKonqueror) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) ); } else if (this.isIcab) { if (ua.indexOf('icab/') != -1) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab/') + 6 ) ); } else { this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab ') + 6 ) ); } } else if (this.isWebtv) { this.versionMinor = parseFloat( ua.substring( ua.indexOf('webtv/') + 6 ) ); } this.versionMajor = parseInt(this.versionMinor); this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 ); // dom support this.isDOM1 = (document.getElementById); this.isDOM2Event = (document.addEventListener && document.removeEventListener); // css compatibility mode this.mode = document.compatMode ? document.compatMode : 'BackCompat'; // platform this.isWin = (ua.indexOf('win') != -1); this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1) ); this.isMac = (ua.indexOf('mac') != -1); this.isUnix = (ua.indexOf('unix') != -1 || ua.indexOf('linux') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1) // specific browser shortcuts this.isNS4x = (this.isNS && this.versionMajor == 4); this.isNS40x = (this.isNS4x && this.versionMinor < 4.5); this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7); this.isNS4up = (this.isNS && this.versionMinor >= 4); this.isNS6x = (this.isNS && this.versionMajor == 6); this.isNS6up = (this.isNS && this.versionMajor >= 6); this.isNS7x = (this.isNS && this.versionMajor == 7); this.isNS7up = (this.isNS && this.versionMajor >= 7); this.isIE4x = (this.isIE && this.versionMajor == 4); this.isIE4up = (this.isIE && this.versionMajor >= 4); this.isIE5x = (this.isIE && this.versionMajor == 5); this.isIE55 = (this.isIE && this.versionMinor == 5.5); this.isIE5up = (this.isIE && this.versionMajor >= 5); this.isIE6x = (this.isIE && this.versionMajor == 6); this.isIE6up = (this.isIE && this.versionMajor >= 6); this.isIE4xMac = (this.isIE4x && this.isMac); }