summaryrefslogtreecommitdiff
path: root/buildscripts/jGrouseDoc/skins/common/js
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/jGrouseDoc/skins/common/js')
-rw-r--r--buildscripts/jGrouseDoc/skins/common/js/jgdoc.js478
-rw-r--r--buildscripts/jGrouseDoc/skins/common/js/jgindex.js192
-rw-r--r--buildscripts/jGrouseDoc/skins/common/js/navTree.js426
3 files changed, 548 insertions, 548 deletions
diff --git a/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js b/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js
index 0687c039..7b1281bf 100644
--- a/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js
+++ b/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js
@@ -1,239 +1,239 @@
-/**
- * Searcher for JGrouseDoc
- * $Id: jgdoc.js 324 2008-01-06 16:44:39Z denis.riabtchik $
- */
-
-jgdoc = {}
-
-jgdoc.Searcher =
-{
- initialize : function()
- {
- this._searchBox = document.getElementById("jgsSearchString");
- this._searchResults = document.getElementById("jgsSearchResults");
- this._info = document.getElementById("jgsInfo");
- this._currentValue = "";
- this._currentItems = [];
- this._currentItem = -1;
- this._data = null;
- return this;
- },
-
- _getEvent : function(event)
- {
- return window.event? window.event : event;
- },
-
- _getTarget : function(event)
- {
- return event.target || event.srcElement
- },
-
- addClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- return;
- }
- }
- a.push(className);
- element.className = a.join(' ');
- },
-
- removeClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- a.splice(i, 1);
- break;
- }
- }
- element.className = a.join(' ');
-
- },
-
- dispatcher : function(event)
- {
- if (this != jgdoc.Searcher)
- {
- arguments.callee.apply(jgdoc.Searcher, arguments)
- return;
- }
- event = this._getEvent(event);
- var type = event.type;
- var handler = "on" + type;
- this[handler](event, this._getTarget(event));
- },
-
- onclick : function(event, target)
- {
- window.location.href = target._data.ref;
- },
-
- onmouseover : function(event, target)
- {
- this.selectItem(target.index);
- },
-
- onmouseout : function(event, target)
- {
- this.unselectItem(target.index);
- },
-
- selectItem : function(index)
- {
- if (index != this._currentItem)
- {
- this._currentItem = index;
- var item = this._currentItems[index];
- this.addClass(item, 'jgdSelectedItem');
- var text = item._data.summary.split('\n').join('<br/>');
- this._info.innerHTML = text;
- }
- },
-
- unselectItem : function(index)
- {
- this._currentItem = -1;
- var item = this._currentItems[index];
- this.removeClass(item, 'jgdSelectedItem');
- this._info.innerHTML = '';
- },
-
-
- onTimer : function()
- {
- if (this != jgdoc.Searcher)
- {
- arguments.callee.apply(jgdoc.Searcher, arguments)
- return;
- }
- var val = this._searchBox.value;
- if (val != this._currentValue)
- {
- this._currentValue = val;
- this.redraw();
- }
- },
-
- setData : function(data)
- {
- this._data = data;
- this.redraw();
- this._searchBox.focus();
- },
-
- addListener : function(element, eventName, handler)
- {
- if (element.addEventListener)
- {
- element.addEventListener(eventName, handler, false);
- }
- else
- {
- element.attachEvent('on' + eventName, handler);
- }
- },
-
- removeListener : function(element, eventName, handler)
- {
- if (element.removeEventListener)
- {
- element.removeEventListener(eventName, handler, false);
- }
- else
- {
- element.detachEvent('on' + eventName, handler);
- }
- },
-
- findMatches : function()
- {
- var result = [];
- if (this._currentValue)
- {
- var v = this._currentValue.toUpperCase();
- for (var i = 0; i < this._data.length; i++)
- {
- var item = this._data[i];
- if (item.localName.toUpperCase().indexOf(v) == 0)
- {
- result.push(item);
- }
- }
- }
- return result;
- },
-
-
- clearItem : function(item)
- {
- item._data = null;
- this.removeListener(item, 'click', this.dispatcher);
- this.removeListener(item, 'mouseover', this.dispatcher);
- this.removeListener(item, 'mouseout', this.dispatcher);
- },
-
- clear : function()
- {
- for (var i = 0; i < this._currentItems.length; i++)
- {
- this.clearItem(this._currentItems[i]);
- }
- this._currentItems = [];
- this._searchResults.innerHTML = "";
- this._currentItem = -1;
- },
-
-
- createItem : function(item, index)
- {
- var d = document.createElement("div");
- d.className = "searchItem";
- //d.title = item.summary;
- d.innerHTML = item.fullName;
- d.index = index;
- d._data = item;
- this.addListener(d, 'click', this.dispatcher);
- this.addListener(d, 'mouseover', this.dispatcher);
- this.addListener(d, 'mouseout', this.dispatcher);
- //todo - set listeners
- return d;
- },
-
- redraw : function()
- {
- this.clear();
- var res = this.findMatches();
- if (res.length > 0)
- {
- for (var i = 0; i < res.length; i++)
- {
- var d = this.createItem(res[i], i);
- this._currentItems.push(d);
- this._searchResults.appendChild(d);
- }
- }
- else
- {
- var s = (this._currentValue)? "Not found" : "Start typing the name of the item";
- this._searchResults.innerHTML = s;
- }
- },
-
- start : function()
- {
- var instance = jgdoc.Searcher.initialize();
- instance.setData([]);
- instance._timer = window.setInterval(instance.onTimer, 100);
- }
-}
-
+/**
+ * Searcher for JGrouseDoc
+ * $Id: jgdoc.js 324 2008-01-06 16:44:39Z denis.riabtchik $
+ */
+
+jgdoc = {}
+
+jgdoc.Searcher =
+{
+ initialize : function()
+ {
+ this._searchBox = document.getElementById("jgsSearchString");
+ this._searchResults = document.getElementById("jgsSearchResults");
+ this._info = document.getElementById("jgsInfo");
+ this._currentValue = "";
+ this._currentItems = [];
+ this._currentItem = -1;
+ this._data = null;
+ return this;
+ },
+
+ _getEvent : function(event)
+ {
+ return window.event? window.event : event;
+ },
+
+ _getTarget : function(event)
+ {
+ return event.target || event.srcElement
+ },
+
+ addClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ return;
+ }
+ }
+ a.push(className);
+ element.className = a.join(' ');
+ },
+
+ removeClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ a.splice(i, 1);
+ break;
+ }
+ }
+ element.className = a.join(' ');
+
+ },
+
+ dispatcher : function(event)
+ {
+ if (this != jgdoc.Searcher)
+ {
+ arguments.callee.apply(jgdoc.Searcher, arguments)
+ return;
+ }
+ event = this._getEvent(event);
+ var type = event.type;
+ var handler = "on" + type;
+ this[handler](event, this._getTarget(event));
+ },
+
+ onclick : function(event, target)
+ {
+ window.location.href = target._data.ref;
+ },
+
+ onmouseover : function(event, target)
+ {
+ this.selectItem(target.index);
+ },
+
+ onmouseout : function(event, target)
+ {
+ this.unselectItem(target.index);
+ },
+
+ selectItem : function(index)
+ {
+ if (index != this._currentItem)
+ {
+ this._currentItem = index;
+ var item = this._currentItems[index];
+ this.addClass(item, 'jgdSelectedItem');
+ var text = item._data.summary.split('\n').join('<br/>');
+ this._info.innerHTML = text;
+ }
+ },
+
+ unselectItem : function(index)
+ {
+ this._currentItem = -1;
+ var item = this._currentItems[index];
+ this.removeClass(item, 'jgdSelectedItem');
+ this._info.innerHTML = '';
+ },
+
+
+ onTimer : function()
+ {
+ if (this != jgdoc.Searcher)
+ {
+ arguments.callee.apply(jgdoc.Searcher, arguments)
+ return;
+ }
+ var val = this._searchBox.value;
+ if (val != this._currentValue)
+ {
+ this._currentValue = val;
+ this.redraw();
+ }
+ },
+
+ setData : function(data)
+ {
+ this._data = data;
+ this.redraw();
+ this._searchBox.focus();
+ },
+
+ addListener : function(element, eventName, handler)
+ {
+ if (element.addEventListener)
+ {
+ element.addEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.attachEvent('on' + eventName, handler);
+ }
+ },
+
+ removeListener : function(element, eventName, handler)
+ {
+ if (element.removeEventListener)
+ {
+ element.removeEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.detachEvent('on' + eventName, handler);
+ }
+ },
+
+ findMatches : function()
+ {
+ var result = [];
+ if (this._currentValue)
+ {
+ var v = this._currentValue.toUpperCase();
+ for (var i = 0; i < this._data.length; i++)
+ {
+ var item = this._data[i];
+ if (item.localName.toUpperCase().indexOf(v) == 0)
+ {
+ result.push(item);
+ }
+ }
+ }
+ return result;
+ },
+
+
+ clearItem : function(item)
+ {
+ item._data = null;
+ this.removeListener(item, 'click', this.dispatcher);
+ this.removeListener(item, 'mouseover', this.dispatcher);
+ this.removeListener(item, 'mouseout', this.dispatcher);
+ },
+
+ clear : function()
+ {
+ for (var i = 0; i < this._currentItems.length; i++)
+ {
+ this.clearItem(this._currentItems[i]);
+ }
+ this._currentItems = [];
+ this._searchResults.innerHTML = "";
+ this._currentItem = -1;
+ },
+
+
+ createItem : function(item, index)
+ {
+ var d = document.createElement("div");
+ d.className = "searchItem";
+ //d.title = item.summary;
+ d.innerHTML = item.fullName;
+ d.index = index;
+ d._data = item;
+ this.addListener(d, 'click', this.dispatcher);
+ this.addListener(d, 'mouseover', this.dispatcher);
+ this.addListener(d, 'mouseout', this.dispatcher);
+ //todo - set listeners
+ return d;
+ },
+
+ redraw : function()
+ {
+ this.clear();
+ var res = this.findMatches();
+ if (res.length > 0)
+ {
+ for (var i = 0; i < res.length; i++)
+ {
+ var d = this.createItem(res[i], i);
+ this._currentItems.push(d);
+ this._searchResults.appendChild(d);
+ }
+ }
+ else
+ {
+ var s = (this._currentValue)? "Not found" : "Start typing the name of the item";
+ this._searchResults.innerHTML = s;
+ }
+ },
+
+ start : function()
+ {
+ var instance = jgdoc.Searcher.initialize();
+ instance.setData([]);
+ instance._timer = window.setInterval(instance.onTimer, 100);
+ }
+}
+
diff --git a/buildscripts/jGrouseDoc/skins/common/js/jgindex.js b/buildscripts/jGrouseDoc/skins/common/js/jgindex.js
index 5a0bf2de..d1944cff 100644
--- a/buildscripts/jGrouseDoc/skins/common/js/jgindex.js
+++ b/buildscripts/jGrouseDoc/skins/common/js/jgindex.js
@@ -1,96 +1,96 @@
-/**
- * Script that builds jGrouseDoc Index Page
- * Copyright (c) 2007 by Robert Kieffer and jGrouseDoc contributors
- * $Id: jgindex.js 303 2007-12-24 22:52:30Z denis.riabtchik $
- */
-
-var jgindex = {
- load: function() {
- // Sort data by localName
- jgindex.data.sort(function(a,b) {
- var c = (a.localName || a.fullName).toLowerCase();
- var d = (b.localName || b.fullName).toLowerCase();
- return c < d ? -1 : (c > d ? 1 : 0);
- });
-
- // Now render the index
- jgindex.renderEntries();
- },
-
- renderEntries: function() {
- var h = [];
-
- // Use a DL, since this is the most semantically correct structure
- h.push('<dl>');
-
- // Hash to track which letters have entries
- var letters = {};
-
- // Loop through each entry
- for (var i = 0; i < jgindex.data.length; i++) {
- var entry = jgindex.data[i];
-
- // Get name/url for the entry's namespace
- var srcName = entry.parent;
- var srcLink = entry.ref.replace(/#.*/, '');
-
- // Apply odd/even classname (makes styling even/odd rows easy)
- var cn = [(i % 2) ? 'odd' : 'even'];
- cn.push(/^(class|interface|struct|object)/.test(entry.summary) ? 'is_namespace' : 'is_not_namespace');
-
- // Get the entry's first letter
- var ln = entry.localName || entry.fullName || '_unnamed';
- var letter = ln.charAt(0).toUpperCase();
-
- // ... and see if it's the first one for that letter
- if (!letters[letter]) {
- letters[letter] = true;
- } else {
- letter = null;
- }
-
- // ... and if it is, render the section header
- if (letter) {
- h.push('<h3 class="letter_section"><a name="' + letter + '">' + letter + '</a></h3>');
- }
-
- // Render the entry's HTML
- cn = cn.join(' ');
- h.push(
- '<dt title="' + entry.summary + '" class="' + cn + '">' +
- '<a href="' + entry.ref + '">' + ln + '</a>' +
- '</dt>' +
- '<dd class="' + cn + '">' +
- '<a href="' + srcLink + '">' + srcName + '</a>' +
- '</dd>'
- );
- }
- h.push('</dl>');
-
- // Stick it all into the element
- document.getElementById('index').innerHTML = h.join('\n');
-
- // Render the letters table-of-contents at the top
- h = [];
- var toc = '$_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- for (var i = 0; i < toc.length; i++) {
- var letter = toc.charAt(i);
- h.push(letters[letter] ?
- '<span class="has_entries"><a href="#' + letter + '">' + letter + '</a></span>' :
- '<span class="no_entries">' + letter + '</span>'
- );
- }
- document.getElementById('toc').innerHTML = h.join('\n');
- }
-}
-
-
-// Hack so we can get access to the index data
-var jgdoc = {
- Searcher: {
- setData: function(data) {
- jgindex.data = data;
- jgindex.load();
- }
- }
-}
+/**
+ * Script that builds jGrouseDoc Index Page
+ * Copyright (c) 2007 by Robert Kieffer and jGrouseDoc contributors
+ * $Id: jgindex.js 303 2007-12-24 22:52:30Z denis.riabtchik $
+ */
+
+var jgindex = {
+ load: function() {
+ // Sort data by localName
+ jgindex.data.sort(function(a,b) {
+ var c = (a.localName || a.fullName).toLowerCase();
+ var d = (b.localName || b.fullName).toLowerCase();
+ return c < d ? -1 : (c > d ? 1 : 0);
+ });
+
+ // Now render the index
+ jgindex.renderEntries();
+ },
+
+ renderEntries: function() {
+ var h = [];
+
+ // Use a DL, since this is the most semantically correct structure
+ h.push('<dl>');
+
+ // Hash to track which letters have entries
+ var letters = {};
+
+ // Loop through each entry
+ for (var i = 0; i < jgindex.data.length; i++) {
+ var entry = jgindex.data[i];
+
+ // Get name/url for the entry's namespace
+ var srcName = entry.parent;
+ var srcLink = entry.ref.replace(/#.*/, '');
+
+ // Apply odd/even classname (makes styling even/odd rows easy)
+ var cn = [(i % 2) ? 'odd' : 'even'];
+ cn.push(/^(class|interface|struct|object)/.test(entry.summary) ? 'is_namespace' : 'is_not_namespace');
+
+ // Get the entry's first letter
+ var ln = entry.localName || entry.fullName || '_unnamed';
+ var letter = ln.charAt(0).toUpperCase();
+
+ // ... and see if it's the first one for that letter
+ if (!letters[letter]) {
+ letters[letter] = true;
+ } else {
+ letter = null;
+ }
+
+ // ... and if it is, render the section header
+ if (letter) {
+ h.push('<h3 class="letter_section"><a name="' + letter + '">' + letter + '</a></h3>');
+ }
+
+ // Render the entry's HTML
+ cn = cn.join(' ');
+ h.push(
+ '<dt title="' + entry.summary + '" class="' + cn + '">' +
+ '<a href="' + entry.ref + '">' + ln + '</a>' +
+ '</dt>' +
+ '<dd class="' + cn + '">' +
+ '<a href="' + srcLink + '">' + srcName + '</a>' +
+ '</dd>'
+ );
+ }
+ h.push('</dl>');
+
+ // Stick it all into the element
+ document.getElementById('index').innerHTML = h.join('\n');
+
+ // Render the letters table-of-contents at the top
+ h = [];
+ var toc = '$_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ for (var i = 0; i < toc.length; i++) {
+ var letter = toc.charAt(i);
+ h.push(letters[letter] ?
+ '<span class="has_entries"><a href="#' + letter + '">' + letter + '</a></span>' :
+ '<span class="no_entries">' + letter + '</span>'
+ );
+ }
+ document.getElementById('toc').innerHTML = h.join('\n');
+ }
+}
+
+
+// Hack so we can get access to the index data
+var jgdoc = {
+ Searcher: {
+ setData: function(data) {
+ jgindex.data = data;
+ jgindex.load();
+ }
+ }
+}
diff --git a/buildscripts/jGrouseDoc/skins/common/js/navTree.js b/buildscripts/jGrouseDoc/skins/common/js/navTree.js
index f0c4f133..5a71ec51 100644
--- a/buildscripts/jGrouseDoc/skins/common/js/navTree.js
+++ b/buildscripts/jGrouseDoc/skins/common/js/navTree.js
@@ -1,213 +1,213 @@
-jgdoc = {};
-jgdoc.TreeItem = function(nodeName, item)
-{
- this._nodeName = nodeName;
- this._data = item;
- this._children = [];
-
-}
-
-jgdoc.Searcher =
-{
- setData : function(data) {
- this._data = data;
- this.processItems();
- this.render();
- },
-
- sorter: function(o1, o2) {
- var l1 = o1.localName;
- var l2 = o2.localName;
- return l1 < l2? -1 : (l1 > l2 ? 1 : 0);
- },
-
- processItems : function() {
- var root;
-
- // Pass 1: Build index by fullName, and locate the root element
- this._byName = {};
- for (var i = 0; i < this._data.length; i++) {
- var d = this._data[i];
- if (d.fullName == "GLOBAL") {
- root = this._root = d;
- }
- this._byName[d.fullName] = d;
- }
-
- // Pass 2: Populate _children arrays
- for (var i = 0; i < this._data.length; i++) {
- var item = this._data[i];
- if (item.elementType == "logical_container" && item != this._root) {
- var parent = this._byName[item.parent];
- parent._children = parent._children || [];
- parent._children.push(item);
- }
- }
- },
-
- addClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- return;
- }
- }
- a.push(className);
- element.className = a.join(' ');
- },
-
- removeClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- var found = false;
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- a.splice(i, 1);
- found = true;
- break;
- }
- }
- element.className = a.join(' ');
- return found;
- },
-
- clicked : function(event)
- {
- event = window.event? window.event : event;
- var target = event.target || event.srcElement;
- var span = target.parentNode;
- var li = span.parentNode;
- var wasOpen = jgdoc.Searcher.removeClass(li, 'open');
- if (wasOpen)
- {
- jgdoc.Searcher.addClass(li, 'closed');
- }
- else
- {
- jgdoc.Searcher.removeClass(li, 'closed');
- jgdoc.Searcher.addClass(li, 'open');
- }
- span.title = "Click to " + (wasOpen? "expand" : "collapse");
-
- },
-
- addListener : function(element, eventName, handler)
- {
- if (element.addEventListener)
- {
- element.addEventListener(eventName, handler, false);
- }
- else
- {
- element.attachEvent('on' + eventName, handler);
- }
- },
-
- removeListener : function(element, eventName, handler)
- {
- if (element.removeEventListener)
- {
- element.removeEventListener(eventName, handler, false);
- }
- else
- {
- element.detachEvent('on' + eventName, handler);
- }
- },
-
-
- render : function()
- {
- var d = document.getElementById('content');
- d.innerHTML = '';
- var athis = this;
- function renderNode(item)
- {
- var node = document.createElement('li');
- node.className = item.type;
- node.innerHTML = "<span class='node'><span class='markerSpace'>&nbsp;</span></span><a href='" + item.ref + "' target='classFrame' title='" + item.summary + "'>" + item.localName + "</a>";
- var span = node.firstChild;
- var img = span.firstChild;
- athis.addListener(img, 'mousedown', athis.clicked);
- if (item._children)
- {
- item._children.sort(jgdoc.Searcher.sorter);
- node.className += (item == athis._root)? ' open' : ' closed';
- span.title = "Click to " + (item != athis._root? 'expand' : 'collapse');
- var subnode = document.createElement("ul");
- subnode.className = 'contents';
- for (var i = 0; i < item._children.length; i++)
- {
- var child = renderNode(item._children[i]);
- subnode.appendChild(child);
- }
- node.appendChild(subnode);
- }
- else
- {
- node.className += ' leaf';
- }
- item._node = node;
- return node;
- }
- var root = renderNode(this._root);
- d.appendChild(root);
- },
-
- cancelEvent : function(event)
- {
- if (event.preventDefault)
- {
- event.preventDefault();
- event.stopPropagation();
- }
- else
- {
- event.preventDefault();
- event.stopPropagation();
- }
- },
-
- switchAll : function(doOpen)
- {
- var ac = doOpen? 'open' : 'closed';
- var rc = doOpen? 'closed' : 'open';
-
- var athis = this;
-
- function doSwitchNode(anode)
- {
- if (anode._children)
- {
- if (doOpen || anode != athis._root)
- {
- athis.removeClass(anode._node, rc);
- athis.addClass(anode._node, ac);
- }
- for (var i = 0; i < anode._children.length; i++)
- {
- doSwitchNode(anode._children[i]);
- }
- }
- }
- doSwitchNode(this._root);
- },
-
- onOpenAll : function()
- {
- jgdoc.Searcher.switchAll(true);
- },
-
- onCloseAll : function()
- {
- jgdoc.Searcher.switchAll(false);
- }
-
-};
+jgdoc = {};
+jgdoc.TreeItem = function(nodeName, item)
+{
+ this._nodeName = nodeName;
+ this._data = item;
+ this._children = [];
+
+}
+
+jgdoc.Searcher =
+{
+ setData : function(data) {
+ this._data = data;
+ this.processItems();
+ this.render();
+ },
+
+ sorter: function(o1, o2) {
+ var l1 = o1.localName;
+ var l2 = o2.localName;
+ return l1 < l2? -1 : (l1 > l2 ? 1 : 0);
+ },
+
+ processItems : function() {
+ var root;
+
+ // Pass 1: Build index by fullName, and locate the root element
+ this._byName = {};
+ for (var i = 0; i < this._data.length; i++) {
+ var d = this._data[i];
+ if (d.fullName == "GLOBAL") {
+ root = this._root = d;
+ }
+ this._byName[d.fullName] = d;
+ }
+
+ // Pass 2: Populate _children arrays
+ for (var i = 0; i < this._data.length; i++) {
+ var item = this._data[i];
+ if (item.elementType == "logical_container" && item != this._root) {
+ var parent = this._byName[item.parent];
+ parent._children = parent._children || [];
+ parent._children.push(item);
+ }
+ }
+ },
+
+ addClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ return;
+ }
+ }
+ a.push(className);
+ element.className = a.join(' ');
+ },
+
+ removeClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ var found = false;
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ a.splice(i, 1);
+ found = true;
+ break;
+ }
+ }
+ element.className = a.join(' ');
+ return found;
+ },
+
+ clicked : function(event)
+ {
+ event = window.event? window.event : event;
+ var target = event.target || event.srcElement;
+ var span = target.parentNode;
+ var li = span.parentNode;
+ var wasOpen = jgdoc.Searcher.removeClass(li, 'open');
+ if (wasOpen)
+ {
+ jgdoc.Searcher.addClass(li, 'closed');
+ }
+ else
+ {
+ jgdoc.Searcher.removeClass(li, 'closed');
+ jgdoc.Searcher.addClass(li, 'open');
+ }
+ span.title = "Click to " + (wasOpen? "expand" : "collapse");
+
+ },
+
+ addListener : function(element, eventName, handler)
+ {
+ if (element.addEventListener)
+ {
+ element.addEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.attachEvent('on' + eventName, handler);
+ }
+ },
+
+ removeListener : function(element, eventName, handler)
+ {
+ if (element.removeEventListener)
+ {
+ element.removeEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.detachEvent('on' + eventName, handler);
+ }
+ },
+
+
+ render : function()
+ {
+ var d = document.getElementById('content');
+ d.innerHTML = '';
+ var athis = this;
+ function renderNode(item)
+ {
+ var node = document.createElement('li');
+ node.className = item.type;
+ node.innerHTML = "<span class='node'><span class='markerSpace'>&nbsp;</span></span><a href='" + item.ref + "' target='classFrame' title='" + item.summary + "'>" + item.localName + "</a>";
+ var span = node.firstChild;
+ var img = span.firstChild;
+ athis.addListener(img, 'mousedown', athis.clicked);
+ if (item._children)
+ {
+ item._children.sort(jgdoc.Searcher.sorter);
+ node.className += (item == athis._root)? ' open' : ' closed';
+ span.title = "Click to " + (item != athis._root? 'expand' : 'collapse');
+ var subnode = document.createElement("ul");
+ subnode.className = 'contents';
+ for (var i = 0; i < item._children.length; i++)
+ {
+ var child = renderNode(item._children[i]);
+ subnode.appendChild(child);
+ }
+ node.appendChild(subnode);
+ }
+ else
+ {
+ node.className += ' leaf';
+ }
+ item._node = node;
+ return node;
+ }
+ var root = renderNode(this._root);
+ d.appendChild(root);
+ },
+
+ cancelEvent : function(event)
+ {
+ if (event.preventDefault)
+ {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ else
+ {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ },
+
+ switchAll : function(doOpen)
+ {
+ var ac = doOpen? 'open' : 'closed';
+ var rc = doOpen? 'closed' : 'open';
+
+ var athis = this;
+
+ function doSwitchNode(anode)
+ {
+ if (anode._children)
+ {
+ if (doOpen || anode != athis._root)
+ {
+ athis.removeClass(anode._node, rc);
+ athis.addClass(anode._node, ac);
+ }
+ for (var i = 0; i < anode._children.length; i++)
+ {
+ doSwitchNode(anode._children[i]);
+ }
+ }
+ }
+ doSwitchNode(this._root);
+ },
+
+ onOpenAll : function()
+ {
+ jgdoc.Searcher.switchAll(true);
+ },
+
+ onCloseAll : function()
+ {
+ jgdoc.Searcher.switchAll(false);
+ }
+
+};