/* TOGGLE METHODS */ var elemPreviousText = null; var elemPreviousImg = null; function toggle(elem) { if ((elem != null) && (elem.className != null)) { var length = elem.className.length; var strSuffiks = elem.className; strSuffiks = strSuffiks.substring(length-5,length); if (strSuffiks == "Hover") elem.className = elem.className.substring(0,length-5); else elem.className = elem.className + "Hover"; } } function toggleClass(elem,className) { if (elem != null) { elem.className = className; } } var prev = null; function setPrevElement(element) { prev = element; } function toggleElements(current) { if (prev != null) toggle(prev); toggle(current); prev = current; } var prevArray = null; function setPrevElementArray(prevArray) { prevArray = prevArray; } function toggleElementsArray(currentElementArray) { if (prevArray != null) { for (i=0; i < prevArray.length; i++) { toggle(prevArray[i]); } } for (i=0; i < currentElementArray.length; i++) { toggle(currentElementArray[i]); } setPrevElementArray(currentElementArray); } function toggleImage(imageElem) { if ((imageElem != null) && (imageElem.src != null)) { imageSrc = imageElem.src; currentIsOn = imageSrc.match(/_on/g); currentIsOff = imageSrc.match(/_off/g); if (currentIsOn) imageSrc = imageSrc.replace(/_on/,"_off"); else if (currentIsOff) imageSrc = imageSrc.replace(/_off/,"_on"); else imageSrc = ""; imageElem.src = imageSrc; } } function toggleImagePreview(strPath,imageNode,strImagesRoot,strFormat) { var imagePath = "Res?resPath=" + strImagesRoot + strPath; imageNode.src = imagePath.replace(/original/, strFormat); if (imageNode.style.visibility == "hidden") imageNode.style.visibility = "visible"; } function toggleResourcePreview(resNode,resourceSrc) { resNode.src = resourceSrc; if (resNode.style.visibility == "hidden") resNode.style.visibility = "visible"; } function toggleDivVisibility(divElement) { if (divElement.style.visibility == "hidden") divElement.style.visibility = "visible"; else divElement.style.visibility = "hidden"; } function toggleDivDisplay(divElement) { if (divElement.style.display == "none") divElement.style.display = "block"; else divElement.style.display = "none"; } var timeoutId = 0; var timeoutNodeId = null; function showRelativeToCallingNode(nodeId,callingNode,xOffset,yOffset) { var node = document.getElementById(nodeId); if (node != null) { var coord = getScreenCoordinates(callingNode); node.style.left = coord.x + xOffset; node.style.top = coord.y + yOffset; show(nodeId); } } function show(nodeId) { var node = document.getElementById(nodeId); if (node != null) { if (timeoutNodeId == nodeId) { if (timeoutId != null) clearTimeout(timeoutId); timeoutId = null; timeoutNodeId = null; } if (node.style.display == "none") { // Locate the parent node (it does not matter which node is the parent node) rootNode = node.parentNode; // Remove the node from the current location rootNode.removeChild(node); // Append the node as a child of the body document.body.appendChild(node); // At last display the node node.style.display = "block"; } } } function delayhide(nodeId) { timeoutId = setTimeout(function() {hide(nodeId)}, 300); timeoutNodeId = nodeId; } function hide(nodeId) { node = document.getElementById(nodeId); if (node != null) { if (node.style.display == "block") node.style.display = "none"; } } function getScreenCoordinates(node) { var x = node.offsetLeft; var y = node.offsetTop; var offsetNode = node.offsetParent; while (offsetNode != null) { x += offsetNode.offsetLeft; y += offsetNode.offsetTop; offsetNode = offsetNode.offsetParent; } return {x:x, y:y}; } var prevDiv1 = null; function setPrevDivElement(div) { prevDiv1 = div; } function getPrevDivElement() { return prevDiv1; } function isDivElementChanged(currentDiv) { if ((prevDiv1 == null) || (prevDiv1 != currentDiv)) { return true; } return false; } function toggleDivsDisplay(currentDiv) { if (prevDiv1 != null) toggleDivDisplay(prevDiv1); toggleDivDisplay(currentDiv); prevDiv1 = currentDiv; } // Need two until we get a more versatile toogle function that can be used multiple places on one page // Until then we must use a bunch of redundant methods. var prevDiv2 = null; function setPrevDivElement2(div) { prevDiv2 = div; } function getPrevDivElement2() { return prevDiv2; } function isDivElementChanged2(currentDiv) { if ((prevDiv2 == null) || (prevDiv2 != currentDiv)) { return true; } return false; } function toggleDivsDisplay2(currentDiv) { if (prevDiv2 != null) toggleDivDisplay(prevDiv2); toggleDivDisplay(currentDiv); prevDiv2 = currentDiv; } function toggleSubDivsDisplay(currentDiv) { currentDiv = currentDiv.firstChild; while (currentDiv != null) { if (currentDiv.nodeName.toLowerCase()=='div') toggleDivDisplay(currentDiv); currentDiv = currentDiv.nextSibling; } } function toggleTreeBranch(strDirectoryId,imgElem) { toggleDirectoryTree(document.getElementById(strDirectoryId)); toggleImage(imgElem); } function toggleTreeElement(elemForm,strDirectoryId,strPath) { if (document.all["FID_"+strDirectoryId] != null) toggleFileList(document.all["FID_"+strDirectoryId]); toggleTreeElementText(document.all["text_"+strDirectoryId]); toggleTreeElementImage(document.all["img_"+strDirectoryId]); if (strPath != null) elemForm.directoryCurrent.value = strPath; if (strDirectoryId != null) elemForm.directoryTreeState.value = strDirectoryId; } function toggleTreeElement2(elemForm,strDirectoryId,strPath) { toggleTreeElementText(document.all["text_"+strDirectoryId]); toggleTreeElementImage(document.all["img_"+strDirectoryId]); elemForm.directoryCurrent.value = strPath; elemForm.directoryTreeState.value = strDirectoryId; } function toggleTreeElementText(elemText) { if (elemPreviousText != null) toggle(elemPreviousText); toggle(elemText); elemPreviousText = elemText; } function toggleTreeElementImage(elemImg) { if (elemPreviousImg != null) toggleImage(elemPreviousImg); toggleImage(elemImg); elemPreviousImg = elemImg; } function toggleFileList(elemFileList) { if (elemPreviousFileList != null) toggleDivDisplay(elemPreviousFileList); toggleDivDisplay(elemFileList); elemPreviousFileList = elemFileList; } function toggleDirectoryTree(selectedDirectoryDiv) { // Determine the selectedDirectoryDiv and related parameters selectedDirectoryDivId = selectedDirectoryDiv.id; noSelectedLevels = calculateLevels(selectedDirectoryDivId); // Loop through all the direcory-divs arrayAllDivs = document.all.tags("DIV"); for (i=0; i < arrayAllDivs.length; i++) { // Determine temporary directory div tempDirectoryDiv = arrayAllDivs(i); tempDirectoryDivId = tempDirectoryDiv.id; noTempLevels = calculateLevels(tempDirectoryDivId); tempDirectoryDivSubstrId = tempDirectoryDivId.substring(0,3); if (tempDirectoryDivSubstrId == "DID") { // Check IF selected div is the same as the current loop div tempDirectoryDivSubstrId = tempDirectoryDivId.substring(0,selectedDirectoryDivId.length); if ((tempDirectoryDivSubstrId == selectedDirectoryDivId) && (noTempLevels == noSelectedLevels)) tempDirectoryDiv.style.display = "block"; // Check IF selected div is on the same branch as the current loop div AND current loop div is a child div of the selected div else if ((tempDirectoryDivSubstrId == selectedDirectoryDivId) && (noTempLevels == (noSelectedLevels + 1))) toggleDivDisplay(tempDirectoryDiv); } } } function calculateLevels(divIdSubstring) { n = 1; noLevels = 0; while (n > 0) { n = divIdSubstring.indexOf("_",n); if (n > 0) { divIdSubstring = divIdSubstring.substring(n-1,divIdSubstring.length); noLevels++; } } return noLevels; }