You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2009/07/16 21:14:56 UTC

svn commit: r794787 [2/34] - in /geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src: ./ animation/ cal/ charting/ charting/svg/ charting/vml/ collections/ crypto/ data/ data/core/ data/old/ data/old/format/ data/old/provider/ date/ debug/ ...

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,128 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.animation.AnimationSequence");
+dojo.require("dojo.animation.AnimationEvent");
+dojo.require("dojo.animation.Animation");
+dojo.deprecated("dojo.animation.AnimationSequence is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
+dojo.animation.AnimationSequence = function (repeatCount) {
+	this._anims = [];
+	this.repeatCount = repeatCount || 0;
+};
+dojo.lang.extend(dojo.animation.AnimationSequence, {repeatCount:0, _anims:[], _currAnim:-1, onBegin:null, onEnd:null, onNext:null, handler:null, add:function () {
+	for (var i = 0; i < arguments.length; i++) {
+		this._anims.push(arguments[i]);
+		arguments[i]._animSequence = this;
+	}
+}, remove:function (anim) {
+	for (var i = 0; i < this._anims.length; i++) {
+		if (this._anims[i] == anim) {
+			this._anims[i]._animSequence = null;
+			this._anims.splice(i, 1);
+			break;
+		}
+	}
+}, removeAll:function () {
+	for (var i = 0; i < this._anims.length; i++) {
+		this._anims[i]._animSequence = null;
+	}
+	this._anims = [];
+	this._currAnim = -1;
+}, clear:function () {
+	this.removeAll();
+}, play:function (gotoStart) {
+	if (this._anims.length == 0) {
+		return;
+	}
+	if (gotoStart || !this._anims[this._currAnim]) {
+		this._currAnim = 0;
+	}
+	if (this._anims[this._currAnim]) {
+		if (this._currAnim == 0) {
+			var e = {type:"begin", animation:this._anims[this._currAnim]};
+			if (typeof this.handler == "function") {
+				this.handler(e);
+			}
+			if (typeof this.onBegin == "function") {
+				this.onBegin(e);
+			}
+		}
+		this._anims[this._currAnim].play(gotoStart);
+	}
+}, pause:function () {
+	if (this._anims[this._currAnim]) {
+		this._anims[this._currAnim].pause();
+	}
+}, playPause:function () {
+	if (this._anims.length == 0) {
+		return;
+	}
+	if (this._currAnim == -1) {
+		this._currAnim = 0;
+	}
+	if (this._anims[this._currAnim]) {
+		this._anims[this._currAnim].playPause();
+	}
+}, stop:function () {
+	if (this._anims[this._currAnim]) {
+		this._anims[this._currAnim].stop();
+	}
+}, status:function () {
+	if (this._anims[this._currAnim]) {
+		return this._anims[this._currAnim].status();
+	} else {
+		return "stopped";
+	}
+}, _setCurrent:function (anim) {
+	for (var i = 0; i < this._anims.length; i++) {
+		if (this._anims[i] == anim) {
+			this._currAnim = i;
+			break;
+		}
+	}
+}, _playNext:function () {
+	if (this._currAnim == -1 || this._anims.length == 0) {
+		return;
+	}
+	this._currAnim++;
+	if (this._anims[this._currAnim]) {
+		var e = {type:"next", animation:this._anims[this._currAnim]};
+		if (typeof this.handler == "function") {
+			this.handler(e);
+		}
+		if (typeof this.onNext == "function") {
+			this.onNext(e);
+		}
+		this._anims[this._currAnim].play(true);
+	} else {
+		var e = {type:"end", animation:this._anims[this._anims.length - 1]};
+		if (typeof this.handler == "function") {
+			this.handler(e);
+		}
+		if (typeof this.onEnd == "function") {
+			this.onEnd(e);
+		}
+		if (this.repeatCount > 0) {
+			this._currAnim = 0;
+			this.repeatCount--;
+			this._anims[this._currAnim].play(true);
+		} else {
+			if (this.repeatCount == -1) {
+				this._currAnim = 0;
+				this._anims[this._currAnim].play(true);
+			} else {
+				this._currAnim = -1;
+			}
+		}
+	}
+}});
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/AnimationSequence.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,17 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.animation.Timer");
+dojo.require("dojo.lang.timing.Timer");
+dojo.deprecated("dojo.animation.Timer is now dojo.lang.timing.Timer", "0.5");
+dojo.animation.Timer = dojo.lang.timing.Timer;
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/Timer.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,16 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.kwCompoundRequire({common:["dojo.animation.AnimationEvent", "dojo.animation.Animation", "dojo.animation.AnimationSequence"]});
+dojo.provide("dojo.animation.*");
+dojo.deprecated("dojo.Animation.* is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/animation/__package__.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,150 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.behavior");
+dojo.require("dojo.event.*");
+dojo.require("dojo.experimental");
+dojo.experimental("dojo.behavior");
+dojo.behavior = new function () {
+	function arrIn(obj, name) {
+		if (!obj[name]) {
+			obj[name] = [];
+		}
+		return obj[name];
+	}
+	function forIn(obj, scope, func) {
+		var tmpObj = {};
+		for (var x in obj) {
+			if (typeof tmpObj[x] == "undefined") {
+				if (!func) {
+					scope(obj[x], x);
+				} else {
+					func.call(scope, obj[x], x);
+				}
+			}
+		}
+	}
+	this.behaviors = {};
+	this.add = function (behaviorObj) {
+		var tmpObj = {};
+		forIn(behaviorObj, this, function (behavior, name) {
+			var tBehavior = arrIn(this.behaviors, name);
+			if ((dojo.lang.isString(behavior)) || (dojo.lang.isFunction(behavior))) {
+				behavior = {found:behavior};
+			}
+			forIn(behavior, function (rule, ruleName) {
+				arrIn(tBehavior, ruleName).push(rule);
+			});
+		});
+	};
+	this.apply = function () {
+		dojo.profile.start("dojo.behavior.apply");
+		var r = dojo.render.html;
+		var safariGoodEnough = (!r.safari);
+		if (r.safari) {
+			var uas = r.UA.split("AppleWebKit/")[1];
+			if (parseInt(uas.match(/[0-9.]{3,}/)) >= 420) {
+				safariGoodEnough = true;
+			}
+		}
+		if ((dj_undef("behaviorFastParse", djConfig) ? (safariGoodEnough) : djConfig["behaviorFastParse"])) {
+			this.applyFast();
+		} else {
+			this.applySlow();
+		}
+		dojo.profile.end("dojo.behavior.apply");
+	};
+	this.matchCache = {};
+	this.elementsById = function (id, handleRemoved) {
+		var removed = [];
+		var added = [];
+		arrIn(this.matchCache, id);
+		if (handleRemoved) {
+			var nodes = this.matchCache[id];
+			for (var x = 0; x < nodes.length; x++) {
+				if (nodes[x].id != "") {
+					removed.push(nodes[x]);
+					nodes.splice(x, 1);
+					x--;
+				}
+			}
+		}
+		var tElem = dojo.byId(id);
+		while (tElem) {
+			if (!tElem["idcached"]) {
+				added.push(tElem);
+			}
+			tElem.id = "";
+			tElem = dojo.byId(id);
+		}
+		this.matchCache[id] = this.matchCache[id].concat(added);
+		dojo.lang.forEach(this.matchCache[id], function (node) {
+			node.id = id;
+			node.idcached = true;
+		});
+		return {"removed":removed, "added":added, "match":this.matchCache[id]};
+	};
+	this.applyToNode = function (node, action, ruleSetName) {
+		if (typeof action == "string") {
+			dojo.event.topic.registerPublisher(action, node, ruleSetName);
+		} else {
+			if (typeof action == "function") {
+				if (ruleSetName == "found") {
+					action(node);
+				} else {
+					dojo.event.connect(node, ruleSetName, action);
+				}
+			} else {
+				action.srcObj = node;
+				action.srcFunc = ruleSetName;
+				dojo.event.kwConnect(action);
+			}
+		}
+	};
+	this.applyFast = function () {
+		dojo.profile.start("dojo.behavior.applyFast");
+		forIn(this.behaviors, function (tBehavior, id) {
+			var elems = dojo.behavior.elementsById(id);
+			dojo.lang.forEach(elems.added, function (elem) {
+				forIn(tBehavior, function (ruleSet, ruleSetName) {
+					if (dojo.lang.isArray(ruleSet)) {
+						dojo.lang.forEach(ruleSet, function (action) {
+							dojo.behavior.applyToNode(elem, action, ruleSetName);
+						});
+					}
+				});
+			});
+		});
+		dojo.profile.end("dojo.behavior.applyFast");
+	};
+	this.applySlow = function () {
+		dojo.profile.start("dojo.behavior.applySlow");
+		var all = document.getElementsByTagName("*");
+		var allLen = all.length;
+		for (var x = 0; x < allLen; x++) {
+			var elem = all[x];
+			if ((elem.id) && (!elem["behaviorAdded"]) && (this.behaviors[elem.id])) {
+				elem["behaviorAdded"] = true;
+				forIn(this.behaviors[elem.id], function (ruleSet, ruleSetName) {
+					if (dojo.lang.isArray(ruleSet)) {
+						dojo.lang.forEach(ruleSet, function (action) {
+							dojo.behavior.applyToNode(elem, action, ruleSetName);
+						});
+					}
+				});
+			}
+		}
+		dojo.profile.end("dojo.behavior.applySlow");
+	};
+};
+dojo.addOnLoad(dojo.behavior, "apply");
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/behavior.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,160 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+var dj_global = this;
+var dj_currentContext = this;
+function dj_undef(name, object) {
+	return (typeof (object || dj_currentContext)[name] == "undefined");
+}
+if (dj_undef("djConfig", this)) {
+	var djConfig = {};
+}
+if (dj_undef("dojo", this)) {
+	var dojo = {};
+}
+dojo.global = function () {
+	return dj_currentContext;
+};
+dojo.locale = djConfig.locale;
+dojo.version = {major:0, minor:4, patch:3, flag:"", revision:Number("$Rev$".match(/[0-9]+/)[0]), toString:function () {
+	with (dojo.version) {
+		return major + "." + minor + "." + patch + flag + " (" + revision + ")";
+	}
+}};
+dojo.evalProp = function (name, object, create) {
+	if ((!object) || (!name)) {
+		return undefined;
+	}
+	if (!dj_undef(name, object)) {
+		return object[name];
+	}
+	return (create ? (object[name] = {}) : undefined);
+};
+dojo.parseObjPath = function (path, context, create) {
+	var object = (context || dojo.global());
+	var names = path.split(".");
+	var prop = names.pop();
+	for (var i = 0, l = names.length; i < l && object; i++) {
+		object = dojo.evalProp(names[i], object, create);
+	}
+	return {obj:object, prop:prop};
+};
+dojo.evalObjPath = function (path, create) {
+	if (typeof path != "string") {
+		return dojo.global();
+	}
+	if (path.indexOf(".") == -1) {
+		return dojo.evalProp(path, dojo.global(), create);
+	}
+	var ref = dojo.parseObjPath(path, dojo.global(), create);
+	if (ref) {
+		return dojo.evalProp(ref.prop, ref.obj, create);
+	}
+	return null;
+};
+dojo.errorToString = function (exception) {
+	if (!dj_undef("message", exception)) {
+		return exception.message;
+	} else {
+		if (!dj_undef("description", exception)) {
+			return exception.description;
+		} else {
+			return exception;
+		}
+	}
+};
+dojo.raise = function (message, exception) {
+	if (exception) {
+		message = message + ": " + dojo.errorToString(exception);
+	} else {
+		message = dojo.errorToString(message);
+	}
+	try {
+		if (djConfig.isDebug) {
+			dojo.hostenv.println("FATAL exception raised: " + message);
+		}
+	}
+	catch (e) {
+	}
+	throw exception || Error(message);
+};
+dojo.debug = function () {
+};
+dojo.debugShallow = function (obj) {
+};
+dojo.profile = {start:function () {
+}, end:function () {
+}, stop:function () {
+}, dump:function () {
+}};
+function dj_eval(scriptFragment) {
+	return dj_global.eval ? dj_global.eval(scriptFragment) : eval(scriptFragment);
+}
+dojo.unimplemented = function (funcname, extra) {
+	var message = "'" + funcname + "' not implemented";
+	if (extra != null) {
+		message += " " + extra;
+	}
+	dojo.raise(message);
+};
+dojo.deprecated = function (behaviour, extra, removal) {
+	var message = "DEPRECATED: " + behaviour;
+	if (extra) {
+		message += " " + extra;
+	}
+	if (removal) {
+		message += " -- will be removed in version: " + removal;
+	}
+	dojo.debug(message);
+};
+dojo.render = (function () {
+	function vscaffold(prefs, names) {
+		var tmp = {capable:false, support:{builtin:false, plugin:false}, prefixes:prefs};
+		for (var i = 0; i < names.length; i++) {
+			tmp[names[i]] = false;
+		}
+		return tmp;
+	}
+	return {name:"", ver:dojo.version, os:{win:false, linux:false, osx:false}, html:vscaffold(["html"], ["ie", "opera", "khtml", "safari", "moz"]), svg:vscaffold(["svg"], ["corel", "adobe", "batik"]), vml:vscaffold(["vml"], ["ie"]), swf:vscaffold(["Swf", "Flash", "Mm"], ["mm"]), swt:vscaffold(["Swt"], ["ibm"])};
+})();
+dojo.hostenv = (function () {
+	var config = {isDebug:false, allowQueryConfig:false, baseScriptUri:"", baseRelativePath:"", libraryScriptUri:"", iePreventClobber:false, ieClobberMinimal:true, preventBackButtonFix:true, delayMozLoadingFix:false, searchIds:[], parseWidgets:true};
+	if (typeof djConfig == "undefined") {
+		djConfig = config;
+	} else {
+		for (var option in config) {
+			if (typeof djConfig[option] == "undefined") {
+				djConfig[option] = config[option];
+			}
+		}
+	}
+	return {name_:"(unset)", version_:"(unset)", getName:function () {
+		return this.name_;
+	}, getVersion:function () {
+		return this.version_;
+	}, getText:function (uri) {
+		dojo.unimplemented("getText", "uri=" + uri);
+	}};
+})();
+dojo.hostenv.getBaseScriptUri = function () {
+	if (djConfig.baseScriptUri.length) {
+		return djConfig.baseScriptUri;
+	}
+	var uri = new String(djConfig.libraryScriptUri || djConfig.baseRelativePath);
+	if (!uri) {
+		dojo.raise("Nothing returned by getLibraryScriptUri(): " + uri);
+	}
+	var lastslash = uri.lastIndexOf("/");
+	djConfig.baseScriptUri = djConfig.baseRelativePath;
+	return djConfig.baseScriptUri;
+};
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/bootstrap1.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,135 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.browser_debug");
+dojo.hostenv.loadedUris.push("../src/bootstrap1.js");
+dojo.hostenv.loadedUris.push("../src/loader.js");
+dojo.hostenv.loadedUris.push("../src/hostenv_browser.js");
+dojo.hostenv._loadedUrisListStart = dojo.hostenv.loadedUris.length;
+function removeComments(contents) {
+	contents = new String((!contents) ? "" : contents);
+	contents = contents.replace(/^(.*?)\/\/(.*)$/mg, "$1");
+	contents = contents.replace(/(\n)/mg, "__DOJONEWLINE");
+	contents = contents.replace(/\/\*(.*?)\*\//g, "");
+	return contents.replace(/__DOJONEWLINE/mg, "\n");
+}
+dojo.hostenv.getRequiresAndProvides = function (contents) {
+	if (!contents) {
+		return [];
+	}
+	var deps = [];
+	var tmp;
+	RegExp.lastIndex = 0;
+	var testExp = /dojo.(hostenv.loadModule|hostenv.require|require|requireIf|kwCompoundRequire|hostenv.conditionalLoadModule|hostenv.startPackage|provide)\([\w\W]*?\)/mg;
+	while ((tmp = testExp.exec(contents)) != null) {
+		deps.push(tmp[0]);
+	}
+	return deps;
+};
+dojo.hostenv.getDelayRequiresAndProvides = function (contents) {
+	if (!contents) {
+		return [];
+	}
+	var deps = [];
+	var tmp;
+	RegExp.lastIndex = 0;
+	var testExp = /dojo.(requireAfterIf)\([\w\W]*?\)/mg;
+	while ((tmp = testExp.exec(contents)) != null) {
+		deps.push(tmp[0]);
+	}
+	return deps;
+};
+dojo.clobberLastObject = function (objpath) {
+	if (objpath.indexOf(".") == -1) {
+		if (!dj_undef(objpath, dj_global)) {
+			delete dj_global[objpath];
+		}
+		return true;
+	}
+	var syms = objpath.split(/\./);
+	var base = dojo.evalObjPath(syms.slice(0, -1).join("."), false);
+	var child = syms[syms.length - 1];
+	if (!dj_undef(child, base)) {
+		delete base[child];
+		return true;
+	}
+	return false;
+};
+var removals = [];
+function zip(arr) {
+	var ret = [];
+	var seen = {};
+	for (var x = 0; x < arr.length; x++) {
+		if (!seen[arr[x]]) {
+			ret.push(arr[x]);
+			seen[arr[x]] = true;
+		}
+	}
+	return ret;
+}
+var old_dj_eval = dj_eval;
+dj_eval = function () {
+	return true;
+};
+dojo.hostenv.oldLoadUri = dojo.hostenv.loadUri;
+dojo.hostenv.loadUri = function (uri, cb) {
+	if (dojo.hostenv.loadedUris[uri]) {
+		return true;
+	}
+	try {
+		var text = this.getText(uri, null, true);
+		if (!text) {
+			return false;
+		}
+		if (cb) {
+			var expr = old_dj_eval("(" + text + ")");
+			cb(expr);
+		} else {
+			var requires = dojo.hostenv.getRequiresAndProvides(text);
+			eval(requires.join(";"));
+			dojo.hostenv.loadedUris.push(uri);
+			dojo.hostenv.loadedUris[uri] = true;
+			var delayRequires = dojo.hostenv.getDelayRequiresAndProvides(text);
+			eval(delayRequires.join(";"));
+		}
+	}
+	catch (e) {
+		alert(e);
+	}
+	return true;
+};
+dojo.hostenv._writtenIncludes = {};
+dojo.hostenv.writeIncludes = function (willCallAgain) {
+	for (var x = removals.length - 1; x >= 0; x--) {
+		dojo.clobberLastObject(removals[x]);
+	}
+	var depList = [];
+	var seen = dojo.hostenv._writtenIncludes;
+	for (var x = 0; x < dojo.hostenv.loadedUris.length; x++) {
+		var curi = dojo.hostenv.loadedUris[x];
+		if (!seen[curi]) {
+			seen[curi] = true;
+			depList.push(curi);
+		}
+	}
+	dojo.hostenv._global_omit_module_check = true;
+	for (var x = dojo.hostenv._loadedUrisListStart; x < depList.length; x++) {
+		document.write("<script type='text/javascript' src='" + depList[x] + "'></script>");
+	}
+	document.write("<script type='text/javascript'>dojo.hostenv._global_omit_module_check = false;</script>");
+	dojo.hostenv._loadedUrisListStart = 0;
+	if (!willCallAgain) {
+		dj_eval = old_dj_eval;
+		dojo.hostenv.loadUri = dojo.hostenv.oldLoadUri;
+	}
+};
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,38 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.browser_debug_xd");
+dojo.nonDebugProvide = dojo.provide;
+dojo.provide = function (resourceName) {
+	var dbgQueue = dojo.hostenv["xdDebugQueue"];
+	if (dbgQueue && dbgQueue.length > 0 && resourceName == dbgQueue["currentResourceName"]) {
+		window.setTimeout("dojo.hostenv.xdDebugFileLoaded('" + resourceName + "')", 1);
+	}
+	dojo.nonDebugProvide.apply(dojo, arguments);
+};
+dojo.hostenv.xdDebugFileLoaded = function (resourceName) {
+	var dbgQueue = this.xdDebugQueue;
+	if (resourceName && resourceName == dbgQueue.currentResourceName) {
+		dbgQueue.shift();
+	}
+	if (dbgQueue.length == 0) {
+		dbgQueue.currentResourceName = null;
+		this.xdNotifyLoaded();
+	} else {
+		dbgQueue.currentResourceName = dbgQueue[0].resourceName;
+		var element = document.createElement("script");
+		element.type = "text/javascript";
+		element.src = dbgQueue[0].resourcePath;
+		document.getElementsByTagName("head")[0].appendChild(element);
+	}
+};
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/browser_debug_xd.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,567 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.cal.iCalendar");
+dojo.require("dojo.lang.common");
+dojo.require("dojo.cal.textDirectory");
+dojo.require("dojo.date.common");
+dojo.require("dojo.date.serialize");
+dojo.cal.iCalendar.fromText = function (text) {
+	var properties = dojo.cal.textDirectory.tokenise(text);
+	var calendars = [];
+	for (var i = 0, begun = false; i < properties.length; i++) {
+		var prop = properties[i];
+		if (!begun) {
+			if (prop.name == "BEGIN" && prop.value == "VCALENDAR") {
+				begun = true;
+				var calbody = [];
+			}
+		} else {
+			if (prop.name == "END" && prop.value == "VCALENDAR") {
+				calendars.push(new dojo.cal.iCalendar.VCalendar(calbody));
+				begun = false;
+			} else {
+				calbody.push(prop);
+			}
+		}
+	}
+	return calendars;
+};
+dojo.cal.iCalendar.Component = function (body) {
+	if (!this.name) {
+		this.name = "COMPONENT";
+	}
+	this.properties = [];
+	this.components = [];
+	if (body) {
+		for (var i = 0, context = ""; i < body.length; i++) {
+			if (context == "") {
+				if (body[i].name == "BEGIN") {
+					context = body[i].value;
+					var childprops = [];
+				} else {
+					this.addProperty(new dojo.cal.iCalendar.Property(body[i]));
+				}
+			} else {
+				if (body[i].name == "END" && body[i].value == context) {
+					if (context == "VEVENT") {
+						this.addComponent(new dojo.cal.iCalendar.VEvent(childprops));
+					} else {
+						if (context == "VTIMEZONE") {
+							this.addComponent(new dojo.cal.iCalendar.VTimeZone(childprops));
+						} else {
+							if (context == "VTODO") {
+								this.addComponent(new dojo.cal.iCalendar.VTodo(childprops));
+							} else {
+								if (context == "VJOURNAL") {
+									this.addComponent(new dojo.cal.iCalendar.VJournal(childprops));
+								} else {
+									if (context == "VFREEBUSY") {
+										this.addComponent(new dojo.cal.iCalendar.VFreeBusy(childprops));
+									} else {
+										if (context == "STANDARD") {
+											this.addComponent(new dojo.cal.iCalendar.Standard(childprops));
+										} else {
+											if (context == "DAYLIGHT") {
+												this.addComponent(new dojo.cal.iCalendar.Daylight(childprops));
+											} else {
+												if (context == "VALARM") {
+													this.addComponent(new dojo.cal.iCalendar.VAlarm(childprops));
+												} else {
+													dojo.unimplemented("dojo.cal.iCalendar." + context);
+												}
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					context = "";
+				} else {
+					childprops.push(body[i]);
+				}
+			}
+		}
+		if (this._ValidProperties) {
+			this.postCreate();
+		}
+	}
+};
+dojo.extend(dojo.cal.iCalendar.Component, {addProperty:function (prop) {
+	this.properties.push(prop);
+	this[prop.name.toLowerCase()] = prop;
+}, addComponent:function (prop) {
+	this.components.push(prop);
+}, postCreate:function () {
+	for (var x = 0; x < this._ValidProperties.length; x++) {
+		var evtProperty = this._ValidProperties[x];
+		var found = false;
+		for (var y = 0; y < this.properties.length; y++) {
+			var prop = this.properties[y];
+			var propName = prop.name.toLowerCase();
+			if (dojo.lang.isArray(evtProperty)) {
+				var alreadySet = false;
+				for (var z = 0; z < evtProperty.length; z++) {
+					var evtPropertyName = evtProperty[z].name.toLowerCase();
+					if ((this[evtPropertyName]) && (evtPropertyName != propName)) {
+						alreadySet = true;
+					}
+				}
+				if (!alreadySet) {
+					this[propName] = prop;
+				}
+			} else {
+				if (propName == evtProperty.name.toLowerCase()) {
+					found = true;
+					if (evtProperty.occurance == 1) {
+						this[propName] = prop;
+					} else {
+						found = true;
+						if (!dojo.lang.isArray(this[propName])) {
+							this[propName] = [];
+						}
+						this[propName].push(prop);
+					}
+				}
+			}
+		}
+		if (evtProperty.required && !found) {
+			dojo.debug("iCalendar - " + this.name + ": Required Property not found: " + evtProperty.name);
+		}
+	}
+	if (dojo.lang.isArray(this.rrule)) {
+		for (var x = 0; x < this.rrule.length; x++) {
+			var rule = this.rrule[x].value;
+			this.rrule[x].cache = function () {
+			};
+			var temp = rule.split(";");
+			for (var y = 0; y < temp.length; y++) {
+				var pair = temp[y].split("=");
+				var key = pair[0].toLowerCase();
+				var val = pair[1];
+				if ((key == "freq") || (key == "interval") || (key == "until")) {
+					this.rrule[x][key] = val;
+				} else {
+					var valArray = val.split(",");
+					this.rrule[x][key] = valArray;
+				}
+			}
+		}
+		this.recurring = true;
+	}
+}, toString:function () {
+	return "[iCalendar.Component; " + this.name + ", " + this.properties.length + " properties, " + this.components.length + " components]";
+}});
+dojo.cal.iCalendar.Property = function (prop) {
+	this.name = prop.name;
+	this.group = prop.group;
+	this.params = prop.params;
+	this.value = prop.value;
+};
+dojo.extend(dojo.cal.iCalendar.Property, {toString:function () {
+	return "[iCalenday.Property; " + this.name + ": " + this.value + "]";
+}});
+var _P = function (n, oc, req) {
+	return {name:n, required:(req) ? true : false, occurance:(oc == "*" || !oc) ? -1 : oc};
+};
+dojo.cal.iCalendar.VCalendar = function (calbody) {
+	this.name = "VCALENDAR";
+	this.recurring = [];
+	this.nonRecurringEvents = function () {
+	};
+	dojo.cal.iCalendar.Component.call(this, calbody);
+};
+dojo.inherits(dojo.cal.iCalendar.VCalendar, dojo.cal.iCalendar.Component);
+dojo.extend(dojo.cal.iCalendar.VCalendar, {addComponent:function (prop) {
+	this.components.push(prop);
+	if (prop.name.toLowerCase() == "vevent") {
+		if (prop.rrule) {
+			this.recurring.push(prop);
+		} else {
+			var startDate = prop.getDate();
+			var month = startDate.getMonth() + 1;
+			var dateString = month + "-" + startDate.getDate() + "-" + startDate.getFullYear();
+			if (!dojo.lang.isArray(this[dateString])) {
+				this.nonRecurringEvents[dateString] = [];
+			}
+			this.nonRecurringEvents[dateString].push(prop);
+		}
+	}
+}, preComputeRecurringEvents:function (until) {
+	var calculatedEvents = function () {
+	};
+	for (var x = 0; x < this.recurring.length; x++) {
+		var dates = this.recurring[x].getDates(until);
+		for (var y = 0; y < dates.length; y++) {
+			var month = dates[y].getMonth() + 1;
+			var dateStr = month + "-" + dates[y].getDate() + "-" + dates[y].getFullYear();
+			if (!dojo.lang.isArray(calculatedEvents[dateStr])) {
+				calculatedEvents[dateStr] = [];
+			}
+			if (!dojo.lang.inArray(calculatedEvents[dateStr], this.recurring[x])) {
+				calculatedEvents[dateStr].push(this.recurring[x]);
+			}
+		}
+	}
+	this.recurringEvents = calculatedEvents;
+}, getEvents:function (date) {
+	var events = [];
+	var recur = [];
+	var nonRecur = [];
+	var month = date.getMonth() + 1;
+	var dateStr = month + "-" + date.getDate() + "-" + date.getFullYear();
+	if (dojo.lang.isArray(this.nonRecurringEvents[dateStr])) {
+		nonRecur = this.nonRecurringEvents[dateStr];
+		dojo.debug("Number of nonRecurring Events: " + nonRecur.length);
+	}
+	if (dojo.lang.isArray(this.recurringEvents[dateStr])) {
+		recur = this.recurringEvents[dateStr];
+	}
+	events = recur.concat(nonRecur);
+	if (events.length > 0) {
+		return events;
+	}
+	return null;
+}});
+var StandardProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")];
+dojo.cal.iCalendar.Standard = function (body) {
+	this.name = "STANDARD";
+	this._ValidProperties = StandardProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.Standard, dojo.cal.iCalendar.Component);
+var DaylightProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")];
+dojo.cal.iCalendar.Daylight = function (body) {
+	this.name = "DAYLIGHT";
+	this._ValidProperties = DaylightProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.Daylight, dojo.cal.iCalendar.Component);
+var VEventProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("transp", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("dtend", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")];
+dojo.cal.iCalendar.VEvent = function (body) {
+	this._ValidProperties = VEventProperties;
+	this.name = "VEVENT";
+	dojo.cal.iCalendar.Component.call(this, body);
+	this.recurring = false;
+	this.startDate = dojo.date.fromIso8601(this.dtstart.value);
+};
+dojo.inherits(dojo.cal.iCalendar.VEvent, dojo.cal.iCalendar.Component);
+dojo.extend(dojo.cal.iCalendar.VEvent, {getDates:function (until) {
+	var dtstart = this.getDate();
+	var recurranceSet = [];
+	var weekdays = ["su", "mo", "tu", "we", "th", "fr", "sa"];
+	var order = {"daily":1, "weekly":2, "monthly":3, "yearly":4, "byday":1, "bymonthday":1, "byweekno":2, "bymonth":3, "byyearday":4};
+	for (var x = 0; x < this.rrule.length; x++) {
+		var rrule = this.rrule[x];
+		var freq = rrule.freq.toLowerCase();
+		var interval = 1;
+		if (rrule.interval > interval) {
+			interval = rrule.interval;
+		}
+		var set = [];
+		var freqInt = order[freq];
+		if (rrule.until) {
+			var tmpUntil = dojo.date.fromIso8601(rrule.until);
+		} else {
+			var tmpUntil = until;
+		}
+		if (tmpUntil > until) {
+			tmpUntil = until;
+		}
+		if (dtstart < tmpUntil) {
+			var expandingRules = function () {
+			};
+			var cullingRules = function () {
+			};
+			expandingRules.length = 0;
+			cullingRules.length = 0;
+			switch (freq) {
+			  case "yearly":
+				var nextDate = new Date(dtstart);
+				set.push(nextDate);
+				while (nextDate < tmpUntil) {
+					nextDate.setYear(nextDate.getFullYear() + interval);
+					tmpDate = new Date(nextDate);
+					if (tmpDate < tmpUntil) {
+						set.push(tmpDate);
+					}
+				}
+				break;
+			  case "monthly":
+				nextDate = new Date(dtstart);
+				set.push(nextDate);
+				while (nextDate < tmpUntil) {
+					nextDate.setMonth(nextDate.getMonth() + interval);
+					var tmpDate = new Date(nextDate);
+					if (tmpDate < tmpUntil) {
+						set.push(tmpDate);
+					}
+				}
+				break;
+			  case "weekly":
+				nextDate = new Date(dtstart);
+				set.push(nextDate);
+				while (nextDate < tmpUntil) {
+					nextDate.setDate(nextDate.getDate() + (7 * interval));
+					var tmpDate = new Date(nextDate);
+					if (tmpDate < tmpUntil) {
+						set.push(tmpDate);
+					}
+				}
+				break;
+			  case "daily":
+				nextDate = new Date(dtstart);
+				set.push(nextDate);
+				while (nextDate < tmpUntil) {
+					nextDate.setDate(nextDate.getDate() + interval);
+					var tmpDate = new Date(nextDate);
+					if (tmpDate < tmpUntil) {
+						set.push(tmpDate);
+					}
+				}
+				break;
+			}
+			if ((rrule["bymonth"]) && (order["bymonth"] < freqInt)) {
+				for (var z = 0; z < rrule["bymonth"].length; z++) {
+					if (z == 0) {
+						for (var zz = 0; zz < set.length; zz++) {
+							set[zz].setMonth(rrule["bymonth"][z] - 1);
+						}
+					} else {
+						var subset = [];
+						for (var zz = 0; zz < set.length; zz++) {
+							var newDate = new Date(set[zz]);
+							newDate.setMonth(rrule[z]);
+							subset.push(newDate);
+						}
+						tmp = set.concat(subset);
+						set = tmp;
+					}
+				}
+			}
+			if (rrule["byweekno"] && !rrule["bymonth"]) {
+				dojo.debug("TODO: no support for byweekno yet");
+			}
+			if (rrule["byyearday"] && !rrule["bymonth"] && !rrule["byweekno"]) {
+				if (rrule["byyearday"].length > 1) {
+					var regex = "([+-]?)([0-9]{1,3})";
+					for (var z = 1; x < rrule["byyearday"].length; z++) {
+						var regexResult = rrule["byyearday"][z].match(regex);
+						if (z == 1) {
+							for (var zz = 0; zz < set.length; zz++) {
+								if (regexResult[1] == "-") {
+									dojo.date.setDayOfYear(set[zz], 366 - regexResult[2]);
+								} else {
+									dojo.date.setDayOfYear(set[zz], regexResult[2]);
+								}
+							}
+						} else {
+							var subset = [];
+							for (var zz = 0; zz < set.length; zz++) {
+								var newDate = new Date(set[zz]);
+								if (regexResult[1] == "-") {
+									dojo.date.setDayOfYear(newDate, 366 - regexResult[2]);
+								} else {
+									dojo.date.setDayOfYear(newDate, regexResult[2]);
+								}
+								subset.push(newDate);
+							}
+							tmp = set.concat(subset);
+							set = tmp;
+						}
+					}
+				}
+			}
+			if (rrule["bymonthday"] && (order["bymonthday"] < freqInt)) {
+				if (rrule["bymonthday"].length > 0) {
+					var regex = "([+-]?)([0-9]{1,3})";
+					for (var z = 0; z < rrule["bymonthday"].length; z++) {
+						var regexResult = rrule["bymonthday"][z].match(regex);
+						if (z == 0) {
+							for (var zz = 0; zz < set.length; zz++) {
+								if (regexResult[1] == "-") {
+									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
+										set[zz].setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);
+									}
+								} else {
+									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
+										set[zz].setDate(regexResult[2]);
+									}
+								}
+							}
+						} else {
+							var subset = [];
+							for (var zz = 0; zz < set.length; zz++) {
+								var newDate = new Date(set[zz]);
+								if (regexResult[1] == "-") {
+									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
+										newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);
+									}
+								} else {
+									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
+										newDate.setDate(regexResult[2]);
+									}
+								}
+								subset.push(newDate);
+							}
+							tmp = set.concat(subset);
+							set = tmp;
+						}
+					}
+				}
+			}
+			if (rrule["byday"] && (order["byday"] < freqInt)) {
+				if (rrule["bymonth"]) {
+					if (rrule["byday"].length > 0) {
+						var regex = "([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})";
+						for (var z = 0; z < rrule["byday"].length; z++) {
+							var regexResult = rrule["byday"][z].match(regex);
+							var occurance = regexResult[2];
+							var day = regexResult[3].toLowerCase();
+							if (z == 0) {
+								for (var zz = 0; zz < set.length; zz++) {
+									if (regexResult[1] == "-") {
+										var numDaysFound = 0;
+										var lastDayOfMonth = dojo.date.getDaysInMonth(set[zz]);
+										var daysToSubtract = 1;
+										set[zz].setDate(lastDayOfMonth);
+										if (weekdays[set[zz].getDay()] == day) {
+											numDaysFound++;
+											daysToSubtract = 7;
+										}
+										daysToSubtract = 1;
+										while (numDaysFound < occurance) {
+											set[zz].setDate(set[zz].getDate() - daysToSubtract);
+											if (weekdays[set[zz].getDay()] == day) {
+												numDaysFound++;
+												daysToSubtract = 7;
+											}
+										}
+									} else {
+										if (occurance) {
+											var numDaysFound = 0;
+											set[zz].setDate(1);
+											var daysToAdd = 1;
+											if (weekdays[set[zz].getDay()] == day) {
+												numDaysFound++;
+												daysToAdd = 7;
+											}
+											while (numDaysFound < occurance) {
+												set[zz].setDate(set[zz].getDate() + daysToAdd);
+												if (weekdays[set[zz].getDay()] == day) {
+													numDaysFound++;
+													daysToAdd = 7;
+												}
+											}
+										} else {
+											var numDaysFound = 0;
+											var subset = [];
+											lastDayOfMonth = new Date(set[zz]);
+											var daysInMonth = dojo.date.getDaysInMonth(set[zz]);
+											lastDayOfMonth.setDate(daysInMonth);
+											set[zz].setDate(1);
+											if (weekdays[set[zz].getDay()] == day) {
+												numDaysFound++;
+											}
+											var tmpDate = new Date(set[zz]);
+											daysToAdd = 1;
+											while (tmpDate.getDate() < lastDayOfMonth) {
+												if (weekdays[tmpDate.getDay()] == day) {
+													numDaysFound++;
+													if (numDaysFound == 1) {
+														set[zz] = tmpDate;
+													} else {
+														subset.push(tmpDate);
+														tmpDate = new Date(tmpDate);
+														daysToAdd = 7;
+														tmpDate.setDate(tmpDate.getDate() + daysToAdd);
+													}
+												} else {
+													tmpDate.setDate(tmpDate.getDate() + daysToAdd);
+												}
+											}
+											var t = set.concat(subset);
+											set = t;
+										}
+									}
+								}
+							} else {
+								var subset = [];
+								for (var zz = 0; zz < set.length; zz++) {
+									var newDate = new Date(set[zz]);
+									if (regexResult[1] == "-") {
+										if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
+											newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);
+										}
+									} else {
+										if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {
+											newDate.setDate(regexResult[2]);
+										}
+									}
+									subset.push(newDate);
+								}
+								tmp = set.concat(subset);
+								set = tmp;
+							}
+						}
+					}
+				} else {
+					dojo.debug("TODO: byday within a yearly rule without a bymonth");
+				}
+			}
+			dojo.debug("TODO: Process BYrules for units larger than frequency");
+			var tmp = recurranceSet.concat(set);
+			recurranceSet = tmp;
+		}
+	}
+	recurranceSet.push(dtstart);
+	return recurranceSet;
+}, getDate:function () {
+	return dojo.date.fromIso8601(this.dtstart.value);
+}});
+var VTimeZoneProperties = [_P("tzid", 1, true), _P("last-mod", 1), _P("tzurl", 1)];
+dojo.cal.iCalendar.VTimeZone = function (body) {
+	this.name = "VTIMEZONE";
+	this._ValidProperties = VTimeZoneProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.VTimeZone, dojo.cal.iCalendar.Component);
+var VTodoProperties = [_P("class", 1), _P("completed", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("percent", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("due", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")];
+dojo.cal.iCalendar.VTodo = function (body) {
+	this.name = "VTODO";
+	this._ValidProperties = VTodoProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.VTodo, dojo.cal.iCalendar.Component);
+var VJournalProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("last-mod", 1), _P("organizer", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("related"), _P("rstatus"), _P("rdate"), _P("rrule")];
+dojo.cal.iCalendar.VJournal = function (body) {
+	this.name = "VJOURNAL";
+	this._ValidProperties = VJournalProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.VJournal, dojo.cal.iCalendar.Component);
+var VFreeBusyProperties = [_P("contact"), _P("dtstart", 1), _P("dtend"), _P("duration"), _P("organizer", 1), _P("dtstamp", 1), _P("uid", 1), _P("url", 1), _P("attendee"), _P("comment"), _P("freebusy"), _P("rstatus")];
+dojo.cal.iCalendar.VFreeBusy = function (body) {
+	this.name = "VFREEBUSY";
+	this._ValidProperties = VFreeBusyProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.VFreeBusy, dojo.cal.iCalendar.Component);
+var VAlarmProperties = [[_P("action", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)]], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), _P("summary", 1, true), _P("attendee", "*", true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("attach", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("description", 1)]];
+dojo.cal.iCalendar.VAlarm = function (body) {
+	this.name = "VALARM";
+	this._ValidProperties = VAlarmProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+};
+dojo.inherits(dojo.cal.iCalendar.VAlarm, dojo.cal.iCalendar.Component);
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/iCalendar.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,57 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.cal.textDirectory");
+dojo.require("dojo.string");
+dojo.cal.textDirectory.Property = function (line) {
+	var left = dojo.string.trim(line.substring(0, line.indexOf(":")));
+	var right = dojo.string.trim(line.substr(line.indexOf(":") + 1));
+	var parameters = dojo.string.splitEscaped(left, ";");
+	this.name = parameters[0];
+	parameters.splice(0, 1);
+	this.params = [];
+	var arr;
+	for (var i = 0; i < parameters.length; i++) {
+		arr = parameters[i].split("=");
+		var key = dojo.string.trim(arr[0].toUpperCase());
+		if (arr.length == 1) {
+			this.params.push([key]);
+			continue;
+		}
+		var values = dojo.string.splitEscaped(arr[1], ",");
+		for (var j = 0; j < values.length; j++) {
+			if (dojo.string.trim(values[j]) != "") {
+				this.params.push([key, dojo.string.trim(values[j])]);
+			}
+		}
+	}
+	if (this.name.indexOf(".") > 0) {
+		arr = this.name.split(".");
+		this.group = arr[0];
+		this.name = arr[1];
+	}
+	this.value = right;
+};
+dojo.cal.textDirectory.tokenise = function (text) {
+	var nText = dojo.string.normalizeNewlines(text, "\n").replace(/\n[ \t]/g, "").replace(/\x00/g, "");
+	var lines = nText.split("\n");
+	var properties = [];
+	for (var i = 0; i < lines.length; i++) {
+		if (dojo.string.trim(lines[i]) == "") {
+			continue;
+		}
+		var prop = new dojo.cal.textDirectory.Property(lines[i]);
+		properties.push(prop);
+	}
+	return properties;
+};
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/cal/textDirectory.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,132 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.Axis");
+dojo.require("dojo.lang.common");
+dojo.charting.Axis = function (label, scale, labels) {
+	var id = "dojo-charting-axis-" + dojo.charting.Axis.count++;
+	this.getId = function () {
+		return id;
+	};
+	this.setId = function (key) {
+		id = key;
+	};
+	this.scale = scale || "linear";
+	this.label = label || "";
+	this.showLabel = true;
+	this.showLabels = true;
+	this.showLines = false;
+	this.showTicks = false;
+	this.range = {upper:100, lower:0};
+	this.origin = "min";
+	this._origin = null;
+	this.labels = labels || [];
+	this._labels = [];
+	this.nodes = {main:null, axis:null, label:null, labels:null, lines:null, ticks:null};
+	this._rerender = false;
+};
+dojo.charting.Axis.count = 0;
+dojo.extend(dojo.charting.Axis, {getCoord:function (val, plotArea, plot) {
+	val = parseFloat(val, 10);
+	var area = plotArea.getArea();
+	if (plot.axisX == this) {
+		var offset = 0 - this.range.lower;
+		var min = this.range.lower + offset;
+		var max = this.range.upper + offset;
+		val += offset;
+		return (val * ((area.right - area.left) / max)) + area.left;
+	} else {
+		var max = this.range.upper;
+		var min = this.range.lower;
+		var offset = 0;
+		if (min < 0) {
+			offset += Math.abs(min);
+		}
+		max += offset;
+		min += offset;
+		val += offset;
+		var pmin = area.bottom;
+		var pmax = area.top;
+		return (((pmin - pmax) / (max - min)) * (max - val)) + pmax;
+	}
+}, initializeOrigin:function (drawAgainst, plane) {
+	if (this._origin == null) {
+		this._origin = this.origin;
+	}
+	if (isNaN(this._origin)) {
+		if (this._origin.toLowerCase() == "max") {
+			this.origin = drawAgainst.range[(plane == "y") ? "upper" : "lower"];
+		} else {
+			if (this._origin.toLowerCase() == "min") {
+				this.origin = drawAgainst.range[(plane == "y") ? "lower" : "upper"];
+			} else {
+				this.origin = 0;
+			}
+		}
+	}
+}, initializeLabels:function () {
+	this._labels = [];
+	if (this.labels.length == 0) {
+		this.showLabels = false;
+		this.showLines = false;
+		this.showTicks = false;
+	} else {
+		if (this.labels[0].label && this.labels[0].value != null) {
+			for (var i = 0; i < this.labels.length; i++) {
+				this._labels.push(this.labels[i]);
+			}
+		} else {
+			if (!isNaN(this.labels[0])) {
+				for (var i = 0; i < this.labels.length; i++) {
+					this._labels.push({label:this.labels[i], value:this.labels[i]});
+				}
+			} else {
+				var a = [];
+				for (var i = 0; i < this.labels.length; i++) {
+					a.push(this.labels[i]);
+				}
+				var s = a.shift();
+				this._labels.push({label:s, value:this.range.lower});
+				if (a.length > 0) {
+					var s = a.pop();
+					this._labels.push({label:s, value:this.range.upper});
+				}
+				if (a.length > 0) {
+					var range = this.range.upper - this.range.lower;
+					var step = range / (this.labels.length - 1);
+					for (var i = 1; i <= a.length; i++) {
+						this._labels.push({label:a[i - 1], value:this.range.lower + (step * i)});
+					}
+				}
+			}
+		}
+	}
+}, initialize:function (plotArea, plot, drawAgainst, plane) {
+	this.destroy();
+	this.initializeOrigin(drawAgainst, plane);
+	this.initializeLabels();
+	var node = this.render(plotArea, plot, drawAgainst, plane);
+	return node;
+}, destroy:function () {
+	for (var p in this.nodes) {
+		while (this.nodes[p] && this.nodes[p].childNodes.length > 0) {
+			this.nodes[p].removeChild(this.nodes[p].childNodes[0]);
+		}
+		if (this.nodes[p] && this.nodes[p].parentNode) {
+			this.nodes[p].parentNode.removeChild(this.nodes[p]);
+		}
+		this.nodes[p] = null;
+	}
+}});
+dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Axis");
+dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Axis");
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Axis.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,64 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.Chart");
+dojo.require("dojo.lang.common");
+dojo.require("dojo.charting.PlotArea");
+dojo.charting.Chart = function (node, title, description) {
+	this.node = node || null;
+	this.title = title || "Chart";
+	this.description = description || "";
+	this.plotAreas = [];
+};
+dojo.extend(dojo.charting.Chart, {addPlotArea:function (obj, doRender) {
+	if (obj.x != null && obj.left == null) {
+		obj.left = obj.x;
+	}
+	if (obj.y != null && obj.top == null) {
+		obj.top = obj.y;
+	}
+	this.plotAreas.push(obj);
+	if (doRender) {
+		this.render();
+	}
+}, onInitialize:function (chart) {
+}, onRender:function (chart) {
+}, onDestroy:function (chart) {
+}, initialize:function () {
+	if (!this.node) {
+		dojo.raise("dojo.charting.Chart.initialize: there must be a root node defined for the Chart.");
+	}
+	this.destroy();
+	this.render();
+	this.onInitialize(this);
+}, render:function () {
+	if (this.node.style.position != "absolute") {
+		this.node.style.position = "relative";
+	}
+	for (var i = 0; i < this.plotAreas.length; i++) {
+		var area = this.plotAreas[i].plotArea;
+		var node = area.initialize();
+		node.style.position = "absolute";
+		node.style.top = this.plotAreas[i].top + "px";
+		node.style.left = this.plotAreas[i].left + "px";
+		this.node.appendChild(node);
+		area.render();
+	}
+}, destroy:function () {
+	for (var i = 0; i < this.plotAreas.length; i++) {
+		this.plotAreas[i].plotArea.destroy();
+	}
+	while (this.node && this.node.childNodes && this.node.childNodes.length > 0) {
+		this.node.removeChild(this.node.childNodes[0]);
+	}
+}});
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Chart.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,82 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.Plot");
+dojo.require("dojo.lang.common");
+dojo.require("dojo.charting.Axis");
+dojo.require("dojo.charting.Series");
+dojo.charting.RenderPlotSeries = {Singly:"single", Grouped:"grouped"};
+dojo.charting.Plot = function (xaxis, yaxis, series) {
+	var id = "dojo-charting-plot-" + dojo.charting.Plot.count++;
+	this.getId = function () {
+		return id;
+	};
+	this.setId = function (key) {
+		id = key;
+	};
+	this.axisX = null;
+	this.axisY = null;
+	this.series = [];
+	this.dataNode = null;
+	this.renderType = dojo.charting.RenderPlotSeries.Singly;
+	if (xaxis) {
+		this.setAxis(xaxis, "x");
+	}
+	if (yaxis) {
+		this.setAxis(yaxis, "y");
+	}
+	if (series) {
+		for (var i = 0; i < series.length; i++) {
+			this.addSeries(series[i]);
+		}
+	}
+};
+dojo.charting.Plot.count = 0;
+dojo.extend(dojo.charting.Plot, {addSeries:function (series, plotter) {
+	if (series.plotter) {
+		this.series.push(series);
+	} else {
+		this.series.push({data:series, plotter:plotter || dojo.charting.Plotters["Default"]});
+	}
+}, setAxis:function (axis, which) {
+	if (which.toLowerCase() == "x") {
+		this.axisX = axis;
+	} else {
+		if (which.toLowerCase() == "y") {
+			this.axisY = axis;
+		}
+	}
+}, getRanges:function () {
+	var xmin, xmax, ymin, ymax;
+	xmin = ymin = Number.MAX_VALUE;
+	xmax = ymax = Number.MIN_VALUE;
+	for (var i = 0; i < this.series.length; i++) {
+		var values = this.series[i].data.evaluate();
+		for (var j = 0; j < values.length; j++) {
+			var comp = values[j];
+			xmin = Math.min(comp.x, xmin);
+			ymin = Math.min(comp.y, ymin);
+			xmax = Math.max(comp.x, xmax);
+			ymax = Math.max(comp.y, ymax);
+		}
+	}
+	return {x:{upper:xmax, lower:xmin}, y:{upper:ymax, lower:ymin}, toString:function () {
+		return "[ x:" + xmax + " - " + xmin + ", y:" + ymax + " - " + ymin + "]";
+	}};
+}, destroy:function () {
+	var node = this.dataNode;
+	while (node && node.childNodes && node.childNodes.length > 0) {
+		node.removeChild(node.childNodes[0]);
+	}
+	this.dataNode = null;
+}});
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plot.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,137 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.PlotArea");
+dojo.require("dojo.lang.common");
+dojo.require("dojo.gfx.color");
+dojo.require("dojo.gfx.color.hsl");
+dojo.require("dojo.charting.Plot");
+dojo.charting.PlotArea = function () {
+	var id = "dojo-charting-plotarea-" + dojo.charting.PlotArea.count++;
+	this.getId = function () {
+		return id;
+	};
+	this.setId = function (key) {
+		id = key;
+	};
+	this.areaType = "standard";
+	this.plots = [];
+	this.size = {width:600, height:400};
+	this.padding = {top:10, right:10, bottom:20, left:20};
+	this.nodes = {main:null, area:null, background:null, axes:null, plots:null};
+	this._color = {h:140, s:120, l:120, step:27};
+};
+dojo.charting.PlotArea.count = 0;
+dojo.extend(dojo.charting.PlotArea, {nextColor:function () {
+	var rgb = dojo.gfx.color.hsl2rgb(this._color.h, this._color.s, this._color.l);
+	this._color.h = (this._color.h + this._color.step) % 360;
+	while (this._color.h < 140) {
+		this._color.h += this._color.step;
+	}
+	return dojo.gfx.color.rgb2hex(rgb[0], rgb[1], rgb[2]);
+}, getArea:function () {
+	return {left:this.padding.left, right:this.size.width - this.padding.right, top:this.padding.top, bottom:this.size.height - this.padding.bottom, toString:function () {
+		var a = [this.top, this.right, this.bottom, this.left];
+		return "[" + a.join() + "]";
+	}};
+}, getAxes:function () {
+	var axes = {};
+	for (var i = 0; i < this.plots.length; i++) {
+		var plot = this.plots[i];
+		axes[plot.axisX.getId()] = {axis:plot.axisX, drawAgainst:plot.axisY, plot:plot, plane:"x"};
+		axes[plot.axisY.getId()] = {axis:plot.axisY, drawAgainst:plot.axisX, plot:plot, plane:"y"};
+	}
+	return axes;
+}, getLegendInfo:function () {
+	var a = [];
+	for (var i = 0; i < this.plots.length; i++) {
+		for (var j = 0; j < this.plots[i].series.length; j++) {
+			var data = this.plots[i].series[j].data;
+			a.push({label:data.label, color:data.color});
+		}
+	}
+	return a;
+}, setAxesRanges:function () {
+	var ranges = {};
+	var axes = {};
+	for (var i = 0; i < this.plots.length; i++) {
+		var plot = this.plots[i];
+		var ranges = plot.getRanges();
+		var x = ranges.x;
+		var y = ranges.y;
+		var ax, ay;
+		if (!axes[plot.axisX.getId()]) {
+			axes[plot.axisX.getId()] = plot.axisX;
+			ranges[plot.axisX.getId()] = {upper:x.upper, lower:x.lower};
+		}
+		ax = ranges[plot.axisX.getId()];
+		ax.upper = Math.max(ax.upper, x.upper);
+		ax.lower = Math.min(ax.lower, x.lower);
+		if (!axes[plot.axisY.getId()]) {
+			axes[plot.axisY.getId()] = plot.axisY;
+			ranges[plot.axisY.getId()] = {upper:y.upper, lower:y.lower};
+		}
+		ay = ranges[plot.axisY.getId()];
+		ay.upper = Math.max(ay.upper, y.upper);
+		ay.lower = Math.min(ay.lower, y.lower);
+	}
+	for (var p in axes) {
+		axes[p].range = ranges[p];
+	}
+}, render:function (kwArgs, applyToData) {
+	if (!this.nodes.main || !this.nodes.area || !this.nodes.background || !this.nodes.plots || !this.nodes.axes) {
+		this.initialize();
+	}
+	this.resize();
+	for (var i = 0; i < this.plots.length; i++) {
+		var plot = this.plots[i];
+		if (plot.dataNode) {
+			this.nodes.plots.removeChild(plot.dataNode);
+		}
+		var target = this.initializePlot(plot);
+		switch (plot.renderType) {
+		  case dojo.charting.RenderPlotSeries.Grouped:
+			if (plot.series[0]) {
+				target.appendChild(plot.series[0].plotter(this, plot, kwArgs, applyToData));
+			}
+			break;
+		  case dojo.charting.RenderPlotSeries.Singly:
+		  default:
+			for (var j = 0; j < plot.series.length; j++) {
+				var series = plot.series[j];
+				var data = series.data.evaluate(kwArgs);
+				target.appendChild(series.plotter(data, this, plot, applyToData));
+			}
+		}
+		this.nodes.plots.appendChild(target);
+	}
+}, destroy:function () {
+	for (var i = 0; i < this.plots.length; i++) {
+		this.plots[i].destroy();
+	}
+	for (var p in this.nodes) {
+		var node = this.nodes[p];
+		if (!node) {
+			continue;
+		}
+		if (!node.childNodes) {
+			continue;
+		}
+		while (node.childNodes.length > 0) {
+			node.removeChild(node.childNodes[0]);
+		}
+		this.nodes[p] = null;
+	}
+}});
+dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.PlotArea");
+dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.PlotArea");
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/PlotArea.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,16 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.Plotters");
+dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Plotters");
+dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Plotters");
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Plotters.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt Thu Jul 16 19:14:41 2009
@@ -0,0 +1,46 @@
+Dojo Charting Engine
+=========================================================================
+The Dojo Charting Engine is a (fairly) complex object structure, designed
+to provide as much flexibility as possible in terms of chart construction.
+To this end, the engine details the following structure:
+
+Chart
+---PlotArea[]
+------Plot[]
+---------Axis (axisX)
+---------Axis (axisY)
+---------Series[]
+
+
+A Chart object is the main entity; it is the entire graphic.  A Chart may
+have any number of PlotArea objects, which are the basic canvas against 
+which data is plotted.  A PlotArea may have any number of Plot objects,
+which is a container representing up to 2 axes and any number of series
+to be plotted against those axes; a Series represents a binding against
+two fields from a data source (initial rev, this data source is always of
+type dojo.collections.Store but this will probably change once dojo.data
+is in production).
+
+The point of this structure is to allow for as much flexibility as possible
+in terms of what kinds of charts can be represented by the engine.  The
+current plan is to accomodate up to analytical financial charts, which tend
+to have 3 plot areas and any number of different types of axes on each one.
+
+The main exception to this is the pie chart, which will have it's own
+custom codebase.  Also, 3D charts are not accounted for at this time,
+although the only thing that will probably need to be altered to make
+that work would be Plot and Series (to accomodate the additional Z axis).
+
+Finally, a Plot will render its series[] through the use of Plotters, which
+are custom methods to render specific types of charts.
+-------------------------------------------------------------------------
+In terms of widgets, the basic concept is that there is a central, super-
+flexible Chart widget (Chart, oddly enough), and then any number of preset
+chart type widgets, that are basically built to serve a simple, easy 
+purpose.  For instance, if someone just needs to plot a series of lines,
+they would be better off using the LineChart widget; but if someone needed
+to plot a combo chart, that has 2 Y Axes (one linear, one log) against the
+same X Axis, using lines and areas, then they will want to use a Chart widget.
+Note also that unlike other widgets, the Charting engine *can* be called
+directly from script *without* the need for the actual widget engine to be
+loaded; the Chart widgets are thin wrappers around the charting engine.
\ No newline at end of file

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/README.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,194 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.Series");
+dojo.require("dojo.lang.common");
+dojo.require("dojo.charting.Plotters");
+dojo.charting.Series = function (kwArgs) {
+	var args = kwArgs || {length:1};
+	this.dataSource = args.dataSource || null;
+	this.bindings = {};
+	this.color = args.color;
+	this.label = args.label;
+	if (args.bindings) {
+		for (var p in args.bindings) {
+			this.addBinding(p, args.bindings[p]);
+		}
+	}
+};
+dojo.extend(dojo.charting.Series, {bind:function (src, bindings) {
+	this.dataSource = src;
+	this.bindings = bindings;
+}, addBinding:function (name, binding) {
+	this.bindings[name] = binding;
+}, evaluate:function (kwArgs) {
+	var ret = [];
+	var a = this.dataSource.getData();
+	var l = a.length;
+	var start = 0;
+	var end = l;
+	if (kwArgs) {
+		if (kwArgs.between) {
+			for (var i = 0; i < l; i++) {
+				var fld = this.dataSource.getField(a[i], kwArgs.between.field);
+				if (fld >= kwArgs.between.low && fld <= kwArgs.between.high) {
+					var o = {src:a[i], series:this};
+					for (var p in this.bindings) {
+						o[p] = this.dataSource.getField(a[i], this.bindings[p]);
+					}
+					ret.push(o);
+				}
+			}
+		} else {
+			if (kwArgs.from || kwArgs.length) {
+				if (kwArgs.from) {
+					start = Math.max(kwArgs.from, 0);
+					if (kwArgs.to) {
+						end = Math.min(kwArgs.to, end);
+					}
+				} else {
+					if (kwArgs.length < 0) {
+						start = Math.max((end + length), 0);
+					} else {
+						end = Math.min((start + length), end);
+					}
+				}
+				for (var i = start; i < end; i++) {
+					var o = {src:a[i], series:this};
+					for (var p in this.bindings) {
+						o[p] = this.dataSource.getField(a[i], this.bindings[p]);
+					}
+					ret.push(o);
+				}
+			}
+		}
+	} else {
+		for (var i = start; i < end; i++) {
+			var o = {src:a[i], series:this};
+			for (var p in this.bindings) {
+				o[p] = this.dataSource.getField(a[i], this.bindings[p]);
+			}
+			ret.push(o);
+		}
+	}
+	if (ret.length > 0 && typeof (ret[0].x) != "undefined") {
+		ret.sort(function (a, b) {
+			if (a.x > b.x) {
+				return 1;
+			}
+			if (a.x < b.x) {
+				return -1;
+			}
+			return 0;
+		});
+	}
+	return ret;
+}, trends:{createRange:function (values, len) {
+	var idx = values.length - 1;
+	var length = (len || values.length);
+	return {"index":idx, "length":length, "start":Math.max(idx - length, 0)};
+}, mean:function (values, len) {
+	var range = this.createRange(values, len);
+	if (range.index < 0) {
+		return 0;
+	}
+	var total = 0;
+	var count = 0;
+	for (var i = range.index; i >= range.start; i--) {
+		total += values[i].y;
+		count++;
+	}
+	total /= Math.max(count, 1);
+	return total;
+}, variance:function (values, len) {
+	var range = this.createRange(values, len);
+	if (range.index < 0) {
+		return 0;
+	}
+	var total = 0;
+	var square = 0;
+	var count = 0;
+	for (var i = range.index; i >= range.start; i--) {
+		total += values[i].y;
+		square += Math.pow(values[i].y, 2);
+		count++;
+	}
+	return (square / count) - Math.pow(total / count, 2);
+}, standardDeviation:function (values, len) {
+	return Math.sqrt(this.getVariance(values, len));
+}, max:function (values, len) {
+	var range = this.createRange(values, len);
+	if (range.index < 0) {
+		return 0;
+	}
+	var max = Number.MIN_VALUE;
+	for (var i = range.index; i >= range.start; i--) {
+		max = Math.max(values[i].y, max);
+	}
+	return max;
+}, min:function (values, len) {
+	var range = this.createRange(values, len);
+	if (range.index < 0) {
+		return 0;
+	}
+	var min = Number.MAX_VALUE;
+	for (var i = range.index; i >= range.start; i--) {
+		min = Math.min(values[i].y, min);
+	}
+	return min;
+}, median:function (values, len) {
+	var range = this.createRange(values, len);
+	if (range.index < 0) {
+		return 0;
+	}
+	var a = [];
+	for (var i = range.index; i >= range.start; i--) {
+		var b = false;
+		for (var j = 0; j < a.length; j++) {
+			if (values[i].y == a[j]) {
+				b = true;
+				break;
+			}
+		}
+		if (!b) {
+			a.push(values[i].y);
+		}
+	}
+	a.sort();
+	if (a.length > 0) {
+		return a[Math.ceil(a.length / 2)];
+	}
+	return 0;
+}, mode:function (values, len) {
+	var range = this.createRange(values, len);
+	if (range.index < 0) {
+		return 0;
+	}
+	var o = {};
+	var ret = 0;
+	var median = Number.MIN_VALUE;
+	for (var i = range.index; i >= range.start; i--) {
+		if (!o[values[i].y]) {
+			o[values[i].y] = 1;
+		} else {
+			o[values[i].y]++;
+		}
+	}
+	for (var p in o) {
+		if (median < o[p]) {
+			median = o[p];
+			ret = p;
+		}
+	}
+	return ret;
+}}});
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/Series.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,14 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.*");
+

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/__package__.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/svg/Axis.js
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/svg/Axis.js?rev=794787&view=auto
==============================================================================
--- geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/svg/Axis.js (added)
+++ geronimo/external/trunk/geronimo-dojo-0.4.3/src/main/webapp/src/charting/svg/Axis.js Thu Jul 16 19:14:41 2009
@@ -0,0 +1,188 @@
+/*
+	Copyright (c) 2004-2006, The Dojo Foundation
+	All Rights Reserved.
+
+	Licensed under the Academic Free License version 2.1 or above OR the
+	modified BSD license. For more information on Dojo licensing, see:
+
+		http://dojotoolkit.org/community/licensing.shtml
+*/
+
+
+
+dojo.provide("dojo.charting.svg.Axis");
+dojo.require("dojo.lang.common");
+if (dojo.render.svg.capable) {
+	dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) {
+		if (this.nodes.lines) {
+			while (this.nodes.lines.childNodes.length > 0) {
+				this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
+			}
+			if (this.nodes.lines.parentNode) {
+				this.nodes.lines.parentNode.removeChild(this.nodes.lines);
+				this.nodes.lines = null;
+			}
+		}
+		var area = plotArea.getArea();
+		var g = this.nodes.lines = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		g.setAttribute("id", this.getId() + "-lines");
+		for (var i = 0; i < this._labels.length; i++) {
+			if (this._labels[i].value == this.origin) {
+				continue;
+			}
+			var v = this.getCoord(this._labels[i].value, plotArea, plot);
+			var l = document.createElementNS(dojo.svg.xmlns.svg, "line");
+			l.setAttribute("style", "stroke:#999;stroke-width:1px;stroke-dasharray:1,4;");
+			if (plane == "x") {
+				l.setAttribute("y1", area.top);
+				l.setAttribute("y2", area.bottom);
+				l.setAttribute("x1", v);
+				l.setAttribute("x2", v);
+			} else {
+				if (plane == "y") {
+					l.setAttribute("y1", v);
+					l.setAttribute("y2", v);
+					l.setAttribute("x1", area.left);
+					l.setAttribute("x2", area.right);
+				}
+			}
+			g.appendChild(l);
+		}
+		return g;
+	}, renderTicks:function (plotArea, plot, plane, coord) {
+		if (this.nodes.ticks) {
+			while (this.nodes.ticks.childNodes.length > 0) {
+				this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
+			}
+			if (this.nodes.ticks.parentNode) {
+				this.nodes.ticks.parentNode.removeChild(this.nodes.ticks);
+				this.nodes.ticks = null;
+			}
+		}
+		var g = this.nodes.ticks = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		g.setAttribute("id", this.getId() + "-ticks");
+		for (var i = 0; i < this._labels.length; i++) {
+			var v = this.getCoord(this._labels[i].value, plotArea, plot);
+			var l = document.createElementNS(dojo.svg.xmlns.svg, "line");
+			l.setAttribute("style", "stroke:#000;stroke-width:1pt;");
+			if (plane == "x") {
+				l.setAttribute("y1", coord);
+				l.setAttribute("y2", coord + 3);
+				l.setAttribute("x1", v);
+				l.setAttribute("x2", v);
+			} else {
+				if (plane == "y") {
+					l.setAttribute("y1", v);
+					l.setAttribute("y2", v);
+					l.setAttribute("x1", coord - 2);
+					l.setAttribute("x2", coord + 2);
+				}
+			}
+			g.appendChild(l);
+		}
+		return g;
+	}, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) {
+		function createLabel(label, x, y, textSize, anchor) {
+			var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+			text.setAttribute("x", x);
+			text.setAttribute("y", (plane == "x" ? y : y + 2));
+			text.setAttribute("style", "text-anchor:" + anchor + ";font-family:sans-serif;font-size:" + textSize + "px;fill:#000;");
+			text.appendChild(document.createTextNode(label));
+			return text;
+		}
+		if (this.nodes.labels) {
+			while (this.nodes.labels.childNodes.length > 0) {
+				this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]);
+			}
+			if (this.nodes.labels.parentNode) {
+				this.nodes.labels.parentNode.removeChild(this.nodes.labels);
+				this.nodes.labels = null;
+			}
+		}
+		var g = this.nodes.labels = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		g.setAttribute("id", this.getId() + "-labels");
+		for (var i = 0; i < this._labels.length; i++) {
+			var v = this.getCoord(this._labels[i].value, plotArea, plot);
+			if (plane == "x") {
+				g.appendChild(createLabel(this._labels[i].label, v, coord, textSize, anchor));
+			} else {
+				if (plane == "y") {
+					g.appendChild(createLabel(this._labels[i].label, coord, v, textSize, anchor));
+				}
+			}
+		}
+		return g;
+	}, render:function (plotArea, plot, drawAgainst, plane) {
+		if (!this._rerender && this.nodes.main) {
+			return this.nodes.main;
+		}
+		this._rerender = false;
+		var area = plotArea.getArea();
+		var stroke = 1;
+		var style = "stroke:#000;stroke-width:" + stroke + "px;";
+		var textSize = 10;
+		var coord = drawAgainst.getCoord(this.origin, plotArea, plot);
+		this.nodes.main = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		var g = this.nodes.main;
+		g.setAttribute("id", this.getId());
+		var line = this.nodes.axis = document.createElementNS(dojo.svg.xmlns.svg, "line");
+		if (plane == "x") {
+			line.setAttribute("y1", coord);
+			line.setAttribute("y2", coord);
+			line.setAttribute("x1", area.left - stroke);
+			line.setAttribute("x2", area.right + stroke);
+			line.setAttribute("style", style);
+			var y = coord + textSize + 2;
+			if (this.showLines) {
+				g.appendChild(this.renderLines(plotArea, plot, plane, y));
+			}
+			if (this.showTicks) {
+				g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
+			}
+			if (this.showLabels) {
+				g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "middle"));
+			}
+			if (this.showLabel && this.label) {
+				var x = plotArea.size.width / 2;
+				var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+				text.setAttribute("x", x);
+				text.setAttribute("y", (coord + (textSize * 2) + (textSize / 2)));
+				text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;");
+				text.appendChild(document.createTextNode(this.label));
+				g.appendChild(text);
+			}
+		} else {
+			line.setAttribute("x1", coord);
+			line.setAttribute("x2", coord);
+			line.setAttribute("y1", area.top);
+			line.setAttribute("y2", area.bottom);
+			line.setAttribute("style", style);
+			var isMax = this.origin == drawAgainst.range.upper;
+			var x = coord + (isMax ? 4 : -4);
+			var anchor = isMax ? "start" : "end";
+			if (this.showLines) {
+				g.appendChild(this.renderLines(plotArea, plot, plane, x));
+			}
+			if (this.showTicks) {
+				g.appendChild(this.renderTicks(plotArea, plot, plane, coord));
+			}
+			if (this.showLabels) {
+				g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor));
+			}
+			if (this.showLabel && this.label) {
+				var x = isMax ? (coord + (textSize * 2) + (textSize / 2)) : (coord - (textSize * 4));
+				var y = plotArea.size.height / 2;
+				var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+				text.setAttribute("x", x);
+				text.setAttribute("y", y);
+				text.setAttribute("transform", "rotate(90, " + x + ", " + y + ")");
+				text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;");
+				text.appendChild(document.createTextNode(this.label));
+				g.appendChild(text);
+			}
+		}
+		g.appendChild(line);
+		return g;
+	}});
+}
+