org.symbian.tools.wrttools.doc.WebDeveloper/html/js/common.js
changeset 229 716254ccbcc0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools.doc.WebDeveloper/html/js/common.js	Fri Mar 05 19:11:15 2010 -0800
@@ -0,0 +1,149 @@
+/**
+ * Check required support for TOC.
+ */
+function support() {
+    if (document.getElementsByTagName && document.styleSheets) {
+        tocSupported = true;
+    }
+}
+
+/** Flag if dynamic TOC is supported */
+var tocSupported = false;
+support();
+/** Current active TOC node. */
+var currentHighlight = null;
+
+/** Regexp for backslash, used to turn Windows pseudo-URLs to URLs. */
+var slashRegExp = new RegExp("\\\\", "g");
+
+function getBaseUrl() {
+    var topLocation = window.top.location;
+    var i = topLocation.pathname.indexOf(URL_BASE);
+    if (i != -1) {
+        return topLocation.protocol + "//"
+             + topLocation.hostname + (topLocation.port == "" ? "" : ":" + topLocation.port)
+             + topLocation.pathname.substring(0, i).replace(slashRegExp, "/");
+    } else if (topLocation.pathname.substring(topLocation.pathname.length - 1) == "/") {
+        return topLocation.protocol + "//"
+             + topLocation.hostname + (topLocation.port == "" ? "" : ":" + topLocation.port)
+             + topLocation.pathname;
+    } else {    
+        return undefined;
+    }
+}
+
+/*
+var isIE = (window.navigator.appVersion.indexOf("MSIE 6") !== -1);
+*/
+
+/**
+ * Hightlight TOC node.
+ *
+ * @param node TOC node to highlight
+ */
+function highlightTocItem(node) {
+    if (tocSupported) {
+        // turn old off
+/*
+        if (isIE) {
+        	var lis = node.ownerDocument.getElementsByTagName("*");
+            for (var i = 0; i < lis.length; i++) {
+                removeClass(lis.item(i), TOC_CLASS_ACTIVE);
+            }
+        } else {
+*/
+	        if (currentHighlight === null || !isClass(currentHighlight, TOC_CLASS_ACTIVE)) {
+	            // turn all off
+	            var lis = node.ownerDocument.getElementsByTagName(TOC_ELEMENT_ITEM);
+	            for (var i = 0; i < lis.length; i++) {
+	                removeClass(lis.item(i), TOC_CLASS_ACTIVE);
+	            }
+	        } else {
+	            removeClass(currentHighlight, TOC_CLASS_ACTIVE);
+	        }
+/*
+        }
+*/
+        // turn this on
+        addClass(node.parentNode, TOC_CLASS_ACTIVE);
+        currentHighlight = node.parentNode;
+/*
+        // IE6 addition, because it doesn't support > in CSS selectors
+        if (isIE) {
+      	    addClass(node, TOC_CLASS_ACTIVE);
+      	}
+*/
+    }
+}
+
+/**
+ * Toggle child node display.
+ *
+ * @param n Target node of the event.
+ */
+//moved to toc.js
+/*
+function toggle(n) {
+    // toggle controller
+    if (isClass(n, "toc-controller-open")) {
+        n.firstChild.data = "+";
+        switchClass(n, "toc-controller-closed", "toc-controller-open");
+    } else {
+        n.firstChild.data = "-";
+        switchClass(n, "toc-controller-open", "toc-controller-closed");
+    }
+    // toggle content    
+    i = getNextSiblingByTagName(n.parentNode.firstChild, "ul");
+    if (i != null) {
+        if (i.style.display == "none") {
+            i.style.display = "block";
+        } else {
+            i.style.display = "none";
+        }        
+    }
+}
+*/
+
+/* Move to common utils. */
+
+/**
+ * Get first child element by element name.
+ *
+ * @param node parent element
+ * @param name element name of the desired child elements
+ * @return DOM Element, null if none found
+ * @type Object
+ */
+function getFirstChildElementByTagName(node, name) {
+    var tag = undefined;
+    if (name !== undefined) {
+        tag = name.toLowerCase();
+    }
+    for (var n = node.firstChild; n != null; n = n.nextSibling) {
+        if (n.nodeType == 1 && (name === undefined || n.nodeName.toLowerCase() == tag)) {
+          return n;
+        }
+    }
+    return null;
+}
+
+/**
+ * Get first element by class name.
+ *
+ * @param node DOM node whose descendants select
+ * @param cls class name
+ * @param elem element name (optional)
+ * @return DOM Element, null if none found
+ * @type Object
+ */
+function getFirstElementByClassName(node, cls, elem) {
+      if (elem === undefined) {
+          elem = "*";
+      }
+      for (var el = document.getElementsByTagName(elem), i = 0; i < el.length; i++) {
+            if (isClass(el[i], cls)) {
+                return el[i];
+        }
+      }
+      return null;
+}
\ No newline at end of file