You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sv...@apache.org on 2006/11/10 10:15:40 UTC

svn commit: r473277 [5/45] - in /myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource: ./ src/ src/animation/ src/cal/ src/charting/ src/charting/svg/ src/charting/vml/ src/collections/ src/crypto/ src/data/ src/data/c...

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/flash6_gateway.swf
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/flash6_gateway.swf?view=auto&rev=473277
==============================================================================
Binary file - no diff available.

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/flash6_gateway.swf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/iframe_history.html
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/iframe_history.html?view=auto&rev=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/iframe_history.html (added)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/iframe_history.html Fri Nov 10 01:15:01 2006
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+	<script type="text/javascript">
+	// <!--
+	var noInit = false;
+	var domain = "";
+	// document.domain = "localhost";
+	function init(){
+		// parse the query string if there is one to try to get args that
+		// we can act on
+		var sparams = document.location.search;
+		if(sparams.length >= 0){
+			if(sparams.charAt(0) == "?"){
+				sparams = sparams.substring(1);
+			}
+			var ss = (sparams.indexOf("&amp;") >= 0) ? "&amp;" : "&";
+			sparams = sparams.split(ss);
+			for(var x=0; x<sparams.length; x++){
+				var tp = sparams[x].split("=");
+				if(typeof window[tp[0]] != "undefined"){
+					window[tp[0]] = ((tp[1]=="true")||(tp[1]=="false")) ? eval(tp[1]) : tp[1];
+				}
+			}
+		}
+
+		if(noInit){ return; }
+		if(domain.length > 0){
+			document.domain = domain;
+		}
+		if((window.parent != window)&&(window.parent["dojo"])){
+			//Set the page title so IE history shows up with a somewhat correct name.
+			document.title = window.parent.document.title;
+			
+			//Notify parent that we are loaded.
+			var pdj = window.parent.dojo;
+			if(pdj["undo"] && pdj["undo"]["browser"]){
+				pdj.undo.browser.iframeLoaded(null, window.location);
+			}
+		}
+	}
+	// -->
+	</script>
+</head>
+<body onload="try{ init(); }catch(e){ alert(e); }">
+	<h4>The Dojo Toolkit -- iframe_history.html</h4>
+
+	<p>This file is used in Dojo's back/fwd button management.</p>
+</body>
+</html>

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/AdapterRegistry.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/AdapterRegistry.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/AdapterRegistry.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/AdapterRegistry.js Fri Nov 10 01:15:01 2006
@@ -11,62 +11,79 @@
 dojo.provide("dojo.AdapterRegistry");
 dojo.require("dojo.lang.func");
 
-dojo.AdapterRegistry = function(){
-    /***
-        A registry to facilitate adaptation.
-
-        Pairs is an array of [name, check, wrap] triples
-        
-        All check/wrap functions in this registry should be of the same arity.
-    ***/
-    this.pairs = [];
+dojo.AdapterRegistry = function(/*boolean, optional*/returnWrappers){
+	// summary:
+	//		A registry to make contextual calling/searching easier.
+	// description:
+	//		Objects of this class keep list of arrays in the form [name, check,
+	//		wrap, directReturn] that are used to determine what the contextual
+	//		result of a set of checked arguments is. All check/wrap functions
+	//		in this registry should be of the same arity.
+	this.pairs = [];
+	this.returnWrappers = returnWrappers || false;
 }
 
 dojo.lang.extend(dojo.AdapterRegistry, {
-    register: function (name, check, wrap, /* optional */ override){
-        /***
-			The check function should return true if the given arguments are
-			appropriate for the wrap function.
-
-			If override is given and true, the check function will be given
-			highest priority.  Otherwise, it will be the lowest priority
-			adapter.
-        ***/
-
-        if (override) {
-            this.pairs.unshift([name, check, wrap]);
-        } else {
-            this.pairs.push([name, check, wrap]);
-        }
-    },
-
-    match: function (/* ... */) {
-        /***
-			Find an adapter for the given arguments.
-
-			If no suitable adapter is found, throws NotFound.
-        ***/
-        for(var i = 0; i < this.pairs.length; i++){
-            var pair = this.pairs[i];
-            if(pair[1].apply(this, arguments)){
-                return pair[2].apply(this, arguments);
-            }
-        }
+	register: function(	/*string*/ name, /*function*/ check, /*function*/ wrap, 
+						/*boolean, optional*/ directReturn, 
+						/*boolean, optional*/ override){
+		// summary: 
+		//		register a check function to determine if the wrap function or
+		//		object gets selected
+		// name: a way to identify this matcher.
+		// check:
+		//		a function that arguments are passed to from the adapter's
+		//		match() function.  The check function should return true if the
+		//		given arguments are appropriate for the wrap function.
+		// directReturn:
+		//		If directReturn is true, the value passed in for wrap will be
+		//		returned instead of being called. Alternately, the
+		//		AdapterRegistry can be set globally to "return not call" using
+		//		the returnWrappers property. Either way, this behavior allows
+		//		the registry to act as a "search" function instead of a
+		//		function interception library.
+		// override:
+		//		If override is given and true, the check function will be given
+		//		highest priority. Otherwise, it will be the lowest priority
+		//		adapter.
+
+		var type = (override) ? "unshift" : "push";
+		this.pairs[type]([name, check, wrap, directReturn]);
+	},
+
+	match: function(/* ... */){
+        // summary:
+		//		Find an adapter for the given arguments. If no suitable adapter
+		//		is found, throws an exception. match() accepts any number of
+		//		arguments, all of which are passed to all matching functions
+		//		from the registered pairs.
+		for(var i = 0; i < this.pairs.length; i++){
+			var pair = this.pairs[i];
+			if(pair[1].apply(this, arguments)){
+				if((pair[3])||(this.returnWrappers)){
+					return pair[2];
+				}else{
+					return pair[2].apply(this, arguments);
+				}
+			}
+		}
 		throw new Error("No match found");
-        // dojo.raise("No match found");
-    },
+		// dojo.raise("No match found");
+	},
+
+	unregister: function(name){
+		// summary: Remove a named adapter from the registry
 
-    unregister: function (name) {
-        /***
-			Remove a named adapter from the registry
-        ***/
-        for(var i = 0; i < this.pairs.length; i++){
-            var pair = this.pairs[i];
-            if(pair[0] == name){
-                this.pairs.splice(i, 1);
-                return true;
-            }
-        }
-        return false;
-    }
+		// FIXME: this is kind of a dumb way to handle this. On a large
+		// registry this will be slow-ish and we can use the name as a lookup
+		// should we choose to trade memory for speed.
+		for(var i = 0; i < this.pairs.length; i++){
+			var pair = this.pairs[i];
+			if(pair[0] == name){
+				this.pairs.splice(i, 1);
+				return true;
+			}
+		}
+		return false;
+	}
 });

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/Deferred.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/Deferred.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/Deferred.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/Deferred.js Fri Nov 10 01:15:01 2006
@@ -126,6 +126,12 @@
 		return null;
 	},
 
+	makeCalled: function() {
+		var deferred = new dojo.Deferred();
+		deferred.callback();
+		return deferred;
+	},
+
 	repr: function(){
 		var state;
 		if(this.fired == -1){

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js?view=auto&rev=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js (added)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js Fri Nov 10 01:15:01 2006
@@ -0,0 +1,88 @@
+/*
+	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.require("dojo.Deferred");
+
+dojo.provide("dojo.DeferredList");
+
+
+dojo.DeferredList = function (list, /*bool?*/ fireOnOneCallback, /*bool?*/ fireOnOneErrback, /*bool?*/ consumeErrors, /*Function?*/ canceller) {
+    this.list = list;
+    this.resultList = new Array(this.list.length);
+
+    // Deferred init
+    this.chain = [];
+    this.id = this._nextId();
+    this.fired = -1;
+    this.paused = 0;
+    this.results = [null, null];
+    this.canceller = canceller;
+    this.silentlyCancelled = false;
+    
+    if (this.list.length === 0 && !fireOnOneCallback) {
+        this.callback(this.resultList);
+    }
+    
+    this.finishedCount = 0;
+    this.fireOnOneCallback = fireOnOneCallback;
+    this.fireOnOneErrback = fireOnOneErrback;
+    this.consumeErrors = consumeErrors;
+
+    var index = 0;
+    
+    var _this = this;
+    
+    dojo.lang.forEach(this.list, function(d) {
+        var _index = index;
+        //dojo.debug("add cb/errb index "+_index);
+        d.addCallback(function(r) { _this._cbDeferred(_index, true, r) });
+        d.addErrback(function(r) { _this._cbDeferred(_index, false, r) });
+        index++;
+    });
+                      
+};
+
+
+dojo.inherits(dojo.DeferredList, dojo.Deferred);
+
+dojo.lang.extend(dojo.DeferredList, {
+
+    _cbDeferred: function (index, succeeded, result) {
+        //dojo.debug("Fire "+index+" succ "+succeeded+" res "+result);
+        this.resultList[index] = [succeeded, result];
+        this.finishedCount += 1;
+        if (this.fired !== 0) {
+            if (succeeded && this.fireOnOneCallback) {
+                this.callback([index, result]);
+            } else if (!succeeded && this.fireOnOneErrback) {
+                this.errback(result);
+            } else if (this.finishedCount == this.list.length) {
+                this.callback(this.resultList);
+            }
+        }
+        if (!succeeded && this.consumeErrors) {
+            result = null;
+        }
+        return result;
+    },
+    
+    gatherResults: function (deferredList) {
+        var d = new dojo.DeferredList(deferredList, false, true, false);
+        d.addCallback(function (results) {
+            var ret = [];
+            for (var i = 0; i < results.length; i++) {
+                ret.push(results[i][1]);
+            }
+            return ret;
+        });
+        return d;
+    }
+});
+

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js
------------------------------------------------------------------------------
    svn:keywords = "Id Author LastChangedDate LastChangedBy LastChangedRevision"

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/DeferredList.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js?view=auto&rev=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js (added)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js Fri Nov 10 01:15:01 2006
@@ -0,0 +1,103 @@
+/*
+	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.a11y");
+
+dojo.require("dojo.uri.*");
+dojo.require("dojo.html.common");
+
+dojo.a11y = {
+	// imgPath: String path to the test image for determining if images are displayed or not
+	// doAccessibleCheck: Boolean if true will perform check for need to create accessible widgets
+	// accessible: Boolean uninitialized when null (accessible check has not been performed)
+	//   if true generate accessible widgets
+	imgPath:dojo.uri.dojoUri("src/widget/templates/images"),
+	doAccessibleCheck: true,
+	accessible: null,		
+
+	checkAccessible: function(){ 
+	// summary: 
+	//		perform check for accessibility if accessibility checking is turned
+	//		on and the accessibility test has not been performed yet
+		if(this.accessible === null){ 
+			this.accessible = false; //default
+			if(this.doAccessibleCheck == true){ 
+				this.accessible = this.testAccessible();
+			}
+		}
+		return this.accessible; /* Boolean */
+	},
+	
+	testAccessible: function(){
+	// summary: 
+	//		Always perform the accessibility check to determine if high 
+	//		contrast mode is on or display of images are turned off. Currently only checks 
+	//		in IE and Mozilla. 
+		this.accessible = false; //default
+		if (dojo.render.html.ie || dojo.render.html.mozilla){
+			var div = document.createElement("div");
+			//div.style.color="rgb(153,204,204)";
+			div.style.backgroundImage = "url(\"" + this.imgPath + "/tab_close.gif\")";
+			// must add to hierarchy before can view currentStyle below
+			dojo.body().appendChild(div);
+			// in FF and IE the value for the current background style of the added div
+			// will be "none" in high contrast mode
+			// in FF the return value will be url(invalid-url:) when running over http 
+			var bkImg = null;
+			if (window.getComputedStyle  ) {
+				var cStyle = getComputedStyle(div, ""); 
+				bkImg = cStyle.getPropertyValue("background-image");
+			}else{
+				bkImg = div.currentStyle.backgroundImage;
+			}
+			var bUseImgElem = false;
+			if (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" )) {
+				this.accessible = true;
+			}
+			/*
+			if(this.accessible == false && document.images){
+				// test if images are off in IE
+				var testImg = new Image();
+				if(testImg.fileSize) {
+					testImg.src = this.imgPath + "/tab_close.gif";
+					if(testImg.fileSize < 0){ 
+						this.accessible = true;
+					}
+				}	
+			}*/
+			dojo.body().removeChild(div);
+		}
+		return this.accessible; /* Boolean */
+	},
+	
+	setCheckAccessible: function(/* Boolean */ bTest){ 
+	// summary: 
+	//		Set whether or not to check for accessibility mode.  Default value
+	//		of module is true - perform check for accessibility modes. 
+	//		bTest: Boolean - true to check; false to turn off checking
+		this.doAccessibleCheck = bTest;
+	},
+
+	setAccessibleMode: function(){
+	// summary:
+	//		perform the accessibility check and sets the correct mode to load 
+	//		a11y widgets. Only runs if test for accessiiblity has not been performed yet. 
+	//		Call testAccessible() to force the test.
+		if (this.accessible === null){
+			if (this.checkAccessible()){
+				dojo.render.html.prefixes.unshift("a11y");
+			}
+		}
+		return this.accessible; /* Boolean */
+	}
+};
+
+//dojo.hostenv.modulesLoadedListeners.unshift(function() { dojo.a11y.setAccessibleMode(); });
+//dojo.event.connect("before", dojo.hostenv, "makeWidgets", dojo.a11y, "setAccessibleMode");

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js
------------------------------------------------------------------------------
    svn:keywords = "Id Author LastChangedDate LastChangedBy LastChangedRevision"

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/a11y.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation.js Fri Nov 10 01:15:01 2006
@@ -10,3 +10,5 @@
 
 dojo.provide("dojo.animation");
 dojo.require("dojo.animation.Animation");
+
+dojo.deprecated("dojo.animation is slated for removal in 0.5; use dojo.lfx instead.", "0.5");

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Animation.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Animation.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Animation.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Animation.js Fri Nov 10 01:15:01 2006
@@ -15,13 +15,23 @@
 dojo.require("dojo.math");
 dojo.require("dojo.math.curves");
 
+dojo.deprecated("dojo.animation.Animation is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
+
 /*
 Animation package based off of Dan Pupius' work on Animations:
 http://pupius.co.uk/js/Toolkit.Drawing.js
 */
 
-dojo.animation.Animation = function(/*dojo.math.curves.Line*/ curve, /*int*/ duration, /*Decimal?*/ accel, /*int?*/ repeatCount, /*int?*/ rate) {
-	// public properties
+dojo.animation.Animation = function(/*dojo.math.curves.* */ curve, /*int*/ duration, /*Decimal?*/ accel, /*int?*/ repeatCount, /*int?*/ rate) {
+	// summary: Animation object iterates a set of numbers over a curve for a given amount of time, calling 'onAnimate' at each step.
+	// curve: Curve to animate over.
+	// duration: Duration of the animation, in milliseconds.
+	// accel: Either an integer or curve representing amount of acceleration. (?)  Default is linear acceleration.
+	// repeatCount: Number of times to repeat the animation.  Default is 0.
+	// rate: Time between animation steps, in milliseconds.  Default is 25.
+	// description: Calls the following events: "onBegin", "onAnimate", "onEnd", "onPlay", "onPause", "onStop"
+	// 				If the animation implements a "handler" function, that will be called before each event is called.
+
 	if(dojo.lang.isArray(curve)) {
 		// curve: Array
 		// id: i
@@ -73,7 +83,12 @@
 	_startRepeatCount: 0,
 
 	// public methods
-	play: function(gotoStart) {
+	play: function(/*Boolean?*/ gotoStart) {
+		// summary:  Play the animation.
+		// goToStart: If true, will restart the animation from the beginning.  
+		//				Otherwise, starts from current play counter.
+		// description: Sends an "onPlay" event to any observers.
+		//				Also sends an "onBegin" event if starting from the beginning.
 		if( gotoStart ) {
 			clearTimeout(this._timer);
 			this._active = false;
@@ -115,6 +130,9 @@
 	},
 
 	pause: function() {
+		// summary: Temporarily stop the animation, leaving the play counter at the current location.
+		// 			Resume later with sequence.play()
+		// description: Sends an "onPause" AnimationEvent to any observers.
 		clearTimeout(this._timer);
 		if( !this._active ) { return; }
 		this._paused = true;
@@ -125,6 +143,7 @@
 	},
 
 	playPause: function() {
+		// summary: Toggle between play and paused states.
 		if( !this._active || this._paused ) {
 			this.play();
 		} else {
@@ -132,7 +151,10 @@
 		}
 	},
 
-	gotoPercent: function(pct, andPlay) {
+	gotoPercent: function(/*int*/ pct, /*Boolean*/ andPlay) {
+		// summary: Set the play counter at a certain point in the animation.
+		// pct: Point to set the play counter to, expressed as a percentage (0 to 100).
+		// andPlay: If true, will start the animation at the counter automatically.
 		clearTimeout(this._timer);
 		this._active = true;
 		this._paused = true;
@@ -140,7 +162,10 @@
 		if( andPlay ) { this.play(); }
 	},
 
-	stop: function(gotoEnd) {
+	stop: function(/*Boolean?*/ gotoEnd) {
+		// summary: Stop the animation.
+		// gotoEnd: If true, will advance play counter to the end before sending the event.
+		// description: Sends an "onStop" AnimationEvent to any observers.
 		clearTimeout(this._timer);
 		var step = this._percent / 100;
 		if( gotoEnd ) {
@@ -155,15 +180,18 @@
 	},
 
 	status: function() {
+		// summary: Return the status of the animation.
+		// description: Returns one of "playing", "paused" or "stopped".
 		if( this._active ) {
-			return this._paused ? "paused" : "playing";
+			return this._paused ? "paused" : "playing";	/* String */
 		} else {
-			return "stopped";
+			return "stopped";	/* String */
 		}
 	},
 
 	// "private" methods
 	_cycle: function() {
+		// summary: Perform once 'cycle' or step of the animation.
 		clearTimeout(this._timer);
 		if( this._active ) {
 			var curr = new Date().valueOf();

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationEvent.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationEvent.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationEvent.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationEvent.js Fri Nov 10 01:15:01 2006
@@ -9,28 +9,52 @@
 */
 
 dojo.provide("dojo.animation.AnimationEvent");
+dojo.require("dojo.lang.common");
 
-dojo.require("dojo.lang");
+dojo.deprecated("dojo.animation.AnimationEvent is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
 
-dojo.animation.AnimationEvent = function(anim, type, coords, sTime, cTime, eTime, dur, pct, fps) {
+dojo.animation.AnimationEvent = function(
+				/*dojo.animation.Animation*/ animation, 
+				/*String*/type, 
+				/*int[] */ coords, 
+				/*int*/ startTime, 
+				/*int*/ currentTime, 
+				/*int*/ endTime, 
+				/*int*/ duration, 
+				/*int*/ percent, 
+				/*int?*/ fps) {
+	// summary: Event sent at various points during an Animation.
+	// animation: Animation throwing the event.
+	// type: One of: "animate", "begin", "end", "play", "pause" or "stop".
+	// coords: Current coordinates of the animation.
+	// startTime: Time the animation was started, as milliseconds.
+	// currentTime: Time the event was thrown, as milliseconds.
+	// endTime: Time the animation is expected to complete, as milliseconds.
+	// duration: Duration of the animation, in milliseconds.
+	// percent: Percent of the animation that has completed, between 0 and 100.
+	// fps: Frames currently shown per second.  (Only sent for "animate" event).
+	// description: The AnimationEvent has public properties of the same name as
+	//				 all constructor arguments, plus "x", "y" and "z".
+	
 	this.type = type; // "animate", "begin", "end", "play", "pause", "stop"
-	this.animation = anim;
+	this.animation = animation;
 
 	this.coords = coords;
 	this.x = coords[0];
 	this.y = coords[1];
 	this.z = coords[2];
 
-	this.startTime = sTime;
-	this.currentTime = cTime;
-	this.endTime = eTime;
+	this.startTime = startTime;
+	this.currentTime = currentTime;
+	this.endTime = endTime;
 
-	this.duration = dur;
-	this.percent = pct;
+	this.duration = duration;
+	this.percent = percent;
 	this.fps = fps;
 };
-dojo.lang.extend(dojo.animation.AnimationEvent, {
+dojo.extend(dojo.animation.AnimationEvent, {
 	coordsAsInts: function() {
+		// summary: Coerce the coordinates into integers.
 		var cints = new Array(this.coords.length);
 		for(var i = 0; i < this.coords.length; i++) {
 			cints[i] = Math.round(this.coords[i]);

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationSequence.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationSequence.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationSequence.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/AnimationSequence.js Fri Nov 10 01:15:01 2006
@@ -12,13 +12,19 @@
 dojo.require("dojo.animation.AnimationEvent");
 dojo.require("dojo.animation.Animation");
 
-dojo.animation.AnimationSequence = function(repeatCount){
+dojo.deprecated("dojo.animation.AnimationSequence is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
+
+dojo.animation.AnimationSequence = function(/*int?*/ repeatCount){
+	// summary: Sequence of Animations, played one after the other.
+	// repeatCount: Number of times to repeat the entire sequence.  Default is 0 (play once only).
+	// description: Calls the following events: "onBegin", "onEnd", "onNext"
+	// 				If the animation implements a "handler" function, that will be called before each event is called.
 	this._anims = [];
 	this.repeatCount = repeatCount || 0;
 }
 
 dojo.lang.extend(dojo.animation.AnimationSequence, {
-	repeateCount: 0,
+	repeatCount: 0,
 
 	_anims: [],
 	_currAnim: -1,
@@ -29,13 +35,17 @@
 	handler: null,
 
 	add: function() {
+		// summary: Add one or more Animations to the sequence.
+		// description:  args: Animations (dojo.animation.Animation) to add to the sequence.
 		for(var i = 0; i < arguments.length; i++) {
 			this._anims.push(arguments[i]);
 			arguments[i]._animSequence = this;
 		}
 	},
 
-	remove: function(anim) {
+	remove: function(/*dojo.animation.Animation*/ anim) {
+		// summary: Remove one particular animation from the sequence.
+		//	amim: Animation to remove.
 		for(var i = 0; i < this._anims.length; i++) {
 			if( this._anims[i] == anim ) {
 				this._anims[i]._animSequence = null;
@@ -46,6 +56,7 @@
 	},
 
 	removeAll: function() {
+		// summary: Remove all animations from the sequence.
 		for(var i = 0; i < this._anims.length; i++) {
 			this._anims[i]._animSequence = null;
 		}
@@ -54,10 +65,15 @@
 	},
 
 	clear: function() {
+		// summary: Remove all animations from the sequence.
 		this.removeAll();
 	},
 
-	play: function(gotoStart) {
+	play: function(/*Boolean?*/ gotoStart) {
+		// summary: Play the animation sequence.
+		// gotoStart: If true, will start at the beginning of the first sequence.
+		//				Otherwise, starts at the current play counter of the current animation.
+		// description: Sends an "onBegin" event to any observers.
 		if( this._anims.length == 0 ) { return; }
 		if( gotoStart || !this._anims[this._currAnim] ) {
 			this._currAnim = 0;
@@ -73,12 +89,14 @@
 	},
 
 	pause: function() {
+		// summary: temporarily stop the current animation.  Resume later with sequence.play()
 		if( this._anims[this._currAnim] ) {
 			this._anims[this._currAnim].pause();
 		}
 	},
 
 	playPause: function() {
+		// summary: Toggle between play and paused states.
 		if( this._anims.length == 0 ) { return; }
 		if( this._currAnim == -1 ) { this._currAnim = 0; }
 		if( this._anims[this._currAnim] ) {
@@ -87,12 +105,15 @@
 	},
 
 	stop: function() {
+		// summary: Stop the current animation.
 		if( this._anims[this._currAnim] ) {
 			this._anims[this._currAnim].stop();
 		}
 	},
 
 	status: function() {
+		// summary: Return the status of the current animation.
+		// description: Returns one of "playing", "paused" or "stopped".
 		if( this._anims[this._currAnim] ) {
 			return this._anims[this._currAnim].status();
 		} else {
@@ -100,7 +121,9 @@
 		}
 	},
 
-	_setCurrent: function(anim) {
+	_setCurrent: function(/*dojo.animation.Animation*/ anim) {
+		// summary: Set the current animation.
+		// anim: Animation to make current, must have already been added to the sequence.
 		for(var i = 0; i < this._anims.length; i++) {
 			if( this._anims[i] == anim ) {
 				this._currAnim = i;
@@ -110,6 +133,9 @@
 	},
 
 	_playNext: function() {
+		// summary: Play the next animation in the sequence.
+		// description:  Sends an "onNext" event to any observers.
+		//				 Also sends "onEnd" if the last animation is finished.
 		if( this._currAnim == -1 || this._anims.length == 0 ) { return; }
 		this._currAnim++;
 		if( this._anims[this._currAnim] ) {

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Timer.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Timer.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Timer.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/Timer.js Fri Nov 10 01:15:01 2006
@@ -9,31 +9,8 @@
 */
 
 dojo.provide("dojo.animation.Timer");
-dojo.require("dojo.lang.func");
+dojo.require("dojo.lang.timing.Timer");
 
-dojo.animation.Timer = function(intvl){
-	var timer = null;
-	this.isRunning = false;
-	this.interval = intvl;
+dojo.deprecated("dojo.animation.Timer is now dojo.lang.timing.Timer", "0.5");
 
-	this.onTick = function(){};
-	this.onStart = null;
-	this.onStop = null;
-
-	this.setInterval = function(ms){
-		if (this.isRunning) window.clearInterval(timer);
-		this.interval = ms;
-		if (this.isRunning) timer = window.setInterval(dojo.lang.hitch(this, "onTick"), this.interval);
-	};
-
-	this.start = function(){
-		if (typeof this.onStart == "function") this.onStart();
-		this.isRunning = true;
-		timer = window.setInterval(this.onTick, this.interval);
-	};
-	this.stop = function(){
-		if (typeof this.onStop == "function") this.onStop();
-		this.isRunning = false;
-		window.clearInterval(timer);
-	};
-};
+dojo.animation.Timer = dojo.lang.timing.Timer;

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/__package__.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/__package__.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/__package__.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/animation/__package__.js Fri Nov 10 01:15:01 2006
@@ -16,3 +16,5 @@
 	]
 });
 dojo.provide("dojo.animation.*");
+
+dojo.deprecated("dojo.Animation.* is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap1.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap1.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap1.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap1.js Fri Nov 10 01:15:01 2006
@@ -8,7 +8,7 @@
 * TODOC: should the copyright be changed to Dojo Foundation?
 * @license Licensed under the Academic Free License 2.1 http://www.opensource.org/licenses/afl-2.1.php
 *
-* $Id: bootstrap1.js 4342 2006-06-11 23:03:30Z alex $
+* $Id: bootstrap1.js 6258 2006-10-20 03:12:36Z jburke $
 */
 
 // TODOC: HOW TO DOC THE BELOW?
@@ -24,6 +24,8 @@
 //			- libraryScriptUri: ""
 //			- iePreventClobber: false
 //			- ieClobberMinimal: true
+//			- locale: undefined
+//			- extraLocale: undefined
 //			- preventBackButtonFix: true
 //			- searchIds: []
 //			- parseWidgets: true
@@ -38,7 +40,6 @@
 //
 
 
-
 //TODOC:  HOW TO DOC THIS?
 // @global: dj_global
 // summary: 
@@ -49,34 +50,58 @@
 //		code runs correctly in contexts other than web browsers (eg: Rhino on a server).
 var dj_global = this;
 
+//TODOC:  HOW TO DOC THIS?
+// @global: dj_currentContext
+// summary: 
+//		Private global context object. Where 'dj_global' always refers to the boot-time
+//    global context, 'dj_currentContext' can be modified for temporary context shifting.
+//    dojo.global() returns dj_currentContext.
+// description:  
+//		Refer to dojo.global() rather than referring to dj_global to ensure your
+//		code runs correctly in managed contexts.
+var dj_currentContext = this;
+
 
+// ****************************************************************
+// global public utils
+// TODOC: DO WE WANT TO NOTE THAT THESE ARE GLOBAL PUBLIC UTILS?
+// ****************************************************************
 
 function dj_undef(/*String*/ name, /*Object?*/ object){
 	//summary: Returns true if 'name' is defined on 'object' (or globally if 'object' is null).
 	//description: Note that 'defined' and 'exists' are not the same concept.
-	if(object==null){ object = dj_global; }
-	// exception if object is not an Object
-	return (typeof object[name] == "undefined");	// Boolean
+	return (typeof (object || dj_currentContext)[name] == "undefined");	// Boolean
 }
 
-
 // make sure djConfig is defined
-if(dj_undef("djConfig")){ 
+if(dj_undef("djConfig", this)){ 
 	var djConfig = {}; 
 }
 
-
 //TODOC:  HOW TO DOC THIS?
 // dojo is the root variable of (almost all) our public symbols -- make sure it is defined.
-if(dj_undef("dojo")){ 
+if(dj_undef("dojo", this)){ 
 	var dojo = {}; 
 }
 
+dojo.global = function(){
+	// summary:
+	//		return the current global context object
+	//		(e.g., the window object in a browser).
+	// description: 
+	//		Refer to 'dojo.global()' rather than referring to window to ensure your
+	//		code runs correctly in contexts other than web browsers (eg: Rhino on a server).
+	return dj_currentContext;
+}
+
+// Override locale setting, if specified
+dojo.locale  = djConfig.locale;
+
 //TODOC:  HOW TO DOC THIS?
 dojo.version = {
 	// summary: version number of this instance of dojo.
-	major: 0, minor: 3, patch: 1, flag: "",
-	revision: Number("$Rev: 4342 $".match(/[0-9]+/)[0]),
+	major: 0, minor: 3, patch: 1, flag: "+",
+	revision: Number("$Rev: 6258 $".match(/[0-9]+/)[0]),
 	toString: function(){
 		with(dojo.version){
 			return major + "." + minor + "." + patch + flag + " (" + revision + ")";	// String
@@ -89,19 +114,20 @@
 	// description: 
 	//		Returns null if 'object[name]' is not defined and 'create' is not true.
 	// 		Note: 'defined' and 'exists' are not the same concept.	
-	return (object && !dj_undef(name, object) ? object[name] : (create ? (object[name]={}) : undefined));	// mixed
+	if((!object)||(!name)) return undefined; // undefined
+	if(!dj_undef(name, object)) return object[name]; // mixed
+	return (create ? (object[name]={}) : undefined);	// mixed
 }
 
-
 dojo.parseObjPath = function(/*String*/ path, /*Object?*/ context, /*Boolean?*/ create){
 	// summary: Parse string path to an object, and return corresponding object reference and property name.
 	// description: 
 	//		Returns an object with two properties, 'obj' and 'prop'.  
 	//		'obj[prop]' is the reference indicated by 'path'.
 	// path: Path to an object, in the form "A.B.C".
-	// context: Object to use as root of path.  Defaults to 'dj_global'.
+	// context: Object to use as root of path.  Defaults to 'dojo.global()'.
 	// create: If true, Objects will be created at any point along the 'path' that is undefined.
-	var object = (context != null ? context : dj_global);
+	var object = (context || dojo.global());
 	var names = path.split('.');
 	var prop = names.pop();
 	for (var i=0,l=names.length;i<l && object;i++){
@@ -110,32 +136,26 @@
 	return {obj: object, prop: prop};	// Object: {obj: Object, prop: String}
 }
 
-
 dojo.evalObjPath = function(/*String*/ path, /*Boolean?*/ create){
 	// summary: Return the value of object at 'path' in the global scope, without using 'eval()'.
 	// path: Path to an object, in the form "A.B.C".
 	// create: If true, Objects will be created at any point along the 'path' that is undefined.
 	if(typeof path != "string"){ 
-		return dj_global; 
+		return dojo.global(); 
 	}
 	// fast path for no periods
 	if(path.indexOf('.') == -1){
-		return dojo.evalProp(path, dj_global, create);		// mixed
+		return dojo.evalProp(path, dojo.global(), create);		// mixed
 	}
 
 	//MOW: old 'with' syntax was confusing and would throw an error if parseObjPath returned null.
-	var ref = dojo.parseObjPath(path, dj_global, create);
+	var ref = dojo.parseObjPath(path, dojo.global(), create);
 	if(ref){
 		return dojo.evalProp(ref.prop, ref.obj, create);	// mixed
 	}
 	return null;
 }
 
-// ****************************************************************
-// global public utils
-// TODOC: DO WE WANT TO NOTE THAT THESE ARE GLOBAL PUBLIC UTILS?
-// ****************************************************************
-
 dojo.errorToString = function(/*Error*/ exception){
 	// summary: Return an exception's 'message', 'description' or text.
 
@@ -150,27 +170,27 @@
 	}
 }
 
-
 dojo.raise = function(/*String*/ message, /*Error?*/ exception){
-	// summary: Throw an error message, appending text of 'exception' if provided.
-	// note: Also prints a message to the user using 'dojo.hostenv.println'.
+	// summary: Common point for raising exceptions in Dojo to enable logging.
+	//	Throws an error message with text of 'exception' if provided, or
+	//	rethrows exception object.
+
 	if(exception){
 		message = message + ": "+dojo.errorToString(exception);
 	}
 
 	// print the message to the user if hostenv.println is defined
-	try {	dojo.hostenv.println("FATAL: "+message); } catch (e) {}
+	try { if(djConfig.isDebug){ dojo.hostenv.println("FATAL exception raised: "+message); } } catch (e) {}
 
-	throw Error(message);
+	throw exception || Error(message);
 }
 
 //Stub functions so things don't break.
 //TODOC:  HOW TO DOC THESE?
-dojo.debug = function(){}
-dojo.debugShallow = function(obj){}
+dojo.debug = function(){};
+dojo.debugShallow = function(obj){};
 dojo.profile = { start: function(){}, end: function(){}, stop: function(){}, dump: function(){} };
 
-
 function dj_eval(/*String*/ scriptFragment){ 
 	// summary: Perform an evaluation in the global scope.  Use this rather than calling 'eval()' directly.
 	// description: Placed in a separate function to minimize size of trapped evaluation context.
@@ -181,8 +201,6 @@
 	return dj_global.eval ? dj_global.eval(scriptFragment) : eval(scriptFragment); 	// mixed
 }
 
-
-
 dojo.unimplemented = function(/*String*/ funcname, /*String?*/ extra){
 	// summary: Throw an exception because some function is not implemented.
 	// extra: Text to append to the exception message.
@@ -191,7 +209,6 @@
 	dojo.raise(message);
 }
 
-
 dojo.deprecated = function(/*String*/ behaviour, /*String?*/ extra, /*String?*/ removal){
 	// summary: Log a debug message to indicate that a behavior has been deprecated.
 	// extra: Text to append to the message.
@@ -202,20 +219,6 @@
 	dojo.debug(message);
 }
 
-
-
-dojo.inherits = function(/*Function*/ subclass, /*Function*/ superclass){
-	// summary: Set up inheritance between two classes.
-	if(typeof superclass != 'function'){ 
-		dojo.raise("dojo.inherits: superclass argument ["+superclass+"] must be a function (subclass: [" + subclass + "']");
-	}
-	subclass.prototype = new superclass();
-	subclass.prototype.constructor = subclass;
-	subclass.superclass = superclass.prototype;
-	// DEPRICATED: super is a reserved word, use 'superclass'
-	subclass['super'] = superclass.prototype;
-}
-
 dojo.render = (function(){
 	//TODOC: HOW TO DOC THIS?
 	// summary: Details rendering support, OS and browser of the current environment.
@@ -229,8 +232,8 @@
 			},
 			prefixes: prefs
 		};
-		for(var prop in names){
-			tmp[prop] = false;
+		for(var i=0; i<names.length; i++){
+			tmp[names[i]] = false;
 		}
 		return tmp;
 	}
@@ -276,6 +279,7 @@
 		iePreventClobber: false,
 		ieClobberMinimal: true,
 		preventBackButtonFix: true,
+		delayMozLoadingFix: false,
 		searchIds: [],
 		parseWidgets: true
 	};

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap2.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap2.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap2.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/bootstrap2.js Fri Nov 10 01:15:01 2006
@@ -37,13 +37,6 @@
 		tmps.push("browser_debug.js");
 	}
 
-	//Support compatibility packages. Right now this only allows setting one
-	//compatibility package. Might need to revisit later down the line to support
-	//more than one.
-	if((this["djConfig"])&&(djConfig["compat"])){
-		tmps.push("compat/" + djConfig["compat"] + ".js");
-	}
-
 	var loaderRoot = djConfig["baseScriptUri"];
 	if((this["djConfig"])&&(djConfig["baseLoaderUri"])){
 		loaderRoot = djConfig["baseLoaderUri"];
@@ -64,111 +57,3 @@
 		}
 	}
 })();
-
-// Localization routines
-
-/**
- * The locale to look for string bundles if none are defined for your locale.  Translations for all strings
- * should be provided in this locale.
- */
-//TODO: this really belongs in translation metadata, not in code
-dojo.fallback_locale = 'en';
-
-/**
- * Returns canonical form of locale, as used by Dojo.  All variants are case-insensitive and are separated by '-'
- * as specified in RFC 3066
- */
-dojo.normalizeLocale = function(locale) {
-	return locale ? locale.toLowerCase() : dojo.locale;
-};
-
-/**
- * requireLocalization() is for loading translated bundles provided within a package in the namespace.
- * Contents are typically strings, but may be any name/value pair, represented in JSON format.
- * A bundle is structured in a program as follows:
- *
- * <package>/
- *  nls/
- *   de/
- *    mybundle.js
- *   de-at/
- *    mybundle.js
- *   en/
- *    mybundle.js
- *   en-us/
- *    mybundle.js
- *   en-gb/
- *    mybundle.js
- *   es/
- *    mybundle.js
- *  ...etc
- *
- * where package is part of the namespace as used by dojo.require().  Each directory is named for a
- * locale as specified by RFC 3066, (http://www.ietf.org/rfc/rfc3066.txt), normalized in lowercase.
- *
- * For a given locale, string bundles will be loaded for that locale and all general locales above it, as well
- * as a system-specified fallback.  For example, "de_at" will also load "de" and "en".  Lookups will traverse
- * the locales in this order.  A build step can preload the bundles to avoid data redundancy and extra network hits.
- *
- * @param modulename package in which the bundle is found
- * @param bundlename bundle name, typically the filename without the '.js' suffix
- * @param locale the locale to load (optional)  By default, the browser's user locale as defined
- *	in dojo.locale
- */
-dojo.requireLocalization = function(modulename, bundlename, locale /*optional*/){
-
-	dojo.debug("EXPERIMENTAL: dojo.requireLocalization"); //dojo.experimental
-
-	var syms = dojo.hostenv.getModuleSymbols(modulename);
-	var modpath = syms.concat("nls").join("/");
-
-	locale = dojo.normalizeLocale(locale);
-
-	var elements = locale.split('-');
-	var searchlist = [];
-	for(var i = elements.length; i > 0; i--){
-		searchlist.push(elements.slice(0, i).join('-'));
-	}
-	if(searchlist[searchlist.length-1] != dojo.fallback_locale){
-		searchlist.push(dojo.fallback_locale);
-	}
-
-	var bundlepackage = [modulename, "_nls", bundlename].join(".");
-	var bundle = dojo.hostenv.startPackage(bundlepackage);
-	dojo.hostenv.loaded_modules_[bundlepackage] = bundle;
-	
-	var inherit = false;
-	for(var i = searchlist.length - 1; i >= 0; i--){
-		var loc = searchlist[i];
-		var pkg = [bundlepackage, loc].join(".");
-		var loaded = false;
-		if(!dojo.hostenv.findModule(pkg)){
-			// Mark loaded whether it's found or not, so that further load attempts will not be made
-			dojo.hostenv.loaded_modules_[pkg] = null;
-
-			var filespec = [modpath, loc, bundlename].join("/") + '.js';
-			loaded = dojo.hostenv.loadPath(filespec, null, function(hash) {
- 				bundle[loc] = hash;
- 				if(inherit){
-					// Use mixins approach to copy string references from inherit bundle, but skip overrides.
-					for(var x in inherit){
-						if(!bundle[loc][x]){
-							bundle[loc][x] = inherit[x];
-						}
-					}
- 				}
-/*
-				// Use prototype to point to other bundle, then copy in result from loadPath
-				bundle[loc] = new function(){};
-				if(inherit){ bundle[loc].prototype = inherit; }
-				for(var i in hash){ bundle[loc][i] = hash[i]; }
-*/
-			});
-		}else{
-			loaded = true;
-		}
-		if(loaded && bundle[loc]){
-			inherit = bundle[loc];
-		}
-	}
-};

Modified: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/browser_debug.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/browser_debug.js?view=diff&rev=473277&r1=473276&r2=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/browser_debug.js (original)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/browser_debug.js Fri Nov 10 01:15:01 2006
@@ -12,10 +12,12 @@
 dojo.hostenv.loadedUris.push("../src/loader.js");
 dojo.hostenv.loadedUris.push("../src/hostenv_browser.js");
 dojo.hostenv.loadedUris.push("../src/bootstrap2.js");
+dojo.hostenv._loadedUrisListStart = dojo.hostenv.loadedUris.length;
 
 function removeComments(contents){
 	contents = new String((!contents) ? "" : contents);
 	// clobber all comments
+	// FIXME broken if // or /* inside quotes or regexp
 	contents = contents.replace( /^(.*?)\/\/(.*)$/mg , "$1");
 	contents = contents.replace( /(\n)/mg , "__DOJONEWLINE");
 	contents = contents.replace( /\/\*(.*?)\*\//g , "");
@@ -31,7 +33,7 @@
 	var deps = [];
 	var tmp;
 	RegExp.lastIndex = 0;
-	var testExp = /dojo.(hostenv.loadModule|hosetnv.require|require|requireIf|kwCompoundRequire|hostenv.conditionalLoadModule|hostenv.startPackage|provide)\([\w\W]*?\)/mg;
+	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]);
 	}
@@ -116,30 +118,39 @@
 var old_dj_eval = dj_eval;
 dj_eval = function(){ return true; }
 dojo.hostenv.oldLoadUri = dojo.hostenv.loadUri;
-dojo.hostenv.loadUri = function(uri){
+dojo.hostenv.loadUri = function(uri, cb /*optional*/){
 	if(dojo.hostenv.loadedUris[uri]){
 		return true; // fixes endless recursion opera trac 471
 	}
 	try{
 		var text = this.getText(uri, null, true);
-		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(";"));
+		if(!text) { return false; }
+		if(cb){
+			// No way to load i18n bundles but to eval them, and they usually
+			// don't have script needing to be debugged anyway
+			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.writeIncludes = function(){
+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 = {};
+	var seen = dojo.hostenv._writtenIncludes;
 	for(var x=0; x<dojo.hostenv.loadedUris.length; x++){
 		var curi = dojo.hostenv.loadedUris[x];
 		// dojo.debug(curi);
@@ -150,13 +161,16 @@
 	}
 
 	dojo.hostenv._global_omit_module_check = true;
-	for(var x=4; x<depList.length; x++){
+	
+	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>");
-
-	// turn off debugAtAllCosts, so that dojo.require() calls inside of ContentPane hrefs
-	// work correctly
-	dj_eval = old_dj_eval;
-	dojo.hostenv.loadUri = dojo.hostenv.oldLoadUri;
+	dojo.hostenv._loadedUrisListStart = 0;
+	if (!willCallAgain) {
+		// turn off debugAtAllCosts, so that dojo.require() calls inside of ContentPane hrefs
+		// work correctly
+		dj_eval = old_dj_eval;
+		dojo.hostenv.loadUri = dojo.hostenv.oldLoadUri;
+	}
 }

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js?view=auto&rev=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js (added)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js Fri Nov 10 01:15:01 2006
@@ -0,0 +1,815 @@
+/*
+	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 (/* string */text) {
+	// summary
+	// Parse text of an iCalendar and return an array of iCalendar objects
+
+	var properties = dojo.cal.textDirectory.tokenise(text);
+	var calendars = [];
+
+	//dojo.debug("Parsing iCal String");
+	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 /* array */calendars;
+}
+
+
+dojo.cal.iCalendar.Component = function (/* string */ body ) {
+	// summary
+	// A component is the basic container of all this stuff. 
+
+	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) {
+		// summary
+		// push a new property onto a component.
+		this.properties.push(prop);
+		this[prop.name.toLowerCase()] = prop;
+	},
+
+	addComponent: function (prop) {
+		// summary
+		// add a component to this components list of children.
+		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);
+			}
+		}
+
+		// parse any rrules		
+		if (dojo.lang.isArray(this.rrule)) {
+			for(var x=0; x<this.rrule.length; x++) {
+				var rule = this.rrule[x].value;
+
+				//add a place to cache dates we have checked for recurrance
+				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 () {
+		// summary
+		// output a string representation of this component.
+		return "[iCalendar.Component; " + this.name + ", " + this.properties.length +
+			" properties, " + this.components.length + " components]";
+	}
+});
+
+dojo.cal.iCalendar.Property = function (prop) {
+	// summary
+	// A single property of a component.
+
+	// unpack the values
+	this.name = prop.name;
+	this.group = prop.group;
+	this.params = prop.params;
+	this.value = prop.value;
+
+}
+
+dojo.extend(dojo.cal.iCalendar.Property, {
+	toString: function () {	
+		// summary
+		// output a string reprensentation of this component.
+		return "[iCalenday.Property; " + this.name + ": " + this.value + "]";
+	}
+});
+
+// This is just a little helper function for the Component Properties
+var _P = function (n, oc, req) {
+	return {name: n, required: (req) ? true : false,
+		occurance: (oc == '*' || !oc) ? -1 : oc}
+}
+
+/*
+ * VCALENDAR
+ */
+
+dojo.cal.iCalendar.VCalendar = function (/* string */ calbody) {
+	// summary
+	// VCALENDAR Component
+
+	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) {
+		// summary
+		// add component to the calenadar that makes it easy to pull them out again later.
+		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 */ date) {
+		// summary
+		// Gets all events occuring on a particular 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;			
+	}
+});
+
+/*
+ * STANDARD
+ */
+
+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 (/* string */ body) {
+	// summary
+	// STANDARD Component
+
+	this.name = "STANDARD";
+	this._ValidProperties = StandardProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.Standard, dojo.cal.iCalendar.Component);
+
+/*
+ * DAYLIGHT
+ */
+
+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 (/* string */ body) {
+	// summary
+	// Daylight Component
+	this.name = "DAYLIGHT";
+	this._ValidProperties = DaylightProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.Daylight, dojo.cal.iCalendar.Component);
+
+/*
+ * VEVENT
+ */
+
+var VEventProperties = [
+	// these can occur once only
+	_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),
+	// these two are exclusive
+	[_P("dtend", 1), _P("duration", 1)],
+	// these can occur many times over
+	_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 (/* string */ body) {
+	// summary 
+	// VEVENT Component
+	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};
+
+			// expand rrules into the recurrance 
+			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;
+							}
+						}
+					}
+
+					
+					// while the spec doesn't prohibit it, it makes no sense to have a bymonth and a byweekno at the same time
+					// and if i'm wrong then i don't know how to apply that rule.  This is also documented elsewhere on the web
+					if (rrule["byweekno"] && !rrule["bymonth"]) {	
+						dojo.debug("TODO: no support for byweekno yet");
+					}
+
+
+					// while the spec doesn't prohibit it, it makes no sense to have a bymonth and a byweekno at the same time
+					// and if i'm wrong then i don't know how to apply that rule.  This is also documented elsewhere on the web
+					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] == "-") {
+												//find the nth to last occurance of date 
+												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 {
+													//we're gonna expand here to add a date for each of the specified days for each month
+													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");
+			
+					//add this set of events to the complete recurranceSet	
+					var tmp = recurranceSet.concat(set);
+					recurranceSet = tmp;
+				}
+			}
+
+			// TODO: add rdates to the recurrance set here
+
+			// TODO: subtract exdates from the recurrance set here
+
+			//TODO:  subtract dates generated by exrules from recurranceSet here
+
+			recurranceSet.push(dtstart);
+			return recurranceSet;
+		},
+
+		getDate: function() {
+			return dojo.date.fromIso8601(this.dtstart.value);
+		}
+});
+
+/*
+ * VTIMEZONE
+ */
+
+var VTimeZoneProperties = [
+	_P("tzid", 1, true), _P("last-mod", 1), _P("tzurl", 1)
+
+	// one of 'standardc' or 'daylightc' must occur
+	// and each may occur more than once.
+];
+
+dojo.cal.iCalendar.VTimeZone = function (/* string */ body) {
+	// summary
+	// VTIMEZONE Component
+	this.name = "VTIMEZONE";
+	this._ValidProperties = VTimeZoneProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.VTimeZone, dojo.cal.iCalendar.Component);
+
+/*
+ * VTODO
+ */
+
+var VTodoProperties = [
+	// these can occur once only
+	_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),
+	// these two are exclusive
+	[_P("due", 1), _P("duration", 1)],
+	// these can occur many times over
+	_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 (/* string */ body) {
+	// summary
+	// VTODO Componenet
+	this.name = "VTODO";
+	this._ValidProperties = VTodoProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.VTodo, dojo.cal.iCalendar.Component);
+
+/*
+ * VJOURNAL
+ */
+
+var VJournalProperties = [
+	// these can occur once only
+	_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),
+	// these can occur many times over
+	_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 (/* string */ body) {
+	// summary
+	// VJOURNAL Component
+	this.name = "VJOURNAL";
+	this._ValidProperties = VJournalProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.VJournal, dojo.cal.iCalendar.Component);
+
+/*
+ * VFREEBUSY
+ */
+
+var VFreeBusyProperties = [
+	// these can occur once only
+	_P("contact"), _P("dtstart", 1), _P("dtend"), _P("duration"),
+	_P("organizer", 1), _P("dtstamp", 1), _P("uid", 1), _P("url", 1),
+	// these can occur many times over
+	_P("attendee"), _P("comment"), _P("freebusy"), _P("rstatus")
+];
+
+dojo.cal.iCalendar.VFreeBusy= function (/* string */ body) {
+	// summary
+	// VFREEBUSY Component
+	this.name = "VFREEBUSY";
+	this._ValidProperties = VFreeBusyProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.VFreeBusy, dojo.cal.iCalendar.Component);
+
+/*
+ * VALARM
+ */
+
+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 (/* string */ body) {
+	// summary
+	// VALARM Component
+	this.name = "VALARM";
+	this._ValidProperties = VAlarmProperties;
+	dojo.cal.iCalendar.Component.call(this, body);
+}
+
+dojo.inherits(dojo.cal.iCalendar.VAlarm, dojo.cal.iCalendar.Component);
+

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js
------------------------------------------------------------------------------
    svn:keywords = "Id Author LastChangedDate LastChangedBy LastChangedRevision"

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/iCalendar.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js?view=auto&rev=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js (added)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js Fri Nov 10 01:15:01 2006
@@ -0,0 +1,75 @@
+/*
+	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");
+
+/*
+ * This class parses a single line from a text/directory file
+ * and returns an object with four named values; name, group, params
+ * and value. name, group and value are strings containing the original
+ * tokens unaltered and values is an array containing name/value pairs
+ * or a single name token packed into arrays.
+ */
+dojo.cal.textDirectory.Property = function (line) {
+	// split into name/value pair
+	var left = dojo.string.trim(line.substring(0, line.indexOf(':')));
+	var right = dojo.string.trim(line.substr(line.indexOf(':') + 1));
+
+	// seperate name and paramters	
+	var parameters = dojo.string.splitEscaped(left,';');
+	this.name = parameters[0]
+	parameters.splice(0, 1);
+
+	// parse paramters
+	this.params = [];
+	for (var i = 0; i < parameters.length; i++) {
+		var 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])]);
+			}
+		}
+	}
+
+	// seperate group
+	if (this.name.indexOf('.') > 0) {
+		var arr = this.name.split('.');
+		this.group = arr[0];
+		this.name = arr[1];
+	}
+	
+	// don't do any parsing, leave to implementation
+	this.value = right;
+}
+
+
+// tokeniser, parses into an array of properties.
+dojo.cal.textDirectory.tokenise = function (text) {
+	// normlize to one propterty per line and parse
+	var nText = dojo.string.normalizeNewlines(text,"\n");
+	nText = nText.replace(/\n[ \t]/g, '');
+	nText = nText.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: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js
------------------------------------------------------------------------------
    svn:keywords = "Id Author LastChangedDate LastChangedBy LastChangedRevision"

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/cal/textDirectory.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/charting/Axis.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/charting/Axis.js?view=auto&rev=473277
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/charting/Axis.js (added)
+++ myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/charting/Axis.js Fri Nov 10 01:15:01 2006
@@ -0,0 +1,146 @@
+/*
+	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(/* string? */label, /* string? */scale, /* array? */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";		//	linear || log
+	this.label = label || "";
+	this.showLabel = true;		//	show axis label.
+	this.showLabels = true;		//	show interval ticks.
+	this.showLines = false;		//	if you want lines over the range of the plot area
+	this.showTicks = false;		//	if you want tick marks on the axis.
+	this.range = { upper : 0, lower : 0 };	//	range of individual axis.
+	this.origin = "min"; 			//	this can be any number, "min" or "max". min/max is translated on init.
+
+	this.labels = labels || [];
+	this._labels = [];	//	what we really use to draw things.
+	this.nodes={ main: null, axis: null, label: null, labels: null, lines: null, ticks: null };
+};
+dojo.charting.Axis.count = 0;
+
+dojo.extend(dojo.charting.Axis, {
+	//	TODO: implement log scaling.
+	getCoord: function(
+		/* float */val, 
+		/* dojo.charting.PlotArea */plotArea, 
+		/* dojo.charting.Plot */plot
+	){
+		//	summary
+		//	returns the coordinate of val based on this axis range, plot area and 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;	//	FIXME: check this.
+			var max = this.range.upper + offset;
+			val += offset;
+			return (val*((area.right-area.left)/max))+area.left;	//	float
+		} 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){
+		//	figure out the origin value.
+		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(){
+		//	Translate the labels if needed.
+		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 {
+				// clone me
+				var a = [];
+				for(var i=0; i<this.labels.length; i++){
+					a.push(this.labels[i]);
+				}
+
+				//	do the bottom one.
+				var s=a.shift();
+				this._labels.push({ label: s, value: this.range.lower });
+
+				//	do the top one.
+				if(a.length>0){
+					var s=a.pop();
+					this._labels.push({ label: s, value: this.range.upper });
+				}
+				//	do the rest.
+				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){
+		//	summary
+		//	Initialize the passed axis descriptor.  Note that this should always
+		//	be the result of plotArea.getAxes, and not the axis directly!
+		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.svg.capable && dojo.render.vml.capable, "dojo.charting.vml.Axis");

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/charting/Axis.js
------------------------------------------------------------------------------
    svn:keywords = "Id Author LastChangedDate LastChangedBy LastChangedRevision"

Propchange: myfaces/tomahawk/trunk/core/src/main/resources/org/apache/myfaces/custom/dojo/resource/src/charting/Axis.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain