var undefined;
var Node = Node ? Node : {};
Node.ELEMENT_NODE = 1;
Node.ATTRIBUTE_NODE = 2;
Node.TEXT_NODE = 3;
Node.CDATA_SECTION_NODE = 4;
Node.ENTITY_REFERENCE_NODE = 5;
Node.ENTITY_NODE = 6;
Node.PROCESSING_INSTRUCTION_NODE = 7;
Node.COMMENT_NODE = 8;
Node.DOCUMENT_NODE = 9;
Node.DOCUMENT_TYPE_NODE = 10;
Node.DOCUMENT_FRAGMENT_NODE = 11;
Node.NOTATION_NODE = 12;
String.prototype.trim = function () {
return this.replace(/^\s*(.+)/gi,"$1").replace(/\s*$/gi,"");
};
String.prototype.endsWith = function (s) {
if ("string" != typeof s) {
throw("IllegalArgumentException: Must pass a string to " +
"String.endsWith()");
}
var start = this.length - s.length;
return this.substring(start) == s;
};
Array.prototype.contains = function (element) {
for (var i = 0; i < this.length; i++) {
if (this[i] == element) {
return true;
}
}
return false;
};
Array.prototype.remove = function (element) {
var result = false;
var array = [];
for (var i = 0; i < this.length; i++) {
if (this[i] == element) {
result = true;
} else {
array.push(this[i]);
}
}
this.clear();
for (var i = 0; i < array.length; i++) {
this.push(array[i]);
}
array = null;
return result;
};
Array.prototype.clear = function () {
this.length = 0;
};
Array.prototype.push = function (element) {
this[this.length] = element;
return this.length;
};
Array.prototype.add = function (element) {
if (this.contains(element)) {
return false;
}
this.push(element);
return false;
};
Array.prototype.addAll = function (that) {
var result = false;
for (var i = 0; i < that.length; i++) {
if (this.add(that[i])) {
result = true;
}
}
return true;
};
var org = org ? org : {};
org.ditchnet = org.ditchnet ? org.ditchnet : {};
org.ditchnet.dom = org.ditchnet.dom ? org.ditchnet.dom : {};
org.ditchnet.jsp = org.ditchnet.jsp ? org.ditchnet.jsp : {};
org.ditchnet.util = org.ditchnet.util ? org.ditchnet.util : {};
org.ditchnet.event = org.ditchnet.event ? org.ditchnet.event : {};
org.ditchnet.jsp.TabUtils = function () {};
org.ditchnet.jsp.TabUtils.TAB_CONTAINER_CLASS_NAME = "ditch-tab-container";
org.ditchnet.jsp.TabUtils.TAB_WRAP_CLASS_NAME = "ditch-tab-wrap";
org.ditchnet.jsp.TabUtils.TAB_CLASS_NAME = "ditch-tab";
org.ditchnet.jsp.TabUtils.TAB_BG_LEFT_CLASS_NAME = "ditch-tab-bg-left";
org.ditchnet.jsp.TabUtils.TAB_PANE_WRAP_CLASS_NAME = "ditch-tab-pane-wrap";
org.ditchnet.jsp.TabUtils.TAB_PANE_CLASS_NAME = "ditch-tab-pane";
org.ditchnet.jsp.TabUtils.tabContainer;
org.ditchnet.jsp.TabUtils.tabWrap;
org.ditchnet.jsp.TabUtils.tab;
org.ditchnet.jsp.TabUtils.tabs;
org.ditchnet.jsp.TabUtils.tabPanes;
org.ditchnet.jsp.TabUtils.selectedIndex;
org.ditchnet.dom.DomUtils = function () {};
org.ditchnet.dom.DomUtils.FOCUSED_CLASS_NAME = "ditch-focused";
org.ditchnet.dom.DomUtils.UNFOCUSED_CLASS_NAME = "ditch-unfocused";
org.ditchnet.dom.DomUtils.show = function (target) {
target.style.display = "";
};
org.ditchnet.dom.DomUtils.hide = function (target) {
target.style.display = "none";
};
org.ditchnet.dom.DomUtils.setClassNameAsFocused = function (target) {
with (org.ditchnet.dom.DomUtils) {
removeClassName( target,UNFOCUSED_CLASS_NAME );
addClassName( target,FOCUSED_CLASS_NAME );
}
};
org.ditchnet.dom.DomUtils.setClassNameAsUnFocused = function (target) {
with (org.ditchnet.dom.DomUtils) {
removeClassName( target,FOCUSED_CLASS_NAME );
addClassName( target,UNFOCUSED_CLASS_NAME );
}
};
org.ditchnet.dom.DomUtils.addClassName = function (target,k) {
with (org.ditchnet.dom.DomUtils) {
if(!isElementNode(target)) {
throw new Error("Attempting to add a className to a non-Element" +
" Node");
}
var classNames = target.className.split(/\s+/g);
if (classNames.contains(k)) {
return;
} else {
classNames.push(k);
}
target.className = classNames.join(" ");
target.className = target.className.trim();
}
}
org.ditchnet.dom.DomUtils.removeClassName = function (target,k) {
with (org.ditchnet.dom.DomUtils) {
if(!isElementNode(target)) {
throw new Error("Attempting to remove a className to a " +
"non-Element Node");
}
var classNames = target.className.split(/\s+/g);
if (!classNames.contains(k)) {
return;
} else {
classNames.remove(k);
}
target.className = classNames.join(" ");
target.className = target.className.trim();
}
}
org.ditchnet.dom.DomUtils.isElementNode = function (target) {
return Node.ELEMENT_NODE == target.nodeType;
};
org.ditchnet.dom.DomUtils.hasId = function (target,id) {
return target.id == id;
};
org.ditchnet.dom.DomUtils.hasClassName = function (target,className) {
function _isLastOfMultpleClassNames(all,className) {
var spaceBefore = all.lastIndexOf(className)-1;
return all.endsWith(className) &&
all.substring(spaceBefore,spaceBefore+1) == " ";
}
className = className.trim();
var cn = target.className;
if (!cn) {
return false;
}
cn = cn.trim();
if (cn == className) {
return true;
}
if (cn.indexOf(className + " ") > -1) {
return true;
}
if (_isLastOfMultpleClassNames(cn,className)) {
return true;
}
return false;
};
org.ditchnet.dom.DomUtils.getFirstAncestorOrSelfByClassName = function (target,
className) {
with (org.ditchnet.dom.DomUtils) {
var parent = target;
do {
if (isElementNode(parent) && hasClassName(parent,className)) {
return parent;
}
} while (parent = parent.parentNode);
}
return null;
};
org.ditchnet.dom.DomUtils.getFirstAncestorByClassName = function (target,className) {
with (org.ditchnet.dom.DomUtils) {
var parent = target;
while (parent = parent.parentNode) {
if (isElementNode(parent) && hasClassName(parent,className)) {
return parent;
}
}
}
return null;
};
org.ditchnet.dom.DomUtils.getFirstChildByClassName = function (target,className) {
with (org.ditchnet.dom.DomUtils) {
var kids = target.childNodes;
for (var i = 0; i < kids.length; i++) {
var kid = kids[i];
if (isElementNode(kid) && hasClassName(kid,className)) {
return kid;
}
}
}
return null;
};
org.ditchnet.dom.DomUtils.getChildrenByClassName = function (target,className) {
var result = [];
with (org.ditchnet.dom.DomUtils) {
var kids = target.childNodes;
for (var i = 0; i < kids.length; i++) {
var kid = kids[i];
if (isElementNode(kid) && hasClassName(kid,className)) {
result.push(kid);
}
}
}
return result;
};
org.ditchnet.dom.DomUtils.getFirstDescendantByClassNameBreadthFirst = function (
target,
className) {
var result;
with (org.ditchnet.dom.DomUtils) {
if (result = getFirstChildByClassName(target,className)) {
return result;
}
for (var i = 0; i < target.childNodes.length; i++) {
result = getFirstDescendantByClassNameBreadthFirst(
target.childNodes.item(i),
className );
if (result) {
return result;
}
}
return null;
}
};
org.ditchnet.dom.DomUtils.getFirstDescendantByClassNameDepthFirst = function (
target,
className) {
var child;
var result;
with (org.ditchnet.dom.DomUtils) {
for (var i = 0; i < target.childNodes.length; i++) {
child = target.childNodes.item(i);
if (isElementNode(child) && hasClassName(child,className)) {
return child;
}
result = getFirstDescendantByClassNameDepthFirst(
target.childNodes.item(i),
className );
if (result) {
return result;
}
}
return null;
}
};
org.ditchnet.dom.DomUtils.getDescendantsByClassName = function (target,className) {
var result = [];
with (org.ditchnet.dom.DomUtils) {
result.addAll(getChildrenByClassName(target,className));
for (var i = 0; i < target.childNodes.length; i++) {
result.addAll(getDescendantsByClassName(
target.childNodes.item(i),
className));
}
return result;
}
};
org.ditchnet.jsp.TabUtils.tabClicked = function (evt) {
var eventSource;
with (org.ditchnet) {
evt = new event.Event(evt);
eventSource = evt.getSource();
eventSource = dom.DomUtils.getFirstAncestorOrSelfByClassName(
eventSource,
jsp.TabUtils.TAB_CLASS_NAME );
jsp.TabUtils.switchTab(eventSource);
evt.consume();
}
};
org.ditchnet.jsp.TabUtils.switchTab = function (eventSource) {
with (org.ditchnet.jsp.TabUtils) {
findTabElements(eventSource);
selectedIndex = determineSelectedIndex(eventSource);
toggleTabVisibility(selectedIndex);
setTabCookie(selectedIndex);
}
};
org.ditchnet.jsp.TabUtils.setTabCookie = function (selectedIndex) {
with (org.ditchnet) {
var name = "org.ditchnet.jsp.tabs:"+jsp.TabUtils.tabContainer.id;
var value = selectedIndex;
var c = new util.Cookie(name,value);
util.Cookie.addPageCookie(c);
}
};
org.ditchnet.jsp.TabUtils.findTabElements = function (eventSource) {
with (org.ditchnet) {
jsp.TabUtils.tab = eventSource;
jsp.TabUtils.tabContainer = dom.DomUtils.getFirstAncestorByClassName(
eventSource,
jsp.TabUtils.TAB_CONTAINER_CLASS_NAME );
jsp.TabUtils.tabWrap = dom.DomUtils.getFirstChildByClassName(
jsp.TabUtils.tabContainer,
jsp.TabUtils.TAB_WRAP_CLASS_NAME );
jsp.TabUtils.tabs = dom.DomUtils.getChildrenByClassName(
jsp.TabUtils.tabWrap,
jsp.TabUtils.TAB_CLASS_NAME );
jsp.TabUtils.tabPaneWrap = dom.DomUtils.getFirstChildByClassName(
jsp.TabUtils.tabContainer,
jsp.TabUtils.TAB_PANE_WRAP_CLASS_NAME );
jsp.TabUtils.tabPanes = dom.DomUtils.getChildrenByClassName(
jsp.TabUtils.tabPaneWrap,
jsp.TabUtils.TAB_PANE_CLASS_NAME );
}
};
org.ditchnet.jsp.TabUtils.determineSelectedIndex = function (eventSource) {
with (org.ditchnet.jsp.TabUtils) {
for (var i = 0; i < tabs.length; i++) {
if (tabs[i] == eventSource) {
return i;
}
}
}
};
org.ditchnet.jsp.TabUtils.toggleTabVisibility = function (selectedIndex) {
with (org.ditchnet) {
for (var i = 0; i < jsp.TabUtils.tabPanes.length; i++) {
var tabPane = jsp.TabUtils.tabPanes[i];
if (i == selectedIndex) {
dom.DomUtils.show(tabPane);
dom.DomUtils.setClassNameAsFocused(jsp.TabUtils.tabs[i]);
} else {
dom.DomUtils.hide(tabPane);
dom.DomUtils.setClassNameAsUnFocused(jsp.TabUtils.tabs[i]);
}
}
}
};
org.ditchnet.jsp.TabUtils.tabLinkClicked = function (evt,selectedTabPaneId) {
var tabContainer,selectedTabPane,tabWrap,tabs,tabPaneWrap,tabPanes,
selectedIndex;
with (org.ditchnet) {
evt = new event.Event(evt);
selectedTabPane = document.getElementById(selectedTabPaneId);
tabContainer = dom.DomUtils.getFirstAncestorByClassName(
selectedTabPane,
jsp.TabUtils.TAB_CONTAINER_CLASS_NAME );
tabWrap = dom.DomUtils.getFirstChildByClassName(
tabContainer,
jsp.TabUtils.TAB_WRAP_CLASS_NAME );
tabs = dom.DomUtils.getChildrenByClassName(
tabWrap,
jsp.TabUtils.TAB_CLASS_NAME );
tabPaneWrap = dom.DomUtils.getFirstAncestorByClassName(
selectedTabPane,
jsp.TabUtils.TAB_PANE_WRAP_CLASS_NAME );
tabPanes = dom.DomUtils.getChildrenByClassName(
tabPaneWrap,
jsp.TabUtils.TAB_PANE_CLASS_NAME );
for (var i = 0; i < tabPanes.length; i++) {
if (tabPanes[i] == selectedTabPane) {
selectedIndex = i;
break;
}
}
jsp.TabUtils.switchTab(tabs[selectedIndex]);
window.scrollTo(0,0);
evt.consume();
}
};
org.ditchnet.jsp.TabUtils.prevTabButtonClicked = function (evt,tabContainerId) {
org.ditchnet.jsp.TabUtils.tabButtonClicked(evt,tabContainerId,true);
};
org.ditchnet.jsp.TabUtils.nextTabButtonClicked = function (evt,tabContainerId) {
org.ditchnet.jsp.TabUtils.tabButtonClicked(evt,tabContainerId,false);
};
org.ditchnet.jsp.TabUtils.tabButtonClicked = function (evt,tabContainerId,isPrev) {
var tabContainer,tabWrap,tabs,selectedIndex;
with (org.ditchnet) {
evt = new event.Event(evt);
tabContainer = document.getElementById(tabContainerId);
tabWrap = dom.DomUtils.getFirstChildByClassName(
tabContainer,
jsp.TabUtils.TAB_WRAP_CLASS_NAME );
tabs = dom.DomUtils.getChildrenByClassName(
tabWrap,
jsp.TabUtils.TAB_CLASS_NAME );
for (var i = 0; i < tabs.length; i++) {
if (dom.DomUtils.hasClassName(tabs[i],dom.DomUtils.FOCUSED_CLASS_NAME)) {
selectedIndex = (isPrev) ? i-1 : i+1;
selectedIndex = (selectedIndex >= tabs.length) ? 0 :
(0 > selectedIndex) ? tabs.length - 1 :
selectedIndex;
break;
}
}
jsp.TabUtils.switchTab(tabs[selectedIndex]);
evt.consume();
}
};
org.ditchnet.jsp.TabEvent = function (source) {
this._source = source;
with (org.ditchnet.jsp.TabUtils) {
this._tabContainer = tabContainer;
this._selectedIndex = selectedIndex;
this._tabPane = tabPanes[selectedIndex];
}
};
org.ditchnet.jsp.TabEvent.prototype.getSource = function () {
return this._source;
};
org.ditchnet.jsp.TabEvent.prototype.getSelectedIndex = function () {
return this._selectedIndex;
};
org.ditchnet.jsp.TabEvent.prototype.getTab = function () {
return this._source;
};
org.ditchnet.jsp.TabEvent.prototype.getTabContainer = function () {
return this._tabContainer;
};
org.ditchnet.jsp.TabEvent.prototype.getTabPane = function () {
return this._tabPane;
};
org.ditchnet.jsp.TabEvent.prototype.toString = function () {
return "[ org.ditchnet.jsp.TabEvent object ]";
};
org.ditchnet.event.Event = function (evt) {
this._evt = evt ? evt : window.event;
this._source = this._evt.currentTarget ?
this._evt.currentTarget : this._evt.srcElement;
};
org.ditchnet.event.Event.prototype.getSource = function () {
return this._source;
};
org.ditchnet.event.Event.prototype.consume = function () {
if (this._evt.stopPropagation) {
this._evt.stopPropagation();
this._evt.preventDefault();
} else if (this._evt.cancelBubble) {
this._evt.cancelBubble = true;
this._evt.returnValue = false;
}
};
org.ditchnet.util.Cookie = function (name,value) {
this._name;
this._value;
this._path;
this._secure;
this._domain;
this._expires;
if (name) {
this.setName(name);
}
if (value) {
this.setValue(value);
}
};
org.ditchnet.util.Cookie.EQUALS = "=";
org.ditchnet.util.Cookie.DELIM = "; ";
org.ditchnet.util.Cookie.PATH = "path";
org.ditchnet.util.Cookie.SECURE = "secure";
org.ditchnet.util.Cookie.DOMAIN = "domain";
org.ditchnet.util.Cookie.EXPIRES = "expires";
org.ditchnet.util.Cookie.SUB_VALUE_DELIM = ":"
org.ditchnet.util.Cookie.addPageCookie = function (c) {
document.cookie = c.toCookieString();
};
org.ditchnet.util.Cookie.getPageCookieString = function () {
return document.cookie;
};
org.ditchnet.util.Cookie.pageHasCookieWithNameAndValue = function (c) {
var s = c.toNameValueString();
return (Cookie.get().indexOf(s) > -1);
};
org.ditchnet.util.Cookie.pageHasCookieWithName = function (c) {
var s = c.getName();
return (Cookie.get().indexOf(s) > -1);
};
org.ditchnet.util.Cookie.prototype.toCookieString = function () {
with (org.ditchnet.util) {
var buff = new StringBuffer();
buff.append(this.getName()).append(Cookie.EQUALS);
if (typeof this.getValue() == "object" &&
this.getValue().constructor == Array) {
var values = this.getValue();
for (var i = 0; i < values.length; i++) {
buff.append(values[i])
.append(i == values.length-1 ? "" : Cookie.SUB_VALUE_DELIM);
}
} else {
buff.append(this.getValue())
}
buff.append(Cookie.DELIM);
buff.append(Cookie.PATH).append(Cookie.EQUALS)
.append(this.getPath()).append(Cookie.DELIM);
buff.append(Cookie.EXPIRES).append(Cookie.EQUALS)
.append(this.getExpires()).append(Cookie.DELIM);
if (this.getDomain()) {
buff.append(Cookie.DOMAIN).append(Cookie.EQUALS)
.append(this.getDomain()).append(Cookie.DELIM);
}
if (this.isSecure()) {
buff.append(Cookie.SECURE).append(Cookie.DELIM);
}
}
return buff.toString();
};
org.ditchnet.util.Cookie.prototype.toNameValueString = function () {
var buff = new org.ditchnet.util.StringBuffer();
buff.append(this.getName()).append(Cookie.EQUALS)
.append(this.getValue());
return buff.toString();
};
org.ditchnet.util.Cookie.prototype.getName = function () {
return this._name;
};
org.ditchnet.util.Cookie.prototype.setName = function (name) {
this._name = name;
};
org.ditchnet.util.Cookie.prototype.getValue = function () {
return this._value;
};
org.ditchnet.util.Cookie.prototype.setValue = function (value) {
this._value = value;
};
org.ditchnet.util.Cookie.prototype.getPath = function () {
if (this._path === undefined) {
return "/";
} else {
return this._path;
}
};
org.ditchnet.util.Cookie.prototype.setPath = function (path) {
this._path = path;
};
org.ditchnet.util.Cookie.prototype.isSecure = function () {
return this._secure;
};
org.ditchnet.util.Cookie.prototype.setSecure = function (secure) {
this._secure = secure;
};
org.ditchnet.util.Cookie.prototype.getDomain = function () {
return this._domain;
};
org.ditchnet.util.Cookie.prototype.setDomain = function (domain) {
this._domain = domain;
};
org.ditchnet.util.Cookie.prototype.getExpires = function () {
if (this._expires === undefined) {
return this._getDefaultExpires();
} else {
return this._expires;
}
};
org.ditchnet.util.Cookie.prototype.setExpires = function (expires) {
this._expires = expires;
};
org.ditchnet.util.Cookie.prototype._getDefaultDomain = function () {
return window.location.hostname;
};
org.ditchnet.util.Cookie.prototype._getDefaultExpires = function () {
var date = new Date();
date.setFullYear(date.getFullYear()+10);
return date.toGMTString();
};
org.ditchnet.util.StringBuffer = function (s) {
this._array = [];
if (s && typeof s != "string") {
throw new Error("IllegalArgumentException: StringBuffer's " +
"constructor accepts an optional String argument. Given:" +
(typeof s));
}
if (s) {
this.append(s);
}
};
org.ditchnet.util.StringBuffer.prototype.append = function (s) {
this._array.push(s);
return this;
};
org.ditchnet.util.StringBuffer.prototype.toString = function () {
return this._array.join("");
};
org.ditchnet.util.Map = function (o) {
this._obj = (o) ? (o) : new Object();
};
org.ditchnet.util.Map.prototype.put = function (key,value) {
this._obj[key] = value;
};
org.ditchnet.util.Map.prototype.get = function (key) {
if (!this._obj[key]) return null;
return this._obj[key];
};
org.ditchnet.util.Map.prototype.size = function () {
var count = 0;
for (var key in this._obj)
count++;
return count;
};
org.ditchnet.util.Map.prototype.isEmpty = function () {
return this.size() == 0;
};
org.ditchnet.util.Map.prototype.toString = function () {
var buff = new org.ditchnet.util.StringBuffer();
count = 0;
for ( var key in this._obj ) {
buff.append(key).append(" = ").append(this._obj[key])
.append(count == this.size() - 1 ? "" : "\r\n");
count++;
}
return buff.toString();
};
org.ditchnet.util.Map.prototype.containsKey = function (key) {
if (this._obj[key] !== undefined) {
return true;
}
return false;
};
org.ditchnet.util.Map.prototype.containsValue = function (value) {
for (var key in this._obj) {
if (this._obj[key] == value) {
return true;
}
}
return false;
};
org.ditchnet.util.Map.prototype.remove = function (key) {
if (this.containsKey(key)) {
delete this._obj[key];
}
};
org.ditchnet.util.Map.prototype.keySet = function () {
var keys = [];
for (var key in this._obj) {
keys.push(key);
}
return keys;
};
org.ditchnet.util.Map.prototype.values = function () {
var values = new Collection();
for (var key in this._obj) {
values.add(this._obj[key]);
}
return values;
};
org.ditchnet.util.ParameterMap = function (q) {
this._map = new org.ditchnet.util.Map();
this._q;
if (q) {
this._q = q.substring(1);
}
var pairs = this._q.split(/&+/g);
var a;
for (var i = 0; i < pairs.length; i++) {
a = pairs[i].split(/=+/g);
this._map.put(a[0],a[1]);
}
};
org.ditchnet.util.ParameterMap.getPageParameterMap = function () {
return new org.ditchnet.util.ParameterMap(
window.location.search.toString());
};
org.ditchnet.util.ParameterMap.prototype.toQueryString = function () {
var buff = new org.ditchnet.util.StringBuffer("?");
var count = 0;
var key,value;
var keys = this._map.keySet();
for (var i = 0; i < keys.length; i++) {
key = keys[i];
value = this._map.get(key);
buff.append(key).append("=").append(value)
.append(count == this._map.size() - 1 ? "" : "&");
count++;
}
return buff.toString();
};