[Catalyst-commits] r6414 - in trunk/HTML-Dojo: . lib/HTML lib/HTML/Dojo

fireartist at dev.catalyst.perl.org fireartist at dev.catalyst.perl.org
Tue May 22 14:46:20 GMT 2007


Author: fireartist
Date: 2007-05-22 14:46:20 +0100 (Tue, 22 May 2007)
New Revision: 6414

Modified:
   trunk/HTML-Dojo/Changes
   trunk/HTML-Dojo/README
   trunk/HTML-Dojo/build_packages.pl
   trunk/HTML-Dojo/lib/HTML/Dojo.pm
   trunk/HTML-Dojo/lib/HTML/Dojo/editions.pm
   trunk/HTML-Dojo/lib/HTML/Dojo/src.pm
Log:
updated to dojo 0.4.3


Modified: trunk/HTML-Dojo/Changes
===================================================================
--- trunk/HTML-Dojo/Changes	2007-05-21 20:41:55 UTC (rev 6413)
+++ trunk/HTML-Dojo/Changes	2007-05-22 13:46:20 UTC (rev 6414)
@@ -1,5 +1,14 @@
 Revision history for Perl extension HTML::Dojo.
 
+0.0403.0 2007-05-22
+
+        - Dojo 0.4.3
+        - now defaults to 'ajax' edition
+        - browserio edition no longer provided
+        - core edition no longer provided
+        - event edition no longer provided
+        - minimal edition no longer provided
+
 0.0402.0 2007-03-28
 
         - Dojo 0.4.2

Modified: trunk/HTML-Dojo/README
===================================================================
--- trunk/HTML-Dojo/README	2007-05-21 20:41:55 UTC (rev 6413)
+++ trunk/HTML-Dojo/README	2007-05-22 13:46:20 UTC (rev 6414)
@@ -1,5 +1,5 @@
 NAME
-    HTML::Dojo - Provides the Dojo JavaScript / AJAX distribution 0.3.1
+    HTML::Dojo - Provides the Dojo JavaScript / AJAX distribution 0.4.3
     files.
 
 SYNOPSIS
@@ -40,17 +40,16 @@
     The current editions available are:
 
     ajax
-    ajax-xd
-    browserio
-    core
-    dashboard
+    charting
+    dojoWebsite
     editor
-    event
     event_and_io
     kitchen_sink
-    minimal
+    lfx
+    moxie
     storage
     widget
+    xdomain-ajax
 
   list
                 $dojo->list( \%options );
@@ -70,7 +69,7 @@
 
             Optional arguments are:
 
-            "edition", default "core".
+            "edition", default "ajax".
 
 SEE ALSO
             <http://dojotoolkit.org>, HTML::Prototype

Modified: trunk/HTML-Dojo/build_packages.pl
===================================================================
--- trunk/HTML-Dojo/build_packages.pl	2007-05-21 20:41:55 UTC (rev 6413)
+++ trunk/HTML-Dojo/build_packages.pl	2007-05-22 13:46:20 UTC (rev 6414)
@@ -53,9 +53,9 @@
     }
 }
 
-### build the main tree from the 'core' edition
+### build the main tree from the 'ajax' edition
 ###
-my ($core_dir) = grep { /-core$/ } keys %folders;
+my ($core_dir) = grep { /-ajax$/ } keys %folders;
 
 open my $src_pm_fh, '>', "lib/HTML/Dojo/src.pm"
     or die "failed to open: $!";

Modified: trunk/HTML-Dojo/lib/HTML/Dojo/editions.pm
===================================================================
--- trunk/HTML-Dojo/lib/HTML/Dojo/editions.pm	2007-05-21 20:41:55 UTC (rev 6413)
+++ trunk/HTML-Dojo/lib/HTML/Dojo/editions.pm	2007-05-22 13:46:20 UTC (rev 6414)
@@ -37,7 +37,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -833,7 +833,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -1302,43 +1304,55 @@
 }
 }
 };
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_145,_146){
-},error:function(type,_148,_149,_14a){
-},timeout:function(type,_14c,_14d,_14e){
-},handle:function(type,data,_151,_152){
+dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jsonFilter:function(_143){
+if((this.mimetype=="text/json-comment-filtered")||(this.mimetype=="application/json-comment-filtered")){
+var _144=_143.indexOf("/*");
+var _145=_143.lastIndexOf("*/");
+if((_144==-1)||(_145==-1)){
+dojo.debug("your JSON wasn't comment filtered!");
+return "";
+}
+return _143.substring(_144+2,_145);
+}
+dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+return _143;
+},load:function(type,data,_148,_149){
+},error:function(type,_14b,_14c,_14d){
+},timeout:function(type,_14f,_150,_151){
+},handle:function(type,data,_154,_155){
 },timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_153){
-if(_153["url"]){
-_153.url=_153.url.toString();
+},fromKwArgs:function(_156){
+if(_156["url"]){
+_156.url=_156.url.toString();
 }
-if(_153["formNode"]){
-_153.formNode=dojo.byId(_153.formNode);
+if(_156["formNode"]){
+_156.formNode=dojo.byId(_156.formNode);
 }
-if(!_153["method"]&&_153["formNode"]&&_153["formNode"].method){
-_153.method=_153["formNode"].method;
+if(!_156["method"]&&_156["formNode"]&&_156["formNode"].method){
+_156.method=_156["formNode"].method;
 }
-if(!_153["handle"]&&_153["handler"]){
-_153.handle=_153.handler;
+if(!_156["handle"]&&_156["handler"]){
+_156.handle=_156.handler;
 }
-if(!_153["load"]&&_153["loaded"]){
-_153.load=_153.loaded;
+if(!_156["load"]&&_156["loaded"]){
+_156.load=_156.loaded;
 }
-if(!_153["changeUrl"]&&_153["changeURL"]){
-_153.changeUrl=_153.changeURL;
+if(!_156["changeUrl"]&&_156["changeURL"]){
+_156.changeUrl=_156.changeURL;
 }
-_153.encoding=dojo.lang.firstValued(_153["encoding"],djConfig["bindEncoding"],"");
-_153.sendTransport=dojo.lang.firstValued(_153["sendTransport"],djConfig["ioSendTransport"],false);
-var _154=dojo.lang.isFunction;
+_156.encoding=dojo.lang.firstValued(_156["encoding"],djConfig["bindEncoding"],"");
+_156.sendTransport=dojo.lang.firstValued(_156["sendTransport"],djConfig["ioSendTransport"],false);
+var _157=dojo.lang.isFunction;
 for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
 var fn=dojo.io.hdlrFuncNames[x];
-if(_153[fn]&&_154(_153[fn])){
+if(_156[fn]&&_157(_156[fn])){
 continue;
 }
-if(_153["handle"]&&_154(_153["handle"])){
-_153[fn]=_153.handle;
+if(_156["handle"]&&_157(_156["handle"])){
+_156[fn]=_156.handle;
 }
 }
-dojo.lang.mixin(this,_153);
+dojo.lang.mixin(this,_156);
 }});
 dojo.io.Error=function(msg,type,num){
 this.message=msg;
@@ -1349,79 +1363,79 @@
 this.push(name);
 this[name]=dojo.io[name];
 };
-dojo.io.bind=function(_15b){
-if(!(_15b instanceof dojo.io.Request)){
+dojo.io.bind=function(_15e){
+if(!(_15e instanceof dojo.io.Request)){
 try{
-_15b=new dojo.io.Request(_15b);
+_15e=new dojo.io.Request(_15e);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _15c="";
-if(_15b["transport"]){
-_15c=_15b["transport"];
-if(!this[_15c]){
-dojo.io.sendBindError(_15b,"No dojo.io.bind() transport with name '"+_15b["transport"]+"'.");
-return _15b;
+var _15f="";
+if(_15e["transport"]){
+_15f=_15e["transport"];
+if(!this[_15f]){
+dojo.io.sendBindError(_15e,"No dojo.io.bind() transport with name '"+_15e["transport"]+"'.");
+return _15e;
 }
-if(!this[_15c].canHandle(_15b)){
-dojo.io.sendBindError(_15b,"dojo.io.bind() transport with name '"+_15b["transport"]+"' cannot handle this type of request.");
-return _15b;
+if(!this[_15f].canHandle(_15e)){
+dojo.io.sendBindError(_15e,"dojo.io.bind() transport with name '"+_15e["transport"]+"' cannot handle this type of request.");
+return _15e;
 }
 }else{
 for(var x=0;x<dojo.io.transports.length;x++){
 var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_15b))){
-_15c=tmp;
+if((this[tmp])&&(this[tmp].canHandle(_15e))){
+_15f=tmp;
 break;
 }
 }
-if(_15c==""){
-dojo.io.sendBindError(_15b,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _15b;
+if(_15f==""){
+dojo.io.sendBindError(_15e,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
+return _15e;
 }
 }
-this[_15c].bind(_15b);
-_15b.bindSuccess=true;
-return _15b;
+this[_15f].bind(_15e);
+_15e.bindSuccess=true;
+return _15e;
 };
-dojo.io.sendBindError=function(_15f,_160){
-if((typeof _15f.error=="function"||typeof _15f.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _161=new dojo.io.Error(_160);
+dojo.io.sendBindError=function(_162,_163){
+if((typeof _162.error=="function"||typeof _162.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
+var _164=new dojo.io.Error(_163);
 setTimeout(function(){
-_15f[(typeof _15f.error=="function")?"error":"handle"]("error",_161,null,_15f);
+_162[(typeof _162.error=="function")?"error":"handle"]("error",_164,null,_162);
 },50);
 }else{
-dojo.raise(_160);
+dojo.raise(_163);
 }
 };
-dojo.io.queueBind=function(_162){
-if(!(_162 instanceof dojo.io.Request)){
+dojo.io.queueBind=function(_165){
+if(!(_165 instanceof dojo.io.Request)){
 try{
-_162=new dojo.io.Request(_162);
+_165=new dojo.io.Request(_165);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _163=_162.load;
-_162.load=function(){
+var _166=_165.load;
+_165.load=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_163.apply(this,arguments);
+var ret=_166.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-var _165=_162.error;
-_162.error=function(){
+var _168=_165.error;
+_165.error=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_165.apply(this,arguments);
+var ret=_168.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-dojo.io._bindQueue.push(_162);
+dojo.io._bindQueue.push(_165);
 dojo.io._dispatchNextQueueBind();
-return _162;
+return _165;
 };
 dojo.io._dispatchNextQueueBind=function(){
 if(!dojo.io._queueBindInFlight){
@@ -1435,48 +1449,48 @@
 };
 dojo.io._bindQueue=[];
 dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_168,last){
-var enc=/utf/i.test(_168||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _16b=[];
-var _16c=new Object();
+dojo.io.argsFromMap=function(map,_16b,last){
+var enc=/utf/i.test(_16b||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _16e=[];
+var _16f=new Object();
 for(var name in map){
-var _16e=function(elt){
+var _171=function(elt){
 var val=enc(name)+"="+enc(elt);
-_16b[(last==name)?"push":"unshift"](val);
+_16e[(last==name)?"push":"unshift"](val);
 };
-if(!_16c[name]){
-var _171=map[name];
-if(dojo.lang.isArray(_171)){
-dojo.lang.forEach(_171,_16e);
+if(!_16f[name]){
+var _174=map[name];
+if(dojo.lang.isArray(_174)){
+dojo.lang.forEach(_174,_171);
 }else{
-_16e(_171);
+_171(_174);
 }
 }
 }
-return _16b.join("&");
+return _16e.join("&");
 };
-dojo.io.setIFrameSrc=function(_172,src,_174){
+dojo.io.setIFrameSrc=function(_175,src,_177){
 try{
 var r=dojo.render.html;
-if(!_174){
+if(!_177){
 if(r.safari){
-_172.location=src;
+_175.location=src;
 }else{
-frames[_172.name].location=src;
+frames[_175.name].location=src;
 }
 }else{
 var idoc;
 if(r.ie){
-idoc=_172.contentWindow.document;
+idoc=_175.contentWindow.document;
 }else{
 if(r.safari){
-idoc=_172.document;
+idoc=_175.document;
 }else{
-idoc=_172.contentWindow;
+idoc=_175.contentWindow;
 }
 }
 if(!idoc){
-_172.location=src;
+_175.location=src;
 return;
 }else{
 idoc.location.replace(src);
@@ -1499,138 +1513,138 @@
 },isEmpty:function(obj){
 if(dojo.lang.isObject(obj)){
 var tmp={};
-var _17b=0;
+var _17e=0;
 for(var x in obj){
 if(obj[x]&&(!tmp[x])){
-_17b++;
+_17e++;
 break;
 }
 }
-return _17b==0;
+return _17e==0;
 }else{
 if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
 return obj.length==0;
 }
 }
-},map:function(arr,obj,_17f){
-var _180=dojo.lang.isString(arr);
-if(_180){
+},map:function(arr,obj,_182){
+var _183=dojo.lang.isString(arr);
+if(_183){
 arr=arr.split("");
 }
-if(dojo.lang.isFunction(obj)&&(!_17f)){
-_17f=obj;
+if(dojo.lang.isFunction(obj)&&(!_182)){
+_182=obj;
 obj=dj_global;
 }else{
-if(dojo.lang.isFunction(obj)&&_17f){
-var _181=obj;
-obj=_17f;
-_17f=_181;
+if(dojo.lang.isFunction(obj)&&_182){
+var _184=obj;
+obj=_182;
+_182=_184;
 }
 }
 if(Array.map){
-var _182=Array.map(arr,_17f,obj);
+var _185=Array.map(arr,_182,obj);
 }else{
-var _182=[];
+var _185=[];
 for(var i=0;i<arr.length;++i){
-_182.push(_17f.call(obj,arr[i]));
+_185.push(_182.call(obj,arr[i]));
 }
 }
-if(_180){
-return _182.join("");
+if(_183){
+return _185.join("");
 }else{
-return _182;
+return _185;
 }
-},reduce:function(arr,_185,obj,_187){
-var _188=_185;
+},reduce:function(arr,_188,obj,_18a){
+var _18b=_188;
 if(arguments.length==2){
-_187=_185;
-_188=arr[0];
+_18a=_188;
+_18b=arr[0];
 arr=arr.slice(1);
 }else{
 if(arguments.length==3){
 if(dojo.lang.isFunction(obj)){
-_187=obj;
+_18a=obj;
 obj=null;
 }
 }else{
 if(dojo.lang.isFunction(obj)){
-var tmp=_187;
-_187=obj;
+var tmp=_18a;
+_18a=obj;
 obj=tmp;
 }
 }
 }
 var ob=obj||dj_global;
 dojo.lang.map(arr,function(val){
-_188=_187.call(ob,_188,val);
+_18b=_18a.call(ob,_18b,val);
 });
-return _188;
-},forEach:function(_18c,_18d,_18e){
-if(dojo.lang.isString(_18c)){
-_18c=_18c.split("");
+return _18b;
+},forEach:function(_18f,_190,_191){
+if(dojo.lang.isString(_18f)){
+_18f=_18f.split("");
 }
 if(Array.forEach){
-Array.forEach(_18c,_18d,_18e);
+Array.forEach(_18f,_190,_191);
 }else{
-if(!_18e){
-_18e=dj_global;
+if(!_191){
+_191=dj_global;
 }
-for(var i=0,l=_18c.length;i<l;i++){
-_18d.call(_18e,_18c[i],i,_18c);
+for(var i=0,l=_18f.length;i<l;i++){
+_190.call(_191,_18f[i],i,_18f);
 }
 }
-},_everyOrSome:function(_191,arr,_193,_194){
+},_everyOrSome:function(_194,arr,_196,_197){
 if(dojo.lang.isString(arr)){
 arr=arr.split("");
 }
 if(Array.every){
-return Array[_191?"every":"some"](arr,_193,_194);
+return Array[_194?"every":"some"](arr,_196,_197);
 }else{
-if(!_194){
-_194=dj_global;
+if(!_197){
+_197=dj_global;
 }
 for(var i=0,l=arr.length;i<l;i++){
-var _197=_193.call(_194,arr[i],i,arr);
-if(_191&&!_197){
+var _19a=_196.call(_197,arr[i],i,arr);
+if(_194&&!_19a){
 return false;
 }else{
-if((!_191)&&(_197)){
+if((!_194)&&(_19a)){
 return true;
 }
 }
 }
-return Boolean(_191);
+return Boolean(_194);
 }
-},every:function(arr,_199,_19a){
-return this._everyOrSome(true,arr,_199,_19a);
-},some:function(arr,_19c,_19d){
-return this._everyOrSome(false,arr,_19c,_19d);
-},filter:function(arr,_19f,_1a0){
-var _1a1=dojo.lang.isString(arr);
-if(_1a1){
+},every:function(arr,_19c,_19d){
+return this._everyOrSome(true,arr,_19c,_19d);
+},some:function(arr,_19f,_1a0){
+return this._everyOrSome(false,arr,_19f,_1a0);
+},filter:function(arr,_1a2,_1a3){
+var _1a4=dojo.lang.isString(arr);
+if(_1a4){
 arr=arr.split("");
 }
-var _1a2;
+var _1a5;
 if(Array.filter){
-_1a2=Array.filter(arr,_19f,_1a0);
+_1a5=Array.filter(arr,_1a2,_1a3);
 }else{
-if(!_1a0){
+if(!_1a3){
 if(arguments.length>=3){
 dojo.raise("thisObject doesn't exist!");
 }
-_1a0=dj_global;
+_1a3=dj_global;
 }
-_1a2=[];
+_1a5=[];
 for(var i=0;i<arr.length;i++){
-if(_19f.call(_1a0,arr[i],i,arr)){
-_1a2.push(arr[i]);
+if(_1a2.call(_1a3,arr[i],i,arr)){
+_1a5.push(arr[i]);
 }
 }
 }
-if(_1a1){
-return _1a2.join("");
+if(_1a4){
+return _1a5.join("");
 }else{
-return _1a2;
+return _1a5;
 }
 },unnest:function(){
 var out=[];
@@ -1643,29 +1657,37 @@
 }
 }
 return out;
-},toArray:function(_1a7,_1a8){
-var _1a9=[];
-for(var i=_1a8||0;i<_1a7.length;i++){
-_1a9.push(_1a7[i]);
+},toArray:function(_1aa,_1ab){
+var _1ac=[];
+for(var i=_1ab||0;i<_1aa.length;i++){
+_1ac.push(_1aa[i]);
 }
-return _1a9;
+return _1ac;
 }});
 dojo.provide("dojo.lang.func");
-dojo.lang.hitch=function(_1ab,_1ac){
-var fcn=(dojo.lang.isString(_1ac)?_1ab[_1ac]:_1ac)||function(){
+dojo.lang.hitch=function(_1ae,_1af){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
+var fcn=(dojo.lang.isString(_1af)?_1ae[_1af]:_1af)||function(){
 };
 return function(){
-return fcn.apply(_1ab,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_1ae,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_1ae,_1af,_1b0){
-var nso=(_1af||dojo.lang.anon);
-if((_1b0)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_1b5,_1b6,_1b7){
+var nso=(_1b6||dojo.lang.anon);
+if((_1b7)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_1ae){
+if(nso[x]===_1b5){
 return x;
 }
 }
@@ -1677,50 +1699,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_1ae;
+nso[ret]=_1b5;
 return ret;
 };
-dojo.lang.forward=function(_1b4){
+dojo.lang.forward=function(_1bb){
 return function(){
-return this[_1b4].apply(this,arguments);
+return this[_1bb].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_1b5,func){
-var _1b7=[];
-_1b5=_1b5||dj_global;
+dojo.lang.curry=function(_1bc,func){
+var _1be=[];
+_1bc=_1bc||dj_global;
 if(dojo.lang.isString(func)){
-func=_1b5[func];
+func=_1bc[func];
 }
 for(var x=2;x<arguments.length;x++){
-_1b7.push(arguments[x]);
+_1be.push(arguments[x]);
 }
-var _1b9=(func["__preJoinArity"]||func.length)-_1b7.length;
-function gather(_1ba,_1bb,_1bc){
-var _1bd=_1bc;
-var _1be=_1bb.slice(0);
-for(var x=0;x<_1ba.length;x++){
-_1be.push(_1ba[x]);
+var _1c0=(func["__preJoinArity"]||func.length)-_1be.length;
+function gather(_1c1,_1c2,_1c3){
+var _1c4=_1c3;
+var _1c5=_1c2.slice(0);
+for(var x=0;x<_1c1.length;x++){
+_1c5.push(_1c1[x]);
 }
-_1bc=_1bc-_1ba.length;
-if(_1bc<=0){
-var res=func.apply(_1b5,_1be);
-_1bc=_1bd;
+_1c3=_1c3-_1c1.length;
+if(_1c3<=0){
+var res=func.apply(_1bc,_1c5);
+_1c3=_1c4;
 return res;
 }else{
 return function(){
-return gather(arguments,_1be,_1bc);
+return gather(arguments,_1c5,_1c3);
 };
 }
 }
-return gather([],_1b7,_1b9);
+return gather([],_1be,_1c0);
 };
-dojo.lang.curryArguments=function(_1c1,func,args,_1c4){
-var _1c5=[];
-var x=_1c4||0;
-for(x=_1c4;x<args.length;x++){
-_1c5.push(args[x]);
+dojo.lang.curryArguments=function(_1c8,func,args,_1cb){
+var _1cc=[];
+var x=_1cb||0;
+for(x=_1cb;x<args.length;x++){
+_1cc.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_1c1,func].concat(_1c5));
+return dojo.lang.curry.apply(dojo.lang,[_1c8,func].concat(_1cc));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -1737,36 +1759,36 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_1cb,_1cc){
+dojo.lang.delayThese=function(farr,cb,_1d2,_1d3){
 if(!farr.length){
-if(typeof _1cc=="function"){
-_1cc();
+if(typeof _1d3=="function"){
+_1d3();
 }
 return;
 }
-if((typeof _1cb=="undefined")&&(typeof cb=="number")){
-_1cb=cb;
+if((typeof _1d2=="undefined")&&(typeof cb=="number")){
+_1d2=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_1cb){
-_1cb=0;
+if(!_1d2){
+_1d2=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_1cb,_1cc);
-},_1cb);
+dojo.lang.delayThese(farr,cb,_1d2,_1d3);
+},_1d2);
 };
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_1cd,hash){
+dojo.string.substituteParams=function(_1d4,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _1cd.replace(/\%\{(\w+)\}/g,function(_1d0,key){
+return _1d4.replace(/\%\{(\w+)\}/g,function(_1d7,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -1780,11 +1802,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _1d3=str.split(" ");
-for(var i=0;i<_1d3.length;i++){
-_1d3[i]=_1d3[i].charAt(0).toUpperCase()+_1d3[i].substring(1);
+var _1da=str.split(" ");
+for(var i=0;i<_1da.length;i++){
+_1da[i]=_1da[i].charAt(0).toUpperCase()+_1da[i].substring(1);
 }
-return _1d3.join(" ");
+return _1da.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -1797,15 +1819,15 @@
 return str;
 }
 var ret="";
-var _1d8=escape(str);
-var _1d9,re=/%u([0-9A-F]{4})/i;
-while((_1d9=_1d8.match(re))){
-var num=Number("0x"+_1d9[1]);
-var _1dc=escape("&#"+num+";");
-ret+=_1d8.substring(0,_1d9.index)+_1dc;
-_1d8=_1d8.substring(_1d9.index+_1d9[0].length);
+var _1df=escape(str);
+var _1e0,re=/%u([0-9A-F]{4})/i;
+while((_1e0=_1df.match(re))){
+var num=Number("0x"+_1e0[1]);
+var _1e3=escape("&#"+num+";");
+ret+=_1df.substring(0,_1e0.index)+_1e3;
+_1df=_1df.substring(_1e0.index+_1e0[0].length);
 }
-ret+=_1d8.replace(/\+/g,"%2B");
+ret+=_1df.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -1830,9 +1852,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_1e1){
+dojo.string.escapeXml=function(str,_1e8){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_1e1){
+if(!_1e8){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -1855,8 +1877,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_1ea){
-if(_1ea){
+dojo.string.endsWith=function(str,end,_1f1){
+if(_1f1){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -1873,12 +1895,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_1ee,_1ef){
-if(_1ef){
+dojo.string.startsWith=function(str,_1f5,_1f6){
+if(_1f6){
 str=str.toLowerCase();
-_1ee=_1ee.toLowerCase();
+_1f5=_1f5.toLowerCase();
 }
-return str.indexOf(_1ee)==0;
+return str.indexOf(_1f5)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -1896,12 +1918,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_1f5){
-if(_1f5=="\n"){
+dojo.string.normalizeNewlines=function(text,_1fc){
+if(_1fc=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_1f5=="\r"){
+if(_1fc=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -1910,20 +1932,20 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_1f7){
-var _1f8=[];
-for(var i=0,_1fa=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_1fe){
+var _1ff=[];
+for(var i=0,_201=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_1f7){
-_1f8.push(str.substring(_1fa,i));
-_1fa=i+1;
+if(str.charAt(i)==_1fe){
+_1ff.push(str.substring(_201,i));
+_201=i+1;
 }
 }
-_1f8.push(str.substr(_1fa));
-return _1f8;
+_1ff.push(str.substr(_201));
+return _1ff;
 };
 dojo.provide("dojo.dom");
 dojo.dom.ELEMENT_NODE=1;
@@ -1952,102 +1974,102 @@
 }
 };
 dojo.dom.getUniqueId=function(){
-var _1fc=dojo.doc();
+var _203=dojo.doc();
 do{
 var id="dj_unique_"+(++arguments.callee._idIncrement);
-}while(_1fc.getElementById(id));
+}while(_203.getElementById(id));
 return id;
 };
 dojo.dom.getUniqueId._idIncrement=0;
-dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_1fe,_1ff){
-var node=_1fe.firstChild;
+dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_205,_206){
+var node=_205.firstChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.nextSibling;
 }
-if(_1ff&&node&&node.tagName&&node.tagName.toLowerCase()!=_1ff.toLowerCase()){
-node=dojo.dom.nextElement(node,_1ff);
+if(_206&&node&&node.tagName&&node.tagName.toLowerCase()!=_206.toLowerCase()){
+node=dojo.dom.nextElement(node,_206);
 }
 return node;
 };
-dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_201,_202){
-var node=_201.lastChild;
+dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_208,_209){
+var node=_208.lastChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.previousSibling;
 }
-if(_202&&node&&node.tagName&&node.tagName.toLowerCase()!=_202.toLowerCase()){
-node=dojo.dom.prevElement(node,_202);
+if(_209&&node&&node.tagName&&node.tagName.toLowerCase()!=_209.toLowerCase()){
+node=dojo.dom.prevElement(node,_209);
 }
 return node;
 };
-dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_205){
+dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_20c){
 if(!node){
 return null;
 }
 do{
 node=node.nextSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_205&&_205.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.nextElement(node,_205);
+if(node&&_20c&&_20c.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.nextElement(node,_20c);
 }
 return node;
 };
-dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_207){
+dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_20e){
 if(!node){
 return null;
 }
-if(_207){
-_207=_207.toLowerCase();
+if(_20e){
+_20e=_20e.toLowerCase();
 }
 do{
 node=node.previousSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_207&&_207.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.prevElement(node,_207);
+if(node&&_20e&&_20e.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.prevElement(node,_20e);
 }
 return node;
 };
-dojo.dom.moveChildren=function(_208,_209,trim){
-var _20b=0;
+dojo.dom.moveChildren=function(_20f,_210,trim){
+var _212=0;
 if(trim){
-while(_208.hasChildNodes()&&_208.firstChild.nodeType==dojo.dom.TEXT_NODE){
-_208.removeChild(_208.firstChild);
+while(_20f.hasChildNodes()&&_20f.firstChild.nodeType==dojo.dom.TEXT_NODE){
+_20f.removeChild(_20f.firstChild);
 }
-while(_208.hasChildNodes()&&_208.lastChild.nodeType==dojo.dom.TEXT_NODE){
-_208.removeChild(_208.lastChild);
+while(_20f.hasChildNodes()&&_20f.lastChild.nodeType==dojo.dom.TEXT_NODE){
+_20f.removeChild(_20f.lastChild);
 }
 }
-while(_208.hasChildNodes()){
-_209.appendChild(_208.firstChild);
-_20b++;
+while(_20f.hasChildNodes()){
+_210.appendChild(_20f.firstChild);
+_212++;
 }
-return _20b;
+return _212;
 };
-dojo.dom.copyChildren=function(_20c,_20d,trim){
-var _20f=_20c.cloneNode(true);
-return this.moveChildren(_20f,_20d,trim);
+dojo.dom.copyChildren=function(_213,_214,trim){
+var _216=_213.cloneNode(true);
+return this.moveChildren(_216,_214,trim);
 };
-dojo.dom.replaceChildren=function(node,_211){
-var _212=[];
+dojo.dom.replaceChildren=function(node,_218){
+var _219=[];
 if(dojo.render.html.ie){
 for(var i=0;i<node.childNodes.length;i++){
-_212.push(node.childNodes[i]);
+_219.push(node.childNodes[i]);
 }
 }
 dojo.dom.removeChildren(node);
-node.appendChild(_211);
-for(var i=0;i<_212.length;i++){
-dojo.dom.destroyNode(_212[i]);
+node.appendChild(_218);
+for(var i=0;i<_219.length;i++){
+dojo.dom.destroyNode(_219[i]);
 }
 };
 dojo.dom.removeChildren=function(node){
-var _215=node.childNodes.length;
+var _21c=node.childNodes.length;
 while(node.hasChildNodes()){
 dojo.dom.removeNode(node.firstChild);
 }
-return _215;
+return _21c;
 };
-dojo.dom.replaceNode=function(node,_217){
-return node.parentNode.replaceChild(_217,node);
+dojo.dom.replaceNode=function(node,_21e){
+return node.parentNode.replaceChild(_21e,node);
 };
 dojo.dom.destroyNode=function(node){
 if(node.parentNode){
@@ -2067,38 +2089,38 @@
 return node.parentNode.removeChild(node);
 }
 };
-dojo.dom.getAncestors=function(node,_21b,_21c){
-var _21d=[];
-var _21e=(_21b&&(_21b instanceof Function||typeof _21b=="function"));
+dojo.dom.getAncestors=function(node,_222,_223){
+var _224=[];
+var _225=(_222&&(_222 instanceof Function||typeof _222=="function"));
 while(node){
-if(!_21e||_21b(node)){
-_21d.push(node);
+if(!_225||_222(node)){
+_224.push(node);
 }
-if(_21c&&_21d.length>0){
-return _21d[0];
+if(_223&&_224.length>0){
+return _224[0];
 }
 node=node.parentNode;
 }
-if(_21c){
+if(_223){
 return null;
 }
-return _21d;
+return _224;
 };
-dojo.dom.getAncestorsByTag=function(node,tag,_221){
+dojo.dom.getAncestorsByTag=function(node,tag,_228){
 tag=tag.toLowerCase();
 return dojo.dom.getAncestors(node,function(el){
 return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
-},_221);
+},_228);
 };
 dojo.dom.getFirstAncestorByTag=function(node,tag){
 return dojo.dom.getAncestorsByTag(node,tag,true);
 };
-dojo.dom.isDescendantOf=function(node,_226,_227){
-if(_227&&node){
+dojo.dom.isDescendantOf=function(node,_22d,_22e){
+if(_22e&&node){
 node=node.parentNode;
 }
 while(node){
-if(node==_226){
+if(node==_22d){
 return true;
 }
 node=node.parentNode;
@@ -2120,12 +2142,12 @@
 };
 dojo.dom.createDocument=function(){
 var doc=null;
-var _22a=dojo.doc();
+var _231=dojo.doc();
 if(!dj_undef("ActiveXObject")){
-var _22b=["MSXML2","Microsoft","MSXML","MSXML3"];
-for(var i=0;i<_22b.length;i++){
+var _232=["MSXML2","Microsoft","MSXML","MSXML3"];
+for(var i=0;i<_232.length;i++){
 try{
-doc=new ActiveXObject(_22b[i]+".XMLDOM");
+doc=new ActiveXObject(_232[i]+".XMLDOM");
 }
 catch(e){
 }
@@ -2134,40 +2156,40 @@
 }
 }
 }else{
-if((_22a.implementation)&&(_22a.implementation.createDocument)){
-doc=_22a.implementation.createDocument("","",null);
+if((_231.implementation)&&(_231.implementation.createDocument)){
+doc=_231.implementation.createDocument("","",null);
 }
 }
 return doc;
 };
-dojo.dom.createDocumentFromText=function(str,_22e){
-if(!_22e){
-_22e="text/xml";
+dojo.dom.createDocumentFromText=function(str,_235){
+if(!_235){
+_235="text/xml";
 }
 if(!dj_undef("DOMParser")){
-var _22f=new DOMParser();
-return _22f.parseFromString(str,_22e);
+var _236=new DOMParser();
+return _236.parseFromString(str,_235);
 }else{
 if(!dj_undef("ActiveXObject")){
-var _230=dojo.dom.createDocument();
-if(_230){
-_230.async=false;
-_230.loadXML(str);
-return _230;
+var _237=dojo.dom.createDocument();
+if(_237){
+_237.async=false;
+_237.loadXML(str);
+return _237;
 }else{
 dojo.debug("toXml didn't work?");
 }
 }else{
-var _231=dojo.doc();
-if(_231.createElement){
-var tmp=_231.createElement("xml");
+var _238=dojo.doc();
+if(_238.createElement){
+var tmp=_238.createElement("xml");
 tmp.innerHTML=str;
-if(_231.implementation&&_231.implementation.createDocument){
-var _233=_231.implementation.createDocument("foo","",null);
+if(_238.implementation&&_238.implementation.createDocument){
+var _23a=_238.implementation.createDocument("foo","",null);
 for(var i=0;i<tmp.childNodes.length;i++){
-_233.importNode(tmp.childNodes.item(i),true);
+_23a.importNode(tmp.childNodes.item(i),true);
 }
-return _233;
+return _23a;
 }
 return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
 }
@@ -2175,39 +2197,39 @@
 }
 return null;
 };
-dojo.dom.prependChild=function(node,_236){
-if(_236.firstChild){
-_236.insertBefore(node,_236.firstChild);
+dojo.dom.prependChild=function(node,_23d){
+if(_23d.firstChild){
+_23d.insertBefore(node,_23d.firstChild);
 }else{
-_236.appendChild(node);
+_23d.appendChild(node);
 }
 return true;
 };
-dojo.dom.insertBefore=function(node,ref,_239){
-if((_239!=true)&&(node===ref||node.nextSibling===ref)){
+dojo.dom.insertBefore=function(node,ref,_240){
+if((_240!=true)&&(node===ref||node.nextSibling===ref)){
 return false;
 }
-var _23a=ref.parentNode;
-_23a.insertBefore(node,ref);
+var _241=ref.parentNode;
+_241.insertBefore(node,ref);
 return true;
 };
-dojo.dom.insertAfter=function(node,ref,_23d){
+dojo.dom.insertAfter=function(node,ref,_244){
 var pn=ref.parentNode;
 if(ref==pn.lastChild){
-if((_23d!=true)&&(node===ref)){
+if((_244!=true)&&(node===ref)){
 return false;
 }
 pn.appendChild(node);
 }else{
-return this.insertBefore(node,ref.nextSibling,_23d);
+return this.insertBefore(node,ref.nextSibling,_244);
 }
 return true;
 };
-dojo.dom.insertAtPosition=function(node,ref,_241){
-if((!node)||(!ref)||(!_241)){
+dojo.dom.insertAtPosition=function(node,ref,_248){
+if((!node)||(!ref)||(!_248)){
 return false;
 }
-switch(_241.toLowerCase()){
+switch(_248.toLowerCase()){
 case "before":
 return dojo.dom.insertBefore(node,ref);
 case "after":
@@ -2225,46 +2247,46 @@
 return true;
 }
 };
-dojo.dom.insertAtIndex=function(node,_243,_244){
-var _245=_243.childNodes;
-if(!_245.length||_245.length==_244){
-_243.appendChild(node);
+dojo.dom.insertAtIndex=function(node,_24a,_24b){
+var _24c=_24a.childNodes;
+if(!_24c.length||_24c.length==_24b){
+_24a.appendChild(node);
 return true;
 }
-if(_244==0){
-return dojo.dom.prependChild(node,_243);
+if(_24b==0){
+return dojo.dom.prependChild(node,_24a);
 }
-return dojo.dom.insertAfter(node,_245[_244-1]);
+return dojo.dom.insertAfter(node,_24c[_24b-1]);
 };
 dojo.dom.textContent=function(node,text){
 if(arguments.length>1){
-var _248=dojo.doc();
-dojo.dom.replaceChildren(node,_248.createTextNode(text));
+var _24f=dojo.doc();
+dojo.dom.replaceChildren(node,_24f.createTextNode(text));
 return text;
 }else{
 if(node.textContent!=undefined){
 return node.textContent;
 }
-var _249="";
+var _250="";
 if(node==null){
-return _249;
+return _250;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-_249+=dojo.dom.textContent(node.childNodes[i]);
+_250+=dojo.dom.textContent(node.childNodes[i]);
 break;
 case 3:
 case 2:
 case 4:
-_249+=node.childNodes[i].nodeValue;
+_250+=node.childNodes[i].nodeValue;
 break;
 default:
 break;
 }
 }
-return _249;
+return _250;
 }
 };
 dojo.dom.hasParent=function(node){
@@ -2280,17 +2302,17 @@
 }
 return "";
 };
-dojo.dom.setAttributeNS=function(elem,_24f,_250,_251){
+dojo.dom.setAttributeNS=function(elem,_256,_257,_258){
 if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
 dojo.raise("No element given to dojo.dom.setAttributeNS");
 }
 if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
-elem.setAttributeNS(_24f,_250,_251);
+elem.setAttributeNS(_256,_257,_258);
 }else{
-var _252=elem.ownerDocument;
-var _253=_252.createNode(2,_250,_24f);
-_253.nodeValue=_251;
-elem.setAttributeNode(_253);
+var _259=elem.ownerDocument;
+var _25a=_259.createNode(2,_257,_256);
+_25a.nodeValue=_258;
+elem.setAttributeNode(_25a);
 }
 };
 dojo.provide("dojo.undo.browser");
@@ -2337,12 +2359,12 @@
 this.bookmarkAnchor.href=hash;
 if(dojo.render.html.ie){
 url=this._loadIframeHistory();
-var _258=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_25a){
+var _25f=args["back"]||args["backButton"]||args["handle"];
+var tcb=function(_261){
 if(window.location.hash!=""){
 setTimeout("window.location.href = '"+hash+"';",1);
 }
-_258.apply(this,[_25a]);
+_25f.apply(this,[_261]);
 };
 if(args["back"]){
 args.back=tcb;
@@ -2355,13 +2377,13 @@
 }
 }
 }
-var _25b=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_25d){
+var _262=args["forward"]||args["forwardButton"]||args["handle"];
+var tfw=function(_264){
 if(window.location.hash!=""){
 window.location.href=hash;
 }
-if(_25b){
-_25b.apply(this,[_25d]);
+if(_262){
+_262.apply(this,[_264]);
 }
 };
 if(args["forward"]){
@@ -2406,10 +2428,10 @@
 }
 }
 }
-},iframeLoaded:function(evt,_260){
+},iframeLoaded:function(evt,_267){
 if(!dojo.render.html.opera){
-var _261=this._getUrlQuery(_260.href);
-if(_261==null){
+var _268=this._getUrlQuery(_267.href);
+if(_268==null){
 if(this.historyStack.length==1){
 this.handleBackButton();
 }
@@ -2419,17 +2441,17 @@
 this.moveForward=false;
 return;
 }
-if(this.historyStack.length>=2&&_261==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
+if(this.historyStack.length>=2&&_268==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
 this.handleBackButton();
 }else{
-if(this.forwardStack.length>0&&_261==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
+if(this.forwardStack.length>0&&_268==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
 this.handleForwardButton();
 }
 }
 }
 },handleBackButton:function(){
-var _262=this.historyStack.pop();
-if(!_262){
+var _269=this.historyStack.pop();
+if(!_269){
 return;
 }
 var last=this.historyStack[this.historyStack.length-1];
@@ -2449,7 +2471,7 @@
 }
 }
 }
-this.forwardStack.push(_262);
+this.forwardStack.push(_269);
 },handleForwardButton:function(){
 var last=this.forwardStack.pop();
 if(!last){
@@ -2470,11 +2492,11 @@
 },_createState:function(url,args,hash){
 return {"url":url,"kwArgs":args,"urlHash":hash};
 },_getUrlQuery:function(url){
-var _269=url.split("?");
-if(_269.length<2){
+var _270=url.split("?");
+if(_270.length<2){
 return null;
 }else{
-return _269[1];
+return _270[1];
 }
 },_loadIframeHistory:function(){
 var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
@@ -2485,26 +2507,26 @@
 dojo.provide("dojo.io.BrowserIO");
 if(!dj_undef("window")){
 dojo.io.checkChildrenForFile=function(node){
-var _26c=false;
-var _26d=node.getElementsByTagName("input");
-dojo.lang.forEach(_26d,function(_26e){
-if(_26c){
+var _273=false;
+var _274=node.getElementsByTagName("input");
+dojo.lang.forEach(_274,function(_275){
+if(_273){
 return;
 }
-if(_26e.getAttribute("type")=="file"){
-_26c=true;
+if(_275.getAttribute("type")=="file"){
+_273=true;
 }
 });
-return _26c;
+return _273;
 };
-dojo.io.formHasFile=function(_26f){
-return dojo.io.checkChildrenForFile(_26f);
+dojo.io.formHasFile=function(_276){
+return dojo.io.checkChildrenForFile(_276);
 };
-dojo.io.updateNode=function(node,_271){
+dojo.io.updateNode=function(node,_278){
 node=dojo.byId(node);
-var args=_271;
-if(dojo.lang.isString(_271)){
-args={url:_271};
+var args=_278;
+if(dojo.lang.isString(_278)){
+args={url:_278};
 }
 args.mimetype="text/html";
 args.load=function(t,d,e){
@@ -2519,18 +2541,18 @@
 var type=(node.type||"").toLowerCase();
 return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
 };
-dojo.io.encodeForm=function(_278,_279,_27a){
-if((!_278)||(!_278.tagName)||(!_278.tagName.toLowerCase()=="form")){
+dojo.io.encodeForm=function(_27f,_280,_281){
+if((!_27f)||(!_27f.tagName)||(!_27f.tagName.toLowerCase()=="form")){
 dojo.raise("Attempted to encode a non-form element.");
 }
-if(!_27a){
-_27a=dojo.io.formFilter;
+if(!_281){
+_281=dojo.io.formFilter;
 }
-var enc=/utf/i.test(_279||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _27c=[];
-for(var i=0;i<_278.elements.length;i++){
-var elm=_278.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_27a(elm)){
+var enc=/utf/i.test(_280||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _283=[];
+for(var i=0;i<_27f.elements.length;i++){
+var elm=_27f.elements[i];
+if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_281(elm)){
 continue;
 }
 var name=enc(elm.name);
@@ -2538,30 +2560,30 @@
 if(type=="select-multiple"){
 for(var j=0;j<elm.options.length;j++){
 if(elm.options[j].selected){
-_27c.push(name+"="+enc(elm.options[j].value));
+_283.push(name+"="+enc(elm.options[j].value));
 }
 }
 }else{
 if(dojo.lang.inArray(["radio","checkbox"],type)){
 if(elm.checked){
-_27c.push(name+"="+enc(elm.value));
+_283.push(name+"="+enc(elm.value));
 }
 }else{
-_27c.push(name+"="+enc(elm.value));
+_283.push(name+"="+enc(elm.value));
 }
 }
 }
-var _282=_278.getElementsByTagName("input");
-for(var i=0;i<_282.length;i++){
-var _283=_282[i];
-if(_283.type.toLowerCase()=="image"&&_283.form==_278&&_27a(_283)){
-var name=enc(_283.name);
-_27c.push(name+"="+enc(_283.value));
-_27c.push(name+".x=0");
-_27c.push(name+".y=0");
+var _289=_27f.getElementsByTagName("input");
+for(var i=0;i<_289.length;i++){
+var _28a=_289[i];
+if(_28a.type.toLowerCase()=="image"&&_28a.form==_27f&&_281(_28a)){
+var name=enc(_28a.name);
+_283.push(name+"="+enc(_28a.value));
+_283.push(name+".x=0");
+_283.push(name+".y=0");
 }
 }
-return _27c.join("&")+"&";
+return _283.join("&")+"&";
 };
 dojo.io.FormBind=function(args){
 this.bindArgs={};
@@ -2595,11 +2617,11 @@
 this.connect(node,"onclick","click");
 }
 }
-var _289=form.getElementsByTagName("input");
-for(var i=0;i<_289.length;i++){
-var _28a=_289[i];
-if(_28a.type.toLowerCase()=="image"&&_28a.form==form){
-this.connect(_28a,"onclick","click");
+var _290=form.getElementsByTagName("input");
+for(var i=0;i<_290.length;i++){
+var _291=_290[i];
+if(_291.type.toLowerCase()=="image"&&_291.form==form){
+this.connect(_291,"onclick","click");
 }
 }
 },onSubmit:function(form){
@@ -2617,26 +2639,26 @@
 this.clickedButton=node;
 },formFilter:function(node){
 var type=(node.type||"").toLowerCase();
-var _291=false;
+var _298=false;
 if(node.disabled||!node.name){
-_291=false;
+_298=false;
 }else{
 if(dojo.lang.inArray(["submit","button","image"],type)){
 if(!this.clickedButton){
 this.clickedButton=node;
 }
-_291=node==this.clickedButton;
+_298=node==this.clickedButton;
 }else{
-_291=!dojo.lang.inArray(["file","submit","reset","button"],type);
+_298=!dojo.lang.inArray(["file","submit","reset","button"],type);
 }
 }
-return _291;
-},connect:function(_292,_293,_294){
+return _298;
+},connect:function(_299,_29a,_29b){
 if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_292,_293,this,_294);
+dojo.event.connect(_299,_29a,this,_29b);
 }else{
-var fcn=dojo.lang.hitch(this,_294);
-_292[_293]=function(e){
+var fcn=dojo.lang.hitch(this,_29b);
+_299[_29a]=function(e){
 if(!e){
 e=window.event;
 }
@@ -2653,40 +2675,40 @@
 }
 }});
 dojo.io.XMLHTTPTransport=new function(){
-var _297=this;
-var _298={};
+var _29e=this;
+var _29f={};
 this.useCache=false;
 this.preventCache=false;
-function getCacheKey(url,_29a,_29b){
-return url+"|"+_29a+"|"+_29b.toLowerCase();
+function getCacheKey(url,_2a1,_2a2){
+return url+"|"+_2a1+"|"+_2a2.toLowerCase();
 }
-function addToCache(url,_29d,_29e,http){
-_298[getCacheKey(url,_29d,_29e)]=http;
+function addToCache(url,_2a4,_2a5,http){
+_29f[getCacheKey(url,_2a4,_2a5)]=http;
 }
-function getFromCache(url,_2a1,_2a2){
-return _298[getCacheKey(url,_2a1,_2a2)];
+function getFromCache(url,_2a8,_2a9){
+return _29f[getCacheKey(url,_2a8,_2a9)];
 }
 this.clearCache=function(){
-_298={};
+_29f={};
 };
-function doLoad(_2a3,http,url,_2a6,_2a7){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
+function doLoad(_2aa,http,url,_2ad,_2ae){
+if(((http.status>=200)&&(http.status<300))||(http.status==304)||(http.status==1223)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
 var ret;
-if(_2a3.method.toLowerCase()=="head"){
-var _2a9=http.getAllResponseHeaders();
+if(_2aa.method.toLowerCase()=="head"){
+var _2b0=http.getAllResponseHeaders();
 ret={};
 ret.toString=function(){
-return _2a9;
+return _2b0;
 };
-var _2aa=_2a9.split(/[\r\n]+/g);
-for(var i=0;i<_2aa.length;i++){
-var pair=_2aa[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+var _2b1=_2b0.split(/[\r\n]+/g);
+for(var i=0;i<_2b1.length;i++){
+var pair=_2b1[i].match(/^([^:]+)\s*:\s*(.+)$/i);
 if(pair){
 ret[pair[1]]=pair[2];
 }
 }
 }else{
-if(_2a3.mimetype=="text/javascript"){
+if(_2aa.mimetype=="text/javascript"){
 try{
 ret=dj_eval(http.responseText);
 }
@@ -2696,9 +2718,9 @@
 ret=null;
 }
 }else{
-if(_2a3.mimetype=="text/json"||_2a3.mimetype=="application/json"){
+if(_2aa.mimetype.substr(0,9)=="text/json"||_2aa.mimetype.substr(0,16)=="application/json"){
 try{
-ret=dj_eval("("+http.responseText+")");
+ret=dj_eval("("+_2aa.jsonFilter(http.responseText)+")");
 }
 catch(e){
 dojo.debug(e);
@@ -2706,7 +2728,7 @@
 ret=false;
 }
 }else{
-if((_2a3.mimetype=="application/xml")||(_2a3.mimetype=="text/xml")){
+if((_2aa.mimetype=="application/xml")||(_2aa.mimetype=="text/xml")){
 ret=http.responseXML;
 if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
 ret=dojo.dom.createDocumentFromText(http.responseText);
@@ -2717,22 +2739,22 @@
 }
 }
 }
-if(_2a7){
-addToCache(url,_2a6,_2a3.method,http);
+if(_2ae){
+addToCache(url,_2ad,_2aa.method,http);
 }
-_2a3[(typeof _2a3.load=="function")?"load":"handle"]("load",ret,http,_2a3);
+_2aa[(typeof _2aa.load=="function")?"load":"handle"]("load",ret,http,_2aa);
 }else{
-var _2ad=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_2a3[(typeof _2a3.error=="function")?"error":"handle"]("error",_2ad,http,_2a3);
+var _2b4=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
+_2aa[(typeof _2aa.error=="function")?"error":"handle"]("error",_2b4,http,_2aa);
 }
 }
-function setHeaders(http,_2af){
-if(_2af["headers"]){
-for(var _2b0 in _2af["headers"]){
-if(_2b0.toLowerCase()=="content-type"&&!_2af["contentType"]){
-_2af["contentType"]=_2af["headers"][_2b0];
+function setHeaders(http,_2b6){
+if(_2b6["headers"]){
+for(var _2b7 in _2b6["headers"]){
+if(_2b7.toLowerCase()=="content-type"&&!_2b6["contentType"]){
+_2b6["contentType"]=_2b6["headers"][_2b7];
 }else{
-http.setRequestHeader(_2b0,_2af["headers"][_2b0]);
+http.setRequestHeader(_2b7,_2b6["headers"][_2b7]);
 }
 }
 }
@@ -2746,7 +2768,7 @@
 };
 this.watchInFlight=function(){
 var now=null;
-if(!dojo.hostenv._blockAsync&&!_297._blockAsync){
+if(!dojo.hostenv._blockAsync&&!_29e._blockAsync){
 for(var x=this.inFlight.length-1;x>=0;x--){
 try{
 var tif=this.inFlight[x];
@@ -2774,8 +2796,8 @@
 }
 catch(e){
 try{
-var _2b4=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_2b4,tif.http,tif.req);
+var _2bb=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
+tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_2bb,tif.http,tif.req);
 }
 catch(e2){
 dojo.debug("XMLHttpTransport error callback failed: "+e2);
@@ -2790,74 +2812,75 @@
 }
 this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
 };
-var _2b5=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_2b6){
-return _2b5&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_2b6["mimetype"].toLowerCase()||""))&&!(_2b6["formNode"]&&dojo.io.formHasFile(_2b6["formNode"]));
+var _2bc=dojo.hostenv.getXmlhttpObject()?true:false;
+this.canHandle=function(_2bd){
+var mlc=_2bd["mimetype"].toLowerCase()||"";
+return _2bc&&((dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript"],mlc))||(mlc.substr(0,9)=="text/json"||mlc.substr(0,16)=="application/json"))&&!(_2bd["formNode"]&&dojo.io.formHasFile(_2bd["formNode"]));
 };
 this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_2b7){
-if(!_2b7["url"]){
-if(!_2b7["formNode"]&&(_2b7["backButton"]||_2b7["back"]||_2b7["changeUrl"]||_2b7["watchForURL"])&&(!djConfig.preventBackButtonFix)){
+this.bind=function(_2bf){
+if(!_2bf["url"]){
+if(!_2bf["formNode"]&&(_2bf["backButton"]||_2bf["back"]||_2bf["changeUrl"]||_2bf["watchForURL"])&&(!djConfig.preventBackButtonFix)){
 dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_2b7);
+dojo.undo.browser.addToHistory(_2bf);
 return true;
 }
 }
-var url=_2b7.url;
-var _2b9="";
-if(_2b7["formNode"]){
-var ta=_2b7.formNode.getAttribute("action");
-if((ta)&&(!_2b7["url"])){
+var url=_2bf.url;
+var _2c1="";
+if(_2bf["formNode"]){
+var ta=_2bf.formNode.getAttribute("action");
+if((ta)&&(!_2bf["url"])){
 url=ta;
 }
-var tp=_2b7.formNode.getAttribute("method");
-if((tp)&&(!_2b7["method"])){
-_2b7.method=tp;
+var tp=_2bf.formNode.getAttribute("method");
+if((tp)&&(!_2bf["method"])){
+_2bf.method=tp;
 }
-_2b9+=dojo.io.encodeForm(_2b7.formNode,_2b7.encoding,_2b7["formFilter"]);
+_2c1+=dojo.io.encodeForm(_2bf.formNode,_2bf.encoding,_2bf["formFilter"]);
 }
 if(url.indexOf("#")>-1){
 dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
 url=url.split("#")[0];
 }
-if(_2b7["file"]){
-_2b7.method="post";
+if(_2bf["file"]){
+_2bf.method="post";
 }
-if(!_2b7["method"]){
-_2b7.method="get";
+if(!_2bf["method"]){
+_2bf.method="get";
 }
-if(_2b7.method.toLowerCase()=="get"){
-_2b7.multipart=false;
+if(_2bf.method.toLowerCase()=="get"){
+_2bf.multipart=false;
 }else{
-if(_2b7["file"]){
-_2b7.multipart=true;
+if(_2bf["file"]){
+_2bf.multipart=true;
 }else{
-if(!_2b7["multipart"]){
-_2b7.multipart=false;
+if(!_2bf["multipart"]){
+_2bf.multipart=false;
 }
 }
 }
-if(_2b7["backButton"]||_2b7["back"]||_2b7["changeUrl"]){
-dojo.undo.browser.addToHistory(_2b7);
+if(_2bf["backButton"]||_2bf["back"]||_2bf["changeUrl"]){
+dojo.undo.browser.addToHistory(_2bf);
 }
-var _2bc=_2b7["content"]||{};
-if(_2b7.sendTransport){
-_2bc["dojo.transport"]="xmlhttp";
+var _2c4=_2bf["content"]||{};
+if(_2bf.sendTransport){
+_2c4["dojo.transport"]="xmlhttp";
 }
 do{
-if(_2b7.postContent){
-_2b9=_2b7.postContent;
+if(_2bf.postContent){
+_2c1=_2bf.postContent;
 break;
 }
-if(_2bc){
-_2b9+=dojo.io.argsFromMap(_2bc,_2b7.encoding);
+if(_2c4){
+_2c1+=dojo.io.argsFromMap(_2c4,_2bf.encoding);
 }
-if(_2b7.method.toLowerCase()=="get"||!_2b7.multipart){
+if(_2bf.method.toLowerCase()=="get"||!_2bf.multipart){
 break;
 }
 var t=[];
-if(_2b9.length){
-var q=_2b9.split("&");
+if(_2c1.length){
+var q=_2c1.split("&");
 for(var i=0;i<q.length;++i){
 if(q[i].length){
 var p=q[i].split("=");
@@ -2865,71 +2888,71 @@
 }
 }
 }
-if(_2b7.file){
-if(dojo.lang.isArray(_2b7.file)){
-for(var i=0;i<_2b7.file.length;++i){
-var o=_2b7.file[i];
+if(_2bf.file){
+if(dojo.lang.isArray(_2bf.file)){
+for(var i=0;i<_2bf.file.length;++i){
+var o=_2bf.file[i];
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }else{
-var o=_2b7.file;
+var o=_2bf.file;
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }
 if(t.length){
 t.push("--"+this.multipartBoundary+"--","");
-_2b9=t.join("\r\n");
+_2c1=t.join("\r\n");
 }
 }while(false);
-var _2c2=_2b7["sync"]?false:true;
-var _2c3=_2b7["preventCache"]||(this.preventCache==true&&_2b7["preventCache"]!=false);
-var _2c4=_2b7["useCache"]==true||(this.useCache==true&&_2b7["useCache"]!=false);
-if(!_2c3&&_2c4){
-var _2c5=getFromCache(url,_2b9,_2b7.method);
-if(_2c5){
-doLoad(_2b7,_2c5,url,_2b9,false);
+var _2ca=_2bf["sync"]?false:true;
+var _2cb=_2bf["preventCache"]||(this.preventCache==true&&_2bf["preventCache"]!=false);
+var _2cc=_2bf["useCache"]==true||(this.useCache==true&&_2bf["useCache"]!=false);
+if(!_2cb&&_2cc){
+var _2cd=getFromCache(url,_2c1,_2bf.method);
+if(_2cd){
+doLoad(_2bf,_2cd,url,_2c1,false);
 return;
 }
 }
-var http=dojo.hostenv.getXmlhttpObject(_2b7);
-var _2c7=false;
-if(_2c2){
-var _2c8=this.inFlight.push({"req":_2b7,"http":http,"url":url,"query":_2b9,"useCache":_2c4,"startTime":_2b7.timeoutSeconds?(new Date()).getTime():0});
+var http=dojo.hostenv.getXmlhttpObject(_2bf);
+var _2cf=false;
+if(_2ca){
+var _2d0=this.inFlight.push({"req":_2bf,"http":http,"url":url,"query":_2c1,"useCache":_2cc,"startTime":_2bf.timeoutSeconds?(new Date()).getTime():0});
 this.startWatchingInFlight();
 }else{
-_297._blockAsync=true;
+_29e._blockAsync=true;
 }
-if(_2b7.method.toLowerCase()=="post"){
-if(!_2b7.user){
-http.open("POST",url,_2c2);
+if(_2bf.method.toLowerCase()=="post"){
+if(!_2bf.user){
+http.open("POST",url,_2ca);
 }else{
-http.open("POST",url,_2c2,_2b7.user,_2b7.password);
+http.open("POST",url,_2ca,_2bf.user,_2bf.password);
 }
-setHeaders(http,_2b7);
-http.setRequestHeader("Content-Type",_2b7.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_2b7.contentType||"application/x-www-form-urlencoded"));
+setHeaders(http,_2bf);
+http.setRequestHeader("Content-Type",_2bf.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_2bf.contentType||"application/x-www-form-urlencoded"));
 try{
-http.send(_2b9);
+http.send(_2c1);
 }
 catch(e){
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_2b7,{status:404},url,_2b9,_2c4);
+doLoad(_2bf,{status:404},url,_2c1,_2cc);
 }
 }else{
-var _2c9=url;
-if(_2b9!=""){
-_2c9+=(_2c9.indexOf("?")>-1?"&":"?")+_2b9;
+var _2d1=url;
+if(_2c1!=""){
+_2d1+=(_2d1.indexOf("?")>-1?"&":"?")+_2c1;
 }
-if(_2c3){
-_2c9+=(dojo.string.endsWithAny(_2c9,"?","&")?"":(_2c9.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
+if(_2cb){
+_2d1+=(dojo.string.endsWithAny(_2d1,"?","&")?"":(_2d1.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
 }
-if(!_2b7.user){
-http.open(_2b7.method.toUpperCase(),_2c9,_2c2);
+if(!_2bf.user){
+http.open(_2bf.method.toUpperCase(),_2d1,_2ca);
 }else{
-http.open(_2b7.method.toUpperCase(),_2c9,_2c2,_2b7.user,_2b7.password);
+http.open(_2bf.method.toUpperCase(),_2d1,_2ca,_2bf.user,_2bf.password);
 }
-setHeaders(http,_2b7);
+setHeaders(http,_2bf);
 try{
 http.send(null);
 }
@@ -2937,14 +2960,14 @@
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_2b7,{status:404},url,_2b9,_2c4);
+doLoad(_2bf,{status:404},url,_2c1,_2cc);
 }
 }
-if(!_2c2){
-doLoad(_2b7,http,url,_2b9,_2c4);
-_297._blockAsync=false;
+if(!_2ca){
+doLoad(_2bf,http,url,_2c1,_2cc);
+_29e._blockAsync=false;
 }
-_2b7.abort=function(){
+_2bf.abort=function(){
 try{
 http._aborted=true;
 }
@@ -2958,15 +2981,15 @@
 };
 }
 dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_2cb,days,path,_2ce,_2cf){
-var _2d0=-1;
+dojo.io.cookie.setCookie=function(name,_2d3,days,path,_2d6,_2d7){
+var _2d8=-1;
 if((typeof days=="number")&&(days>=0)){
 var d=new Date();
 d.setTime(d.getTime()+(days*24*60*60*1000));
-_2d0=d.toGMTString();
+_2d8=d.toGMTString();
 }
-_2cb=escape(_2cb);
-document.cookie=name+"="+_2cb+";"+(_2d0!=-1?" expires="+_2d0+";":"")+(path?"path="+path:"")+(_2ce?"; domain="+_2ce:"")+(_2cf?"; secure":"");
+_2d3=escape(_2d3);
+document.cookie=name+"="+_2d3+";"+(_2d8!=-1?" expires="+_2d8+";":"")+(path?"path="+path:"")+(_2d6?"; domain="+_2d6:"")+(_2d7?"; secure":"");
 };
 dojo.io.cookie.set=dojo.io.cookie.setCookie;
 dojo.io.cookie.getCookie=function(name){
@@ -2974,71 +2997,71 @@
 if(idx==-1){
 return null;
 }
-var _2d4=document.cookie.substring(idx+name.length+1);
-var end=_2d4.indexOf(";");
+var _2dc=document.cookie.substring(idx+name.length+1);
+var end=_2dc.indexOf(";");
 if(end==-1){
-end=_2d4.length;
+end=_2dc.length;
 }
-_2d4=_2d4.substring(0,end);
-_2d4=unescape(_2d4);
-return _2d4;
+_2dc=_2dc.substring(0,end);
+_2dc=unescape(_2dc);
+return _2dc;
 };
 dojo.io.cookie.get=dojo.io.cookie.getCookie;
 dojo.io.cookie.deleteCookie=function(name){
 dojo.io.cookie.setCookie(name,"-",0);
 };
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_2db,_2dc,_2dd){
+dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_2e3,_2e4,_2e5){
 if(arguments.length==5){
-_2dd=_2db;
-_2db=null;
-_2dc=null;
+_2e5=_2e3;
+_2e3=null;
+_2e4=null;
 }
-var _2de=[],_2df,_2e0="";
-if(!_2dd){
-_2df=dojo.io.cookie.getObjectCookie(name);
+var _2e6=[],_2e7,_2e8="";
+if(!_2e5){
+_2e7=dojo.io.cookie.getObjectCookie(name);
 }
 if(days>=0){
-if(!_2df){
-_2df={};
+if(!_2e7){
+_2e7={};
 }
 for(var prop in obj){
 if(obj[prop]==null){
-delete _2df[prop];
+delete _2e7[prop];
 }else{
 if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_2df[prop]=obj[prop];
+_2e7[prop]=obj[prop];
 }
 }
 }
 prop=null;
-for(var prop in _2df){
-_2de.push(escape(prop)+"="+escape(_2df[prop]));
+for(var prop in _2e7){
+_2e6.push(escape(prop)+"="+escape(_2e7[prop]));
 }
-_2e0=_2de.join("&");
+_2e8=_2e6.join("&");
 }
-dojo.io.cookie.setCookie(name,_2e0,days,path,_2db,_2dc);
+dojo.io.cookie.setCookie(name,_2e8,days,path,_2e3,_2e4);
 };
 dojo.io.cookie.getObjectCookie=function(name){
-var _2e3=null,_2e4=dojo.io.cookie.getCookie(name);
-if(_2e4){
-_2e3={};
-var _2e5=_2e4.split("&");
-for(var i=0;i<_2e5.length;i++){
-var pair=_2e5[i].split("=");
-var _2e8=pair[1];
-if(isNaN(_2e8)){
-_2e8=unescape(pair[1]);
+var _2eb=null,_2ec=dojo.io.cookie.getCookie(name);
+if(_2ec){
+_2eb={};
+var _2ed=_2ec.split("&");
+for(var i=0;i<_2ed.length;i++){
+var pair=_2ed[i].split("=");
+var _2f0=pair[1];
+if(isNaN(_2f0)){
+_2f0=unescape(pair[1]);
 }
-_2e3[unescape(pair[0])]=_2e8;
+_2eb[unescape(pair[0])]=_2f0;
 }
 }
-return _2e3;
+return _2eb;
 };
 dojo.io.cookie.isSupported=function(){
 if(typeof navigator.cookieEnabled!="boolean"){
 dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _2e9=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_2e9=="CookiesAllowed");
+var _2f1=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+navigator.cookieEnabled=(_2f1=="CookiesAllowed");
 if(navigator.cookieEnabled){
 this.deleteCookie("__TestingYourBrowserForCookieSupport__");
 }
@@ -3053,7 +3076,7 @@
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_2eb){
+function interpolateArgs(args,_2f3){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -3080,14 +3103,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _2ee=dl.nameAnonFunc(args[2],ao.adviceObj,_2eb);
-ao.adviceFunc=_2ee;
+var _2f6=dl.nameAnonFunc(args[2],ao.adviceObj,_2f3);
+ao.adviceFunc=_2f6;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _2ee=dl.nameAnonFunc(args[0],ao.srcObj,_2eb);
-ao.srcFunc=_2ee;
+var _2f6=dl.nameAnonFunc(args[0],ao.srcObj,_2f3);
+ao.srcFunc=_2f6;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -3113,17 +3136,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _2ee=dl.nameAnonFunc(args[1],dj_global,_2eb);
-ao.srcFunc=_2ee;
+var _2f6=dl.nameAnonFunc(args[1],dj_global,_2f3);
+ao.srcFunc=_2f6;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _2ee=dl.nameAnonFunc(args[3],dj_global,_2eb);
+var _2f6=dl.nameAnonFunc(args[3],dj_global,_2f3);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_2ee;
+ao.adviceFunc=_2f6;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -3171,8 +3194,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _2ee=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_2eb);
-ao.aroundFunc=_2ee;
+var _2f6=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_2f3);
+ao.aroundFunc=_2f6;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -3201,18 +3224,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _2f0={};
+var _2f8={};
 for(var x in ao){
-_2f0[x]=ao[x];
+_2f8[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_2f0.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_2f0));
+_2f8.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_2f8));
 });
 return mjps;
 }
@@ -3224,20 +3254,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _2f8;
+var _300;
 if((arguments.length==1)&&(typeof a1=="object")){
-_2f8=a1;
+_300=a1;
 }else{
-_2f8={srcObj:a1,srcFunc:a2};
+_300={srcObj:a1,srcFunc:a2};
 }
-_2f8.adviceFunc=function(){
-var _2f9=[];
+_300.adviceFunc=function(){
+var _301=[];
 for(var x=0;x<arguments.length;x++){
-_2f9.push(arguments[x]);
+_301.push(arguments[x]);
 }
-dojo.debug("("+_2f8.srcObj+")."+_2f8.srcFunc,":",_2f9.join(", "));
+dojo.debug("("+_300.srcObj+")."+_300.srcFunc,":",_301.join(", "));
 };
-this.kwConnect(_2f8);
+this.kwConnect(_300);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -3263,25 +3293,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_301,_302){
-var fn=(_302)?"disconnect":"connect";
-if(typeof _301["srcFunc"]=="function"){
-_301.srcObj=_301["srcObj"]||dj_global;
-var _304=dojo.lang.nameAnonFunc(_301.srcFunc,_301.srcObj,true);
-_301.srcFunc=_304;
+this._kwConnectImpl=function(_309,_30a){
+var fn=(_30a)?"disconnect":"connect";
+if(typeof _309["srcFunc"]=="function"){
+_309.srcObj=_309["srcObj"]||dj_global;
+var _30c=dojo.lang.nameAnonFunc(_309.srcFunc,_309.srcObj,true);
+_309.srcFunc=_30c;
 }
-if(typeof _301["adviceFunc"]=="function"){
-_301.adviceObj=_301["adviceObj"]||dj_global;
-var _304=dojo.lang.nameAnonFunc(_301.adviceFunc,_301.adviceObj,true);
-_301.adviceFunc=_304;
+if(typeof _309["adviceFunc"]=="function"){
+_309.adviceObj=_309["adviceObj"]||dj_global;
+var _30c=dojo.lang.nameAnonFunc(_309.adviceFunc,_309.adviceObj,true);
+_309.adviceFunc=_30c;
 }
-_301.srcObj=_301["srcObj"]||dj_global;
-_301.adviceObj=_301["adviceObj"]||_301["targetObj"]||dj_global;
-_301.adviceFunc=_301["adviceFunc"]||_301["targetFunc"];
-return dojo.event[fn](_301);
+_309.srcObj=_309["srcObj"]||dj_global;
+_309.adviceObj=_309["adviceObj"]||_309["targetObj"]||dj_global;
+_309.adviceFunc=_309["adviceFunc"]||_309["targetFunc"];
+return dojo.event[fn](_309);
 };
-this.kwConnect=function(_305){
-return this._kwConnectImpl(_305,false);
+this.kwConnect=function(_30d){
+return this._kwConnectImpl(_30d,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -3306,12 +3336,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_308){
-return this._kwConnectImpl(_308,true);
+this.kwDisconnect=function(_310){
+return this._kwConnectImpl(_310,true);
 };
 };
-dojo.event.MethodInvocation=function(_309,obj,args){
-this.jp_=_309;
+dojo.event.MethodInvocation=function(_311,obj,args){
+this.jp_=_311;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -3330,48 +3360,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_311){
+dojo.event.MethodJoinPoint=function(obj,_319){
 this.object=obj||dj_global;
-this.methodname=_311;
-this.methodfunc=this.object[_311];
+this.methodname=_319;
+this.methodfunc=this.object[_319];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_313){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_31b){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_313];
+var ofn=obj[_31b];
 if(!ofn){
-ofn=obj[_313]=function(){
+ofn=obj[_31b]=function(){
 };
-if(!obj[_313]){
-dojo.raise("Cannot set do-nothing method on that object "+_313);
+if(!obj[_31b]){
+dojo.raise("Cannot set do-nothing method on that object "+_31b);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _315=_313+"$joinpoint";
-var _316=_313+"$joinpoint$method";
-var _317=obj[_315];
-if(!_317){
-var _318=false;
+var _31d=_31b+"$joinpoint";
+var _31e=_31b+"$joinpoint$method";
+var _31f=obj[_31d];
+if(!_31f){
+var _320=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_318=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_315,_316,_313]);
+_320=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_31d,_31e,_31b]);
 }
 }
-var _319=ofn.length;
-obj[_316]=ofn;
-_317=obj[_315]=new dojo.event.MethodJoinPoint(obj,_316);
-if(!_318){
-obj[_313]=function(){
-return _317.run.apply(_317,arguments);
+var _321=ofn.length;
+obj[_31e]=ofn;
+_31f=obj[_31d]=new dojo.event.MethodJoinPoint(obj,_31e);
+if(!_320){
+obj[_31b]=function(){
+return _31f.run.apply(_31f,arguments);
 };
 }else{
-obj[_313]=function(){
+obj[_31b]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -3405,12 +3435,12 @@
 }
 }
 }
-return _317.run.apply(_317,args);
+return _31f.run.apply(_31f,args);
 };
 }
-obj[_313].__preJoinArity=_319;
+obj[_31b].__preJoinArity=_321;
 }
-return _317;
+return _31f;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -3420,41 +3450,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _31f=[];
+var _327=[];
 for(var x=0;x<args.length;x++){
-_31f[x]=args[x];
+_327[x]=args[x];
 }
-var _321=function(marr){
+var _329=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _323=marr[0]||dj_global;
-var _324=marr[1];
-if(!_323[_324]){
-dojo.raise("function \""+_324+"\" does not exist on \""+_323+"\"");
+var _32b=marr[0]||dj_global;
+var _32c=marr[1];
+if(!_32b[_32c]){
+dojo.raise("function \""+_32c+"\" does not exist on \""+_32b+"\"");
 }
-var _325=marr[2]||dj_global;
-var _326=marr[3];
+var _32d=marr[2]||dj_global;
+var _32e=marr[3];
 var msg=marr[6];
-var _328=marr[7];
-if(_328>-1){
-if(_328==0){
+var _330=marr[7];
+if(_330>-1){
+if(_330==0){
 return;
 }
 marr[7]--;
 }
-var _329;
+var _331;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _323[_324].apply(_323,to.args);
+return _32b[_32c].apply(_32b,to.args);
 }};
-to.args=_31f;
-var _32b=parseInt(marr[4]);
-var _32c=((!isNaN(_32b))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_327;
+var _333=parseInt(marr[4]);
+var _334=((!isNaN(_333))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _32f=false;
+var _337=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -3464,7 +3494,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_321(mcpy);
+_329(mcpy);
 },tod);
 }
 return;
@@ -3472,49 +3502,49 @@
 marr.last=cur;
 }
 }
-if(_326){
-_325[_326].call(_325,to);
+if(_32e){
+_32d[_32e].call(_32d,to);
 }else{
-if((_32c)&&((dojo.render.html)||(dojo.render.svg))){
+if((_334)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_323[_324].call(_323,to);
+_32b[_32c].call(_32b,to);
 }else{
-_323[_324].apply(_323,args);
+_32b[_32c].apply(_32b,args);
 }
-},_32b);
+},_333);
 }else{
 if(msg){
-_323[_324].call(_323,to);
+_32b[_32c].call(_32b,to);
 }else{
-_323[_324].apply(_323,args);
+_32b[_32c].apply(_32b,args);
 }
 }
 }
 };
-var _332=function(){
+var _33a=function(){
 if(this.squelch){
 try{
-return _321.apply(this,arguments);
+return _329.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _321.apply(this,arguments);
+return _329.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_332);
+dojo.lang.forEach(this.before.concat(new Array()),_33a);
 }
-var _333;
+var _33b;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_333=mi.proceed();
+_33b=mi.proceed();
 }else{
 if(this.methodfunc){
-_333=this.object[this.methodname].apply(this.object,args);
+_33b=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -3525,9 +3555,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_332);
+dojo.lang.forEach(this.after.concat(new Array()),_33a);
 }
-return (this.methodfunc)?_333:null;
+return (this.methodfunc)?_33b:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -3543,38 +3573,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_338,_339,_33a,_33b,_33c,_33d,once,_33f,rate,_341,_342){
-var arr=this.getArr(_33c);
+},addAdvice:function(_340,_341,_342,_343,_344,_345,once,_347,rate,_349,_34a){
+var arr=this.getArr(_344);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_338,_339,_33a,_33b,_33f,rate,_341,_342];
+var ao=[_340,_341,_342,_343,_347,rate,_349,_34a];
 if(once){
-if(this.hasAdvice(_338,_339,_33c,arr)>=0){
+if(this.hasAdvice(_340,_341,_344,arr)>=0){
 return;
 }
 }
-if(_33d=="first"){
+if(_345=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_345,_346,_347,arr){
+},hasAdvice:function(_34d,_34e,_34f,arr){
 if(!arr){
-arr=this.getArr(_347);
+arr=this.getArr(_34f);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _346=="object")?(new String(_346)).toString():_346;
+var aao=(typeof _34e=="object")?(new String(_34e)).toString():_34e;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_345)&&(a1o==aao)){
+if((arr[x][0]==_34d)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_34d,_34e,_34f,once){
-var arr=this.getArr(_34f);
-var ind=this.hasAdvice(_34d,_34e,_34f,arr);
+},removeAdvice:function(_355,_356,_357,once){
+var arr=this.getArr(_357);
+var ind=this.hasAdvice(_355,_356,_357,arr);
 if(ind==-1){
 return false;
 }
@@ -3583,73 +3613,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_34d,_34e,_34f,arr);
+ind=this.hasAdvice(_355,_356,_357,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_353){
-if(!this.topics[_353]){
-this.topics[_353]=new this.TopicImpl(_353);
+this.getTopic=function(_35b){
+if(!this.topics[_35b]){
+this.topics[_35b]=new this.TopicImpl(_35b);
 }
-return this.topics[_353];
+return this.topics[_35b];
 };
-this.registerPublisher=function(_354,obj,_356){
-var _354=this.getTopic(_354);
-_354.registerPublisher(obj,_356);
+this.registerPublisher=function(_35c,obj,_35e){
+var _35c=this.getTopic(_35c);
+_35c.registerPublisher(obj,_35e);
 };
-this.subscribe=function(_357,obj,_359){
-var _357=this.getTopic(_357);
-_357.subscribe(obj,_359);
+this.subscribe=function(_35f,obj,_361){
+var _35f=this.getTopic(_35f);
+_35f.subscribe(obj,_361);
 };
-this.unsubscribe=function(_35a,obj,_35c){
-var _35a=this.getTopic(_35a);
-_35a.unsubscribe(obj,_35c);
+this.unsubscribe=function(_362,obj,_364){
+var _362=this.getTopic(_362);
+_362.unsubscribe(obj,_364);
 };
-this.destroy=function(_35d){
-this.getTopic(_35d).destroy();
-delete this.topics[_35d];
+this.destroy=function(_365){
+this.getTopic(_365).destroy();
+delete this.topics[_365];
 };
-this.publishApply=function(_35e,args){
-var _35e=this.getTopic(_35e);
-_35e.sendMessage.apply(_35e,args);
+this.publishApply=function(_366,args){
+var _366=this.getTopic(_366);
+_366.sendMessage.apply(_366,args);
 };
-this.publish=function(_360,_361){
-var _360=this.getTopic(_360);
+this.publish=function(_368,_369){
+var _368=this.getTopic(_368);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_360.sendMessage.apply(_360,args);
+_368.sendMessage.apply(_368,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_364){
-this.topicName=_364;
-this.subscribe=function(_365,_366){
-var tf=_366||_365;
-var to=(!_366)?dj_global:_365;
+dojo.event.topic.TopicImpl=function(_36c){
+this.topicName=_36c;
+this.subscribe=function(_36d,_36e){
+var tf=_36e||_36d;
+var to=(!_36e)?dj_global:_36d;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_369,_36a){
-var tf=(!_36a)?_369:_36a;
-var to=(!_36a)?null:_369;
+this.unsubscribe=function(_371,_372){
+var tf=(!_372)?_371:_372;
+var to=(!_372)?null:_371;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_36d){
-this._getJoinPoint().squelch=_36d;
+this.setSquelch=function(_375){
+this._getJoinPoint().squelch=_375;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_36e,_36f){
-dojo.event.connect(_36e,_36f,this,"sendMessage");
+this.registerPublisher=function(_376,_377){
+dojo.event.connect(_376,_377,this,"sendMessage");
 };
-this.sendMessage=function(_370){
+this.sendMessage=function(_378){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -3672,12 +3702,12 @@
 catch(e){
 }
 }
-this.clobber=function(_373){
+this.clobber=function(_37b){
 var na;
 var tna;
-if(_373){
-tna=_373.all||_373.getElementsByTagName("*");
-na=[_373];
+if(_37b){
+tna=_37b.all||_37b.getElementsByTagName("*");
+na=[_37b];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -3692,7 +3722,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _377={};
+var _37f={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -3743,9 +3773,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _37c=0;
-this.normalizedEventName=function(_37d){
-switch(_37d){
+var _384=0;
+this.normalizedEventName=function(_385){
+switch(_385){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -3754,10 +3784,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _37d;
+return _385;
 break;
 default:
-var lcn=_37d.toLowerCase();
+var lcn=_385.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -3777,88 +3807,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_382){
+this.addClobberNodeAttrs=function(node,_38a){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_382.length;x++){
-node.__clobberAttrs__.push(_382[x]);
+for(var x=0;x<_38a.length;x++){
+node.__clobberAttrs__.push(_38a[x]);
 }
 };
-this.removeListener=function(node,_385,fp,_387){
-if(!_387){
-var _387=false;
+this.removeListener=function(node,_38d,fp,_38f){
+if(!_38f){
+var _38f=false;
 }
-_385=dojo.event.browser.normalizedEventName(_385);
-if(_385=="key"){
+_38d=dojo.event.browser.normalizedEventName(_38d);
+if(_38d=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_387);
+this.removeListener(node,"onkeydown",fp,_38f);
 }
-_385="keypress";
+_38d="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_385,fp,_387);
+node.removeEventListener(_38d,fp,_38f);
 }
 };
-this.addListener=function(node,_389,fp,_38b,_38c){
+this.addListener=function(node,_391,fp,_393,_394){
 if(!node){
 return;
 }
-if(!_38b){
-var _38b=false;
+if(!_393){
+var _393=false;
 }
-_389=dojo.event.browser.normalizedEventName(_389);
-if(_389=="key"){
+_391=dojo.event.browser.normalizedEventName(_391);
+if(_391=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_38b,_38c);
+this.addListener(node,"onkeydown",fp,_393,_394);
 }
-_389="keypress";
+_391="keypress";
 }
-if(!_38c){
-var _38d=function(evt){
+if(!_394){
+var _395=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_38b){
+if(_393){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_38d=fp;
+_395=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_389,_38d,_38b);
-return _38d;
+node.addEventListener(_391,_395,_393);
+return _395;
 }else{
-_389="on"+_389;
-if(typeof node[_389]=="function"){
-var _390=node[_389];
-node[_389]=function(e){
-_390(e);
-return _38d(e);
+_391="on"+_391;
+if(typeof node[_391]=="function"){
+var _398=node[_391];
+node[_391]=function(e){
+_398(e);
+return _395(e);
 };
 }else{
-node[_389]=_38d;
+node[_391]=_395;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_389]);
+this.addClobberNodeAttrs(node,[_391]);
 }
-return _38d;
+return _395;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_393,_394){
-if(typeof _393!="function"){
-dojo.raise("listener not a function: "+_393);
+this.callListener=function(_39b,_39c){
+if(typeof _39b!="function"){
+dojo.raise("listener not a function: "+_39b);
 }
-dojo.event.browser.currentEvent.currentTarget=_394;
-return _393.call(_394,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_39c;
+return _39b.call(_39c,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -3871,7 +3901,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_397){
+this.fixEvent=function(evt,_39f){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -3948,14 +3978,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _399=evt.keyCode;
-if(_399>=65&&_399<=90&&evt.shiftKey==false){
-_399+=32;
+var _3a1=evt.keyCode;
+if(_3a1>=65&&_3a1<=90&&evt.shiftKey==false){
+_3a1+=32;
 }
-if(_399>=1&&_399<=26&&evt.ctrlKey){
-_399+=96;
+if(_3a1>=1&&_3a1<=26&&evt.ctrlKey){
+_3a1+=96;
 }
-evt.key=String.fromCharCode(_399);
+evt.key=String.fromCharCode(_3a1);
 }
 }
 }else{
@@ -3981,11 +4011,11 @@
 evt.key=evt.which;
 break;
 default:
-var _399=evt.which;
+var _3a1=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_399+=32;
+_3a1+=32;
 }
-evt.key=String.fromCharCode(_399);
+evt.key=String.fromCharCode(_3a1);
 }
 }
 }
@@ -4090,7 +4120,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_397?_397:evt.srcElement);
+evt.currentTarget=(_39f?_39f:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -4099,12 +4129,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _39b=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _3a3=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_39b.scrollLeft||0);
+evt.pageX=evt.clientX+(_3a3.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_39b.scrollTop||0);
+evt.pageY=evt.clientY+(_3a3.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -4163,8 +4193,8 @@
 dojo.gfx.color.Color.fromArray=function(arr){
 return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
 };
-dojo.extend(dojo.gfx.color.Color,{toRgb:function(_3a3){
-if(_3a3){
+dojo.extend(dojo.gfx.color.Color,{toRgb:function(_3ab){
+if(_3ab){
 return this.toRgba();
 }else{
 return [this.r,this.g,this.b];
@@ -4177,62 +4207,62 @@
 return "rgb("+this.toRgb().join()+")";
 },toString:function(){
 return this.toHex();
-},blend:function(_3a4,_3a5){
+},blend:function(_3ac,_3ad){
 var rgb=null;
-if(dojo.lang.isArray(_3a4)){
-rgb=_3a4;
+if(dojo.lang.isArray(_3ac)){
+rgb=_3ac;
 }else{
-if(_3a4 instanceof dojo.gfx.color.Color){
-rgb=_3a4.toRgb();
+if(_3ac instanceof dojo.gfx.color.Color){
+rgb=_3ac.toRgb();
 }else{
-rgb=new dojo.gfx.color.Color(_3a4).toRgb();
+rgb=new dojo.gfx.color.Color(_3ac).toRgb();
 }
 }
-return dojo.gfx.color.blend(this.toRgb(),rgb,_3a5);
+return dojo.gfx.color.blend(this.toRgb(),rgb,_3ad);
 }});
 dojo.gfx.color.named={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128,128],silver:[192,192,192]};
-dojo.gfx.color.blend=function(a,b,_3a9){
+dojo.gfx.color.blend=function(a,b,_3b1){
 if(typeof a=="string"){
-return dojo.gfx.color.blendHex(a,b,_3a9);
+return dojo.gfx.color.blendHex(a,b,_3b1);
 }
-if(!_3a9){
-_3a9=0;
+if(!_3b1){
+_3b1=0;
 }
-_3a9=Math.min(Math.max(-1,_3a9),1);
-_3a9=((_3a9+1)/2);
+_3b1=Math.min(Math.max(-1,_3b1),1);
+_3b1=((_3b1+1)/2);
 var c=[];
 for(var x=0;x<3;x++){
-c[x]=parseInt(b[x]+((a[x]-b[x])*_3a9));
+c[x]=parseInt(b[x]+((a[x]-b[x])*_3b1));
 }
 return c;
 };
-dojo.gfx.color.blendHex=function(a,b,_3ae){
-return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_3ae));
+dojo.gfx.color.blendHex=function(a,b,_3b6){
+return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_3b6));
 };
-dojo.gfx.color.extractRGB=function(_3af){
+dojo.gfx.color.extractRGB=function(_3b7){
 var hex="0123456789abcdef";
-_3af=_3af.toLowerCase();
-if(_3af.indexOf("rgb")==0){
-var _3b1=_3af.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
-var ret=_3b1.splice(1,3);
+_3b7=_3b7.toLowerCase();
+if(_3b7.indexOf("rgb")==0){
+var _3b9=_3b7.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
+var ret=_3b9.splice(1,3);
 return ret;
 }else{
-var _3b3=dojo.gfx.color.hex2rgb(_3af);
-if(_3b3){
-return _3b3;
+var _3bb=dojo.gfx.color.hex2rgb(_3b7);
+if(_3bb){
+return _3bb;
 }else{
-return dojo.gfx.color.named[_3af]||[255,255,255];
+return dojo.gfx.color.named[_3b7]||[255,255,255];
 }
 }
 };
 dojo.gfx.color.hex2rgb=function(hex){
-var _3b5="0123456789ABCDEF";
+var _3bd="0123456789ABCDEF";
 var rgb=new Array(3);
 if(hex.indexOf("#")==0){
 hex=hex.substring(1);
 }
 hex=hex.toUpperCase();
-if(hex.replace(new RegExp("["+_3b5+"]","g"),"")!=""){
+if(hex.replace(new RegExp("["+_3bd+"]","g"),"")!=""){
 return null;
 }
 if(hex.length==3){
@@ -4245,7 +4275,7 @@
 rgb[2]=hex.substring(4);
 }
 for(var i=0;i<rgb.length;i++){
-rgb[i]=_3b5.indexOf(rgb[i].charAt(0))*16+_3b5.indexOf(rgb[i].charAt(1));
+rgb[i]=_3bd.indexOf(rgb[i].charAt(0))*16+_3bd.indexOf(rgb[i].charAt(1));
 }
 return rgb;
 };
@@ -4267,10 +4297,10 @@
 return ret.join("");
 };
 dojo.provide("dojo.lfx.Animation");
-dojo.lfx.Line=function(_3be,end){
-this.start=_3be;
+dojo.lfx.Line=function(_3c6,end){
+this.start=_3c6;
 this.end=end;
-if(dojo.lang.isArray(_3be)){
+if(dojo.lang.isArray(_3c6)){
 var diff=[];
 dojo.lang.forEach(this.start,function(s,i){
 diff[i]=this.end[i]-s;
@@ -4283,7 +4313,7 @@
 return res;
 };
 }else{
-var diff=end-_3be;
+var diff=end-_3c6;
 this.getValue=function(n){
 return (diff*n)+this.start;
 };
@@ -4309,17 +4339,17 @@
 };
 dojo.lfx.IAnimation=function(){
 };
-dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_3ce,_3cf){
-if(!_3cf){
-_3cf=_3ce;
-_3ce=this;
+dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_3d6,_3d7){
+if(!_3d7){
+_3d7=_3d6;
+_3d6=this;
 }
-_3cf=dojo.lang.hitch(_3ce,_3cf);
-var _3d0=this[evt]||function(){
+_3d7=dojo.lang.hitch(_3d6,_3d7);
+var _3d8=this[evt]||function(){
 };
 this[evt]=function(){
-var ret=_3d0.apply(this,arguments);
-_3cf.apply(this,arguments);
+var ret=_3d8.apply(this,arguments);
+_3d7.apply(this,arguments);
 return ret;
 };
 return this;
@@ -4328,57 +4358,57 @@
 this[evt].apply(this,(args||[]));
 }
 return this;
-},repeat:function(_3d4){
-this.repeatCount=_3d4;
+},repeat:function(_3dc){
+this.repeatCount=_3dc;
 return this;
 },_active:false,_paused:false});
-dojo.lfx.Animation=function(_3d5,_3d6,_3d7,_3d8,_3d9,rate){
+dojo.lfx.Animation=function(_3dd,_3de,_3df,_3e0,_3e1,rate){
 dojo.lfx.IAnimation.call(this);
-if(dojo.lang.isNumber(_3d5)||(!_3d5&&_3d6.getValue)){
-rate=_3d9;
-_3d9=_3d8;
-_3d8=_3d7;
-_3d7=_3d6;
-_3d6=_3d5;
-_3d5=null;
+if(dojo.lang.isNumber(_3dd)||(!_3dd&&_3de.getValue)){
+rate=_3e1;
+_3e1=_3e0;
+_3e0=_3df;
+_3df=_3de;
+_3de=_3dd;
+_3dd=null;
 }else{
-if(_3d5.getValue||dojo.lang.isArray(_3d5)){
-rate=_3d8;
-_3d9=_3d7;
-_3d8=_3d6;
-_3d7=_3d5;
-_3d6=null;
-_3d5=null;
+if(_3dd.getValue||dojo.lang.isArray(_3dd)){
+rate=_3e0;
+_3e1=_3df;
+_3e0=_3de;
+_3df=_3dd;
+_3de=null;
+_3dd=null;
 }
 }
-if(dojo.lang.isArray(_3d7)){
-this.curve=new dojo.lfx.Line(_3d7[0],_3d7[1]);
+if(dojo.lang.isArray(_3df)){
+this.curve=new dojo.lfx.Line(_3df[0],_3df[1]);
 }else{
-this.curve=_3d7;
+this.curve=_3df;
 }
-if(_3d6!=null&&_3d6>0){
-this.duration=_3d6;
+if(_3de!=null&&_3de>0){
+this.duration=_3de;
 }
-if(_3d9){
-this.repeatCount=_3d9;
+if(_3e1){
+this.repeatCount=_3e1;
 }
 if(rate){
 this.rate=rate;
 }
-if(_3d5){
+if(_3dd){
 dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","onStop","onAnimate"],function(item){
-if(_3d5[item]){
-this.connect(item,_3d5[item]);
+if(_3dd[item]){
+this.connect(item,_3dd[item]);
 }
 },this);
 }
-if(_3d8&&dojo.lang.isFunction(_3d8)){
-this.easing=_3d8;
+if(_3e0&&dojo.lang.isFunction(_3e0)){
+this.easing=_3e0;
 }
 };
 dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_3dc,_3dd){
-if(_3dd){
+dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_3e4,_3e5){
+if(_3e5){
 clearTimeout(this._timer);
 this._active=false;
 this._paused=false;
@@ -4390,10 +4420,10 @@
 }
 this.fire("handler",["beforeBegin"]);
 this.fire("beforeBegin");
-if(_3dc>0){
+if(_3e4>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_3dd);
-}),_3dc);
+this.play(null,_3e5);
+}),_3e4);
 return this;
 }
 this._startTime=new Date().valueOf();
@@ -4404,16 +4434,16 @@
 this._active=true;
 this._paused=false;
 var step=this._percent/100;
-var _3df=this.curve.getValue(step);
+var _3e7=this.curve.getValue(step);
 if(this._percent==0){
 if(!this._startRepeatCount){
 this._startRepeatCount=this.repeatCount;
 }
-this.fire("handler",["begin",_3df]);
-this.fire("onBegin",[_3df]);
+this.fire("handler",["begin",_3e7]);
+this.fire("onBegin",[_3e7]);
 }
-this.fire("handler",["play",_3df]);
-this.fire("onPlay",[_3df]);
+this.fire("handler",["play",_3e7]);
+this.fire("onPlay",[_3e7]);
 this._cycle();
 return this;
 },pause:function(){
@@ -4422,28 +4452,28 @@
 return this;
 }
 this._paused=true;
-var _3e0=this.curve.getValue(this._percent/100);
-this.fire("handler",["pause",_3e0]);
-this.fire("onPause",[_3e0]);
+var _3e8=this.curve.getValue(this._percent/100);
+this.fire("handler",["pause",_3e8]);
+this.fire("onPause",[_3e8]);
 return this;
-},gotoPercent:function(pct,_3e2){
+},gotoPercent:function(pct,_3ea){
 clearTimeout(this._timer);
 this._active=true;
 this._paused=true;
 this._percent=pct;
-if(_3e2){
+if(_3ea){
 this.play();
 }
 return this;
-},stop:function(_3e3){
+},stop:function(_3eb){
 clearTimeout(this._timer);
 var step=this._percent/100;
-if(_3e3){
+if(_3eb){
 step=1;
 }
-var _3e5=this.curve.getValue(step);
-this.fire("handler",["stop",_3e5]);
-this.fire("onStop",[_3e5]);
+var _3ed=this.curve.getValue(step);
+this.fire("handler",["stop",_3ed]);
+this.fire("onStop",[_3ed]);
 this._active=false;
 this._paused=false;
 return this;
@@ -4468,9 +4498,9 @@
 if((this.easing)&&(dojo.lang.isFunction(this.easing))){
 step=this.easing(step);
 }
-var _3e8=this.curve.getValue(step);
-this.fire("handler",["animate",_3e8]);
-this.fire("onAnimate",[_3e8]);
+var _3f0=this.curve.getValue(step);
+this.fire("handler",["animate",_3f0]);
+this.fire("onAnimate",[_3f0]);
 if(step<1){
 this._timer=setTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
 }else{
@@ -4494,44 +4524,44 @@
 }
 return this;
 }});
-dojo.lfx.Combine=function(_3e9){
+dojo.lfx.Combine=function(_3f1){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._animsEnded=0;
-var _3ea=arguments;
-if(_3ea.length==1&&(dojo.lang.isArray(_3ea[0])||dojo.lang.isArrayLike(_3ea[0]))){
-_3ea=_3ea[0];
+var _3f2=arguments;
+if(_3f2.length==1&&(dojo.lang.isArray(_3f2[0])||dojo.lang.isArrayLike(_3f2[0]))){
+_3f2=_3f2[0];
 }
-dojo.lang.forEach(_3ea,function(anim){
+dojo.lang.forEach(_3f2,function(anim){
 this._anims.push(anim);
 anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
 },this);
 };
 dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_3ec,_3ed){
+dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_3f4,_3f5){
 if(!this._anims.length){
 return this;
 }
 this.fire("beforeBegin");
-if(_3ec>0){
+if(_3f4>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_3ed);
-}),_3ec);
+this.play(null,_3f5);
+}),_3f4);
 return this;
 }
-if(_3ed||this._anims[0].percent==0){
+if(_3f5||this._anims[0].percent==0){
 this.fire("onBegin");
 }
 this.fire("onPlay");
-this._animsCall("play",null,_3ed);
+this._animsCall("play",null,_3f5);
 return this;
 },pause:function(){
 this.fire("onPause");
 this._animsCall("pause");
 return this;
-},stop:function(_3ee){
+},stop:function(_3f6){
 this.fire("onStop");
-this._animsCall("stop",_3ee);
+this._animsCall("stop",_3f6);
 return this;
 },_onAnimsEnded:function(){
 this._animsEnded++;
@@ -4539,31 +4569,31 @@
 this.fire("onEnd");
 }
 return this;
-},_animsCall:function(_3ef){
+},_animsCall:function(_3f7){
 var args=[];
 if(arguments.length>1){
 for(var i=1;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 }
-var _3f2=this;
+var _3fa=this;
 dojo.lang.forEach(this._anims,function(anim){
-anim[_3ef](args);
-},_3f2);
+anim[_3f7](args);
+},_3fa);
 return this;
 }});
-dojo.lfx.Chain=function(_3f4){
+dojo.lfx.Chain=function(_3fc){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._currAnim=-1;
-var _3f5=arguments;
-if(_3f5.length==1&&(dojo.lang.isArray(_3f5[0])||dojo.lang.isArrayLike(_3f5[0]))){
-_3f5=_3f5[0];
+var _3fd=arguments;
+if(_3fd.length==1&&(dojo.lang.isArray(_3fd[0])||dojo.lang.isArrayLike(_3fd[0]))){
+_3fd=_3fd[0];
 }
-var _3f6=this;
-dojo.lang.forEach(_3f5,function(anim,i,_3f9){
+var _3fe=this;
+dojo.lang.forEach(_3fd,function(anim,i,_401){
 this._anims.push(anim);
-if(i<_3f9.length-1){
+if(i<_401.length-1){
 anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
 }else{
 anim.connect("onEnd",dojo.lang.hitch(this,function(){
@@ -4573,28 +4603,28 @@
 },this);
 };
 dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_3fa,_3fb){
+dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_402,_403){
 if(!this._anims.length){
 return this;
 }
-if(_3fb||!this._anims[this._currAnim]){
+if(_403||!this._anims[this._currAnim]){
 this._currAnim=0;
 }
-var _3fc=this._anims[this._currAnim];
+var _404=this._anims[this._currAnim];
 this.fire("beforeBegin");
-if(_3fa>0){
+if(_402>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_3fb);
-}),_3fa);
+this.play(null,_403);
+}),_402);
 return this;
 }
-if(_3fc){
+if(_404){
 if(this._currAnim==0){
 this.fire("handler",["begin",this._currAnim]);
 this.fire("onBegin",[this._currAnim]);
 }
 this.fire("onPlay",[this._currAnim]);
-_3fc.play(null,_3fb);
+_404.play(null,_403);
 }
 return this;
 },pause:function(){
@@ -4610,9 +4640,9 @@
 if(this._currAnim==-1){
 this._currAnim=0;
 }
-var _3fd=this._anims[this._currAnim];
-if(_3fd){
-if(!_3fd._active||_3fd._paused){
+var _405=this._anims[this._currAnim];
+if(_405){
+if(!_405._active||_405._paused){
 this.play();
 }else{
 this.pause();
@@ -4620,12 +4650,12 @@
 }
 return this;
 },stop:function(){
-var _3fe=this._anims[this._currAnim];
-if(_3fe){
-_3fe.stop();
+var _406=this._anims[this._currAnim];
+if(_406){
+_406.stop();
 this.fire("onStop",[this._currAnim]);
 }
-return _3fe;
+return _406;
 },_playNext:function(){
 if(this._currAnim==-1||this._anims.length==0){
 return this;
@@ -4636,25 +4666,25 @@
 }
 return this;
 }});
-dojo.lfx.combine=function(_3ff){
-var _400=arguments;
+dojo.lfx.combine=function(_407){
+var _408=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_400=arguments[0];
+_408=arguments[0];
 }
-if(_400.length==1){
-return _400[0];
+if(_408.length==1){
+return _408[0];
 }
-return new dojo.lfx.Combine(_400);
+return new dojo.lfx.Combine(_408);
 };
-dojo.lfx.chain=function(_401){
-var _402=arguments;
+dojo.lfx.chain=function(_409){
+var _40a=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_402=arguments[0];
+_40a=arguments[0];
 }
-if(_402.length==1){
-return _402[0];
+if(_40a.length==1){
+return _40a[0];
 }
-return new dojo.lfx.Chain(_402);
+return new dojo.lfx.Chain(_40a);
 };
 dojo.provide("dojo.html.common");
 dojo.lang.mixin(dojo.html,dojo.dom);
@@ -4673,24 +4703,24 @@
 return t;
 };
 dojo.html.getViewport=function(){
-var _405=dojo.global();
-var _406=dojo.doc();
+var _40d=dojo.global();
+var _40e=dojo.doc();
 var w=0;
 var h=0;
 if(dojo.render.html.mozilla){
-w=_406.documentElement.clientWidth;
-h=_405.innerHeight;
+w=_40e.documentElement.clientWidth;
+h=_40d.innerHeight;
 }else{
-if(!dojo.render.html.opera&&_405.innerWidth){
-w=_405.innerWidth;
-h=_405.innerHeight;
+if(!dojo.render.html.opera&&_40d.innerWidth){
+w=_40d.innerWidth;
+h=_40d.innerHeight;
 }else{
-if(!dojo.render.html.opera&&dojo.exists(_406,"documentElement.clientWidth")){
-var w2=_406.documentElement.clientWidth;
+if(!dojo.render.html.opera&&dojo.exists(_40e,"documentElement.clientWidth")){
+var w2=_40e.documentElement.clientWidth;
 if(!w||w2&&w2<w){
 w=w2;
 }
-h=_406.documentElement.clientHeight;
+h=_40e.documentElement.clientHeight;
 }else{
 if(dojo.body().clientWidth){
 w=dojo.body().clientWidth;
@@ -4702,23 +4732,23 @@
 return {width:w,height:h};
 };
 dojo.html.getScroll=function(){
-var _40a=dojo.global();
-var _40b=dojo.doc();
-var top=_40a.pageYOffset||_40b.documentElement.scrollTop||dojo.body().scrollTop||0;
-var left=_40a.pageXOffset||_40b.documentElement.scrollLeft||dojo.body().scrollLeft||0;
+var _412=dojo.global();
+var _413=dojo.doc();
+var top=_412.pageYOffset||_413.documentElement.scrollTop||dojo.body().scrollTop||0;
+var left=_412.pageXOffset||_413.documentElement.scrollLeft||dojo.body().scrollLeft||0;
 return {top:top,left:left,offset:{x:left,y:top}};
 };
 dojo.html.getParentByType=function(node,type){
-var _410=dojo.doc();
-var _411=dojo.byId(node);
+var _418=dojo.doc();
+var _419=dojo.byId(node);
 type=type.toLowerCase();
-while((_411)&&(_411.nodeName.toLowerCase()!=type)){
-if(_411==(_410["body"]||_410["documentElement"])){
+while((_419)&&(_419.nodeName.toLowerCase()!=type)){
+if(_419==(_418["body"]||_418["documentElement"])){
 return null;
 }
-_411=_411.parentNode;
+_419=_419.parentNode;
 }
-return _411;
+return _419;
 };
 dojo.html.getAttribute=function(node,attr){
 node=dojo.byId(node);
@@ -4751,17 +4781,17 @@
 };
 dojo.html.getCursorPosition=function(e){
 e=e||dojo.global().event;
-var _419={x:0,y:0};
+var _421={x:0,y:0};
 if(e.pageX||e.pageY){
-_419.x=e.pageX;
-_419.y=e.pageY;
+_421.x=e.pageX;
+_421.y=e.pageY;
 }else{
 var de=dojo.doc().documentElement;
 var db=dojo.body();
-_419.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
-_419.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
+_421.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
+_421.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
 }
-return _419;
+return _421;
 };
 dojo.html.isTag=function(node){
 node=dojo.byId(node);
@@ -4777,9 +4807,9 @@
 if(dojo.render.html.ie&&!dojo.render.html.ie70){
 if(window.location.href.substr(0,6).toLowerCase()!="https:"){
 (function(){
-var _41e=dojo.doc().createElement("script");
-_41e.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
-dojo.doc().getElementsByTagName("head")[0].appendChild(_41e);
+var _426=dojo.doc().createElement("script");
+_426.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
+dojo.doc().getElementsByTagName("head")[0].appendChild(_426);
 })();
 }
 }else{
@@ -4787,20 +4817,20 @@
 return doc.createElement(tag);
 };
 }
-dojo.html._callDeprecated=function(_421,_422,args,_424,_425){
-dojo.deprecated("dojo.html."+_421,"replaced by dojo.html."+_422+"("+(_424?"node, {"+_424+": "+_424+"}":"")+")"+(_425?"."+_425:""),"0.5");
-var _426=[];
-if(_424){
-var _427={};
-_427[_424]=args[1];
-_426.push(args[0]);
-_426.push(_427);
+dojo.html._callDeprecated=function(_429,_42a,args,_42c,_42d){
+dojo.deprecated("dojo.html."+_429,"replaced by dojo.html."+_42a+"("+(_42c?"node, {"+_42c+": "+_42c+"}":"")+")"+(_42d?"."+_42d:""),"0.5");
+var _42e=[];
+if(_42c){
+var _42f={};
+_42f[_42c]=args[1];
+_42e.push(args[0]);
+_42e.push(_42f);
 }else{
-_426=args;
+_42e=args;
 }
-var ret=dojo.html[_422].apply(dojo.html,args);
-if(_425){
-return ret[_425];
+var ret=dojo.html[_42a].apply(dojo.html,args);
+if(_42d){
+return ret[_42d];
 }else{
 return ret;
 }
@@ -4828,17 +4858,17 @@
 this.dojoUri=function(uri){
 return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
 };
-this.moduleUri=function(_42a,uri){
-var loc=dojo.hostenv.getModuleSymbols(_42a).join("/");
+this.moduleUri=function(_432,uri){
+var loc=dojo.hostenv.getModuleSymbols(_432).join("/");
 if(!loc){
 return null;
 }
 if(loc.lastIndexOf("/")!=loc.length-1){
 loc+="/";
 }
-var _42d=loc.indexOf(":");
-var _42e=loc.indexOf("/");
-if(loc.charAt(0)!="/"&&(_42d==-1||_42d>_42e)){
+var _435=loc.indexOf(":");
+var _436=loc.indexOf("/");
+if(loc.charAt(0)!="/"&&(_435==-1||_435>_436)){
 loc=dojo.hostenv.getBaseScriptUri()+loc;
 }
 return new dojo.uri.Uri(loc,uri);
@@ -4849,20 +4879,20 @@
 if(!arguments[i]){
 continue;
 }
-var _431=new dojo.uri.Uri(arguments[i].toString());
-var _432=new dojo.uri.Uri(uri.toString());
-if((_431.path=="")&&(_431.scheme==null)&&(_431.authority==null)&&(_431.query==null)){
-if(_431.fragment!=null){
-_432.fragment=_431.fragment;
+var _439=new dojo.uri.Uri(arguments[i].toString());
+var _43a=new dojo.uri.Uri(uri.toString());
+if((_439.path=="")&&(_439.scheme==null)&&(_439.authority==null)&&(_439.query==null)){
+if(_439.fragment!=null){
+_43a.fragment=_439.fragment;
 }
-_431=_432;
+_439=_43a;
 }else{
-if(_431.scheme==null){
-_431.scheme=_432.scheme;
-if(_431.authority==null){
-_431.authority=_432.authority;
-if(_431.path.charAt(0)!="/"){
-var path=_432.path.substring(0,_432.path.lastIndexOf("/")+1)+_431.path;
+if(_439.scheme==null){
+_439.scheme=_43a.scheme;
+if(_439.authority==null){
+_439.authority=_43a.authority;
+if(_439.path.charAt(0)!="/"){
+var path=_43a.path.substring(0,_43a.path.lastIndexOf("/")+1)+_439.path;
 var segs=path.split("/");
 for(var j=0;j<segs.length;j++){
 if(segs[j]=="."){
@@ -4884,37 +4914,37 @@
 }
 }
 }
-_431.path=segs.join("/");
+_439.path=segs.join("/");
 }
 }
 }
 }
 uri="";
-if(_431.scheme!=null){
-uri+=_431.scheme+":";
+if(_439.scheme!=null){
+uri+=_439.scheme+":";
 }
-if(_431.authority!=null){
-uri+="//"+_431.authority;
+if(_439.authority!=null){
+uri+="//"+_439.authority;
 }
-uri+=_431.path;
-if(_431.query!=null){
-uri+="?"+_431.query;
+uri+=_439.path;
+if(_439.query!=null){
+uri+="?"+_439.query;
 }
-if(_431.fragment!=null){
-uri+="#"+_431.fragment;
+if(_439.fragment!=null){
+uri+="#"+_439.fragment;
 }
 }
 this.uri=uri.toString();
-var _436="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
-var r=this.uri.match(new RegExp(_436));
+var _43e="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+var r=this.uri.match(new RegExp(_43e));
 this.scheme=r[2]||(r[1]?"":null);
 this.authority=r[4]||(r[3]?"":null);
 this.path=r[5];
 this.query=r[7]||(r[6]?"":null);
 this.fragment=r[9]||(r[8]?"":null);
 if(this.authority!=null){
-_436="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
-r=this.authority.match(new RegExp(_436));
+_43e="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
+r=this.authority.match(new RegExp(_43e));
 this.user=r[3]||null;
 this.password=r[4]||null;
 this.host=r[5];
@@ -4945,29 +4975,29 @@
 var c=dojo.html.getClass(node);
 return (c=="")?[]:c.split(/\s+/g);
 };
-dojo.html.hasClass=function(node,_43d){
-return (new RegExp("(^|\\s+)"+_43d+"(\\s+|$)")).test(dojo.html.getClass(node));
+dojo.html.hasClass=function(node,_445){
+return (new RegExp("(^|\\s+)"+_445+"(\\s+|$)")).test(dojo.html.getClass(node));
 };
-dojo.html.prependClass=function(node,_43f){
-_43f+=" "+dojo.html.getClass(node);
-return dojo.html.setClass(node,_43f);
+dojo.html.prependClass=function(node,_447){
+_447+=" "+dojo.html.getClass(node);
+return dojo.html.setClass(node,_447);
 };
-dojo.html.addClass=function(node,_441){
-if(dojo.html.hasClass(node,_441)){
+dojo.html.addClass=function(node,_449){
+if(dojo.html.hasClass(node,_449)){
 return false;
 }
-_441=(dojo.html.getClass(node)+" "+_441).replace(/^\s+|\s+$/g,"");
-return dojo.html.setClass(node,_441);
+_449=(dojo.html.getClass(node)+" "+_449).replace(/^\s+|\s+$/g,"");
+return dojo.html.setClass(node,_449);
 };
-dojo.html.setClass=function(node,_443){
+dojo.html.setClass=function(node,_44b){
 node=dojo.byId(node);
-var cs=new String(_443);
+var cs=new String(_44b);
 try{
 if(typeof node.className=="string"){
 node.className=cs;
 }else{
 if(node.setAttribute){
-node.setAttribute("class",_443);
+node.setAttribute("class",_44b);
 node.className=cs;
 }else{
 return false;
@@ -4979,220 +5009,220 @@
 }
 return true;
 };
-dojo.html.removeClass=function(node,_446,_447){
+dojo.html.removeClass=function(node,_44e,_44f){
 try{
-if(!_447){
-var _448=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_446+"(\\s+|$)"),"$1$2");
+if(!_44f){
+var _450=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_44e+"(\\s+|$)"),"$1$2");
 }else{
-var _448=dojo.html.getClass(node).replace(_446,"");
+var _450=dojo.html.getClass(node).replace(_44e,"");
 }
-dojo.html.setClass(node,_448);
+dojo.html.setClass(node,_450);
 }
 catch(e){
 dojo.debug("dojo.html.removeClass() failed",e);
 }
 return true;
 };
-dojo.html.replaceClass=function(node,_44a,_44b){
-dojo.html.removeClass(node,_44b);
-dojo.html.addClass(node,_44a);
+dojo.html.replaceClass=function(node,_452,_453){
+dojo.html.removeClass(node,_453);
+dojo.html.addClass(node,_452);
 };
 dojo.html.classMatchType={ContainsAll:0,ContainsAny:1,IsOnly:2};
-dojo.html.getElementsByClass=function(_44c,_44d,_44e,_44f,_450){
-_450=false;
-var _451=dojo.doc();
-_44d=dojo.byId(_44d)||_451;
-var _452=_44c.split(/\s+/g);
-var _453=[];
-if(_44f!=1&&_44f!=2){
-_44f=0;
+dojo.html.getElementsByClass=function(_454,_455,_456,_457,_458){
+_458=false;
+var _459=dojo.doc();
+_455=dojo.byId(_455)||_459;
+var _45a=_454.split(/\s+/g);
+var _45b=[];
+if(_457!=1&&_457!=2){
+_457=0;
 }
-var _454=new RegExp("(\\s|^)(("+_452.join(")|(")+"))(\\s|$)");
-var _455=_452.join(" ").length;
-var _456=[];
-if(!_450&&_451.evaluate){
-var _457=".//"+(_44e||"*")+"[contains(";
-if(_44f!=dojo.html.classMatchType.ContainsAny){
-_457+="concat(' ', at class,' '), ' "+_452.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
-if(_44f==2){
-_457+=" and string-length(@class)="+_455+"]";
+var _45c=new RegExp("(\\s|^)(("+_45a.join(")|(")+"))(\\s|$)");
+var _45d=_45a.join(" ").length;
+var _45e=[];
+if(!_458&&_459.evaluate){
+var _45f=".//"+(_456||"*")+"[contains(";
+if(_457!=dojo.html.classMatchType.ContainsAny){
+_45f+="concat(' ', at class,' '), ' "+_45a.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
+if(_457==2){
+_45f+=" and string-length(@class)="+_45d+"]";
 }else{
-_457+="]";
+_45f+="]";
 }
 }else{
-_457+="concat(' ', at class,' '), ' "+_452.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
+_45f+="concat(' ', at class,' '), ' "+_45a.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
 }
-var _458=_451.evaluate(_457,_44d,null,XPathResult.ANY_TYPE,null);
-var _459=_458.iterateNext();
-while(_459){
+var _460=_459.evaluate(_45f,_455,null,XPathResult.ANY_TYPE,null);
+var _461=_460.iterateNext();
+while(_461){
 try{
-_456.push(_459);
-_459=_458.iterateNext();
+_45e.push(_461);
+_461=_460.iterateNext();
 }
 catch(e){
 break;
 }
 }
-return _456;
+return _45e;
 }else{
-if(!_44e){
-_44e="*";
+if(!_456){
+_456="*";
 }
-_456=_44d.getElementsByTagName(_44e);
+_45e=_455.getElementsByTagName(_456);
 var node,i=0;
 outer:
-while(node=_456[i++]){
-var _45c=dojo.html.getClasses(node);
-if(_45c.length==0){
+while(node=_45e[i++]){
+var _464=dojo.html.getClasses(node);
+if(_464.length==0){
 continue outer;
 }
-var _45d=0;
-for(var j=0;j<_45c.length;j++){
-if(_454.test(_45c[j])){
-if(_44f==dojo.html.classMatchType.ContainsAny){
-_453.push(node);
+var _465=0;
+for(var j=0;j<_464.length;j++){
+if(_45c.test(_464[j])){
+if(_457==dojo.html.classMatchType.ContainsAny){
+_45b.push(node);
 continue outer;
 }else{
-_45d++;
+_465++;
 }
 }else{
-if(_44f==dojo.html.classMatchType.IsOnly){
+if(_457==dojo.html.classMatchType.IsOnly){
 continue outer;
 }
 }
 }
-if(_45d==_452.length){
-if((_44f==dojo.html.classMatchType.IsOnly)&&(_45d==_45c.length)){
-_453.push(node);
+if(_465==_45a.length){
+if((_457==dojo.html.classMatchType.IsOnly)&&(_465==_464.length)){
+_45b.push(node);
 }else{
-if(_44f==dojo.html.classMatchType.ContainsAll){
-_453.push(node);
+if(_457==dojo.html.classMatchType.ContainsAll){
+_45b.push(node);
 }
 }
 }
 }
-return _453;
+return _45b;
 }
 };
 dojo.html.getElementsByClassName=dojo.html.getElementsByClass;
-dojo.html.toCamelCase=function(_45f){
-var arr=_45f.split("-"),cc=arr[0];
+dojo.html.toCamelCase=function(_467){
+var arr=_467.split("-"),cc=arr[0];
 for(var i=1;i<arr.length;i++){
 cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
 }
 return cc;
 };
-dojo.html.toSelectorCase=function(_463){
-return _463.replace(/([A-Z])/g,"-$1").toLowerCase();
+dojo.html.toSelectorCase=function(_46b){
+return _46b.replace(/([A-Z])/g,"-$1").toLowerCase();
 };
 if(dojo.render.html.ie){
-dojo.html.getComputedStyle=function(node,_465,_466){
+dojo.html.getComputedStyle=function(node,_46d,_46e){
 node=dojo.byId(node);
-if(!node||!node.style){
-return _466;
+if(!node||!node.currentStyle){
+return _46e;
 }
-return node.currentStyle[dojo.html.toCamelCase(_465)];
+return node.currentStyle[dojo.html.toCamelCase(_46d)];
 };
 dojo.html.getComputedStyles=function(node){
 return node.currentStyle;
 };
 }else{
-dojo.html.getComputedStyle=function(node,_469,_46a){
+dojo.html.getComputedStyle=function(node,_471,_472){
 node=dojo.byId(node);
 if(!node||!node.style){
-return _46a;
+return _472;
 }
 var s=document.defaultView.getComputedStyle(node,null);
-return (s&&s[dojo.html.toCamelCase(_469)])||"";
+return (s&&s[dojo.html.toCamelCase(_471)])||"";
 };
 dojo.html.getComputedStyles=function(node){
 return document.defaultView.getComputedStyle(node,null);
 };
 }
-dojo.html.getStyleProperty=function(node,_46e){
+dojo.html.getStyleProperty=function(node,_476){
 node=dojo.byId(node);
-return (node&&node.style?node.style[dojo.html.toCamelCase(_46e)]:undefined);
+return (node&&node.style?node.style[dojo.html.toCamelCase(_476)]:undefined);
 };
-dojo.html.getStyle=function(node,_470){
-var _471=dojo.html.getStyleProperty(node,_470);
-return (_471?_471:dojo.html.getComputedStyle(node,_470));
+dojo.html.getStyle=function(node,_478){
+var _479=dojo.html.getStyleProperty(node,_478);
+return (_479?_479:dojo.html.getComputedStyle(node,_478));
 };
-dojo.html.setStyle=function(node,_473,_474){
+dojo.html.setStyle=function(node,_47b,_47c){
 node=dojo.byId(node);
 if(node&&node.style){
-var _475=dojo.html.toCamelCase(_473);
-node.style[_475]=_474;
+var _47d=dojo.html.toCamelCase(_47b);
+node.style[_47d]=_47c;
 }
 };
-dojo.html.setStyleText=function(_476,text){
+dojo.html.setStyleText=function(_47e,text){
 try{
-_476.style.cssText=text;
+_47e.style.cssText=text;
 }
 catch(e){
-_476.setAttribute("style",text);
+_47e.setAttribute("style",text);
 }
 };
-dojo.html.copyStyle=function(_478,_479){
-if(!_479.style.cssText){
-_478.setAttribute("style",_479.getAttribute("style"));
+dojo.html.copyStyle=function(_480,_481){
+if(!_481.style.cssText){
+_480.setAttribute("style",_481.getAttribute("style"));
 }else{
-_478.style.cssText=_479.style.cssText;
+_480.style.cssText=_481.style.cssText;
 }
-dojo.html.addClass(_478,dojo.html.getClass(_479));
+dojo.html.addClass(_480,dojo.html.getClass(_481));
 };
-dojo.html.getUnitValue=function(node,_47b,_47c){
-var s=dojo.html.getComputedStyle(node,_47b);
-if((!s)||((s=="auto")&&(_47c))){
+dojo.html.getUnitValue=function(node,_483,_484){
+var s=dojo.html.getComputedStyle(node,_483);
+if((!s)||((s=="auto")&&(_484))){
 return {value:0,units:"px"};
 }
-var _47e=s.match(/(\-?[\d.]+)([a-z%]*)/i);
-if(!_47e){
+var _486=s.match(/(\-?[\d.]+)([a-z%]*)/i);
+if(!_486){
 return dojo.html.getUnitValue.bad;
 }
-return {value:Number(_47e[1]),units:_47e[2].toLowerCase()};
+return {value:Number(_486[1]),units:_486[2].toLowerCase()};
 };
 dojo.html.getUnitValue.bad={value:NaN,units:""};
 if(dojo.render.html.ie){
-dojo.html.toPixelValue=function(_47f,_480){
-if(!_480){
+dojo.html.toPixelValue=function(_487,_488){
+if(!_488){
 return 0;
 }
-if(_480.slice(-2)=="px"){
-return parseFloat(_480);
+if(_488.slice(-2)=="px"){
+return parseFloat(_488);
 }
-var _481=0;
-with(_47f){
-var _482=style.left;
-var _483=runtimeStyle.left;
+var _489=0;
+with(_487){
+var _48a=style.left;
+var _48b=runtimeStyle.left;
 runtimeStyle.left=currentStyle.left;
 try{
-style.left=_480||0;
-_481=style.pixelLeft;
-style.left=_482;
-runtimeStyle.left=_483;
+style.left=_488||0;
+_489=style.pixelLeft;
+style.left=_48a;
+runtimeStyle.left=_48b;
 }
 catch(e){
 }
 }
-return _481;
+return _489;
 };
 }else{
-dojo.html.toPixelValue=function(_484,_485){
-return (_485&&(_485.slice(-2)=="px")?parseFloat(_485):0);
+dojo.html.toPixelValue=function(_48c,_48d){
+return (_48d&&(_48d.slice(-2)=="px")?parseFloat(_48d):0);
 };
 }
-dojo.html.getPixelValue=function(node,_487,_488){
-return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_487));
+dojo.html.getPixelValue=function(node,_48f,_490){
+return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_48f));
 };
-dojo.html.setPositivePixelValue=function(node,_48a,_48b){
-if(isNaN(_48b)){
+dojo.html.setPositivePixelValue=function(node,_492,_493){
+if(isNaN(_493)){
 return false;
 }
-node.style[_48a]=Math.max(0,_48b)+"px";
+node.style[_492]=Math.max(0,_493)+"px";
 return true;
 };
 dojo.html.styleSheet=null;
-dojo.html.insertCssRule=function(_48c,_48d,_48e){
+dojo.html.insertCssRule=function(_494,_495,_496){
 if(!dojo.html.styleSheet){
 if(document.createStyleSheet){
 dojo.html.styleSheet=document.createStyleSheet();
@@ -5206,161 +5236,161 @@
 }
 if(arguments.length<3){
 if(dojo.html.styleSheet.cssRules){
-_48e=dojo.html.styleSheet.cssRules.length;
+_496=dojo.html.styleSheet.cssRules.length;
 }else{
 if(dojo.html.styleSheet.rules){
-_48e=dojo.html.styleSheet.rules.length;
+_496=dojo.html.styleSheet.rules.length;
 }else{
 return null;
 }
 }
 }
 if(dojo.html.styleSheet.insertRule){
-var rule=_48c+" { "+_48d+" }";
-return dojo.html.styleSheet.insertRule(rule,_48e);
+var rule=_494+" { "+_495+" }";
+return dojo.html.styleSheet.insertRule(rule,_496);
 }else{
 if(dojo.html.styleSheet.addRule){
-return dojo.html.styleSheet.addRule(_48c,_48d,_48e);
+return dojo.html.styleSheet.addRule(_494,_495,_496);
 }else{
 return null;
 }
 }
 };
-dojo.html.removeCssRule=function(_490){
+dojo.html.removeCssRule=function(_498){
 if(!dojo.html.styleSheet){
 dojo.debug("no stylesheet defined for removing rules");
 return false;
 }
 if(dojo.render.html.ie){
-if(!_490){
-_490=dojo.html.styleSheet.rules.length;
-dojo.html.styleSheet.removeRule(_490);
+if(!_498){
+_498=dojo.html.styleSheet.rules.length;
+dojo.html.styleSheet.removeRule(_498);
 }
 }else{
 if(document.styleSheets[0]){
-if(!_490){
-_490=dojo.html.styleSheet.cssRules.length;
+if(!_498){
+_498=dojo.html.styleSheet.cssRules.length;
 }
-dojo.html.styleSheet.deleteRule(_490);
+dojo.html.styleSheet.deleteRule(_498);
 }
 }
 return true;
 };
 dojo.html._insertedCssFiles=[];
-dojo.html.insertCssFile=function(URI,doc,_493,_494){
+dojo.html.insertCssFile=function(URI,doc,_49b,_49c){
 if(!URI){
 return;
 }
 if(!doc){
 doc=document;
 }
-var _495=dojo.hostenv.getText(URI,false,_494);
-if(_495===null){
+var _49d=dojo.hostenv.getText(URI,false,_49c);
+if(_49d===null){
 return;
 }
-_495=dojo.html.fixPathsInCssText(_495,URI);
-if(_493){
+_49d=dojo.html.fixPathsInCssText(_49d,URI);
+if(_49b){
 var idx=-1,node,ent=dojo.html._insertedCssFiles;
 for(var i=0;i<ent.length;i++){
-if((ent[i].doc==doc)&&(ent[i].cssText==_495)){
+if((ent[i].doc==doc)&&(ent[i].cssText==_49d)){
 idx=i;
 node=ent[i].nodeRef;
 break;
 }
 }
 if(node){
-var _49a=doc.getElementsByTagName("style");
-for(var i=0;i<_49a.length;i++){
-if(_49a[i]==node){
+var _4a2=doc.getElementsByTagName("style");
+for(var i=0;i<_4a2.length;i++){
+if(_4a2[i]==node){
 return;
 }
 }
 dojo.html._insertedCssFiles.shift(idx,1);
 }
 }
-var _49b=dojo.html.insertCssText(_495,doc);
-dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_495,"nodeRef":_49b});
-if(_49b&&djConfig.isDebug){
-_49b.setAttribute("dbgHref",URI);
+var _4a3=dojo.html.insertCssText(_49d,doc);
+dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_49d,"nodeRef":_4a3});
+if(_4a3&&djConfig.isDebug){
+_4a3.setAttribute("dbgHref",URI);
 }
-return _49b;
+return _4a3;
 };
-dojo.html.insertCssText=function(_49c,doc,URI){
-if(!_49c){
+dojo.html.insertCssText=function(_4a4,doc,URI){
+if(!_4a4){
 return;
 }
 if(!doc){
 doc=document;
 }
 if(URI){
-_49c=dojo.html.fixPathsInCssText(_49c,URI);
+_4a4=dojo.html.fixPathsInCssText(_4a4,URI);
 }
-var _49f=doc.createElement("style");
-_49f.setAttribute("type","text/css");
+var _4a7=doc.createElement("style");
+_4a7.setAttribute("type","text/css");
 var head=doc.getElementsByTagName("head")[0];
 if(!head){
 dojo.debug("No head tag in document, aborting styles");
 return;
 }else{
-head.appendChild(_49f);
+head.appendChild(_4a7);
 }
-if(_49f.styleSheet){
-var _4a1=function(){
+if(_4a7.styleSheet){
+var _4a9=function(){
 try{
-_49f.styleSheet.cssText=_49c;
+_4a7.styleSheet.cssText=_4a4;
 }
 catch(e){
 dojo.debug(e);
 }
 };
-if(_49f.styleSheet.disabled){
-setTimeout(_4a1,10);
+if(_4a7.styleSheet.disabled){
+setTimeout(_4a9,10);
 }else{
-_4a1();
+_4a9();
 }
 }else{
-var _4a2=doc.createTextNode(_49c);
-_49f.appendChild(_4a2);
+var _4aa=doc.createTextNode(_4a4);
+_4a7.appendChild(_4aa);
 }
-return _49f;
+return _4a7;
 };
-dojo.html.fixPathsInCssText=function(_4a3,URI){
-if(!_4a3||!URI){
+dojo.html.fixPathsInCssText=function(_4ab,URI){
+if(!_4ab||!URI){
 return;
 }
-var _4a5,str="",url="",_4a8="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
-var _4a9=new RegExp("url\\(\\s*("+_4a8+")\\s*\\)");
-var _4aa=/(file|https?|ftps?):\/\//;
-regexTrim=new RegExp("^[\\s]*(['\"]?)("+_4a8+")\\1[\\s]*?$");
+var _4ad,str="",url="",_4b0="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
+var _4b1=new RegExp("url\\(\\s*("+_4b0+")\\s*\\)");
+var _4b2=/(file|https?|ftps?):\/\//;
+regexTrim=new RegExp("^[\\s]*(['\"]?)("+_4b0+")\\1[\\s]*?$");
 if(dojo.render.html.ie55||dojo.render.html.ie60){
-var _4ab=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_4a8+")['\"]");
-while(_4a5=_4ab.exec(_4a3)){
-url=_4a5[2].replace(regexTrim,"$2");
-if(!_4aa.exec(url)){
+var _4b3=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_4b0+")['\"]");
+while(_4ad=_4b3.exec(_4ab)){
+url=_4ad[2].replace(regexTrim,"$2");
+if(!_4b2.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_4a3.substring(0,_4a5.index)+"AlphaImageLoader("+_4a5[1]+"src='"+url+"'";
-_4a3=_4a3.substr(_4a5.index+_4a5[0].length);
+str+=_4ab.substring(0,_4ad.index)+"AlphaImageLoader("+_4ad[1]+"src='"+url+"'";
+_4ab=_4ab.substr(_4ad.index+_4ad[0].length);
 }
-_4a3=str+_4a3;
+_4ab=str+_4ab;
 str="";
 }
-while(_4a5=_4a9.exec(_4a3)){
-url=_4a5[1].replace(regexTrim,"$2");
-if(!_4aa.exec(url)){
+while(_4ad=_4b1.exec(_4ab)){
+url=_4ad[1].replace(regexTrim,"$2");
+if(!_4b2.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_4a3.substring(0,_4a5.index)+"url("+url+")";
-_4a3=_4a3.substr(_4a5.index+_4a5[0].length);
+str+=_4ab.substring(0,_4ad.index)+"url("+url+")";
+_4ab=_4ab.substr(_4ad.index+_4ad[0].length);
 }
-return str+_4a3;
+return str+_4ab;
 };
-dojo.html.setActiveStyleSheet=function(_4ac){
+dojo.html.setActiveStyleSheet=function(_4b4){
 var i=0,a,els=dojo.doc().getElementsByTagName("link");
 while(a=els[i++]){
 if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){
 a.disabled=true;
-if(a.getAttribute("title")==_4ac){
+if(a.getAttribute("title")==_4b4){
 a.disabled=false;
 }
 }
@@ -5386,18 +5416,18 @@
 };
 dojo.html.applyBrowserClass=function(node){
 var drh=dojo.render.html;
-var _4b8={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
-for(var p in _4b8){
-if(_4b8[p]){
+var _4c0={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
+for(var p in _4c0){
+if(_4c0[p]){
 dojo.html.addClass(node,p);
 }
 }
 };
 dojo.provide("dojo.html.display");
-dojo.html._toggle=function(node,_4bb,_4bc){
+dojo.html._toggle=function(node,_4c3,_4c4){
 node=dojo.byId(node);
-_4bc(node,!_4bb(node));
-return _4bb(node);
+_4c4(node,!_4c3(node));
+return _4c3(node);
 };
 dojo.html.show=function(node){
 node=dojo.byId(node);
@@ -5416,8 +5446,8 @@
 }
 dojo.html.setStyle(node,"display","none");
 };
-dojo.html.setShowing=function(node,_4c1){
-dojo.html[(_4c1?"show":"hide")](node);
+dojo.html.setShowing=function(node,_4c9){
+dojo.html[(_4c9?"show":"hide")](node);
 };
 dojo.html.isShowing=function(node){
 return (dojo.html.getStyleProperty(node,"display")!="none");
@@ -5433,8 +5463,8 @@
 return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
 }
 };
-dojo.html.setDisplay=function(node,_4c7){
-dojo.html.setStyle(node,"display",((_4c7 instanceof String||typeof _4c7=="string")?_4c7:(_4c7?dojo.html.suggestDisplayByTagName(node):"none")));
+dojo.html.setDisplay=function(node,_4cf){
+dojo.html.setStyle(node,"display",((_4cf instanceof String||typeof _4cf=="string")?_4cf:(_4cf?dojo.html.suggestDisplayByTagName(node):"none")));
 };
 dojo.html.isDisplayed=function(node){
 return (dojo.html.getComputedStyle(node,"display")!="none");
@@ -5442,8 +5472,8 @@
 dojo.html.toggleDisplay=function(node){
 return dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
 };
-dojo.html.setVisibility=function(node,_4cb){
-dojo.html.setStyle(node,"visibility",((_4cb instanceof String||typeof _4cb=="string")?_4cb:(_4cb?"visible":"hidden")));
+dojo.html.setVisibility=function(node,_4d3){
+dojo.html.setStyle(node,"visibility",((_4d3 instanceof String||typeof _4d3=="string")?_4d3:(_4d3?"visible":"hidden")));
 };
 dojo.html.isVisible=function(node){
 return (dojo.html.getComputedStyle(node,"visibility")!="hidden");
@@ -5451,20 +5481,20 @@
 dojo.html.toggleVisibility=function(node){
 return dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
 };
-dojo.html.setOpacity=function(node,_4cf,_4d0){
+dojo.html.setOpacity=function(node,_4d7,_4d8){
 node=dojo.byId(node);
 var h=dojo.render.html;
-if(!_4d0){
-if(_4cf>=1){
+if(!_4d8){
+if(_4d7>=1){
 if(h.ie){
 dojo.html.clearOpacity(node);
 return;
 }else{
-_4cf=0.999999;
+_4d7=0.999999;
 }
 }else{
-if(_4cf<0){
-_4cf=0;
+if(_4d7<0){
+_4d7=0;
 }
 }
 }
@@ -5472,20 +5502,20 @@
 if(node.nodeName.toLowerCase()=="tr"){
 var tds=node.getElementsByTagName("td");
 for(var x=0;x<tds.length;x++){
-tds[x].style.filter="Alpha(Opacity="+_4cf*100+")";
+tds[x].style.filter="Alpha(Opacity="+_4d7*100+")";
 }
 }
-node.style.filter="Alpha(Opacity="+_4cf*100+")";
+node.style.filter="Alpha(Opacity="+_4d7*100+")";
 }else{
 if(h.moz){
-node.style.opacity=_4cf;
-node.style.MozOpacity=_4cf;
+node.style.opacity=_4d7;
+node.style.MozOpacity=_4d7;
 }else{
 if(h.safari){
-node.style.opacity=_4cf;
-node.style.KhtmlOpacity=_4cf;
+node.style.opacity=_4d7;
+node.style.KhtmlOpacity=_4d7;
 }else{
-node.style.opacity=_4cf;
+node.style.opacity=_4d7;
 }
 }
 }
@@ -5529,24 +5559,24 @@
 dojo.provide("dojo.html.color");
 dojo.html.getBackgroundColor=function(node){
 node=dojo.byId(node);
-var _4db;
+var _4e3;
 do{
-_4db=dojo.html.getStyle(node,"background-color");
-if(_4db.toLowerCase()=="rgba(0, 0, 0, 0)"){
-_4db="transparent";
+_4e3=dojo.html.getStyle(node,"background-color");
+if(_4e3.toLowerCase()=="rgba(0, 0, 0, 0)"){
+_4e3="transparent";
 }
 if(node==document.getElementsByTagName("body")[0]){
 node=null;
 break;
 }
 node=node.parentNode;
-}while(node&&dojo.lang.inArray(["transparent",""],_4db));
-if(_4db=="transparent"){
-_4db=[255,255,255,0];
+}while(node&&dojo.lang.inArray(["transparent",""],_4e3));
+if(_4e3=="transparent"){
+_4e3=[255,255,255,0];
 }else{
-_4db=dojo.gfx.color.extractRGB(_4db);
+_4e3=dojo.gfx.color.extractRGB(_4e3);
 }
-return _4db;
+return _4e3;
 };
 dojo.provide("dojo.html.layout");
 dojo.html.sumAncestorProperties=function(node,prop){
@@ -5554,73 +5584,73 @@
 if(!node){
 return 0;
 }
-var _4de=0;
+var _4e6=0;
 while(node){
 if(dojo.html.getComputedStyle(node,"position")=="fixed"){
 return 0;
 }
 var val=node[prop];
 if(val){
-_4de+=val-0;
+_4e6+=val-0;
 if(node==dojo.body()){
 break;
 }
 }
 node=node.parentNode;
 }
-return _4de;
+return _4e6;
 };
-dojo.html.setStyleAttributes=function(node,_4e1){
+dojo.html.setStyleAttributes=function(node,_4e9){
 node=dojo.byId(node);
-var _4e2=_4e1.replace(/(;)?\s*$/,"").split(";");
-for(var i=0;i<_4e2.length;i++){
-var _4e4=_4e2[i].split(":");
-var name=_4e4[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
-var _4e6=_4e4[1].replace(/\s*$/,"").replace(/^\s*/,"");
+var _4ea=_4e9.replace(/(;)?\s*$/,"").split(";");
+for(var i=0;i<_4ea.length;i++){
+var _4ec=_4ea[i].split(":");
+var name=_4ec[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
+var _4ee=_4ec[1].replace(/\s*$/,"").replace(/^\s*/,"");
 switch(name){
 case "opacity":
-dojo.html.setOpacity(node,_4e6);
+dojo.html.setOpacity(node,_4ee);
 break;
 case "content-height":
-dojo.html.setContentBox(node,{height:_4e6});
+dojo.html.setContentBox(node,{height:_4ee});
 break;
 case "content-width":
-dojo.html.setContentBox(node,{width:_4e6});
+dojo.html.setContentBox(node,{width:_4ee});
 break;
 case "outer-height":
-dojo.html.setMarginBox(node,{height:_4e6});
+dojo.html.setMarginBox(node,{height:_4ee});
 break;
 case "outer-width":
-dojo.html.setMarginBox(node,{width:_4e6});
+dojo.html.setMarginBox(node,{width:_4ee});
 break;
 default:
-node.style[dojo.html.toCamelCase(name)]=_4e6;
+node.style[dojo.html.toCamelCase(name)]=_4ee;
 }
 }
 };
 dojo.html.boxSizing={MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PADDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
-dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_4e8,_4e9){
+dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_4f0,_4f1){
 node=dojo.byId(node,node.ownerDocument);
 var ret={x:0,y:0};
 var bs=dojo.html.boxSizing;
-if(!_4e9){
-_4e9=bs.CONTENT_BOX;
+if(!_4f1){
+_4f1=bs.CONTENT_BOX;
 }
-var _4ec=2;
-var _4ed;
-switch(_4e9){
+var _4f4=2;
+var _4f5;
+switch(_4f1){
 case bs.MARGIN_BOX:
-_4ed=3;
+_4f5=3;
 break;
 case bs.BORDER_BOX:
-_4ed=2;
+_4f5=2;
 break;
 case bs.PADDING_BOX:
 default:
-_4ed=1;
+_4f5=1;
 break;
 case bs.CONTENT_BOX:
-_4ed=0;
+_4f5=0;
 break;
 }
 var h=dojo.render.html;
@@ -5632,7 +5662,7 @@
 }
 }else{
 if(document.getBoxObjectFor){
-_4ec=1;
+_4f4=1;
 try{
 var bo=document.getBoxObjectFor(node);
 ret.x=bo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
@@ -5642,11 +5672,11 @@
 }
 }else{
 if(node["offsetParent"]){
-var _4f1;
+var _4f9;
 if((h.safari)&&(node.style.getPropertyValue("position")=="absolute")&&(node.parentNode==db)){
-_4f1=db;
+_4f9=db;
 }else{
-_4f1=db.parentNode;
+_4f9=db.parentNode;
 }
 if(node.parentNode!=db){
 var nd=node;
@@ -5656,16 +5686,16 @@
 ret.x-=dojo.html.sumAncestorProperties(nd,"scrollLeft");
 ret.y-=dojo.html.sumAncestorProperties(nd,"scrollTop");
 }
-var _4f3=node;
+var _4fb=node;
 do{
-var n=_4f3["offsetLeft"];
+var n=_4fb["offsetLeft"];
 if(!h.opera||n>0){
 ret.x+=isNaN(n)?0:n;
 }
-var m=_4f3["offsetTop"];
+var m=_4fb["offsetTop"];
 ret.y+=isNaN(m)?0:m;
-_4f3=_4f3.offsetParent;
-}while((_4f3!=_4f1)&&(_4f3!=null));
+_4fb=_4fb.offsetParent;
+}while((_4fb!=_4f9)&&(_4fb!=null));
 }else{
 if(node["x"]&&node["y"]){
 ret.x+=isNaN(node.x)?0:node.x;
@@ -5674,22 +5704,22 @@
 }
 }
 }
-if(_4e8){
-var _4f6=dojo.html.getScroll();
-ret.y+=_4f6.top;
-ret.x+=_4f6.left;
+if(_4f0){
+var _4fe=dojo.html.getScroll();
+ret.y+=_4fe.top;
+ret.x+=_4fe.left;
 }
-var _4f7=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
-if(_4ec>_4ed){
-for(var i=_4ed;i<_4ec;++i){
-ret.y+=_4f7[i](node,"top");
-ret.x+=_4f7[i](node,"left");
+var _4ff=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
+if(_4f4>_4f5){
+for(var i=_4f5;i<_4f4;++i){
+ret.y+=_4ff[i](node,"top");
+ret.x+=_4ff[i](node,"left");
 }
 }else{
-if(_4ec<_4ed){
-for(var i=_4ed;i>_4ec;--i){
-ret.y-=_4f7[i-1](node,"top");
-ret.x-=_4f7[i-1](node,"left");
+if(_4f4<_4f5){
+for(var i=_4f5;i>_4f4;--i){
+ret.y-=_4ff[i-1](node,"top");
+ret.x-=_4ff[i-1](node,"left");
 }
 }
 }
@@ -5700,12 +5730,12 @@
 dojo.html.isPositionAbsolute=function(node){
 return (dojo.html.getComputedStyle(node,"position")=="absolute");
 };
-dojo.html._sumPixelValues=function(node,_4fb,_4fc){
-var _4fd=0;
-for(var x=0;x<_4fb.length;x++){
-_4fd+=dojo.html.getPixelValue(node,_4fb[x],_4fc);
+dojo.html._sumPixelValues=function(node,_503,_504){
+var _505=0;
+for(var x=0;x<_503.length;x++){
+_505+=dojo.html.getPixelValue(node,_503[x],_504);
 }
-return _4fd;
+return _505;
 };
 dojo.html.getMargin=function(node){
 return {width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(dojo.html.getComputedStyle(node,"position")=="absolute")),height:dojo.html._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComputedStyle(node,"position")=="absolute"))};
@@ -5727,8 +5757,8 @@
 };
 dojo.html.getPadBorder=function(node){
 var pad=dojo.html.getPadding(node);
-var _50a=dojo.html.getBorder(node);
-return {width:pad.width+_50a.width,height:pad.height+_50a.height};
+var _512=dojo.html.getBorder(node);
+return {width:pad.width+_512.width,height:pad.height+_512.height};
 };
 dojo.html.getBoxSizing=function(node){
 var h=dojo.render.html;
@@ -5744,14 +5774,14 @@
 if(arguments.length==0){
 node=document.documentElement;
 }
-var _50f;
+var _517;
 if(!h.ie){
-_50f=dojo.html.getStyle(node,"-moz-box-sizing");
-if(!_50f){
-_50f=dojo.html.getStyle(node,"box-sizing");
+_517=dojo.html.getStyle(node,"-moz-box-sizing");
+if(!_517){
+_517=dojo.html.getStyle(node,"box-sizing");
 }
 }
-return (_50f?_50f:bs.CONTENT_BOX);
+return (_517?_517:bs.CONTENT_BOX);
 }
 };
 dojo.html.isBorderBox=function(node){
@@ -5763,53 +5793,53 @@
 };
 dojo.html.getPaddingBox=function(node){
 var box=dojo.html.getBorderBox(node);
-var _514=dojo.html.getBorder(node);
-return {width:box.width-_514.width,height:box.height-_514.height};
+var _51c=dojo.html.getBorder(node);
+return {width:box.width-_51c.width,height:box.height-_51c.height};
 };
 dojo.html.getContentBox=function(node){
 node=dojo.byId(node);
-var _516=dojo.html.getPadBorder(node);
-return {width:node.offsetWidth-_516.width,height:node.offsetHeight-_516.height};
+var _51e=dojo.html.getPadBorder(node);
+return {width:node.offsetWidth-_51e.width,height:node.offsetHeight-_51e.height};
 };
 dojo.html.setContentBox=function(node,args){
 node=dojo.byId(node);
-var _519=0;
-var _51a=0;
+var _521=0;
+var _522=0;
 var isbb=dojo.html.isBorderBox(node);
-var _51c=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _524=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
 var ret={};
 if(typeof args.width!="undefined"){
-_519=args.width+_51c.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_519);
+_521=args.width+_524.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_521);
 }
 if(typeof args.height!="undefined"){
-_51a=args.height+_51c.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_51a);
+_522=args.height+_524.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_522);
 }
 return ret;
 };
 dojo.html.getMarginBox=function(node){
-var _51f=dojo.html.getBorderBox(node);
-var _520=dojo.html.getMargin(node);
-return {width:_51f.width+_520.width,height:_51f.height+_520.height};
+var _527=dojo.html.getBorderBox(node);
+var _528=dojo.html.getMargin(node);
+return {width:_527.width+_528.width,height:_527.height+_528.height};
 };
 dojo.html.setMarginBox=function(node,args){
 node=dojo.byId(node);
-var _523=0;
-var _524=0;
+var _52b=0;
+var _52c=0;
 var isbb=dojo.html.isBorderBox(node);
-var _526=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
-var _527=dojo.html.getMargin(node);
+var _52e=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _52f=dojo.html.getMargin(node);
 var ret={};
 if(typeof args.width!="undefined"){
-_523=args.width-_526.width;
-_523-=_527.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_523);
+_52b=args.width-_52e.width;
+_52b-=_52f.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_52b);
 }
 if(typeof args.height!="undefined"){
-_524=args.height-_526.height;
-_524-=_527.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_524);
+_52c=args.height-_52e.height;
+_52c-=_52f.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_52c);
 }
 return ret;
 };
@@ -5827,31 +5857,31 @@
 return dojo.html.getContentBox(node);
 }
 };
-dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_52c,_52d,_52e){
-if(_52c instanceof Array||typeof _52c=="array"){
+dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_534,_535,_536){
+if(_534 instanceof Array||typeof _534=="array"){
 dojo.deprecated("dojo.html.toCoordinateArray","use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead","0.5");
-while(_52c.length<4){
-_52c.push(0);
+while(_534.length<4){
+_534.push(0);
 }
-while(_52c.length>4){
-_52c.pop();
+while(_534.length>4){
+_534.pop();
 }
-var ret={left:_52c[0],top:_52c[1],width:_52c[2],height:_52c[3]};
+var ret={left:_534[0],top:_534[1],width:_534[2],height:_534[3]};
 }else{
-if(!_52c.nodeType&&!(_52c instanceof String||typeof _52c=="string")&&("width" in _52c||"height" in _52c||"left" in _52c||"x" in _52c||"top" in _52c||"y" in _52c)){
-var ret={left:_52c.left||_52c.x||0,top:_52c.top||_52c.y||0,width:_52c.width||0,height:_52c.height||0};
+if(!_534.nodeType&&!(_534 instanceof String||typeof _534=="string")&&("width" in _534||"height" in _534||"left" in _534||"x" in _534||"top" in _534||"y" in _534)){
+var ret={left:_534.left||_534.x||0,top:_534.top||_534.y||0,width:_534.width||0,height:_534.height||0};
 }else{
-var node=dojo.byId(_52c);
-var pos=dojo.html.abs(node,_52d,_52e);
-var _532=dojo.html.getMarginBox(node);
-var ret={left:pos.left,top:pos.top,width:_532.width,height:_532.height};
+var node=dojo.byId(_534);
+var pos=dojo.html.abs(node,_535,_536);
+var _53a=dojo.html.getMarginBox(node);
+var ret={left:pos.left,top:pos.top,width:_53a.width,height:_53a.height};
 }
 }
 ret.x=ret.left;
 ret.y=ret.top;
 return ret;
 };
-dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_534){
+dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_53c){
 return dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"width");
 };
 dojo.html.setMarginBoxHeight=dojo.html.setOuterHeight=function(){
@@ -5863,19 +5893,19 @@
 dojo.html.getMarginBoxHeight=dojo.html.getOuterHeight=function(){
 return dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,null,"height");
 };
-dojo.html.getTotalOffset=function(node,type,_537){
+dojo.html.getTotalOffset=function(node,type,_53f){
 return dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",arguments,null,type);
 };
-dojo.html.getAbsoluteX=function(node,_539){
+dojo.html.getAbsoluteX=function(node,_541){
 return dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,null,"x");
 };
-dojo.html.getAbsoluteY=function(node,_53b){
+dojo.html.getAbsoluteY=function(node,_543){
 return dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,null,"y");
 };
-dojo.html.totalOffsetLeft=function(node,_53d){
+dojo.html.totalOffsetLeft=function(node,_545){
 return dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",arguments,null,"left");
 };
-dojo.html.totalOffsetTop=function(node,_53f){
+dojo.html.totalOffsetTop=function(node,_547){
 return dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",arguments,null,"top");
 };
 dojo.html.getMarginWidth=function(node){
@@ -5914,46 +5944,46 @@
 dojo.html.getContentBoxHeight=dojo.html.getContentHeight=function(){
 return dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments,null,"height");
 };
-dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_549){
+dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_551){
 return dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,"width");
 };
-dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_54b){
+dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_553){
 return dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments,"height");
 };
 dojo.provide("dojo.lfx.html");
-dojo.lfx.html._byId=function(_54c){
-if(!_54c){
+dojo.lfx.html._byId=function(_554){
+if(!_554){
 return [];
 }
-if(dojo.lang.isArrayLike(_54c)){
-if(!_54c.alreadyChecked){
+if(dojo.lang.isArrayLike(_554)){
+if(!_554.alreadyChecked){
 var n=[];
-dojo.lang.forEach(_54c,function(node){
+dojo.lang.forEach(_554,function(node){
 n.push(dojo.byId(node));
 });
 n.alreadyChecked=true;
 return n;
 }else{
-return _54c;
+return _554;
 }
 }else{
 var n=[];
-n.push(dojo.byId(_54c));
+n.push(dojo.byId(_554));
 n.alreadyChecked=true;
 return n;
 }
 };
-dojo.lfx.html.propertyAnimation=function(_54f,_550,_551,_552,_553){
-_54f=dojo.lfx.html._byId(_54f);
-var _554={"propertyMap":_550,"nodes":_54f,"duration":_551,"easing":_552||dojo.lfx.easeDefault};
-var _555=function(args){
+dojo.lfx.html.propertyAnimation=function(_557,_558,_559,_55a,_55b){
+_557=dojo.lfx.html._byId(_557);
+var _55c={"propertyMap":_558,"nodes":_557,"duration":_559,"easing":_55a||dojo.lfx.easeDefault};
+var _55d=function(args){
 if(args.nodes.length==1){
 var pm=args.propertyMap;
 if(!dojo.lang.isArray(args.propertyMap)){
 var parr=[];
-for(var _559 in pm){
-pm[_559].property=_559;
-parr.push(pm[_559]);
+for(var _561 in pm){
+pm[_561].property=_561;
+parr.push(pm[_561]);
 }
 pm=args.propertyMap=parr;
 }
@@ -5968,24 +5998,24 @@
 });
 }
 };
-var _55b=function(_55c){
-var _55d=[];
-dojo.lang.forEach(_55c,function(c){
-_55d.push(Math.round(c));
+var _563=function(_564){
+var _565=[];
+dojo.lang.forEach(_564,function(c){
+_565.push(Math.round(c));
 });
-return _55d;
+return _565;
 };
-var _55f=function(n,_561){
+var _567=function(n,_569){
 n=dojo.byId(n);
 if(!n||!n.style){
 return;
 }
-for(var s in _561){
+for(var s in _569){
 try{
 if(s=="opacity"){
-dojo.html.setOpacity(n,_561[s]);
+dojo.html.setOpacity(n,_569[s]);
 }else{
-n.style[s]=_561[s];
+n.style[s]=_569[s];
 }
 }
 catch(e){
@@ -5993,10 +6023,10 @@
 }
 }
 };
-var _563=function(_564){
-this._properties=_564;
-this.diffs=new Array(_564.length);
-dojo.lang.forEach(_564,function(prop,i){
+var _56b=function(_56c){
+this._properties=_56c;
+this.diffs=new Array(_56c.length);
+dojo.lang.forEach(_56c,function(prop,i){
 if(dojo.lang.isFunction(prop.start)){
 prop.start=prop.start(prop,i);
 }
@@ -6017,43 +6047,43 @@
 this.getValue=function(n){
 var ret={};
 dojo.lang.forEach(this._properties,function(prop,i){
-var _56b=null;
+var _573=null;
 if(dojo.lang.isArray(prop.start)){
 }else{
 if(prop.start instanceof dojo.gfx.color.Color){
-_56b=(prop.units||"rgb")+"(";
+_573=(prop.units||"rgb")+"(";
 for(var j=0;j<prop.startRgb.length;j++){
-_56b+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
+_573+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
 }
-_56b+=")";
+_573+=")";
 }else{
-_56b=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
+_573=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
 }
 }
-ret[dojo.html.toCamelCase(prop.property)]=_56b;
+ret[dojo.html.toCamelCase(prop.property)]=_573;
 },this);
 return ret;
 };
 };
 var anim=new dojo.lfx.Animation({beforeBegin:function(){
-_555(_554);
-anim.curve=new _563(_554.propertyMap);
-},onAnimate:function(_56e){
-dojo.lang.forEach(_554.nodes,function(node){
-_55f(node,_56e);
+_55d(_55c);
+anim.curve=new _56b(_55c.propertyMap);
+},onAnimate:function(_576){
+dojo.lang.forEach(_55c.nodes,function(node){
+_567(node,_576);
 });
-}},_554.duration,null,_554.easing);
-if(_553){
-for(var x in _553){
-if(dojo.lang.isFunction(_553[x])){
-anim.connect(x,anim,_553[x]);
+}},_55c.duration,null,_55c.easing);
+if(_55b){
+for(var x in _55b){
+if(dojo.lang.isFunction(_55b[x])){
+anim.connect(x,anim,_55b[x]);
 }
 }
 }
 return anim;
 };
-dojo.lfx.html._makeFadeable=function(_571){
-var _572=function(node){
+dojo.lfx.html._makeFadeable=function(_579){
+var _57a=function(node){
 if(dojo.render.html.ie){
 if((node.style.zoom.length==0)&&(dojo.html.getStyle(node,"zoom")=="normal")){
 node.style.zoom="1";
@@ -6063,100 +6093,100 @@
 }
 }
 };
-if(dojo.lang.isArrayLike(_571)){
-dojo.lang.forEach(_571,_572);
+if(dojo.lang.isArrayLike(_579)){
+dojo.lang.forEach(_579,_57a);
 }else{
-_572(_571);
+_57a(_579);
 }
 };
-dojo.lfx.html.fade=function(_574,_575,_576,_577,_578){
-_574=dojo.lfx.html._byId(_574);
-var _579={property:"opacity"};
-if(!dj_undef("start",_575)){
-_579.start=_575.start;
+dojo.lfx.html.fade=function(_57c,_57d,_57e,_57f,_580){
+_57c=dojo.lfx.html._byId(_57c);
+var _581={property:"opacity"};
+if(!dj_undef("start",_57d)){
+_581.start=_57d.start;
 }else{
-_579.start=function(){
-return dojo.html.getOpacity(_574[0]);
+_581.start=function(){
+return dojo.html.getOpacity(_57c[0]);
 };
 }
-if(!dj_undef("end",_575)){
-_579.end=_575.end;
+if(!dj_undef("end",_57d)){
+_581.end=_57d.end;
 }else{
 dojo.raise("dojo.lfx.html.fade needs an end value");
 }
-var anim=dojo.lfx.propertyAnimation(_574,[_579],_576,_577);
+var anim=dojo.lfx.propertyAnimation(_57c,[_581],_57e,_57f);
 anim.connect("beforeBegin",function(){
-dojo.lfx.html._makeFadeable(_574);
+dojo.lfx.html._makeFadeable(_57c);
 });
-if(_578){
+if(_580){
 anim.connect("onEnd",function(){
-_578(_574,anim);
+_580(_57c,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.fadeIn=function(_57b,_57c,_57d,_57e){
-return dojo.lfx.html.fade(_57b,{end:1},_57c,_57d,_57e);
+dojo.lfx.html.fadeIn=function(_583,_584,_585,_586){
+return dojo.lfx.html.fade(_583,{end:1},_584,_585,_586);
 };
-dojo.lfx.html.fadeOut=function(_57f,_580,_581,_582){
-return dojo.lfx.html.fade(_57f,{end:0},_580,_581,_582);
+dojo.lfx.html.fadeOut=function(_587,_588,_589,_58a){
+return dojo.lfx.html.fade(_587,{end:0},_588,_589,_58a);
 };
-dojo.lfx.html.fadeShow=function(_583,_584,_585,_586){
-_583=dojo.lfx.html._byId(_583);
-dojo.lang.forEach(_583,function(node){
+dojo.lfx.html.fadeShow=function(_58b,_58c,_58d,_58e){
+_58b=dojo.lfx.html._byId(_58b);
+dojo.lang.forEach(_58b,function(node){
 dojo.html.setOpacity(node,0);
 });
-var anim=dojo.lfx.html.fadeIn(_583,_584,_585,_586);
+var anim=dojo.lfx.html.fadeIn(_58b,_58c,_58d,_58e);
 anim.connect("beforeBegin",function(){
-if(dojo.lang.isArrayLike(_583)){
-dojo.lang.forEach(_583,dojo.html.show);
+if(dojo.lang.isArrayLike(_58b)){
+dojo.lang.forEach(_58b,dojo.html.show);
 }else{
-dojo.html.show(_583);
+dojo.html.show(_58b);
 }
 });
 return anim;
 };
-dojo.lfx.html.fadeHide=function(_589,_58a,_58b,_58c){
-var anim=dojo.lfx.html.fadeOut(_589,_58a,_58b,function(){
-if(dojo.lang.isArrayLike(_589)){
-dojo.lang.forEach(_589,dojo.html.hide);
+dojo.lfx.html.fadeHide=function(_591,_592,_593,_594){
+var anim=dojo.lfx.html.fadeOut(_591,_592,_593,function(){
+if(dojo.lang.isArrayLike(_591)){
+dojo.lang.forEach(_591,dojo.html.hide);
 }else{
-dojo.html.hide(_589);
+dojo.html.hide(_591);
 }
-if(_58c){
-_58c(_589,anim);
+if(_594){
+_594(_591,anim);
 }
 });
 return anim;
 };
-dojo.lfx.html.wipeIn=function(_58e,_58f,_590,_591){
-_58e=dojo.lfx.html._byId(_58e);
-var _592=[];
-dojo.lang.forEach(_58e,function(node){
-var _594={};
-var _595,_596,_597;
+dojo.lfx.html.wipeIn=function(_596,_597,_598,_599){
+_596=dojo.lfx.html._byId(_596);
+var _59a=[];
+dojo.lang.forEach(_596,function(node){
+var _59c={};
+var _59d,_59e,_59f;
 with(node.style){
-_595=top;
-_596=left;
-_597=position;
+_59d=top;
+_59e=left;
+_59f=position;
 top="-9999px";
 left="-9999px";
 position="absolute";
 display="";
 }
-var _598=dojo.html.getBorderBox(node).height;
+var _5a0=dojo.html.getBorderBox(node).height;
 with(node.style){
-top=_595;
-left=_596;
-position=_597;
+top=_59d;
+left=_59e;
+position=_59f;
 display="none";
 }
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){
-return _598;
-}}},_58f,_590);
+return _5a0;
+}}},_597,_598);
 anim.connect("beforeBegin",function(){
-_594.overflow=node.style.overflow;
-_594.height=node.style.height;
+_59c.overflow=node.style.overflow;
+_59c.height=node.style.height;
 with(node.style){
 overflow="hidden";
 height="1px";
@@ -6165,27 +6195,27 @@
 });
 anim.connect("onEnd",function(){
 with(node.style){
-overflow=_594.overflow;
-height=_594.height;
+overflow=_59c.overflow;
+height=_59c.height;
 }
-if(_591){
-_591(node,anim);
+if(_599){
+_599(node,anim);
 }
 });
-_592.push(anim);
+_59a.push(anim);
 });
-return dojo.lfx.combine(_592);
+return dojo.lfx.combine(_59a);
 };
-dojo.lfx.html.wipeOut=function(_59a,_59b,_59c,_59d){
-_59a=dojo.lfx.html._byId(_59a);
-var _59e=[];
-dojo.lang.forEach(_59a,function(node){
-var _5a0={};
+dojo.lfx.html.wipeOut=function(_5a2,_5a3,_5a4,_5a5){
+_5a2=dojo.lfx.html._byId(_5a2);
+var _5a6=[];
+dojo.lang.forEach(_5a2,function(node){
+var _5a8={};
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:function(){
 return dojo.html.getContentBox(node).height;
-},end:1}},_59b,_59c,{"beforeBegin":function(){
-_5a0.overflow=node.style.overflow;
-_5a0.height=node.style.height;
+},end:1}},_5a3,_5a4,{"beforeBegin":function(){
+_5a8.overflow=node.style.overflow;
+_5a8.height=node.style.height;
 with(node.style){
 overflow="hidden";
 }
@@ -6193,221 +6223,221 @@
 },"onEnd":function(){
 dojo.html.hide(node);
 with(node.style){
-overflow=_5a0.overflow;
-height=_5a0.height;
+overflow=_5a8.overflow;
+height=_5a8.height;
 }
-if(_59d){
-_59d(node,anim);
+if(_5a5){
+_5a5(node,anim);
 }
 }});
-_59e.push(anim);
+_5a6.push(anim);
 });
-return dojo.lfx.combine(_59e);
+return dojo.lfx.combine(_5a6);
 };
-dojo.lfx.html.slideTo=function(_5a2,_5a3,_5a4,_5a5,_5a6){
-_5a2=dojo.lfx.html._byId(_5a2);
-var _5a7=[];
-var _5a8=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_5a3)){
+dojo.lfx.html.slideTo=function(_5aa,_5ab,_5ac,_5ad,_5ae){
+_5aa=dojo.lfx.html._byId(_5aa);
+var _5af=[];
+var _5b0=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_5ab)){
 dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
-_5a3={top:_5a3[0],left:_5a3[1]};
+_5ab={top:_5ab[0],left:_5ab[1]};
 }
-dojo.lang.forEach(_5a2,function(node){
+dojo.lang.forEach(_5aa,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _5ad=node;
+var _5b5=node;
 return function(){
-var pos=_5a8(_5ad,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_5a8(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_5a8(node,"left"))||0);
+var pos=_5b0(_5b5,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_5b0(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_5b0(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_5ad,true);
-dojo.html.setStyleAttributes(_5ad,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_5b5,true);
+dojo.html.setStyleAttributes(_5b5,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_5a3.top||0)},"left":{start:left,end:(_5a3.left||0)}},_5a4,_5a5,{"beforeBegin":init});
-if(_5a6){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_5ab.top||0)},"left":{start:left,end:(_5ab.left||0)}},_5ac,_5ad,{"beforeBegin":init});
+if(_5ae){
 anim.connect("onEnd",function(){
-_5a6(_5a2,anim);
+_5ae(_5aa,anim);
 });
 }
-_5a7.push(anim);
+_5af.push(anim);
 });
-return dojo.lfx.combine(_5a7);
+return dojo.lfx.combine(_5af);
 };
-dojo.lfx.html.slideBy=function(_5b1,_5b2,_5b3,_5b4,_5b5){
-_5b1=dojo.lfx.html._byId(_5b1);
-var _5b6=[];
-var _5b7=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_5b2)){
+dojo.lfx.html.slideBy=function(_5b9,_5ba,_5bb,_5bc,_5bd){
+_5b9=dojo.lfx.html._byId(_5b9);
+var _5be=[];
+var _5bf=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_5ba)){
 dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
-_5b2={top:_5b2[0],left:_5b2[1]};
+_5ba={top:_5ba[0],left:_5ba[1]};
 }
-dojo.lang.forEach(_5b1,function(node){
+dojo.lang.forEach(_5b9,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _5bc=node;
+var _5c4=node;
 return function(){
-var pos=_5b7(_5bc,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_5b7(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_5b7(node,"left"))||0);
+var pos=_5bf(_5c4,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_5bf(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_5bf(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_5bc,true);
-dojo.html.setStyleAttributes(_5bc,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_5c4,true);
+dojo.html.setStyleAttributes(_5c4,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_5b2.top||0)},"left":{start:left,end:left+(_5b2.left||0)}},_5b3,_5b4).connect("beforeBegin",init);
-if(_5b5){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_5ba.top||0)},"left":{start:left,end:left+(_5ba.left||0)}},_5bb,_5bc).connect("beforeBegin",init);
+if(_5bd){
 anim.connect("onEnd",function(){
-_5b5(_5b1,anim);
+_5bd(_5b9,anim);
 });
 }
-_5b6.push(anim);
+_5be.push(anim);
 });
-return dojo.lfx.combine(_5b6);
+return dojo.lfx.combine(_5be);
 };
-dojo.lfx.html.explode=function(_5c0,_5c1,_5c2,_5c3,_5c4){
+dojo.lfx.html.explode=function(_5c8,_5c9,_5ca,_5cb,_5cc){
 var h=dojo.html;
-_5c0=dojo.byId(_5c0);
-_5c1=dojo.byId(_5c1);
-var _5c6=h.toCoordinateObject(_5c0,true);
-var _5c7=document.createElement("div");
-h.copyStyle(_5c7,_5c1);
-if(_5c1.explodeClassName){
-_5c7.className=_5c1.explodeClassName;
+_5c8=dojo.byId(_5c8);
+_5c9=dojo.byId(_5c9);
+var _5ce=h.toCoordinateObject(_5c8,true);
+var _5cf=document.createElement("div");
+h.copyStyle(_5cf,_5c9);
+if(_5c9.explodeClassName){
+_5cf.className=_5c9.explodeClassName;
 }
-with(_5c7.style){
+with(_5cf.style){
 position="absolute";
 display="none";
-var _5c8=h.getStyle(_5c0,"background-color");
-backgroundColor=_5c8?_5c8.toLowerCase():"transparent";
+var _5d0=h.getStyle(_5c8,"background-color");
+backgroundColor=_5d0?_5d0.toLowerCase():"transparent";
 backgroundColor=(backgroundColor=="transparent")?"rgb(221, 221, 221)":backgroundColor;
 }
-dojo.body().appendChild(_5c7);
-with(_5c1.style){
+dojo.body().appendChild(_5cf);
+with(_5c9.style){
 visibility="hidden";
 display="block";
 }
-var _5c9=h.toCoordinateObject(_5c1,true);
-with(_5c1.style){
+var _5d1=h.toCoordinateObject(_5c9,true);
+with(_5c9.style){
 display="none";
 visibility="visible";
 }
-var _5ca={opacity:{start:0.5,end:1}};
+var _5d2={opacity:{start:0.5,end:1}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_5ca[type]={start:_5c6[type],end:_5c9[type]};
+_5d2[type]={start:_5ce[type],end:_5d1[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_5c7,_5ca,_5c2,_5c3,{"beforeBegin":function(){
-h.setDisplay(_5c7,"block");
+var anim=new dojo.lfx.propertyAnimation(_5cf,_5d2,_5ca,_5cb,{"beforeBegin":function(){
+h.setDisplay(_5cf,"block");
 },"onEnd":function(){
-h.setDisplay(_5c1,"block");
-_5c7.parentNode.removeChild(_5c7);
+h.setDisplay(_5c9,"block");
+_5cf.parentNode.removeChild(_5cf);
 }});
-if(_5c4){
+if(_5cc){
 anim.connect("onEnd",function(){
-_5c4(_5c1,anim);
+_5cc(_5c9,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.implode=function(_5cd,end,_5cf,_5d0,_5d1){
+dojo.lfx.html.implode=function(_5d5,end,_5d7,_5d8,_5d9){
 var h=dojo.html;
-_5cd=dojo.byId(_5cd);
+_5d5=dojo.byId(_5d5);
 end=dojo.byId(end);
-var _5d3=dojo.html.toCoordinateObject(_5cd,true);
-var _5d4=dojo.html.toCoordinateObject(end,true);
-var _5d5=document.createElement("div");
-dojo.html.copyStyle(_5d5,_5cd);
-if(_5cd.explodeClassName){
-_5d5.className=_5cd.explodeClassName;
+var _5db=dojo.html.toCoordinateObject(_5d5,true);
+var _5dc=dojo.html.toCoordinateObject(end,true);
+var _5dd=document.createElement("div");
+dojo.html.copyStyle(_5dd,_5d5);
+if(_5d5.explodeClassName){
+_5dd.className=_5d5.explodeClassName;
 }
-dojo.html.setOpacity(_5d5,0.3);
-with(_5d5.style){
+dojo.html.setOpacity(_5dd,0.3);
+with(_5dd.style){
 position="absolute";
 display="none";
-backgroundColor=h.getStyle(_5cd,"background-color").toLowerCase();
+backgroundColor=h.getStyle(_5d5,"background-color").toLowerCase();
 }
-dojo.body().appendChild(_5d5);
-var _5d6={opacity:{start:1,end:0.5}};
+dojo.body().appendChild(_5dd);
+var _5de={opacity:{start:1,end:0.5}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_5d6[type]={start:_5d3[type],end:_5d4[type]};
+_5de[type]={start:_5db[type],end:_5dc[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_5d5,_5d6,_5cf,_5d0,{"beforeBegin":function(){
-dojo.html.hide(_5cd);
-dojo.html.show(_5d5);
+var anim=new dojo.lfx.propertyAnimation(_5dd,_5de,_5d7,_5d8,{"beforeBegin":function(){
+dojo.html.hide(_5d5);
+dojo.html.show(_5dd);
 },"onEnd":function(){
-_5d5.parentNode.removeChild(_5d5);
+_5dd.parentNode.removeChild(_5dd);
 }});
-if(_5d1){
+if(_5d9){
 anim.connect("onEnd",function(){
-_5d1(_5cd,anim);
+_5d9(_5d5,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.highlight=function(_5d9,_5da,_5db,_5dc,_5dd){
-_5d9=dojo.lfx.html._byId(_5d9);
-var _5de=[];
-dojo.lang.forEach(_5d9,function(node){
-var _5e0=dojo.html.getBackgroundColor(node);
+dojo.lfx.html.highlight=function(_5e1,_5e2,_5e3,_5e4,_5e5){
+_5e1=dojo.lfx.html._byId(_5e1);
+var _5e6=[];
+dojo.lang.forEach(_5e1,function(node){
+var _5e8=dojo.html.getBackgroundColor(node);
 var bg=dojo.html.getStyle(node,"background-color").toLowerCase();
-var _5e2=dojo.html.getStyle(node,"background-image");
-var _5e3=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
-while(_5e0.length>3){
-_5e0.pop();
+var _5ea=dojo.html.getStyle(node,"background-image");
+var _5eb=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
+while(_5e8.length>3){
+_5e8.pop();
 }
-var rgb=new dojo.gfx.color.Color(_5da);
-var _5e5=new dojo.gfx.color.Color(_5e0);
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_5e5}},_5db,_5dc,{"beforeBegin":function(){
-if(_5e2){
+var rgb=new dojo.gfx.color.Color(_5e2);
+var _5ed=new dojo.gfx.color.Color(_5e8);
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_5ed}},_5e3,_5e4,{"beforeBegin":function(){
+if(_5ea){
 node.style.backgroundImage="none";
 }
 node.style.backgroundColor="rgb("+rgb.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_5e2){
-node.style.backgroundImage=_5e2;
+if(_5ea){
+node.style.backgroundImage=_5ea;
 }
-if(_5e3){
+if(_5eb){
 node.style.backgroundColor="transparent";
 }
-if(_5dd){
-_5dd(node,anim);
+if(_5e5){
+_5e5(node,anim);
 }
 }});
-_5de.push(anim);
+_5e6.push(anim);
 });
-return dojo.lfx.combine(_5de);
+return dojo.lfx.combine(_5e6);
 };
-dojo.lfx.html.unhighlight=function(_5e7,_5e8,_5e9,_5ea,_5eb){
-_5e7=dojo.lfx.html._byId(_5e7);
-var _5ec=[];
-dojo.lang.forEach(_5e7,function(node){
-var _5ee=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
-var rgb=new dojo.gfx.color.Color(_5e8);
-var _5f0=dojo.html.getStyle(node,"background-image");
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_5ee,end:rgb}},_5e9,_5ea,{"beforeBegin":function(){
-if(_5f0){
+dojo.lfx.html.unhighlight=function(_5ef,_5f0,_5f1,_5f2,_5f3){
+_5ef=dojo.lfx.html._byId(_5ef);
+var _5f4=[];
+dojo.lang.forEach(_5ef,function(node){
+var _5f6=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
+var rgb=new dojo.gfx.color.Color(_5f0);
+var _5f8=dojo.html.getStyle(node,"background-image");
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_5f6,end:rgb}},_5f1,_5f2,{"beforeBegin":function(){
+if(_5f8){
 node.style.backgroundImage="none";
 }
-node.style.backgroundColor="rgb("+_5ee.toRgb().join(",")+")";
+node.style.backgroundColor="rgb("+_5f6.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_5eb){
-_5eb(node,anim);
+if(_5f3){
+_5f3(node,anim);
 }
 }});
-_5ec.push(anim);
+_5f4.push(anim);
 });
-return dojo.lfx.combine(_5ec);
+return dojo.lfx.combine(_5f4);
 };
 dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
 dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.html"]});
@@ -6416,6 +6446,8 @@
 
 __CPAN_EDITION__ ajax build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -6448,6 +6480,7 @@
 ../src/html/layout.js
 ../src/lfx/html.js
 ../src/lfx/__package__.js
+
 __CPAN_EDITION__ charting dojo.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6484,7 +6517,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -7280,7 +7313,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -7599,20 +7634,28 @@
 };
 dojo.provide("dojo.lang.func");
 dojo.lang.hitch=function(_114,_115){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
 var fcn=(dojo.lang.isString(_115)?_114[_115]:_115)||function(){
 };
 return function(){
-return fcn.apply(_114,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_114,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_117,_118,_119){
-var nso=(_118||dojo.lang.anon);
-if((_119)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_11b,_11c,_11d){
+var nso=(_11c||dojo.lang.anon);
+if((_11d)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_117){
+if(nso[x]===_11b){
 return x;
 }
 }
@@ -7624,50 +7667,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_117;
+nso[ret]=_11b;
 return ret;
 };
-dojo.lang.forward=function(_11d){
+dojo.lang.forward=function(_121){
 return function(){
-return this[_11d].apply(this,arguments);
+return this[_121].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_11e,func){
-var _120=[];
-_11e=_11e||dj_global;
+dojo.lang.curry=function(_122,func){
+var _124=[];
+_122=_122||dj_global;
 if(dojo.lang.isString(func)){
-func=_11e[func];
+func=_122[func];
 }
 for(var x=2;x<arguments.length;x++){
-_120.push(arguments[x]);
+_124.push(arguments[x]);
 }
-var _122=(func["__preJoinArity"]||func.length)-_120.length;
-function gather(_123,_124,_125){
-var _126=_125;
-var _127=_124.slice(0);
-for(var x=0;x<_123.length;x++){
-_127.push(_123[x]);
+var _126=(func["__preJoinArity"]||func.length)-_124.length;
+function gather(_127,_128,_129){
+var _12a=_129;
+var _12b=_128.slice(0);
+for(var x=0;x<_127.length;x++){
+_12b.push(_127[x]);
 }
-_125=_125-_123.length;
-if(_125<=0){
-var res=func.apply(_11e,_127);
-_125=_126;
+_129=_129-_127.length;
+if(_129<=0){
+var res=func.apply(_122,_12b);
+_129=_12a;
 return res;
 }else{
 return function(){
-return gather(arguments,_127,_125);
+return gather(arguments,_12b,_129);
 };
 }
 }
-return gather([],_120,_122);
+return gather([],_124,_126);
 };
-dojo.lang.curryArguments=function(_12a,func,args,_12d){
-var _12e=[];
-var x=_12d||0;
-for(x=_12d;x<args.length;x++){
-_12e.push(args[x]);
+dojo.lang.curryArguments=function(_12e,func,args,_131){
+var _132=[];
+var x=_131||0;
+for(x=_131;x<args.length;x++){
+_132.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_12a,func].concat(_12e));
+return dojo.lang.curry.apply(dojo.lang,[_12e,func].concat(_132));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -7684,31 +7727,31 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_134,_135){
+dojo.lang.delayThese=function(farr,cb,_138,_139){
 if(!farr.length){
-if(typeof _135=="function"){
-_135();
+if(typeof _139=="function"){
+_139();
 }
 return;
 }
-if((typeof _134=="undefined")&&(typeof cb=="number")){
-_134=cb;
+if((typeof _138=="undefined")&&(typeof cb=="number")){
+_138=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_134){
-_134=0;
+if(!_138){
+_138=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_134,_135);
-},_134);
+dojo.lang.delayThese(farr,cb,_138,_139);
+},_138);
 };
 dojo.provide("dojo.string.common");
 dojo.string.trim=function(str,wh){
@@ -7727,12 +7770,12 @@
 dojo.string.trimEnd=function(str){
 return dojo.string.trim(str,-1);
 };
-dojo.string.repeat=function(str,_13c,_13d){
+dojo.string.repeat=function(str,_140,_141){
 var out="";
-for(var i=0;i<_13c;i++){
+for(var i=0;i<_140;i++){
 out+=str;
-if(_13d&&i<_13c-1){
-out+=_13d;
+if(_141&&i<_140-1){
+out+=_141;
 }
 }
 return out;
@@ -7771,138 +7814,138 @@
 },isEmpty:function(obj){
 if(dojo.lang.isObject(obj)){
 var tmp={};
-var _14f=0;
+var _153=0;
 for(var x in obj){
 if(obj[x]&&(!tmp[x])){
-_14f++;
+_153++;
 break;
 }
 }
-return _14f==0;
+return _153==0;
 }else{
 if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
 return obj.length==0;
 }
 }
-},map:function(arr,obj,_153){
-var _154=dojo.lang.isString(arr);
-if(_154){
+},map:function(arr,obj,_157){
+var _158=dojo.lang.isString(arr);
+if(_158){
 arr=arr.split("");
 }
-if(dojo.lang.isFunction(obj)&&(!_153)){
-_153=obj;
+if(dojo.lang.isFunction(obj)&&(!_157)){
+_157=obj;
 obj=dj_global;
 }else{
-if(dojo.lang.isFunction(obj)&&_153){
-var _155=obj;
-obj=_153;
-_153=_155;
+if(dojo.lang.isFunction(obj)&&_157){
+var _159=obj;
+obj=_157;
+_157=_159;
 }
 }
 if(Array.map){
-var _156=Array.map(arr,_153,obj);
+var _15a=Array.map(arr,_157,obj);
 }else{
-var _156=[];
+var _15a=[];
 for(var i=0;i<arr.length;++i){
-_156.push(_153.call(obj,arr[i]));
+_15a.push(_157.call(obj,arr[i]));
 }
 }
-if(_154){
-return _156.join("");
+if(_158){
+return _15a.join("");
 }else{
-return _156;
+return _15a;
 }
-},reduce:function(arr,_159,obj,_15b){
-var _15c=_159;
+},reduce:function(arr,_15d,obj,_15f){
+var _160=_15d;
 if(arguments.length==2){
-_15b=_159;
-_15c=arr[0];
+_15f=_15d;
+_160=arr[0];
 arr=arr.slice(1);
 }else{
 if(arguments.length==3){
 if(dojo.lang.isFunction(obj)){
-_15b=obj;
+_15f=obj;
 obj=null;
 }
 }else{
 if(dojo.lang.isFunction(obj)){
-var tmp=_15b;
-_15b=obj;
+var tmp=_15f;
+_15f=obj;
 obj=tmp;
 }
 }
 }
 var ob=obj||dj_global;
 dojo.lang.map(arr,function(val){
-_15c=_15b.call(ob,_15c,val);
+_160=_15f.call(ob,_160,val);
 });
-return _15c;
-},forEach:function(_160,_161,_162){
-if(dojo.lang.isString(_160)){
-_160=_160.split("");
+return _160;
+},forEach:function(_164,_165,_166){
+if(dojo.lang.isString(_164)){
+_164=_164.split("");
 }
 if(Array.forEach){
-Array.forEach(_160,_161,_162);
+Array.forEach(_164,_165,_166);
 }else{
-if(!_162){
-_162=dj_global;
+if(!_166){
+_166=dj_global;
 }
-for(var i=0,l=_160.length;i<l;i++){
-_161.call(_162,_160[i],i,_160);
+for(var i=0,l=_164.length;i<l;i++){
+_165.call(_166,_164[i],i,_164);
 }
 }
-},_everyOrSome:function(_165,arr,_167,_168){
+},_everyOrSome:function(_169,arr,_16b,_16c){
 if(dojo.lang.isString(arr)){
 arr=arr.split("");
 }
 if(Array.every){
-return Array[_165?"every":"some"](arr,_167,_168);
+return Array[_169?"every":"some"](arr,_16b,_16c);
 }else{
-if(!_168){
-_168=dj_global;
+if(!_16c){
+_16c=dj_global;
 }
 for(var i=0,l=arr.length;i<l;i++){
-var _16b=_167.call(_168,arr[i],i,arr);
-if(_165&&!_16b){
+var _16f=_16b.call(_16c,arr[i],i,arr);
+if(_169&&!_16f){
 return false;
 }else{
-if((!_165)&&(_16b)){
+if((!_169)&&(_16f)){
 return true;
 }
 }
 }
-return Boolean(_165);
+return Boolean(_169);
 }
-},every:function(arr,_16d,_16e){
-return this._everyOrSome(true,arr,_16d,_16e);
-},some:function(arr,_170,_171){
-return this._everyOrSome(false,arr,_170,_171);
-},filter:function(arr,_173,_174){
-var _175=dojo.lang.isString(arr);
-if(_175){
+},every:function(arr,_171,_172){
+return this._everyOrSome(true,arr,_171,_172);
+},some:function(arr,_174,_175){
+return this._everyOrSome(false,arr,_174,_175);
+},filter:function(arr,_177,_178){
+var _179=dojo.lang.isString(arr);
+if(_179){
 arr=arr.split("");
 }
-var _176;
+var _17a;
 if(Array.filter){
-_176=Array.filter(arr,_173,_174);
+_17a=Array.filter(arr,_177,_178);
 }else{
-if(!_174){
+if(!_178){
 if(arguments.length>=3){
 dojo.raise("thisObject doesn't exist!");
 }
-_174=dj_global;
+_178=dj_global;
 }
-_176=[];
+_17a=[];
 for(var i=0;i<arr.length;i++){
-if(_173.call(_174,arr[i],i,arr)){
-_176.push(arr[i]);
+if(_177.call(_178,arr[i],i,arr)){
+_17a.push(arr[i]);
 }
 }
 }
-if(_175){
-return _176.join("");
+if(_179){
+return _17a.join("");
 }else{
-return _176;
+return _17a;
 }
 },unnest:function(){
 var out=[];
@@ -7915,17 +7958,17 @@
 }
 }
 return out;
-},toArray:function(_17b,_17c){
-var _17d=[];
-for(var i=_17c||0;i<_17b.length;i++){
-_17d.push(_17b[i]);
+},toArray:function(_17f,_180){
+var _181=[];
+for(var i=_180||0;i<_17f.length;i++){
+_181.push(_17f[i]);
 }
-return _17d;
+return _181;
 }});
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_17f,hash){
+dojo.string.substituteParams=function(_183,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _17f.replace(/\%\{(\w+)\}/g,function(_182,key){
+return _183.replace(/\%\{(\w+)\}/g,function(_186,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -7939,11 +7982,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _185=str.split(" ");
-for(var i=0;i<_185.length;i++){
-_185[i]=_185[i].charAt(0).toUpperCase()+_185[i].substring(1);
+var _189=str.split(" ");
+for(var i=0;i<_189.length;i++){
+_189[i]=_189[i].charAt(0).toUpperCase()+_189[i].substring(1);
 }
-return _185.join(" ");
+return _189.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -7956,15 +7999,15 @@
 return str;
 }
 var ret="";
-var _18a=escape(str);
-var _18b,re=/%u([0-9A-F]{4})/i;
-while((_18b=_18a.match(re))){
-var num=Number("0x"+_18b[1]);
-var _18e=escape("&#"+num+";");
-ret+=_18a.substring(0,_18b.index)+_18e;
-_18a=_18a.substring(_18b.index+_18b[0].length);
+var _18e=escape(str);
+var _18f,re=/%u([0-9A-F]{4})/i;
+while((_18f=_18e.match(re))){
+var num=Number("0x"+_18f[1]);
+var _192=escape("&#"+num+";");
+ret+=_18e.substring(0,_18f.index)+_192;
+_18e=_18e.substring(_18f.index+_18f[0].length);
 }
-ret+=_18a.replace(/\+/g,"%2B");
+ret+=_18e.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -7989,9 +8032,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_193){
+dojo.string.escapeXml=function(str,_197){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_193){
+if(!_197){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -8014,8 +8057,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_19c){
-if(_19c){
+dojo.string.endsWith=function(str,end,_1a0){
+if(_1a0){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -8032,12 +8075,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_1a0,_1a1){
-if(_1a1){
+dojo.string.startsWith=function(str,_1a4,_1a5){
+if(_1a5){
 str=str.toLowerCase();
-_1a0=_1a0.toLowerCase();
+_1a4=_1a4.toLowerCase();
 }
-return str.indexOf(_1a0)==0;
+return str.indexOf(_1a4)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -8055,12 +8098,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_1a7){
-if(_1a7=="\n"){
+dojo.string.normalizeNewlines=function(text,_1ab){
+if(_1ab=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_1a7=="\r"){
+if(_1ab=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -8069,29 +8112,29 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_1a9){
-var _1aa=[];
-for(var i=0,_1ac=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_1ad){
+var _1ae=[];
+for(var i=0,_1b0=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_1a9){
-_1aa.push(str.substring(_1ac,i));
-_1ac=i+1;
+if(str.charAt(i)==_1ad){
+_1ae.push(str.substring(_1b0,i));
+_1b0=i+1;
 }
 }
-_1aa.push(str.substr(_1ac));
-return _1aa;
+_1ae.push(str.substr(_1b0));
+return _1ae;
 };
 dojo.provide("dojo.AdapterRegistry");
-dojo.AdapterRegistry=function(_1ad){
+dojo.AdapterRegistry=function(_1b1){
 this.pairs=[];
-this.returnWrappers=_1ad||false;
+this.returnWrappers=_1b1||false;
 };
-dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_1af,wrap,_1b1,_1b2){
-var type=(_1b2)?"unshift":"push";
-this.pairs[type]([name,_1af,wrap,_1b1]);
+dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_1b3,wrap,_1b5,_1b6){
+var type=(_1b6)?"unshift":"push";
+this.pairs[type]([name,_1b3,wrap,_1b5]);
 },match:function(){
 for(var i=0;i<this.pairs.length;i++){
 var pair=this.pairs[i];
@@ -8115,8 +8158,8 @@
 return false;
 }});
 dojo.provide("dojo.json");
-dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_1ba,wrap,_1bc){
-dojo.json.jsonRegistry.register(name,_1ba,wrap,_1bc);
+dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_1be,wrap,_1c0){
+dojo.json.jsonRegistry.register(name,_1be,wrap,_1c0);
 },evalJson:function(json){
 try{
 return eval("("+json+")");
@@ -8126,11 +8169,11 @@
 return json;
 }
 },serialize:function(o){
-var _1bf=typeof (o);
-if(_1bf=="undefined"){
+var _1c3=typeof (o);
+if(_1c3=="undefined"){
 return "undefined";
 }else{
-if((_1bf=="number")||(_1bf=="boolean")){
+if((_1c3=="number")||(_1c3=="boolean")){
 return o+"";
 }else{
 if(o===null){
@@ -8138,24 +8181,24 @@
 }
 }
 }
-if(_1bf=="string"){
+if(_1c3=="string"){
 return dojo.string.escapeString(o);
 }
 var me=arguments.callee;
-var _1c1;
+var _1c5;
 if(typeof (o.__json__)=="function"){
-_1c1=o.__json__();
-if(o!==_1c1){
-return me(_1c1);
+_1c5=o.__json__();
+if(o!==_1c5){
+return me(_1c5);
 }
 }
 if(typeof (o.json)=="function"){
-_1c1=o.json();
-if(o!==_1c1){
-return me(_1c1);
+_1c5=o.json();
+if(o!==_1c5){
+return me(_1c5);
 }
 }
-if(_1bf!="function"&&typeof (o.length)=="number"){
+if(_1c3!="function"&&typeof (o.length)=="number"){
 var res=[];
 for(var i=0;i<o.length;i++){
 var val=me(o[i]);
@@ -8168,22 +8211,22 @@
 }
 try{
 window.o=o;
-_1c1=dojo.json.jsonRegistry.match(o);
-return me(_1c1);
+_1c5=dojo.json.jsonRegistry.match(o);
+return me(_1c5);
 }
 catch(e){
 }
-if(_1bf=="function"){
+if(_1c3=="function"){
 return null;
 }
 res=[];
 for(var k in o){
-var _1c6;
+var _1ca;
 if(typeof (k)=="number"){
-_1c6="\""+k+"\"";
+_1ca="\""+k+"\"";
 }else{
 if(typeof (k)=="string"){
-_1c6=dojo.string.escapeString(k);
+_1ca=dojo.string.escapeString(k);
 }else{
 continue;
 }
@@ -8192,20 +8235,20 @@
 if(typeof (val)!="string"){
 continue;
 }
-res.push(_1c6+":"+val);
+res.push(_1ca+":"+val);
 }
 return "{"+res.join(",")+"}";
 }};
 dojo.provide("dojo.collections.Store");
-dojo.collections.Store=function(_1c7){
+dojo.collections.Store=function(_1cb){
 var data=[];
-var _1c9={};
+var _1cd={};
 this.keyField="Id";
 this.get=function(){
 return data;
 };
 this.getByKey=function(key){
-return _1c9[key];
+return _1cd[key];
 };
 this.getByIndex=function(idx){
 return data[idx];
@@ -8226,8 +8269,8 @@
 return arr;
 };
 this.getDataByKey=function(key){
-if(_1c9[key]!=null){
-return _1c9[key].src;
+if(_1cd[key]!=null){
+return _1cd[key].src;
 }
 return null;
 };
@@ -8245,28 +8288,28 @@
 }
 return null;
 };
-this.update=function(obj,_1d5,val,_1d7){
-var _1d8=_1d5.split("."),i=0,o=obj,_1db;
-if(_1d8.length>1){
-_1db=_1d8.pop();
+this.update=function(obj,_1d9,val,_1db){
+var _1dc=_1d9.split("."),i=0,o=obj,_1df;
+if(_1dc.length>1){
+_1df=_1dc.pop();
 do{
-if(_1d8[i].indexOf("()")>-1){
-var temp=_1d8[i++].split("()")[0];
+if(_1dc[i].indexOf("()")>-1){
+var temp=_1dc[i++].split("()")[0];
 if(!o[temp]){
-dojo.raise("dojo.collections.Store.getField(obj, '"+_1db+"'): '"+temp+"' is not a property of the passed object.");
+dojo.raise("dojo.collections.Store.getField(obj, '"+_1df+"'): '"+temp+"' is not a property of the passed object.");
 }else{
 o=o[temp]();
 }
 }else{
-o=o[_1d8[i++]];
+o=o[_1dc[i++]];
 }
-}while(i<_1d8.length&&o!=null);
+}while(i<_1dc.length&&o!=null);
 }else{
-_1db=_1d8[0];
+_1df=_1dc[0];
 }
-obj[_1db]=val;
-if(!_1d7){
-this.onUpdateField(obj,_1d5,val);
+obj[_1df]=val;
+if(!_1db){
+this.onUpdateField(obj,_1d9,val);
 }
 };
 this.forEach=function(fn){
@@ -8288,91 +8331,91 @@
 }
 }
 };
-this.setData=function(arr,_1e3){
+this.setData=function(arr,_1e7){
 data=[];
 for(var i=0;i<arr.length;i++){
 var o={key:arr[i][this.keyField],src:arr[i]};
 data.push(o);
-_1c9[o.key]=o;
+_1cd[o.key]=o;
 }
-if(!_1e3){
+if(!_1e7){
 this.onSetData();
 }
 };
-this.clearData=function(_1e6){
+this.clearData=function(_1ea){
 data=[];
-_1c9={};
-if(!_1e6){
+_1cd={};
+if(!_1ea){
 this.onClearData();
 }
 };
-this.addData=function(obj,key,_1e9){
+this.addData=function(obj,key,_1ed){
 var k=key||obj[this.keyField];
-if(_1c9[k]!=null){
-var o=_1c9[k];
+if(_1cd[k]!=null){
+var o=_1cd[k];
 o.src=obj;
 }else{
 var o={key:k,src:obj};
 data.push(o);
-_1c9[o.key]=o;
+_1cd[o.key]=o;
 }
-if(!_1e9){
+if(!_1ed){
 this.onAddData(o);
 }
 };
-this.addDataRange=function(arr,_1ed){
-var _1ee=[];
+this.addDataRange=function(arr,_1f1){
+var _1f2=[];
 for(var i=0;i<arr.length;i++){
 var k=arr[i][this.keyField];
-if(_1c9[k]!=null){
-var o=_1c9[k];
+if(_1cd[k]!=null){
+var o=_1cd[k];
 o.src=arr[i];
 }else{
 var o={key:k,src:arr[i]};
 data.push(o);
-_1c9[k]=o;
+_1cd[k]=o;
 }
-_1ee.push(o);
+_1f2.push(o);
 }
-if(!_1ed){
-this.onAddDataRange(_1ee);
+if(!_1f1){
+this.onAddDataRange(_1f2);
 }
 };
-this.addDataByIndex=function(obj,idx,key,_1f5){
+this.addDataByIndex=function(obj,idx,key,_1f9){
 var k=key||obj[this.keyField];
-if(_1c9[k]!=null){
+if(_1cd[k]!=null){
 var i=this.getIndexOf(k);
 var o=data.splice(i,1);
 o.src=obj;
 }else{
 var o={key:k,src:obj};
-_1c9[k]=o;
+_1cd[k]=o;
 }
 data.splice(idx,0,o);
-if(!_1f5){
+if(!_1f9){
 this.onAddData(o);
 }
 };
-this.addDataRangeByIndex=function(arr,idx,_1fb){
-var _1fc=[];
+this.addDataRangeByIndex=function(arr,idx,_1ff){
+var _200=[];
 for(var i=0;i<arr.length;i++){
 var k=arr[i][this.keyField];
-if(_1c9[k]!=null){
+if(_1cd[k]!=null){
 var j=this.getIndexOf(k);
 var o=data.splice(j,1);
 o.src=arr[i];
 }else{
 var o={key:k,src:arr[i]};
-_1c9[k]=o;
+_1cd[k]=o;
 }
-_1fc.push(o);
+_200.push(o);
 }
-data.splice(idx,0,_1fc);
-if(!_1fb){
-this.onAddDataRange(_1fc);
+data.splice(idx,0,_200);
+if(!_1ff){
+this.onAddDataRange(_200);
 }
 };
-this.removeData=function(obj,_202){
+this.removeData=function(obj,_206){
 var idx=-1;
 var o=null;
 for(var i=0;i<data.length;i++){
@@ -8382,53 +8425,53 @@
 break;
 }
 }
-if(!_202){
+if(!_206){
 this.onRemoveData(o);
 }
 if(idx>-1){
 data.splice(idx,1);
-delete _1c9[o.key];
+delete _1cd[o.key];
 }
 };
-this.removeDataRange=function(idx,_207,_208){
-var ret=data.splice(idx,_207);
+this.removeDataRange=function(idx,_20b,_20c){
+var ret=data.splice(idx,_20b);
 for(var i=0;i<ret.length;i++){
-delete _1c9[ret[i].key];
+delete _1cd[ret[i].key];
 }
-if(!_208){
+if(!_20c){
 this.onRemoveDataRange(ret);
 }
 return ret;
 };
-this.removeDataByKey=function(key,_20c){
-this.removeData(this.getDataByKey(key),_20c);
+this.removeDataByKey=function(key,_210){
+this.removeData(this.getDataByKey(key),_210);
 };
-this.removeDataByIndex=function(idx,_20e){
-this.removeData(this.getDataByIndex(idx),_20e);
+this.removeDataByIndex=function(idx,_212){
+this.removeData(this.getDataByIndex(idx),_212);
 };
-if(_1c7&&_1c7.length&&_1c7[0]){
-this.setData(_1c7,true);
+if(_1cb&&_1cb.length&&_1cb[0]){
+this.setData(_1cb,true);
 }
 };
-dojo.extend(dojo.collections.Store,{getField:function(obj,_210){
-var _211=_210.split("."),i=0,o=obj;
+dojo.extend(dojo.collections.Store,{getField:function(obj,_214){
+var _215=_214.split("."),i=0,o=obj;
 do{
-if(_211[i].indexOf("()")>-1){
-var temp=_211[i++].split("()")[0];
+if(_215[i].indexOf("()")>-1){
+var temp=_215[i++].split("()")[0];
 if(!o[temp]){
-dojo.raise("dojo.collections.Store.getField(obj, '"+_210+"'): '"+temp+"' is not a property of the passed object.");
+dojo.raise("dojo.collections.Store.getField(obj, '"+_214+"'): '"+temp+"' is not a property of the passed object.");
 }else{
 o=o[temp]();
 }
 }else{
-o=o[_211[i++]];
+o=o[_215[i++]];
 }
-}while(i<_211.length&&o!=null);
-if(i<_211.length){
-dojo.raise("dojo.collections.Store.getField(obj, '"+_210+"'): '"+_210+"' is not a property of the passed object.");
+}while(i<_215.length&&o!=null);
+if(i<_215.length){
+dojo.raise("dojo.collections.Store.getField(obj, '"+_214+"'): '"+_214+"' is not a property of the passed object.");
 }
 return o;
-},getFromHtml:function(meta,body,_217){
+},getFromHtml:function(meta,body,_21b){
 var rows=body.rows;
 var ctor=function(row){
 var obj={};
@@ -8461,8 +8504,8 @@
 var arr=[];
 for(var i=0;i<rows.length;i++){
 var o=ctor(rows[i]);
-if(_217){
-_217(o,rows[i]);
+if(_21b){
+_21b(o,rows[i]);
 }
 arr.push(o);
 }
@@ -8473,7 +8516,7 @@
 },onAddDataRange:function(arr){
 },onRemoveData:function(obj){
 },onRemoveDataRange:function(arr){
-},onUpdateField:function(obj,_22a,val){
+},onUpdateField:function(obj,_22e,val){
 }});
 dojo.provide("dojo.gfx.color");
 dojo.gfx.color.Color=function(r,g,b,a){
@@ -8507,8 +8550,8 @@
 dojo.gfx.color.Color.fromArray=function(arr){
 return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
 };
-dojo.extend(dojo.gfx.color.Color,{toRgb:function(_232){
-if(_232){
+dojo.extend(dojo.gfx.color.Color,{toRgb:function(_236){
+if(_236){
 return this.toRgba();
 }else{
 return [this.r,this.g,this.b];
@@ -8521,62 +8564,62 @@
 return "rgb("+this.toRgb().join()+")";
 },toString:function(){
 return this.toHex();
-},blend:function(_233,_234){
+},blend:function(_237,_238){
 var rgb=null;
-if(dojo.lang.isArray(_233)){
-rgb=_233;
+if(dojo.lang.isArray(_237)){
+rgb=_237;
 }else{
-if(_233 instanceof dojo.gfx.color.Color){
-rgb=_233.toRgb();
+if(_237 instanceof dojo.gfx.color.Color){
+rgb=_237.toRgb();
 }else{
-rgb=new dojo.gfx.color.Color(_233).toRgb();
+rgb=new dojo.gfx.color.Color(_237).toRgb();
 }
 }
-return dojo.gfx.color.blend(this.toRgb(),rgb,_234);
+return dojo.gfx.color.blend(this.toRgb(),rgb,_238);
 }});
 dojo.gfx.color.named={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128,128],silver:[192,192,192]};
-dojo.gfx.color.blend=function(a,b,_238){
+dojo.gfx.color.blend=function(a,b,_23c){
 if(typeof a=="string"){
-return dojo.gfx.color.blendHex(a,b,_238);
+return dojo.gfx.color.blendHex(a,b,_23c);
 }
-if(!_238){
-_238=0;
+if(!_23c){
+_23c=0;
 }
-_238=Math.min(Math.max(-1,_238),1);
-_238=((_238+1)/2);
+_23c=Math.min(Math.max(-1,_23c),1);
+_23c=((_23c+1)/2);
 var c=[];
 for(var x=0;x<3;x++){
-c[x]=parseInt(b[x]+((a[x]-b[x])*_238));
+c[x]=parseInt(b[x]+((a[x]-b[x])*_23c));
 }
 return c;
 };
-dojo.gfx.color.blendHex=function(a,b,_23d){
-return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_23d));
+dojo.gfx.color.blendHex=function(a,b,_241){
+return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_241));
 };
-dojo.gfx.color.extractRGB=function(_23e){
+dojo.gfx.color.extractRGB=function(_242){
 var hex="0123456789abcdef";
-_23e=_23e.toLowerCase();
-if(_23e.indexOf("rgb")==0){
-var _240=_23e.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
-var ret=_240.splice(1,3);
+_242=_242.toLowerCase();
+if(_242.indexOf("rgb")==0){
+var _244=_242.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
+var ret=_244.splice(1,3);
 return ret;
 }else{
-var _242=dojo.gfx.color.hex2rgb(_23e);
-if(_242){
-return _242;
+var _246=dojo.gfx.color.hex2rgb(_242);
+if(_246){
+return _246;
 }else{
-return dojo.gfx.color.named[_23e]||[255,255,255];
+return dojo.gfx.color.named[_242]||[255,255,255];
 }
 }
 };
 dojo.gfx.color.hex2rgb=function(hex){
-var _244="0123456789ABCDEF";
+var _248="0123456789ABCDEF";
 var rgb=new Array(3);
 if(hex.indexOf("#")==0){
 hex=hex.substring(1);
 }
 hex=hex.toUpperCase();
-if(hex.replace(new RegExp("["+_244+"]","g"),"")!=""){
+if(hex.replace(new RegExp("["+_248+"]","g"),"")!=""){
 return null;
 }
 if(hex.length==3){
@@ -8589,7 +8632,7 @@
 rgb[2]=hex.substring(4);
 }
 for(var i=0;i<rgb.length;i++){
-rgb[i]=_244.indexOf(rgb[i].charAt(0))*16+_244.indexOf(rgb[i].charAt(1));
+rgb[i]=_248.indexOf(rgb[i].charAt(0))*16+_248.indexOf(rgb[i].charAt(1));
 }
 return rgb;
 };
@@ -8628,22 +8671,22 @@
 var l=null;
 var min=Math.min(r,g,b);
 var max=Math.max(r,g,b);
-var _255=max-min;
+var _259=max-min;
 l=(min+max)/2;
 s=0;
 if((l>0)&&(l<1)){
-s=_255/((l<0.5)?(2*l):(2-2*l));
+s=_259/((l<0.5)?(2*l):(2-2*l));
 }
 h=0;
-if(_255>0){
+if(_259>0){
 if((max==r)&&(max!=g)){
-h+=(g-b)/_255;
+h+=(g-b)/_259;
 }
 if((max==g)&&(max!=b)){
-h+=(2+(b-r)/_255);
+h+=(2+(b-r)/_259);
 }
 if((max==b)&&(max!=r)){
-h+=(4+(r-g)/_255);
+h+=(4+(r-g)/_259);
 }
 h*=60;
 }
@@ -8742,102 +8785,102 @@
 }
 };
 dojo.dom.getUniqueId=function(){
-var _263=dojo.doc();
+var _267=dojo.doc();
 do{
 var id="dj_unique_"+(++arguments.callee._idIncrement);
-}while(_263.getElementById(id));
+}while(_267.getElementById(id));
 return id;
 };
 dojo.dom.getUniqueId._idIncrement=0;
-dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_265,_266){
-var node=_265.firstChild;
+dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_269,_26a){
+var node=_269.firstChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.nextSibling;
 }
-if(_266&&node&&node.tagName&&node.tagName.toLowerCase()!=_266.toLowerCase()){
-node=dojo.dom.nextElement(node,_266);
+if(_26a&&node&&node.tagName&&node.tagName.toLowerCase()!=_26a.toLowerCase()){
+node=dojo.dom.nextElement(node,_26a);
 }
 return node;
 };
-dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_268,_269){
-var node=_268.lastChild;
+dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_26c,_26d){
+var node=_26c.lastChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.previousSibling;
 }
-if(_269&&node&&node.tagName&&node.tagName.toLowerCase()!=_269.toLowerCase()){
-node=dojo.dom.prevElement(node,_269);
+if(_26d&&node&&node.tagName&&node.tagName.toLowerCase()!=_26d.toLowerCase()){
+node=dojo.dom.prevElement(node,_26d);
 }
 return node;
 };
-dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_26c){
+dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_270){
 if(!node){
 return null;
 }
 do{
 node=node.nextSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_26c&&_26c.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.nextElement(node,_26c);
+if(node&&_270&&_270.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.nextElement(node,_270);
 }
 return node;
 };
-dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_26e){
+dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_272){
 if(!node){
 return null;
 }
-if(_26e){
-_26e=_26e.toLowerCase();
+if(_272){
+_272=_272.toLowerCase();
 }
 do{
 node=node.previousSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_26e&&_26e.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.prevElement(node,_26e);
+if(node&&_272&&_272.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.prevElement(node,_272);
 }
 return node;
 };
-dojo.dom.moveChildren=function(_26f,_270,trim){
-var _272=0;
+dojo.dom.moveChildren=function(_273,_274,trim){
+var _276=0;
 if(trim){
-while(_26f.hasChildNodes()&&_26f.firstChild.nodeType==dojo.dom.TEXT_NODE){
-_26f.removeChild(_26f.firstChild);
+while(_273.hasChildNodes()&&_273.firstChild.nodeType==dojo.dom.TEXT_NODE){
+_273.removeChild(_273.firstChild);
 }
-while(_26f.hasChildNodes()&&_26f.lastChild.nodeType==dojo.dom.TEXT_NODE){
-_26f.removeChild(_26f.lastChild);
+while(_273.hasChildNodes()&&_273.lastChild.nodeType==dojo.dom.TEXT_NODE){
+_273.removeChild(_273.lastChild);
 }
 }
-while(_26f.hasChildNodes()){
-_270.appendChild(_26f.firstChild);
-_272++;
+while(_273.hasChildNodes()){
+_274.appendChild(_273.firstChild);
+_276++;
 }
-return _272;
+return _276;
 };
-dojo.dom.copyChildren=function(_273,_274,trim){
-var _276=_273.cloneNode(true);
-return this.moveChildren(_276,_274,trim);
+dojo.dom.copyChildren=function(_277,_278,trim){
+var _27a=_277.cloneNode(true);
+return this.moveChildren(_27a,_278,trim);
 };
-dojo.dom.replaceChildren=function(node,_278){
-var _279=[];
+dojo.dom.replaceChildren=function(node,_27c){
+var _27d=[];
 if(dojo.render.html.ie){
 for(var i=0;i<node.childNodes.length;i++){
-_279.push(node.childNodes[i]);
+_27d.push(node.childNodes[i]);
 }
 }
 dojo.dom.removeChildren(node);
-node.appendChild(_278);
-for(var i=0;i<_279.length;i++){
-dojo.dom.destroyNode(_279[i]);
+node.appendChild(_27c);
+for(var i=0;i<_27d.length;i++){
+dojo.dom.destroyNode(_27d[i]);
 }
 };
 dojo.dom.removeChildren=function(node){
-var _27c=node.childNodes.length;
+var _280=node.childNodes.length;
 while(node.hasChildNodes()){
 dojo.dom.removeNode(node.firstChild);
 }
-return _27c;
+return _280;
 };
-dojo.dom.replaceNode=function(node,_27e){
-return node.parentNode.replaceChild(_27e,node);
+dojo.dom.replaceNode=function(node,_282){
+return node.parentNode.replaceChild(_282,node);
 };
 dojo.dom.destroyNode=function(node){
 if(node.parentNode){
@@ -8857,38 +8900,38 @@
 return node.parentNode.removeChild(node);
 }
 };
-dojo.dom.getAncestors=function(node,_282,_283){
-var _284=[];
-var _285=(_282&&(_282 instanceof Function||typeof _282=="function"));
+dojo.dom.getAncestors=function(node,_286,_287){
+var _288=[];
+var _289=(_286&&(_286 instanceof Function||typeof _286=="function"));
 while(node){
-if(!_285||_282(node)){
-_284.push(node);
+if(!_289||_286(node)){
+_288.push(node);
 }
-if(_283&&_284.length>0){
-return _284[0];
+if(_287&&_288.length>0){
+return _288[0];
 }
 node=node.parentNode;
 }
-if(_283){
+if(_287){
 return null;
 }
-return _284;
+return _288;
 };
-dojo.dom.getAncestorsByTag=function(node,tag,_288){
+dojo.dom.getAncestorsByTag=function(node,tag,_28c){
 tag=tag.toLowerCase();
 return dojo.dom.getAncestors(node,function(el){
 return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
-},_288);
+},_28c);
 };
 dojo.dom.getFirstAncestorByTag=function(node,tag){
 return dojo.dom.getAncestorsByTag(node,tag,true);
 };
-dojo.dom.isDescendantOf=function(node,_28d,_28e){
-if(_28e&&node){
+dojo.dom.isDescendantOf=function(node,_291,_292){
+if(_292&&node){
 node=node.parentNode;
 }
 while(node){
-if(node==_28d){
+if(node==_291){
 return true;
 }
 node=node.parentNode;
@@ -8910,12 +8953,12 @@
 };
 dojo.dom.createDocument=function(){
 var doc=null;
-var _291=dojo.doc();
+var _295=dojo.doc();
 if(!dj_undef("ActiveXObject")){
-var _292=["MSXML2","Microsoft","MSXML","MSXML3"];
-for(var i=0;i<_292.length;i++){
+var _296=["MSXML2","Microsoft","MSXML","MSXML3"];
+for(var i=0;i<_296.length;i++){
 try{
-doc=new ActiveXObject(_292[i]+".XMLDOM");
+doc=new ActiveXObject(_296[i]+".XMLDOM");
 }
 catch(e){
 }
@@ -8924,40 +8967,40 @@
 }
 }
 }else{
-if((_291.implementation)&&(_291.implementation.createDocument)){
-doc=_291.implementation.createDocument("","",null);
+if((_295.implementation)&&(_295.implementation.createDocument)){
+doc=_295.implementation.createDocument("","",null);
 }
 }
 return doc;
 };
-dojo.dom.createDocumentFromText=function(str,_295){
-if(!_295){
-_295="text/xml";
+dojo.dom.createDocumentFromText=function(str,_299){
+if(!_299){
+_299="text/xml";
 }
 if(!dj_undef("DOMParser")){
-var _296=new DOMParser();
-return _296.parseFromString(str,_295);
+var _29a=new DOMParser();
+return _29a.parseFromString(str,_299);
 }else{
 if(!dj_undef("ActiveXObject")){
-var _297=dojo.dom.createDocument();
-if(_297){
-_297.async=false;
-_297.loadXML(str);
-return _297;
+var _29b=dojo.dom.createDocument();
+if(_29b){
+_29b.async=false;
+_29b.loadXML(str);
+return _29b;
 }else{
 dojo.debug("toXml didn't work?");
 }
 }else{
-var _298=dojo.doc();
-if(_298.createElement){
-var tmp=_298.createElement("xml");
+var _29c=dojo.doc();
+if(_29c.createElement){
+var tmp=_29c.createElement("xml");
 tmp.innerHTML=str;
-if(_298.implementation&&_298.implementation.createDocument){
-var _29a=_298.implementation.createDocument("foo","",null);
+if(_29c.implementation&&_29c.implementation.createDocument){
+var _29e=_29c.implementation.createDocument("foo","",null);
 for(var i=0;i<tmp.childNodes.length;i++){
-_29a.importNode(tmp.childNodes.item(i),true);
+_29e.importNode(tmp.childNodes.item(i),true);
 }
-return _29a;
+return _29e;
 }
 return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
 }
@@ -8965,39 +9008,39 @@
 }
 return null;
 };
-dojo.dom.prependChild=function(node,_29d){
-if(_29d.firstChild){
-_29d.insertBefore(node,_29d.firstChild);
+dojo.dom.prependChild=function(node,_2a1){
+if(_2a1.firstChild){
+_2a1.insertBefore(node,_2a1.firstChild);
 }else{
-_29d.appendChild(node);
+_2a1.appendChild(node);
 }
 return true;
 };
-dojo.dom.insertBefore=function(node,ref,_2a0){
-if((_2a0!=true)&&(node===ref||node.nextSibling===ref)){
+dojo.dom.insertBefore=function(node,ref,_2a4){
+if((_2a4!=true)&&(node===ref||node.nextSibling===ref)){
 return false;
 }
-var _2a1=ref.parentNode;
-_2a1.insertBefore(node,ref);
+var _2a5=ref.parentNode;
+_2a5.insertBefore(node,ref);
 return true;
 };
-dojo.dom.insertAfter=function(node,ref,_2a4){
+dojo.dom.insertAfter=function(node,ref,_2a8){
 var pn=ref.parentNode;
 if(ref==pn.lastChild){
-if((_2a4!=true)&&(node===ref)){
+if((_2a8!=true)&&(node===ref)){
 return false;
 }
 pn.appendChild(node);
 }else{
-return this.insertBefore(node,ref.nextSibling,_2a4);
+return this.insertBefore(node,ref.nextSibling,_2a8);
 }
 return true;
 };
-dojo.dom.insertAtPosition=function(node,ref,_2a8){
-if((!node)||(!ref)||(!_2a8)){
+dojo.dom.insertAtPosition=function(node,ref,_2ac){
+if((!node)||(!ref)||(!_2ac)){
 return false;
 }
-switch(_2a8.toLowerCase()){
+switch(_2ac.toLowerCase()){
 case "before":
 return dojo.dom.insertBefore(node,ref);
 case "after":
@@ -9015,46 +9058,46 @@
 return true;
 }
 };
-dojo.dom.insertAtIndex=function(node,_2aa,_2ab){
-var _2ac=_2aa.childNodes;
-if(!_2ac.length||_2ac.length==_2ab){
-_2aa.appendChild(node);
+dojo.dom.insertAtIndex=function(node,_2ae,_2af){
+var _2b0=_2ae.childNodes;
+if(!_2b0.length||_2b0.length==_2af){
+_2ae.appendChild(node);
 return true;
 }
-if(_2ab==0){
-return dojo.dom.prependChild(node,_2aa);
+if(_2af==0){
+return dojo.dom.prependChild(node,_2ae);
 }
-return dojo.dom.insertAfter(node,_2ac[_2ab-1]);
+return dojo.dom.insertAfter(node,_2b0[_2af-1]);
 };
 dojo.dom.textContent=function(node,text){
 if(arguments.length>1){
-var _2af=dojo.doc();
-dojo.dom.replaceChildren(node,_2af.createTextNode(text));
+var _2b3=dojo.doc();
+dojo.dom.replaceChildren(node,_2b3.createTextNode(text));
 return text;
 }else{
 if(node.textContent!=undefined){
 return node.textContent;
 }
-var _2b0="";
+var _2b4="";
 if(node==null){
-return _2b0;
+return _2b4;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-_2b0+=dojo.dom.textContent(node.childNodes[i]);
+_2b4+=dojo.dom.textContent(node.childNodes[i]);
 break;
 case 3:
 case 2:
 case 4:
-_2b0+=node.childNodes[i].nodeValue;
+_2b4+=node.childNodes[i].nodeValue;
 break;
 default:
 break;
 }
 }
-return _2b0;
+return _2b4;
 }
 };
 dojo.dom.hasParent=function(node){
@@ -9070,17 +9113,17 @@
 }
 return "";
 };
-dojo.dom.setAttributeNS=function(elem,_2b6,_2b7,_2b8){
+dojo.dom.setAttributeNS=function(elem,_2ba,_2bb,_2bc){
 if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
 dojo.raise("No element given to dojo.dom.setAttributeNS");
 }
 if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
-elem.setAttributeNS(_2b6,_2b7,_2b8);
+elem.setAttributeNS(_2ba,_2bb,_2bc);
 }else{
-var _2b9=elem.ownerDocument;
-var _2ba=_2b9.createNode(2,_2b7,_2b6);
-_2ba.nodeValue=_2b8;
-elem.setAttributeNode(_2ba);
+var _2bd=elem.ownerDocument;
+var _2be=_2bd.createNode(2,_2bb,_2ba);
+_2be.nodeValue=_2bc;
+elem.setAttributeNode(_2be);
 }
 };
 dojo.provide("dojo.svg");
@@ -9132,28 +9175,28 @@
 }
 };
 }(document);
-dojo.svg.toCamelCase=function(_2bd){
-var arr=_2bd.split("-"),cc=arr[0];
+dojo.svg.toCamelCase=function(_2c1){
+var arr=_2c1.split("-"),cc=arr[0];
 for(var i=1;i<arr.length;i++){
 cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
 }
 return cc;
 };
-dojo.svg.toSelectorCase=function(_2c1){
-return _2c1.replace(/([A-Z])/g,"-$1").toLowerCase();
+dojo.svg.toSelectorCase=function(_2c5){
+return _2c5.replace(/([A-Z])/g,"-$1").toLowerCase();
 };
-dojo.svg.getStyle=function(node,_2c3){
-return document.defaultView.getComputedStyle(node,_2c3);
+dojo.svg.getStyle=function(node,_2c7){
+return document.defaultView.getComputedStyle(node,_2c7);
 };
-dojo.svg.getNumericStyle=function(node,_2c5){
-return parseFloat(dojo.svg.getStyle(node,_2c5));
+dojo.svg.getNumericStyle=function(node,_2c9){
+return parseFloat(dojo.svg.getStyle(node,_2c9));
 };
 dojo.svg.getOpacity=function(node){
 return Math.min(1,dojo.svg.getNumericStyle(node,"fill-opacity"));
 };
-dojo.svg.setOpacity=function(node,_2c8){
-node.setAttributeNS(this.xmlns.svg,"fill-opacity",_2c8);
-node.setAttributeNS(this.xmlns.svg,"stroke-opacity",_2c8);
+dojo.svg.setOpacity=function(node,_2cc){
+node.setAttributeNS(this.xmlns.svg,"fill-opacity",_2cc);
+node.setAttributeNS(this.xmlns.svg,"stroke-opacity",_2cc);
 };
 dojo.svg.clearOpacity=function(node){
 node.setAttributeNS(this.xmlns.svg,"fill-opacity","1.0");
@@ -9166,13 +9209,13 @@
 }
 return null;
 };
-dojo.svg.setCoords=function(node,_2cd){
+dojo.svg.setCoords=function(node,_2d1){
 var p=dojo.svg.getCoords();
 if(!p){
 return;
 }
-var dx=p.x-_2cd.x;
-var dy=p.y-_2cd.y;
+var dx=p.x-_2d1.x;
+var dy=p.y-_2d1.y;
 dojo.svg.translate(node,dx,dy);
 };
 dojo.svg.getDimensions=function(node){
@@ -9204,13 +9247,13 @@
 node.transform.baseVal.appendItem(t);
 }
 };
-dojo.svg.scale=function(node,_2da,_2db){
-if(!_2db){
-var _2db=_2da;
+dojo.svg.scale=function(node,_2de,_2df){
+if(!_2df){
+var _2df=_2de;
 }
 if(node.transform&&node.ownerSVGElement&&node.ownerSVGElement.createSVGTransform){
 var t=node.ownerSVGElement.createSVGTransform();
-t.setScale(_2da,_2db);
+t.setScale(_2de,_2df);
 node.transform.baseVal.appendItem(t);
 }
 };
@@ -9271,11 +9314,11 @@
 node.transform.baseVal.appendItem(t);
 }
 };
-dojo.svg.group=function(_2f6){
-var p=_2f6.item(0).parentNode;
+dojo.svg.group=function(_2fa){
+var p=_2fa.item(0).parentNode;
 var g=document.createElementNS(this.xmlns.svg,"g");
-for(var i=0;i<_2f6.length;i++){
-g.appendChild(_2f6.item(i));
+for(var i=0;i<_2fa.length;i++){
+g.appendChild(_2fa.item(i));
 }
 p.appendChild(g);
 return g;
@@ -9317,18 +9360,18 @@
 }
 };
 dojo.svg.createNodesFromText=function(txt,wrap){
-var _309=(new DOMParser()).parseFromString(txt,"text/xml").normalize();
+var _30d=(new DOMParser()).parseFromString(txt,"text/xml").normalize();
 if(wrap){
-return [_309.firstChild.cloneNode(true)];
+return [_30d.firstChild.cloneNode(true)];
 }
-var _30a=[];
-for(var x=0;x<_309.childNodes.length;x++){
-_30a.push(_309.childNodes.item(x).cloneNode(true));
+var _30e=[];
+for(var x=0;x<_30d.childNodes.length;x++){
+_30e.push(_30d.childNodes.item(x).cloneNode(true));
 }
-return _30a;
+return _30e;
 };
 dojo.provide("dojo.charting.Axis");
-dojo.charting.Axis=function(_30c,_30d,_30e){
+dojo.charting.Axis=function(_310,_311,_312){
 var id="dojo-charting-axis-"+dojo.charting.Axis.count++;
 this.getId=function(){
 return id;
@@ -9336,8 +9379,8 @@
 this.setId=function(key){
 id=key;
 };
-this.scale=_30d||"linear";
-this.label=_30c||"";
+this.scale=_311||"linear";
+this.label=_310||"";
 this.showLabel=true;
 this.showLabels=true;
 this.showLines=false;
@@ -9345,45 +9388,45 @@
 this.range={upper:100,lower:0};
 this.origin="min";
 this._origin=null;
-this.labels=_30e||[];
+this.labels=_312||[];
 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,_312,plot){
+dojo.extend(dojo.charting.Axis,{getCoord:function(val,_316,plot){
 val=parseFloat(val,10);
-var area=_312.getArea();
+var area=_316.getArea();
 if(plot.axisX==this){
-var _315=0-this.range.lower;
-var min=this.range.lower+_315;
-var max=this.range.upper+_315;
-val+=_315;
+var _319=0-this.range.lower;
+var min=this.range.lower+_319;
+var max=this.range.upper+_319;
+val+=_319;
 return (val*((area.right-area.left)/max))+area.left;
 }else{
 var max=this.range.upper;
 var min=this.range.lower;
-var _315=0;
+var _319=0;
 if(min<0){
-_315+=Math.abs(min);
+_319+=Math.abs(min);
 }
-max+=_315;
-min+=_315;
-val+=_315;
+max+=_319;
+min+=_319;
+val+=_319;
 var pmin=area.bottom;
 var pmax=area.top;
 return (((pmin-pmax)/(max-min))*(max-val))+pmax;
 }
-},initializeOrigin:function(_31a,_31b){
+},initializeOrigin:function(_31e,_31f){
 if(this._origin==null){
 this._origin=this.origin;
 }
 if(isNaN(this._origin)){
 if(this._origin.toLowerCase()=="max"){
-this.origin=_31a.range[(_31b=="y")?"upper":"lower"];
+this.origin=_31e.range[(_31f=="y")?"upper":"lower"];
 }else{
 if(this._origin.toLowerCase()=="min"){
-this.origin=_31a.range[(_31b=="y")?"lower":"upper"];
+this.origin=_31e.range[(_31f=="y")?"lower":"upper"];
 }else{
 this.origin=0;
 }
@@ -9417,8 +9460,8 @@
 this._labels.push({label:s,value:this.range.upper});
 }
 if(a.length>0){
-var _31f=this.range.upper-this.range.lower;
-var step=_31f/(this.labels.length-1);
+var _323=this.range.upper-this.range.lower;
+var step=_323/(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)});
 }
@@ -9426,11 +9469,11 @@
 }
 }
 }
-},initialize:function(_321,plot,_323,_324){
+},initialize:function(_325,plot,_327,_328){
 this.destroy();
-this.initializeOrigin(_323,_324);
+this.initializeOrigin(_327,_328);
 this.initializeLabels();
-var node=this.render(_321,plot,_323,_324);
+var node=this.render(_325,plot,_327,_328);
 return node;
 },destroy:function(){
 for(var p in this.nodes){
@@ -9443,11 +9486,9 @@
 this.nodes[p]=null;
 }
 }});
-dojo.requireIf(dojo.render.svg.capable,"dojo.charting.svg.Axis");
-dojo.requireIf(dojo.render.vml.capable,"dojo.charting.vml.Axis");
 dojo.provide("dojo.charting.svg.Axis");
 if(dojo.render.svg.capable){
-dojo.extend(dojo.charting.Axis,{renderLines:function(_327,plot,_329){
+dojo.extend(dojo.charting.Axis,{renderLines:function(_32b,plot,_32d){
 if(this.nodes.lines){
 while(this.nodes.lines.childNodes.length>0){
 this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
@@ -9457,23 +9498,23 @@
 this.nodes.lines=null;
 }
 }
-var area=_327.getArea();
+var area=_32b.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,_327,plot);
+var v=this.getCoord(this._labels[i].value,_32b,plot);
 var l=document.createElementNS(dojo.svg.xmlns.svg,"line");
 l.setAttribute("style","stroke:#999;stroke-width:1px;stroke-dasharray:1,4;");
-if(_329=="x"){
+if(_32d=="x"){
 l.setAttribute("y1",area.top);
 l.setAttribute("y2",area.bottom);
 l.setAttribute("x1",v);
 l.setAttribute("x2",v);
 }else{
-if(_329=="y"){
+if(_32d=="y"){
 l.setAttribute("y1",v);
 l.setAttribute("y2",v);
 l.setAttribute("x1",area.left);
@@ -9483,7 +9524,7 @@
 g.appendChild(l);
 }
 return g;
-},renderTicks:function(_32f,plot,_331,_332){
+},renderTicks:function(_333,plot,_335,_336){
 if(this.nodes.ticks){
 while(this.nodes.ticks.childNodes.length>0){
 this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
@@ -9496,32 +9537,32 @@
 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,_32f,plot);
+var v=this.getCoord(this._labels[i].value,_333,plot);
 var l=document.createElementNS(dojo.svg.xmlns.svg,"line");
 l.setAttribute("style","stroke:#000;stroke-width:1pt;");
-if(_331=="x"){
-l.setAttribute("y1",_332);
-l.setAttribute("y2",_332+3);
+if(_335=="x"){
+l.setAttribute("y1",_336);
+l.setAttribute("y2",_336+3);
 l.setAttribute("x1",v);
 l.setAttribute("x2",v);
 }else{
-if(_331=="y"){
+if(_335=="y"){
 l.setAttribute("y1",v);
 l.setAttribute("y2",v);
-l.setAttribute("x1",_332-2);
-l.setAttribute("x2",_332+2);
+l.setAttribute("x1",_336-2);
+l.setAttribute("x2",_336+2);
 }
 }
 g.appendChild(l);
 }
 return g;
-},renderLabels:function(_337,plot,_339,_33a,_33b,_33c){
-function createLabel(_33d,x,y,_340,_341){
+},renderLabels:function(_33b,plot,_33d,_33e,_33f,_340){
+function createLabel(_341,x,y,_344,_345){
 var text=document.createElementNS(dojo.svg.xmlns.svg,"text");
 text.setAttribute("x",x);
-text.setAttribute("y",(_339=="x"?y:y+2));
-text.setAttribute("style","text-anchor:"+_341+";font-family:sans-serif;font-size:"+_340+"px;fill:#000;");
-text.appendChild(document.createTextNode(_33d));
+text.setAttribute("y",(_33d=="x"?y:y+2));
+text.setAttribute("style","text-anchor:"+_345+";font-family:sans-serif;font-size:"+_344+"px;fill:#000;");
+text.appendChild(document.createTextNode(_341));
 return text;
 }
 if(this.nodes.labels){
@@ -9536,81 +9577,81 @@
 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,_337,plot);
-if(_339=="x"){
-g.appendChild(createLabel(this._labels[i].label,v,_33a,_33b,_33c));
+var v=this.getCoord(this._labels[i].value,_33b,plot);
+if(_33d=="x"){
+g.appendChild(createLabel(this._labels[i].label,v,_33e,_33f,_340));
 }else{
-if(_339=="y"){
-g.appendChild(createLabel(this._labels[i].label,_33a,v,_33b,_33c));
+if(_33d=="y"){
+g.appendChild(createLabel(this._labels[i].label,_33e,v,_33f,_340));
 }
 }
 }
 return g;
-},render:function(_346,plot,_348,_349){
+},render:function(_34a,plot,_34c,_34d){
 if(!this._rerender&&this.nodes.main){
 return this.nodes.main;
 }
 this._rerender=false;
-var area=_346.getArea();
-var _34b=1;
-var _34c="stroke:#000;stroke-width:"+_34b+"px;";
-var _34d=10;
-var _34e=_348.getCoord(this.origin,_346,plot);
+var area=_34a.getArea();
+var _34f=1;
+var _350="stroke:#000;stroke-width:"+_34f+"px;";
+var _351=10;
+var _352=_34c.getCoord(this.origin,_34a,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(_349=="x"){
-line.setAttribute("y1",_34e);
-line.setAttribute("y2",_34e);
-line.setAttribute("x1",area.left-_34b);
-line.setAttribute("x2",area.right+_34b);
-line.setAttribute("style",_34c);
-var y=_34e+_34d+2;
+if(_34d=="x"){
+line.setAttribute("y1",_352);
+line.setAttribute("y2",_352);
+line.setAttribute("x1",area.left-_34f);
+line.setAttribute("x2",area.right+_34f);
+line.setAttribute("style",_350);
+var y=_352+_351+2;
 if(this.showLines){
-g.appendChild(this.renderLines(_346,plot,_349,y));
+g.appendChild(this.renderLines(_34a,plot,_34d,y));
 }
 if(this.showTicks){
-g.appendChild(this.renderTicks(_346,plot,_349,_34e));
+g.appendChild(this.renderTicks(_34a,plot,_34d,_352));
 }
 if(this.showLabels){
-g.appendChild(this.renderLabels(_346,plot,_349,y,_34d,"middle"));
+g.appendChild(this.renderLabels(_34a,plot,_34d,y,_351,"middle"));
 }
 if(this.showLabel&&this.label){
-var x=_346.size.width/2;
+var x=_34a.size.width/2;
 var text=document.createElementNS(dojo.svg.xmlns.svg,"text");
 text.setAttribute("x",x);
-text.setAttribute("y",(_34e+(_34d*2)+(_34d/2)));
-text.setAttribute("style","text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:"+(_34d+2)+"px;fill:#000;");
+text.setAttribute("y",(_352+(_351*2)+(_351/2)));
+text.setAttribute("style","text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:"+(_351+2)+"px;fill:#000;");
 text.appendChild(document.createTextNode(this.label));
 g.appendChild(text);
 }
 }else{
-line.setAttribute("x1",_34e);
-line.setAttribute("x2",_34e);
+line.setAttribute("x1",_352);
+line.setAttribute("x2",_352);
 line.setAttribute("y1",area.top);
 line.setAttribute("y2",area.bottom);
-line.setAttribute("style",_34c);
-var _354=this.origin==_348.range.upper;
-var x=_34e+(_354?4:-4);
-var _355=_354?"start":"end";
+line.setAttribute("style",_350);
+var _358=this.origin==_34c.range.upper;
+var x=_352+(_358?4:-4);
+var _359=_358?"start":"end";
 if(this.showLines){
-g.appendChild(this.renderLines(_346,plot,_349,x));
+g.appendChild(this.renderLines(_34a,plot,_34d,x));
 }
 if(this.showTicks){
-g.appendChild(this.renderTicks(_346,plot,_349,_34e));
+g.appendChild(this.renderTicks(_34a,plot,_34d,_352));
 }
 if(this.showLabels){
-g.appendChild(this.renderLabels(_346,plot,_349,x,_34d,_355));
+g.appendChild(this.renderLabels(_34a,plot,_34d,x,_351,_359));
 }
 if(this.showLabel&&this.label){
-var x=_354?(_34e+(_34d*2)+(_34d/2)):(_34e-(_34d*4));
-var y=_346.size.height/2;
+var x=_358?(_352+(_351*2)+(_351/2)):(_352-(_351*4));
+var y=_34a.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:"+(_34d+2)+"px;fill:#000;");
+text.setAttribute("style","text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:"+(_351+2)+"px;fill:#000;");
 text.appendChild(document.createTextNode(this.label));
 g.appendChild(text);
 }
@@ -9621,7 +9662,7 @@
 }
 dojo.provide("dojo.charting.vml.Axis");
 if(dojo.render.vml.capable){
-dojo.extend(dojo.charting.Axis,{renderLines:function(_356,plot,_358){
+dojo.extend(dojo.charting.Axis,{renderLines:function(_35a,plot,_35c){
 if(this.nodes.lines){
 while(this.nodes.lines.childNodes.length>0){
 this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]);
@@ -9631,14 +9672,14 @@
 this.nodes.lines=null;
 }
 }
-var area=_356.getArea();
+var area=_35a.getArea();
 var g=this.nodes.lines=document.createElement("div");
 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,_356,plot);
+var v=this.getCoord(this._labels[i].value,_35a,plot);
 var l=document.createElement("v:line");
 var str=document.createElement("v:stroke");
 str.dashstyle="dot";
@@ -9650,11 +9691,11 @@
 s.top="0px";
 s.left="0px";
 s.antialias="false";
-if(_358=="x"){
+if(_35c=="x"){
 l.setAttribute("from",v+"px,"+area.top+"px");
 l.setAttribute("to",v+"px,"+area.bottom+"px");
 }else{
-if(_358=="y"){
+if(_35c=="y"){
 l.setAttribute("from",area.left+"px,"+v+"px");
 l.setAttribute("to",area.right+"px,"+v+"px");
 }
@@ -9662,7 +9703,7 @@
 g.appendChild(l);
 }
 return g;
-},renderTicks:function(_360,plot,_362,_363){
+},renderTicks:function(_364,plot,_366,_367){
 if(this.nodes.ticks){
 while(this.nodes.ticks.childNodes.length>0){
 this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]);
@@ -9675,7 +9716,7 @@
 var g=this.nodes.ticks=document.createElement("div");
 g.setAttribute("id",this.getId()+"-ticks");
 for(var i=0;i<this._labels.length;i++){
-var v=this.getCoord(this._labels[i].value,_360,plot);
+var v=this.getCoord(this._labels[i].value,_364,plot);
 var l=document.createElement("v:line");
 l.setAttribute("strokecolor","#000");
 l.setAttribute("strokeweight","1px");
@@ -9684,36 +9725,36 @@
 s.top="0px";
 s.left="0px";
 s.antialias="false";
-if(_362=="x"){
-l.setAttribute("from",v+"px,"+_363+"px");
-l.setAttribute("to",v+"px,"+(_363+3)+"px");
+if(_366=="x"){
+l.setAttribute("from",v+"px,"+_367+"px");
+l.setAttribute("to",v+"px,"+(_367+3)+"px");
 }else{
-if(_362=="y"){
-l.setAttribute("from",(_363-2)+"px,"+v+"px");
-l.setAttribute("to",(_363+2)+"px,"+v+"px");
+if(_366=="y"){
+l.setAttribute("from",(_367-2)+"px,"+v+"px");
+l.setAttribute("to",(_367+2)+"px,"+v+"px");
 }
 }
 g.appendChild(l);
 }
 return g;
-},renderLabels:function(_369,plot,_36b,_36c,_36d,_36e){
-function createLabel(_36f,x,y,_372,_373){
+},renderLabels:function(_36d,plot,_36f,_370,_371,_372){
+function createLabel(_373,x,y,_376,_377){
 var text=document.createElement("div");
 var s=text.style;
-text.innerHTML=_36f;
-s.fontSize=_372+"px";
+text.innerHTML=_373;
+s.fontSize=_376+"px";
 s.fontFamily="sans-serif";
 s.position="absolute";
 s.top=y+"px";
-if(_373=="center"){
+if(_377=="center"){
 s.left=x+"px";
 s.textAlign="center";
 }else{
-if(_373=="left"){
+if(_377=="left"){
 s.left=x+"px";
 s.textAlign="left";
 }else{
-if(_373=="right"){
+if(_377=="right"){
 s.right=x+"px";
 s.textAlign="right";
 }
@@ -9733,15 +9774,15 @@
 var g=this.nodes.labels=document.createElement("div");
 g.setAttribute("id",this.getId()+"-labels");
 for(var i=0;i<this._labels.length;i++){
-var v=this.getCoord(this._labels[i].value,_369,plot);
-if(_36b=="x"){
-var node=createLabel(this._labels[i].label,v,_36c,_36d,_36e);
+var v=this.getCoord(this._labels[i].value,_36d,plot);
+if(_36f=="x"){
+var node=createLabel(this._labels[i].label,v,_370,_371,_372);
 document.body.appendChild(node);
 node.style.left=v-(node.offsetWidth/2)+"px";
 g.appendChild(node);
 }else{
-if(_36b=="y"){
-var node=createLabel(this._labels[i].label,_36c,v,_36d,_36e);
+if(_36f=="y"){
+var node=createLabel(this._labels[i].label,_370,v,_371,_372);
 document.body.appendChild(node);
 node.style.top=v-(node.offsetHeight/2)+"px";
 g.appendChild(node);
@@ -9749,46 +9790,46 @@
 }
 }
 return g;
-},render:function(_37a,plot,_37c,_37d){
+},render:function(_37e,plot,_380,_381){
 if(!this._rerender&&this.nodes.main){
 return this.nodes.main;
 }
 this._rerender=false;
-var area=_37a.getArea();
-var _37f=1;
-var _380="stroke:#000;stroke-width:"+_37f+"px;";
-var _381=10;
-var _382=_37c.getCoord(this.origin,_37a,plot);
+var area=_37e.getArea();
+var _383=1;
+var _384="stroke:#000;stroke-width:"+_383+"px;";
+var _385=10;
+var _386=_380.getCoord(this.origin,_37e,plot);
 var g=this.nodes.main=document.createElement("div");
 g.setAttribute("id",this.getId());
 var line=this.nodes.axis=document.createElement("v:line");
 line.setAttribute("strokecolor","#000");
-line.setAttribute("strokeweight",_37f+"px");
+line.setAttribute("strokeweight",_383+"px");
 var s=line.style;
 s.position="absolute";
 s.top="0px";
 s.left="0px";
 s.antialias="false";
-if(_37d=="x"){
-line.setAttribute("from",area.left+"px,"+_382+"px");
-line.setAttribute("to",area.right+"px,"+_382+"px");
-var y=_382+Math.floor(_381/2);
+if(_381=="x"){
+line.setAttribute("from",area.left+"px,"+_386+"px");
+line.setAttribute("to",area.right+"px,"+_386+"px");
+var y=_386+Math.floor(_385/2);
 if(this.showLines){
-g.appendChild(this.renderLines(_37a,plot,_37d,y));
+g.appendChild(this.renderLines(_37e,plot,_381,y));
 }
 if(this.showTicks){
-g.appendChild(this.renderTicks(_37a,plot,_37d,_382));
+g.appendChild(this.renderTicks(_37e,plot,_381,_386));
 }
 if(this.showLabels){
-g.appendChild(this.renderLabels(_37a,plot,_37d,y,_381,"center"));
+g.appendChild(this.renderLabels(_37e,plot,_381,y,_385,"center"));
 }
 if(this.showLabel&&this.label){
-var x=_37a.size.width/2;
-var y=_382+Math.round(_381*1.5);
+var x=_37e.size.width/2;
+var y=_386+Math.round(_385*1.5);
 var text=document.createElement("div");
 var s=text.style;
 text.innerHTML=this.label;
-s.fontSize=(_381+2)+"px";
+s.fontSize=(_385+2)+"px";
 s.fontFamily="sans-serif";
 s.fontWeight="bold";
 s.position="absolute";
@@ -9800,41 +9841,41 @@
 g.appendChild(text);
 }
 }else{
-line.setAttribute("from",_382+"px,"+area.top+"px");
-line.setAttribute("to",_382+"px,"+area.bottom+"px");
-var _389=this.origin==_37c.range.upper;
-var x=_382+4;
-var _38a="left";
-if(!_389){
-x=area.right-_382+_381+4;
-_38a="right";
-if(_382==area.left){
-x+=(_381*2)-(_381/2);
+line.setAttribute("from",_386+"px,"+area.top+"px");
+line.setAttribute("to",_386+"px,"+area.bottom+"px");
+var _38d=this.origin==_380.range.upper;
+var x=_386+4;
+var _38e="left";
+if(!_38d){
+x=area.right-_386+_385+4;
+_38e="right";
+if(_386==area.left){
+x+=(_385*2)-(_385/2);
 }
 }
 if(this.showLines){
-g.appendChild(this.renderLines(_37a,plot,_37d,x));
+g.appendChild(this.renderLines(_37e,plot,_381,x));
 }
 if(this.showTicks){
-g.appendChild(this.renderTicks(_37a,plot,_37d,_382));
+g.appendChild(this.renderTicks(_37e,plot,_381,_386));
 }
 if(this.showLabels){
-g.appendChild(this.renderLabels(_37a,plot,_37d,x,_381,_38a));
+g.appendChild(this.renderLabels(_37e,plot,_381,x,_385,_38e));
 }
 if(this.showLabel&&this.label){
-x+=(_381*2)-2;
-var y=_37a.size.height/2;
+x+=(_385*2)-2;
+var y=_37e.size.height/2;
 var text=document.createElement("div");
 var s=text.style;
 text.innerHTML=this.label;
-s.fontSize=(_381+2)+"px";
+s.fontSize=(_385+2)+"px";
 s.fontFamily="sans-serif";
 s.fontWeight="bold";
 s.position="absolute";
-s.height=_37a.size.height+"px";
+s.height=_37e.size.height+"px";
 s.writingMode="tb-rl";
 s.textAlign="center";
-s[_38a]=x+"px";
+s[_38e]=x+"px";
 document.body.appendChild(text);
 s.top=y-(text.offsetHeight/2)+"px";
 g.appendChild(text);
@@ -9845,81 +9886,79 @@
 }});
 }
 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");
 dojo.provide("dojo.charting.svg.Plotters");
 if(dojo.render.svg.capable){
-dojo.mixin(dojo.charting.Plotters,{Bar:function(_38b,plot,_38d,_38e){
-var area=_38b.getArea();
-var _390=document.createElementNS(dojo.svg.xmlns.svg,"g");
+dojo.mixin(dojo.charting.Plotters,{Bar:function(_38f,plot,_391,_392){
+var area=_38f.getArea();
+var _394=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=plot.series.length;
 var data=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_38d);
+var tmp=plot.series[i].data.evaluate(_391);
 data.push(tmp);
 }
-var _395=8;
-var _396=data[0].length;
-if(_396==0){
-return _390;
+var _399=8;
+var _39a=data[0].length;
+if(_39a==0){
+return _394;
 }
-var _397=((area.right-area.left)-(_395*(_396-1)))/_396;
-var _398=_397/n;
-var _399=plot.axisY.getCoord(plot.axisX.origin,_38b,plot);
-for(var i=0;i<_396;i++){
-var _39a=area.left+(_397*i)+(_395*i);
+var _39b=((area.right-area.left)-(_399*(_39a-1)))/_39a;
+var _39c=_39b/n;
+var _39d=plot.axisY.getCoord(plot.axisX.origin,_38f,plot);
+for(var i=0;i<_39a;i++){
+var _39e=area.left+(_39b*i)+(_399*i);
 for(var j=0;j<n;j++){
-var _39c=data[j][i].y;
-var yA=_399;
-var x=_39a+(_398*j);
-var y=plot.axisY.getCoord(_39c,_38b,plot);
+var _3a0=data[j][i].y;
+var yA=_39d;
+var x=_39e+(_39c*j);
+var y=plot.axisY.getCoord(_3a0,_38f,plot);
 var h=Math.abs(yA-y);
-if(_39c<plot.axisX.origin){
+if(_3a0<plot.axisX.origin){
 yA=y;
-y=_399;
+y=_39d;
 }
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[j][i].series.color);
 bar.setAttribute("stroke-width","0");
 bar.setAttribute("x",x);
 bar.setAttribute("y",y);
-bar.setAttribute("width",_398);
+bar.setAttribute("width",_39c);
 bar.setAttribute("height",h);
 bar.setAttribute("fill-opacity","0.6");
-if(_38e){
-_38e(bar,data[j][i].src);
+if(_392){
+_392(bar,data[j][i].src);
 }
-_390.appendChild(bar);
+_394.appendChild(bar);
 }
 }
-return _390;
-},HorizontalBar:function(_3a2,plot,_3a4,_3a5){
-var area=_3a2.getArea();
-var _3a7=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _394;
+},HorizontalBar:function(_3a6,plot,_3a8,_3a9){
+var area=_3a6.getArea();
+var _3ab=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=plot.series.length;
 var data=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_3a4);
+var tmp=plot.series[i].data.evaluate(_3a8);
 data.push(tmp);
 }
-var _3ac=6;
-var _3ad=data[0].length;
-if(_3ad==0){
-return _3a7;
+var _3b0=6;
+var _3b1=data[0].length;
+if(_3b1==0){
+return _3ab;
 }
-var h=((area.bottom-area.top)-(_3ac*(_3ad-1)))/_3ad;
+var h=((area.bottom-area.top)-(_3b0*(_3b1-1)))/_3b1;
 var barH=h/n;
-var _3b0=plot.axisX.getCoord(0,_3a2,plot);
-for(var i=0;i<_3ad;i++){
-var _3b1=area.top+(h*i)+(_3ac*i);
+var _3b4=plot.axisX.getCoord(0,_3a6,plot);
+for(var i=0;i<_3b1;i++){
+var _3b5=area.top+(h*i)+(_3b0*i);
 for(var j=0;j<n;j++){
-var _3b3=data[j][i].y;
-var y=_3b1+(barH*j);
-var xA=_3b0;
-var x=plot.axisX.getCoord(_3b3,_3a2,plot);
+var _3b7=data[j][i].y;
+var y=_3b5+(barH*j);
+var xA=_3b4;
+var x=plot.axisX.getCoord(_3b7,_3a6,plot);
 var w=Math.abs(x-xA);
-if(_3b3>0){
-x=_3b0;
+if(_3b7>0){
+x=_3b4;
 }
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[j][i].series.color);
@@ -9929,31 +9968,31 @@
 bar.setAttribute("width",w);
 bar.setAttribute("height",barH);
 bar.setAttribute("fill-opacity","0.6");
-if(_3a5){
-_3a5(bar,data[j][i].src);
+if(_3a9){
+_3a9(bar,data[j][i].src);
 }
-_3a7.appendChild(bar);
+_3ab.appendChild(bar);
 }
 }
-return _3a7;
-},Gantt:function(_3b9,plot,_3bb,_3bc){
-var area=_3b9.getArea();
-var _3be=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _3ab;
+},Gantt:function(_3bd,plot,_3bf,_3c0){
+var area=_3bd.getArea();
+var _3c2=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=plot.series.length;
 var data=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_3bb);
+var tmp=plot.series[i].data.evaluate(_3bf);
 data.push(tmp);
 }
-var _3c3=2;
-var _3c4=data[0].length;
-if(_3c4==0){
-return _3be;
+var _3c7=2;
+var _3c8=data[0].length;
+if(_3c8==0){
+return _3c2;
 }
-var h=((area.bottom-area.top)-(_3c3*(_3c4-1)))/_3c4;
+var h=((area.bottom-area.top)-(_3c7*(_3c8-1)))/_3c8;
 var barH=h/n;
-for(var i=0;i<_3c4;i++){
-var _3c7=area.top+(h*i)+(_3c3*i);
+for(var i=0;i<_3c8;i++){
+var _3cb=area.top+(h*i)+(_3c7*i);
 for(var j=0;j<n;j++){
 var high=data[j][i].high;
 var low=data[j][i].low;
@@ -9962,9 +10001,9 @@
 high=low;
 low=t;
 }
-var x=plot.axisX.getCoord(low,_3b9,plot);
-var w=plot.axisX.getCoord(high,_3b9,plot)-x;
-var y=_3c7+(barH*j);
+var x=plot.axisX.getCoord(low,_3bd,plot);
+var w=plot.axisX.getCoord(high,_3bd,plot)-x;
+var y=_3cb+(barH*j);
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[j][i].series.color);
 bar.setAttribute("stroke-width","0");
@@ -9973,28 +10012,28 @@
 bar.setAttribute("width",w);
 bar.setAttribute("height",barH);
 bar.setAttribute("fill-opacity","0.6");
-if(_3bc){
-_3bc(bar,data[j][i].src);
+if(_3c0){
+_3c0(bar,data[j][i].src);
 }
-_3be.appendChild(bar);
+_3c2.appendChild(bar);
 }
 }
-return _3be;
-},StackedArea:function(_3d0,plot,_3d2,_3d3){
-var area=_3d0.getArea();
-var _3d5=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _3c2;
+},StackedArea:function(_3d4,plot,_3d6,_3d7){
+var area=_3d4.getArea();
+var _3d9=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=plot.series.length;
 var data=[];
-var _3d8=[];
+var _3dc=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_3d2);
+var tmp=plot.series[i].data.evaluate(_3d6);
 for(var j=0;j<tmp.length;j++){
 if(i==0){
-_3d8.push(tmp[j].y);
+_3dc.push(tmp[j].y);
 }else{
-_3d8[j]+=tmp[j].y;
+_3dc[j]+=tmp[j].y;
 }
-tmp[j].y=_3d8[j];
+tmp[j].y=_3dc[j];
 }
 data.push(tmp);
 }
@@ -10008,9 +10047,9 @@
 var cmd=[];
 var r=3;
 for(var j=0;j<data[i].length;j++){
-var _3df=data[i];
-var x=plot.axisX.getCoord(_3df[j].x,_3d0,plot);
-var y=plot.axisY.getCoord(_3df[j].y,_3d0,plot);
+var _3e3=data[i];
+var x=plot.axisX.getCoord(_3e3[j].x,_3d4,plot);
+var y=plot.axisY.getCoord(_3e3[j].y,_3d4,plot);
 if(j==0){
 cmd.push("M");
 }else{
@@ -10021,52 +10060,52 @@
 c.setAttribute("cx",x);
 c.setAttribute("cy",y);
 c.setAttribute("r","3");
-c.setAttribute("fill",_3df[j].series.color);
+c.setAttribute("fill",_3e3[j].series.color);
 c.setAttribute("fill-opacity","0.6");
 c.setAttribute("stroke-width","1");
 c.setAttribute("stroke-opacity","0.85");
-_3d5.appendChild(c);
-if(_3d3){
-_3d3(c,data[i].src);
+_3d9.appendChild(c);
+if(_3d7){
+_3d7(c,data[i].src);
 }
 }
 if(i==0){
 cmd.push("L");
-cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_3d0,plot));
+cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_3d4,plot));
 cmd.push("L");
-cmd.push(plot.axisX.getCoord(data[0][0].x,_3d0,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_3d0,plot));
+cmd.push(plot.axisX.getCoord(data[0][0].x,_3d4,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_3d4,plot));
 cmd.push("Z");
 }else{
-var _3df=data[i-1];
+var _3e3=data[i-1];
 cmd.push("L");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(_3df[_3df.length-1].y,_3d0,plot)));
-for(var j=_3df.length-2;j>=0;j--){
-var x=plot.axisX.getCoord(_3df[j].x,_3d0,plot);
-var y=plot.axisY.getCoord(_3df[j].y,_3d0,plot);
+cmd.push(x+","+Math.round(plot.axisY.getCoord(_3e3[_3e3.length-1].y,_3d4,plot)));
+for(var j=_3e3.length-2;j>=0;j--){
+var x=plot.axisX.getCoord(_3e3[j].x,_3d4,plot);
+var y=plot.axisY.getCoord(_3e3[j].y,_3d4,plot);
 cmd.push("L");
 cmd.push(x+","+y);
 }
 }
 path.setAttribute("d",cmd.join(" ")+" Z");
-_3d5.appendChild(path);
+_3d9.appendChild(path);
 }
-return _3d5;
-},StackedCurvedArea:function(_3e3,plot,_3e5,_3e6){
-var _3e7=3;
-var area=_3e3.getArea();
-var _3e9=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _3d9;
+},StackedCurvedArea:function(_3e7,plot,_3e9,_3ea){
+var _3eb=3;
+var area=_3e7.getArea();
+var _3ed=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=plot.series.length;
 var data=[];
-var _3ec=[];
+var _3f0=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_3e5);
+var tmp=plot.series[i].data.evaluate(_3e9);
 for(var j=0;j<tmp.length;j++){
 if(i==0){
-_3ec.push(tmp[j].y);
+_3f0.push(tmp[j].y);
 }else{
-_3ec[j]+=tmp[j].y;
+_3f0[j]+=tmp[j].y;
 }
-tmp[j].y=_3ec[j];
+tmp[j].y=_3f0[j];
 }
 data.push(tmp);
 }
@@ -10080,22 +10119,22 @@
 var cmd=[];
 var r=3;
 for(var j=0;j<data[i].length;j++){
-var _3f3=data[i];
-var x=plot.axisX.getCoord(_3f3[j].x,_3e3,plot);
-var y=plot.axisY.getCoord(_3f3[j].y,_3e3,plot);
+var _3f7=data[i];
+var x=plot.axisX.getCoord(_3f7[j].x,_3e7,plot);
+var y=plot.axisY.getCoord(_3f7[j].y,_3e7,plot);
 var dx=area.left+1;
 var dy=area.bottom;
 if(j>0){
-dx=x-plot.axisX.getCoord(_3f3[j-1].x,_3e3,plot);
-dy=plot.axisY.getCoord(_3f3[j-1].y,_3e3,plot);
+dx=x-plot.axisX.getCoord(_3f7[j-1].x,_3e7,plot);
+dy=plot.axisY.getCoord(_3f7[j-1].y,_3e7,plot);
 }
 if(j==0){
 cmd.push("M");
 }else{
 cmd.push("C");
-var cx=x-(_3e7-1)*(dx/_3e7);
+var cx=x-(_3eb-1)*(dx/_3eb);
 cmd.push(cx+","+dy);
-cx=x-(dx/_3e7);
+cx=x-(dx/_3eb);
 cmd.push(cx+","+y);
 }
 cmd.push(x+","+y);
@@ -10103,57 +10142,57 @@
 c.setAttribute("cx",x);
 c.setAttribute("cy",y);
 c.setAttribute("r","3");
-c.setAttribute("fill",_3f3[j].series.color);
+c.setAttribute("fill",_3f7[j].series.color);
 c.setAttribute("fill-opacity","0.6");
 c.setAttribute("stroke-width","1");
 c.setAttribute("stroke-opacity","0.85");
-_3e9.appendChild(c);
-if(_3e6){
-_3e6(c,data[i].src);
+_3ed.appendChild(c);
+if(_3ea){
+_3ea(c,data[i].src);
 }
 }
 if(i==0){
 cmd.push("L");
-cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_3e3,plot));
+cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_3e7,plot));
 cmd.push("L");
-cmd.push(plot.axisX.getCoord(data[0][0].x,_3e3,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_3e3,plot));
+cmd.push(plot.axisX.getCoord(data[0][0].x,_3e7,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_3e7,plot));
 cmd.push("Z");
 }else{
-var _3f3=data[i-1];
+var _3f7=data[i-1];
 cmd.push("L");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(_3f3[_3f3.length-1].y,_3e3,plot)));
-for(var j=_3f3.length-2;j>=0;j--){
-var x=plot.axisX.getCoord(_3f3[j].x,_3e3,plot);
-var y=plot.axisY.getCoord(_3f3[j].y,_3e3,plot);
-var dx=x-plot.axisX.getCoord(_3f3[j+1].x,_3e3,plot);
-var dy=plot.axisY.getCoord(_3f3[j+1].y,_3e3,plot);
+cmd.push(x+","+Math.round(plot.axisY.getCoord(_3f7[_3f7.length-1].y,_3e7,plot)));
+for(var j=_3f7.length-2;j>=0;j--){
+var x=plot.axisX.getCoord(_3f7[j].x,_3e7,plot);
+var y=plot.axisY.getCoord(_3f7[j].y,_3e7,plot);
+var dx=x-plot.axisX.getCoord(_3f7[j+1].x,_3e7,plot);
+var dy=plot.axisY.getCoord(_3f7[j+1].y,_3e7,plot);
 cmd.push("C");
-var cx=x-(_3e7-1)*(dx/_3e7);
+var cx=x-(_3eb-1)*(dx/_3eb);
 cmd.push(cx+","+dy);
-cx=x-(dx/_3e7);
+cx=x-(dx/_3eb);
 cmd.push(cx+","+y);
 cmd.push(x+","+y);
 }
 }
 path.setAttribute("d",cmd.join(" ")+" Z");
-_3e9.appendChild(path);
+_3ed.appendChild(path);
 }
-return _3e9;
-},DataBar:function(data,_3fb,plot,_3fd){
-var area=_3fb.getArea();
-var _3ff=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _3ed;
+},DataBar:function(data,_3ff,plot,_401){
+var area=_3ff.getArea();
+var _403=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=data.length;
 var w=(area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower);
-var _402=plot.axisY.getCoord(plot.axisX.origin,_3fb,plot);
+var _406=plot.axisY.getCoord(plot.axisX.origin,_3ff,plot);
 for(var i=0;i<n;i++){
-var _404=data[i].y;
-var yA=_402;
-var x=plot.axisX.getCoord(data[i].x,_3fb,plot)-(w/2);
-var y=plot.axisY.getCoord(_404,_3fb,plot);
+var _408=data[i].y;
+var yA=_406;
+var x=plot.axisX.getCoord(data[i].x,_3ff,plot)-(w/2);
+var y=plot.axisY.getCoord(_408,_3ff,plot);
 var h=Math.abs(yA-y);
-if(_404<plot.axisX.origin){
+if(_408<plot.axisX.origin){
 yA=y;
-y=_402;
+y=_406;
 }
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[i].series.color);
@@ -10163,14 +10202,14 @@
 bar.setAttribute("width",w);
 bar.setAttribute("height",h);
 bar.setAttribute("fill-opacity","0.6");
-if(_3fd){
-_3fd(bar,data[i].src);
+if(_401){
+_401(bar,data[i].src);
 }
-_3ff.appendChild(bar);
+_403.appendChild(bar);
 }
-return _3ff;
-},Line:function(data,_40b,plot,_40d){
-var area=_40b.getArea();
+return _403;
+},Line:function(data,_40f,plot,_411){
+var area=_40f.getArea();
 var line=document.createElementNS(dojo.svg.xmlns.svg,"g");
 if(data.length==0){
 return line;
@@ -10186,8 +10225,8 @@
 }
 var cmd=[];
 for(var i=0;i<data.length;i++){
-var x=plot.axisX.getCoord(data[i].x,_40b,plot);
-var y=plot.axisY.getCoord(data[i].y,_40b,plot);
+var x=plot.axisX.getCoord(data[i].x,_40f,plot);
+var y=plot.axisY.getCoord(data[i].y,_40f,plot);
 if(i==0){
 cmd.push("M");
 }else{
@@ -10203,15 +10242,15 @@
 c.setAttribute("stroke-width","1");
 c.setAttribute("stroke-opacity","0.85");
 line.appendChild(c);
-if(_40d){
-_40d(c,data[i].src);
+if(_411){
+_411(c,data[i].src);
 }
 }
 path.setAttribute("d",cmd.join(" "));
 return line;
-},CurvedLine:function(data,_417,plot,_419){
-var _41a=3;
-var area=_417.getArea();
+},CurvedLine:function(data,_41b,plot,_41d){
+var _41e=3;
+var area=_41b.getArea();
 var line=document.createElementNS(dojo.svg.xmlns.svg,"g");
 if(data.length==0){
 return line;
@@ -10227,21 +10266,21 @@
 }
 var cmd=[];
 for(var i=0;i<data.length;i++){
-var x=plot.axisX.getCoord(data[i].x,_417,plot);
-var y=plot.axisY.getCoord(data[i].y,_417,plot);
+var x=plot.axisX.getCoord(data[i].x,_41b,plot);
+var y=plot.axisY.getCoord(data[i].y,_41b,plot);
 var dx=area.left+1;
 var dy=area.bottom;
 if(i>0){
-dx=x-plot.axisX.getCoord(data[i-1].x,_417,plot);
-dy=plot.axisY.getCoord(data[i-1].y,_417,plot);
+dx=x-plot.axisX.getCoord(data[i-1].x,_41b,plot);
+dy=plot.axisY.getCoord(data[i-1].y,_41b,plot);
 }
 if(i==0){
 cmd.push("M");
 }else{
 cmd.push("C");
-var cx=x-(_41a-1)*(dx/_41a);
+var cx=x-(_41e-1)*(dx/_41e);
 cmd.push(cx+","+dy);
-cx=x-(dx/_41a);
+cx=x-(dx/_41e);
 cmd.push(cx+","+y);
 }
 cmd.push(x+","+y);
@@ -10254,14 +10293,14 @@
 c.setAttribute("stroke-width","1");
 c.setAttribute("stroke-opacity","0.85");
 line.appendChild(c);
-if(_419){
-_419(c,data[i].src);
+if(_41d){
+_41d(c,data[i].src);
 }
 }
 path.setAttribute("d",cmd.join(" "));
 return line;
-},Area:function(data,_427,plot,_429){
-var area=_427.getArea();
+},Area:function(data,_42b,plot,_42d){
+var area=_42b.getArea();
 var line=document.createElementNS(dojo.svg.xmlns.svg,"g");
 if(data.length==0){
 return line;
@@ -10278,8 +10317,8 @@
 }
 var cmd=[];
 for(var i=0;i<data.length;i++){
-var x=plot.axisX.getCoord(data[i].x,_427,plot);
-var y=plot.axisY.getCoord(data[i].y,_427,plot);
+var x=plot.axisX.getCoord(data[i].x,_42b,plot);
+var y=plot.axisY.getCoord(data[i].y,_42b,plot);
 if(i==0){
 cmd.push("M");
 }else{
@@ -10295,20 +10334,20 @@
 c.setAttribute("stroke-width","1");
 c.setAttribute("stroke-opacity","0.85");
 line.appendChild(c);
-if(_429){
-_429(c,data[i].src);
+if(_42d){
+_42d(c,data[i].src);
 }
 }
 cmd.push("L");
-cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_427,plot));
+cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_42b,plot));
 cmd.push("L");
-cmd.push(plot.axisX.getCoord(data[0].x,_427,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_427,plot));
+cmd.push(plot.axisX.getCoord(data[0].x,_42b,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_42b,plot));
 cmd.push("Z");
 path.setAttribute("d",cmd.join(" "));
 return line;
-},CurvedArea:function(data,_433,plot,_435){
-var _436=3;
-var area=_433.getArea();
+},CurvedArea:function(data,_437,plot,_439){
+var _43a=3;
+var area=_437.getArea();
 var line=document.createElementNS(dojo.svg.xmlns.svg,"g");
 if(data.length==0){
 return line;
@@ -10325,21 +10364,21 @@
 }
 var cmd=[];
 for(var i=0;i<data.length;i++){
-var x=plot.axisX.getCoord(data[i].x,_433,plot);
-var y=plot.axisY.getCoord(data[i].y,_433,plot);
+var x=plot.axisX.getCoord(data[i].x,_437,plot);
+var y=plot.axisY.getCoord(data[i].y,_437,plot);
 var dx=area.left+1;
 var dy=area.bottom;
 if(i>0){
-dx=x-plot.axisX.getCoord(data[i-1].x,_433,plot);
-dy=plot.axisY.getCoord(data[i-1].y,_433,plot);
+dx=x-plot.axisX.getCoord(data[i-1].x,_437,plot);
+dy=plot.axisY.getCoord(data[i-1].y,_437,plot);
 }
 if(i==0){
 cmd.push("M");
 }else{
 cmd.push("C");
-var cx=x-(_436-1)*(dx/_436);
+var cx=x-(_43a-1)*(dx/_43a);
 cmd.push(cx+","+dy);
-cx=x-(dx/_436);
+cx=x-(dx/_43a);
 cmd.push(cx+","+y);
 }
 cmd.push(x+","+y);
@@ -10352,20 +10391,20 @@
 c.setAttribute("stroke-width","1");
 c.setAttribute("stroke-opacity","0.85");
 line.appendChild(c);
-if(_435){
-_435(c,data[i].src);
+if(_439){
+_439(c,data[i].src);
 }
 }
 cmd.push("L");
-cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_433,plot));
+cmd.push(x+","+plot.axisY.getCoord(plot.axisX.origin,_437,plot));
 cmd.push("L");
-cmd.push(plot.axisX.getCoord(data[0].x,_433,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_433,plot));
+cmd.push(plot.axisX.getCoord(data[0].x,_437,plot)+","+plot.axisY.getCoord(plot.axisX.origin,_437,plot));
 cmd.push("Z");
 path.setAttribute("d",cmd.join(" "));
 return line;
-},HighLow:function(data,_443,plot,_445){
-var area=_443.getArea();
-var _447=document.createElementNS(dojo.svg.xmlns.svg,"g");
+},HighLow:function(data,_447,plot,_449){
+var area=_447.getArea();
+var _44b=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=data.length;
 var part=((area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower))/4;
 var w=part*2;
@@ -10377,9 +10416,9 @@
 low=high;
 high=t;
 }
-var x=plot.axisX.getCoord(data[i].x,_443,plot)-(w/2);
-var y=plot.axisY.getCoord(high,_443,plot);
-var h=plot.axisY.getCoord(low,_443,plot)-y;
+var x=plot.axisX.getCoord(data[i].x,_447,plot)-(w/2);
+var y=plot.axisY.getCoord(high,_447,plot);
+var h=plot.axisY.getCoord(low,_447,plot)-y;
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[i].series.color);
 bar.setAttribute("stroke-width","0");
@@ -10388,15 +10427,15 @@
 bar.setAttribute("width",w);
 bar.setAttribute("height",h);
 bar.setAttribute("fill-opacity","0.6");
-if(_445){
-_445(bar,data[i].src);
+if(_449){
+_449(bar,data[i].src);
 }
-_447.appendChild(bar);
+_44b.appendChild(bar);
 }
-return _447;
-},HighLowClose:function(data,_454,plot,_456){
-var area=_454.getArea();
-var _458=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _44b;
+},HighLowClose:function(data,_458,plot,_45a){
+var area=_458.getArea();
+var _45c=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=data.length;
 var part=((area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower))/4;
 var w=part*2;
@@ -10409,10 +10448,10 @@
 high=t;
 }
 var c=data[i].close;
-var x=plot.axisX.getCoord(data[i].x,_454,plot)-(w/2);
-var y=plot.axisY.getCoord(high,_454,plot);
-var h=plot.axisY.getCoord(low,_454,plot)-y;
-var _464=plot.axisY.getCoord(c,_454,plot);
+var x=plot.axisX.getCoord(data[i].x,_458,plot)-(w/2);
+var y=plot.axisY.getCoord(high,_458,plot);
+var h=plot.axisY.getCoord(low,_458,plot)-y;
+var _468=plot.axisY.getCoord(c,_458,plot);
 var g=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[i].series.color);
@@ -10426,19 +10465,19 @@
 var line=document.createElementNS(dojo.svg.xmlns.svg,"line");
 line.setAttribute("x1",x);
 line.setAttribute("x2",x+w+(part*2));
-line.setAttribute("y1",_464);
-line.setAttribute("y2",_464);
+line.setAttribute("y1",_468);
+line.setAttribute("y2",_468);
 line.setAttribute("style","stroke:"+data[i].series.color+";stroke-width:1px;stroke-opacity:0.6;");
 g.appendChild(line);
-if(_456){
-_456(g,data[i].src);
+if(_45a){
+_45a(g,data[i].src);
 }
-_458.appendChild(g);
+_45c.appendChild(g);
 }
-return _458;
-},HighLowOpenClose:function(data,_469,plot,_46b){
-var area=_469.getArea();
-var _46d=document.createElementNS(dojo.svg.xmlns.svg,"g");
+return _45c;
+},HighLowOpenClose:function(data,_46d,plot,_46f){
+var area=_46d.getArea();
+var _471=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var n=data.length;
 var part=((area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower))/4;
 var w=part*2;
@@ -10452,11 +10491,11 @@
 }
 var o=data[i].open;
 var c=data[i].close;
-var x=plot.axisX.getCoord(data[i].x,_469,plot)-(w/2);
-var y=plot.axisY.getCoord(high,_469,plot);
-var h=plot.axisY.getCoord(low,_469,plot)-y;
-var open=plot.axisY.getCoord(o,_469,plot);
-var _47b=plot.axisY.getCoord(c,_469,plot);
+var x=plot.axisX.getCoord(data[i].x,_46d,plot)-(w/2);
+var y=plot.axisY.getCoord(high,_46d,plot);
+var h=plot.axisY.getCoord(low,_46d,plot)-y;
+var open=plot.axisY.getCoord(o,_46d,plot);
+var _47f=plot.axisY.getCoord(c,_46d,plot);
 var g=document.createElementNS(dojo.svg.xmlns.svg,"g");
 var bar=document.createElementNS(dojo.svg.xmlns.svg,"rect");
 bar.setAttribute("fill",data[i].series.color);
@@ -10477,107 +10516,107 @@
 var line=document.createElementNS(dojo.svg.xmlns.svg,"line");
 line.setAttribute("x1",x);
 line.setAttribute("x2",x+w+(part*2));
-line.setAttribute("y1",_47b);
-line.setAttribute("y2",_47b);
+line.setAttribute("y1",_47f);
+line.setAttribute("y2",_47f);
 line.setAttribute("style","stroke:"+data[i].series.color+";stroke-width:1px;stroke-opacity:0.6;");
 g.appendChild(line);
-if(_46b){
-_46b(g,data[i].src);
+if(_46f){
+_46f(g,data[i].src);
 }
-_46d.appendChild(g);
+_471.appendChild(g);
 }
-return _46d;
-},Scatter:function(data,_480,plot,_482){
+return _471;
+},Scatter:function(data,_484,plot,_486){
 var r=7;
-var _484=document.createElementNS(dojo.svg.xmlns.svg,"g");
+var _488=document.createElementNS(dojo.svg.xmlns.svg,"g");
 for(var i=0;i<data.length;i++){
-var x=plot.axisX.getCoord(data[i].x,_480,plot);
-var y=plot.axisY.getCoord(data[i].y,_480,plot);
-var _488=document.createElementNS(dojo.svg.xmlns.svg,"path");
-_488.setAttribute("fill",data[i].series.color);
-_488.setAttribute("stroke-width","0");
-_488.setAttribute("d","M "+x+","+(y-r)+" "+"Q "+x+","+y+" "+(x+r)+","+y+" "+"Q "+x+","+y+" "+x+","+(y+r)+" "+"Q "+x+","+y+" "+(x-r)+","+y+" "+"Q "+x+","+y+" "+x+","+(y-r)+" "+"Z");
-if(_482){
-_482(_488,data[i].src);
+var x=plot.axisX.getCoord(data[i].x,_484,plot);
+var y=plot.axisY.getCoord(data[i].y,_484,plot);
+var _48c=document.createElementNS(dojo.svg.xmlns.svg,"path");
+_48c.setAttribute("fill",data[i].series.color);
+_48c.setAttribute("stroke-width","0");
+_48c.setAttribute("d","M "+x+","+(y-r)+" "+"Q "+x+","+y+" "+(x+r)+","+y+" "+"Q "+x+","+y+" "+x+","+(y+r)+" "+"Q "+x+","+y+" "+(x-r)+","+y+" "+"Q "+x+","+y+" "+x+","+(y-r)+" "+"Z");
+if(_486){
+_486(_48c,data[i].src);
 }
-_484.appendChild(_488);
+_488.appendChild(_48c);
 }
-return _484;
-},Bubble:function(data,_48a,plot,_48c){
-var _48d=document.createElementNS(dojo.svg.xmlns.svg,"g");
-var _48e=1;
+return _488;
+},Bubble:function(data,_48e,plot,_490){
+var _491=document.createElementNS(dojo.svg.xmlns.svg,"g");
+var _492=1;
 for(var i=0;i<data.length;i++){
-var x=plot.axisX.getCoord(data[i].x,_48a,plot);
-var y=plot.axisY.getCoord(data[i].y,_48a,plot);
+var x=plot.axisX.getCoord(data[i].x,_48e,plot);
+var y=plot.axisY.getCoord(data[i].y,_48e,plot);
 if(i==0){
 var raw=data[i].size;
-var dy=plot.axisY.getCoord(data[i].y+raw,_48a,plot)-y;
-_48e=dy/raw;
+var dy=plot.axisY.getCoord(data[i].y+raw,_48e,plot)-y;
+_492=dy/raw;
 }
-if(_48e<1){
-_48e=1;
+if(_492<1){
+_492=1;
 }
-var _494=document.createElementNS(dojo.svg.xmlns.svg,"circle");
-_494.setAttribute("fill",data[i].series.color);
-_494.setAttribute("fill-opacity","0.8");
-_494.setAttribute("stroke",data[i].series.color);
-_494.setAttribute("stroke-width","1");
-_494.setAttribute("cx",x);
-_494.setAttribute("cy",y);
-_494.setAttribute("r",(data[i].size/2)*_48e);
-if(_48c){
-_48c(_494,data[i].src);
+var _498=document.createElementNS(dojo.svg.xmlns.svg,"circle");
+_498.setAttribute("fill",data[i].series.color);
+_498.setAttribute("fill-opacity","0.8");
+_498.setAttribute("stroke",data[i].series.color);
+_498.setAttribute("stroke-width","1");
+_498.setAttribute("cx",x);
+_498.setAttribute("cy",y);
+_498.setAttribute("r",(data[i].size/2)*_492);
+if(_490){
+_490(_498,data[i].src);
 }
-_48d.appendChild(_494);
+_491.appendChild(_498);
 }
-return _48d;
+return _491;
 }});
 dojo.charting.Plotters["Default"]=dojo.charting.Plotters.Line;
 }
 dojo.provide("dojo.charting.vml.Plotters");
 if(dojo.render.vml.capable){
-dojo.mixin(dojo.charting.Plotters,{_group:function(_495){
-var _496=document.createElement("div");
-_496.style.position="absolute";
-_496.style.top="0px";
-_496.style.left="0px";
-_496.style.width=_495.size.width+"px";
-_496.style.height=_495.size.height+"px";
-return _496;
-},Bar:function(_497,plot,_499,_49a){
-var area=_497.getArea();
-var _49c=dojo.charting.Plotters._group(_497);
+dojo.mixin(dojo.charting.Plotters,{_group:function(_499){
+var _49a=document.createElement("div");
+_49a.style.position="absolute";
+_49a.style.top="0px";
+_49a.style.left="0px";
+_49a.style.width=_499.size.width+"px";
+_49a.style.height=_499.size.height+"px";
+return _49a;
+},Bar:function(_49b,plot,_49d,_49e){
+var area=_49b.getArea();
+var _4a0=dojo.charting.Plotters._group(_49b);
 var n=plot.series.length;
 var data=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_499);
+var tmp=plot.series[i].data.evaluate(_49d);
 data.push(tmp);
 }
-var _4a1=8;
-var _4a2=data[0].length;
-if(_4a2==0){
-return _49c;
+var _4a5=8;
+var _4a6=data[0].length;
+if(_4a6==0){
+return _4a0;
 }
-var _4a3=((area.right-area.left)-(_4a1*(_4a2-1)))/_4a2;
-var _4a4=Math.round(_4a3/n);
-var _4a5=plot.axisY.getCoord(plot.axisX.origin,_497,plot);
-for(var i=0;i<_4a2;i++){
-var _4a6=area.left+(_4a3*i)+(_4a1*i);
+var _4a7=((area.right-area.left)-(_4a5*(_4a6-1)))/_4a6;
+var _4a8=Math.round(_4a7/n);
+var _4a9=plot.axisY.getCoord(plot.axisX.origin,_49b,plot);
+for(var i=0;i<_4a6;i++){
+var _4aa=area.left+(_4a7*i)+(_4a5*i);
 for(var j=0;j<n;j++){
-var _4a8=data[j][i].y;
-var yA=_4a5;
-var x=_4a6+(_4a4*j);
-var y=plot.axisY.getCoord(_4a8,_497,plot);
+var _4ac=data[j][i].y;
+var yA=_4a9;
+var x=_4aa+(_4a8*j);
+var y=plot.axisY.getCoord(_4ac,_49b,plot);
 var h=Math.abs(yA-y);
-if(_4a8<plot.axisX.origin){
+if(_4ac<plot.axisX.origin){
 yA=y;
-y=_4a5;
+y=_4a9;
 }
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
 bar.style.top=y+1+"px";
 bar.style.left=x+"px";
-bar.style.width=_4a4+"px";
+bar.style.width=_4a8+"px";
 bar.style.height=h+"px";
 bar.setAttribute("fillColor",data[j][i].series.color);
 bar.setAttribute("stroked","false");
@@ -10585,40 +10624,40 @@
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
 bar.appendChild(fill);
-if(_49a){
-_49a(bar,data[j][i].src);
+if(_49e){
+_49e(bar,data[j][i].src);
 }
-_49c.appendChild(bar);
+_4a0.appendChild(bar);
 }
 }
-return _49c;
-},HorizontalBar:function(_4af,plot,_4b1,_4b2){
-var area=_4af.getArea();
-var _4b4=dojo.charting.Plotters._group(_4af);
+return _4a0;
+},HorizontalBar:function(_4b3,plot,_4b5,_4b6){
+var area=_4b3.getArea();
+var _4b8=dojo.charting.Plotters._group(_4b3);
 var n=plot.series.length;
 var data=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_4b1);
+var tmp=plot.series[i].data.evaluate(_4b5);
 data.push(tmp);
 }
-var _4b9=6;
-var _4ba=data[0].length;
-if(_4ba==0){
-return _4b4;
+var _4bd=6;
+var _4be=data[0].length;
+if(_4be==0){
+return _4b8;
 }
-var h=((area.bottom-area.top)-(_4b9*(_4ba-1)))/_4ba;
+var h=((area.bottom-area.top)-(_4bd*(_4be-1)))/_4be;
 var barH=h/n;
-var _4bd=plot.axisX.getCoord(0,_4af,plot);
-for(var i=0;i<_4ba;i++){
-var _4be=area.top+(h*i)+(_4b9*i);
+var _4c1=plot.axisX.getCoord(0,_4b3,plot);
+for(var i=0;i<_4be;i++){
+var _4c2=area.top+(h*i)+(_4bd*i);
 for(var j=0;j<n;j++){
-var _4c0=data[j][i].y;
-var y=_4be+(barH*j);
-var xA=_4bd;
-var x=plot.axisX.getCoord(_4c0,_4af,plot);
+var _4c4=data[j][i].y;
+var y=_4c2+(barH*j);
+var xA=_4c1;
+var x=plot.axisX.getCoord(_4c4,_4b3,plot);
 var w=Math.abs(x-xA);
-if(_4c0>0){
-x=_4bd;
+if(_4c4>0){
+x=_4c1;
 }
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
@@ -10632,48 +10671,48 @@
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
 bar.appendChild(fill);
-if(_4b2){
-_4b2(bar,data[j][i].src);
+if(_4b6){
+_4b6(bar,data[j][i].src);
 }
-_4b4.appendChild(bar);
+_4b8.appendChild(bar);
 }
 }
-var _4b9=4;
+var _4bd=4;
 var n=plot.series.length;
-var h=((area.bottom-area.top)-(_4b9*(n-1)))/n;
-var _4bd=plot.axisX.getCoord(0,_4af,plot);
+var h=((area.bottom-area.top)-(_4bd*(n-1)))/n;
+var _4c1=plot.axisX.getCoord(0,_4b3,plot);
 for(var i=0;i<n;i++){
-var _4c7=plot.series[i];
-var data=_4c7.data.evaluate(_4b1);
-var y=area.top+(h*i)+(_4b9*i);
-var _4c0=data[data.length-1].y;
-var xA=_4bd;
-var x=plot.axisX.getCoord(_4c0,_4af,plot);
+var _4cb=plot.series[i];
+var data=_4cb.data.evaluate(_4b5);
+var y=area.top+(h*i)+(_4bd*i);
+var _4c4=data[data.length-1].y;
+var xA=_4c1;
+var x=plot.axisX.getCoord(_4c4,_4b3,plot);
 var w=Math.abs(xA-x);
-if(_4c0>0){
+if(_4c4>0){
 xA=x;
-x=_4bd;
+x=_4c1;
 }
 }
-return _4b4;
-},Gantt:function(_4c8,plot,_4ca,_4cb){
-var area=_4c8.getArea();
-var _4cd=dojo.charting.Plotters._group(_4c8);
+return _4b8;
+},Gantt:function(_4cc,plot,_4ce,_4cf){
+var area=_4cc.getArea();
+var _4d1=dojo.charting.Plotters._group(_4cc);
 var n=plot.series.length;
 var data=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_4ca);
+var tmp=plot.series[i].data.evaluate(_4ce);
 data.push(tmp);
 }
-var _4d2=2;
-var _4d3=data[0].length;
-if(_4d3==0){
-return _4cd;
+var _4d6=2;
+var _4d7=data[0].length;
+if(_4d7==0){
+return _4d1;
 }
-var h=((area.bottom-area.top)-(_4d2*(_4d3-1)))/_4d3;
+var h=((area.bottom-area.top)-(_4d6*(_4d7-1)))/_4d7;
 var barH=h/n;
-for(var i=0;i<_4d3;i++){
-var _4d6=area.top+(h*i)+(_4d2*i);
+for(var i=0;i<_4d7;i++){
+var _4da=area.top+(h*i)+(_4d6*i);
 for(var j=0;j<n;j++){
 var high=data[j][i].high;
 var low=data[j][i].low;
@@ -10682,9 +10721,9 @@
 high=low;
 low=t;
 }
-var x=plot.axisX.getCoord(low,_4c8,plot);
-var w=plot.axisX.getCoord(high,_4c8,plot)-x;
-var y=_4d6+(barH*j);
+var x=plot.axisX.getCoord(low,_4cc,plot);
+var w=plot.axisX.getCoord(high,_4cc,plot)-x;
+var y=_4da+(barH*j);
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
 bar.style.top=y+1+"px";
@@ -10697,28 +10736,28 @@
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
 bar.appendChild(fill);
-if(_4cb){
-_4cb(bar,data[j][i].src);
+if(_4cf){
+_4cf(bar,data[j][i].src);
 }
-_4cd.appendChild(bar);
+_4d1.appendChild(bar);
 }
 }
-return _4cd;
-},StackedArea:function(_4e0,plot,_4e2,_4e3){
-var area=_4e0.getArea();
-var _4e5=dojo.charting.Plotters._group(_4e0);
+return _4d1;
+},StackedArea:function(_4e4,plot,_4e6,_4e7){
+var area=_4e4.getArea();
+var _4e9=dojo.charting.Plotters._group(_4e4);
 var n=plot.series.length;
 var data=[];
-var _4e8=[];
+var _4ec=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_4e2);
+var tmp=plot.series[i].data.evaluate(_4e6);
 for(var j=0;j<tmp.length;j++){
 if(i==0){
-_4e8.push(tmp[j].y);
+_4ec.push(tmp[j].y);
 }else{
-_4e8[j]+=tmp[j].y;
+_4ec[j]+=tmp[j].y;
 }
-tmp[j].y=_4e8[j];
+tmp[j].y=_4ec[j];
 }
 data.push(tmp);
 }
@@ -10733,18 +10772,18 @@
 path.style.left="0px";
 path.style.width=area.right-area.left+"px";
 path.style.height=area.bottom-area.top+"px";
-var _4ed=document.createElement("v:stroke");
-_4ed.setAttribute("opacity","0.8");
-path.appendChild(_4ed);
+var _4f1=document.createElement("v:stroke");
+_4f1.setAttribute("opacity","0.8");
+path.appendChild(_4f1);
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.4");
 path.appendChild(fill);
 var cmd=[];
 var r=3;
 for(var j=0;j<data[i].length;j++){
-var _4f1=data[i];
-var x=Math.round(plot.axisX.getCoord(_4f1[j].x,_4e0,plot));
-var y=Math.round(plot.axisY.getCoord(_4f1[j].y,_4e0,plot));
+var _4f5=data[i];
+var x=Math.round(plot.axisX.getCoord(_4f5[j].x,_4e4,plot));
+var y=Math.round(plot.axisY.getCoord(_4f5[j].y,_4e4,plot));
 if(j==0){
 cmd.push("m");
 cmd.push(x+","+y);
@@ -10754,8 +10793,8 @@
 }
 var c=document.createElement("v:oval");
 c.setAttribute("strokeweight","1px");
-c.setAttribute("strokecolor",_4f1[j].series.color);
-c.setAttribute("fillcolor",_4f1[j].series.color);
+c.setAttribute("strokecolor",_4f5[j].series.color);
+c.setAttribute("fillcolor",_4f5[j].series.color);
 var str=document.createElement("v:stroke");
 str.setAttribute("opacity","0.8");
 c.appendChild(str);
@@ -10768,47 +10807,47 @@
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_4e5.appendChild(c);
-if(_4e3){
-_4e3(c,data[j].src);
+_4e9.appendChild(c);
+if(_4e7){
+_4e7(c,data[j].src);
 }
 }
 if(i==0){
 cmd.push("l");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4e0,plot)));
+cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4e4,plot)));
 cmd.push("l");
-cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x,_4e0,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4e0,plot)));
+cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x,_4e4,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4e4,plot)));
 }else{
-var _4f1=data[i-1];
+var _4f5=data[i-1];
 cmd.push("l");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(_4f1[_4f1.length-1].y,_4e0,plot)));
-for(var j=_4f1.length-2;j>=0;j--){
-var x=Math.round(plot.axisX.getCoord(_4f1[j].x,_4e0,plot));
-var y=Math.round(plot.axisY.getCoord(_4f1[j].y,_4e0,plot));
+cmd.push(x+","+Math.round(plot.axisY.getCoord(_4f5[_4f5.length-1].y,_4e4,plot)));
+for(var j=_4f5.length-2;j>=0;j--){
+var x=Math.round(plot.axisX.getCoord(_4f5[j].x,_4e4,plot));
+var y=Math.round(plot.axisY.getCoord(_4f5[j].y,_4e4,plot));
 cmd.push("l");
 cmd.push(x+","+y);
 }
 }
 path.setAttribute("path",cmd.join(" ")+" x e");
-_4e5.appendChild(path);
+_4e9.appendChild(path);
 }
-return _4e5;
-},StackedCurvedArea:function(_4f7,plot,_4f9,_4fa){
-var _4fb=3;
-var area=_4f7.getArea();
-var _4fd=dojo.charting.Plotters._group(_4f7);
+return _4e9;
+},StackedCurvedArea:function(_4fb,plot,_4fd,_4fe){
+var _4ff=3;
+var area=_4fb.getArea();
+var _501=dojo.charting.Plotters._group(_4fb);
 var n=plot.series.length;
 var data=[];
-var _500=[];
+var _504=[];
 for(var i=0;i<n;i++){
-var tmp=plot.series[i].data.evaluate(_4f9);
+var tmp=plot.series[i].data.evaluate(_4fd);
 for(var j=0;j<tmp.length;j++){
 if(i==0){
-_500.push(tmp[j].y);
+_504.push(tmp[j].y);
 }else{
-_500[j]+=tmp[j].y;
+_504[j]+=tmp[j].y;
 }
-tmp[j].y=_500[j];
+tmp[j].y=_504[j];
 }
 data.push(tmp);
 }
@@ -10823,37 +10862,37 @@
 path.style.left="0px";
 path.style.width=area.right-area.left+"px";
 path.style.height=area.bottom-area.top+"px";
-var _505=document.createElement("v:stroke");
-_505.setAttribute("opacity","0.8");
-path.appendChild(_505);
+var _509=document.createElement("v:stroke");
+_509.setAttribute("opacity","0.8");
+path.appendChild(_509);
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.4");
 path.appendChild(fill);
 var cmd=[];
 var r=3;
 for(var j=0;j<data[i].length;j++){
-var _509=data[i];
-var x=Math.round(plot.axisX.getCoord(_509[j].x,_4f7,plot));
-var y=Math.round(plot.axisY.getCoord(_509[j].y,_4f7,plot));
+var _50d=data[i];
+var x=Math.round(plot.axisX.getCoord(_50d[j].x,_4fb,plot));
+var y=Math.round(plot.axisY.getCoord(_50d[j].y,_4fb,plot));
 if(j==0){
 cmd.push("m");
 cmd.push(x+","+y);
 }else{
-var _50c=Math.round(plot.axisX.getCoord(_509[j-1].x,_4f7,plot));
-var _50d=Math.round(plot.axisY.getCoord(_509[j-1].y,_4f7,plot));
-var dx=x-_50c;
-var dy=y-_50d;
+var _510=Math.round(plot.axisX.getCoord(_50d[j-1].x,_4fb,plot));
+var _511=Math.round(plot.axisY.getCoord(_50d[j-1].y,_4fb,plot));
+var dx=x-_510;
+var dy=y-_511;
 cmd.push("c");
-var cx=Math.round((x-(_4fb-1)*(dx/_4fb)));
-cmd.push(cx+","+_50d);
-cx=Math.round((x-(dx/_4fb)));
+var cx=Math.round((x-(_4ff-1)*(dx/_4ff)));
+cmd.push(cx+","+_511);
+cx=Math.round((x-(dx/_4ff)));
 cmd.push(cx+","+y);
 cmd.push(x+","+y);
 }
 var c=document.createElement("v:oval");
 c.setAttribute("strokeweight","1px");
-c.setAttribute("strokecolor",_509[j].series.color);
-c.setAttribute("fillcolor",_509[j].series.color);
+c.setAttribute("strokecolor",_50d[j].series.color);
+c.setAttribute("fillcolor",_50d[j].series.color);
 var str=document.createElement("v:stroke");
 str.setAttribute("opacity","0.8");
 c.appendChild(str);
@@ -10866,54 +10905,54 @@
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_4fd.appendChild(c);
-if(_4fa){
-_4fa(c,data[j].src);
+_501.appendChild(c);
+if(_4fe){
+_4fe(c,data[j].src);
 }
 }
 if(i==0){
 cmd.push("l");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4f7,plot)));
+cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4fb,plot)));
 cmd.push("l");
-cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x,_4f7,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4f7,plot)));
+cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x,_4fb,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_4fb,plot)));
 }else{
-var _509=data[i-1];
+var _50d=data[i-1];
 cmd.push("l");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(_509[_509.length-1].y,_4f7,plot)));
-for(var j=_509.length-2;j>=0;j--){
-var x=Math.round(plot.axisX.getCoord(_509[j].x,_4f7,plot));
-var y=Math.round(plot.axisY.getCoord(_509[j].y,_4f7,plot));
-var _50c=Math.round(plot.axisX.getCoord(_509[j+1].x,_4f7,plot));
-var _50d=Math.round(plot.axisY.getCoord(_509[j+1].y,_4f7,plot));
-var dx=x-_50c;
-var dy=y-_50d;
+cmd.push(x+","+Math.round(plot.axisY.getCoord(_50d[_50d.length-1].y,_4fb,plot)));
+for(var j=_50d.length-2;j>=0;j--){
+var x=Math.round(plot.axisX.getCoord(_50d[j].x,_4fb,plot));
+var y=Math.round(plot.axisY.getCoord(_50d[j].y,_4fb,plot));
+var _510=Math.round(plot.axisX.getCoord(_50d[j+1].x,_4fb,plot));
+var _511=Math.round(plot.axisY.getCoord(_50d[j+1].y,_4fb,plot));
+var dx=x-_510;
+var dy=y-_511;
 cmd.push("c");
-var cx=Math.round((x-(_4fb-1)*(dx/_4fb)));
-cmd.push(cx+","+_50d);
-cx=Math.round((x-(dx/_4fb)));
+var cx=Math.round((x-(_4ff-1)*(dx/_4ff)));
+cmd.push(cx+","+_511);
+cx=Math.round((x-(dx/_4ff)));
 cmd.push(cx+","+y);
 cmd.push(x+","+y);
 }
 }
 path.setAttribute("path",cmd.join(" ")+" x e");
-_4fd.appendChild(path);
+_501.appendChild(path);
 }
-return _4fd;
-},DataBar:function(data,_515,plot,_517){
-var area=_515.getArea();
-var _519=dojo.charting.Plotters._group(_515);
+return _501;
+},DataBar:function(data,_519,plot,_51b){
+var area=_519.getArea();
+var _51d=dojo.charting.Plotters._group(_519);
 var n=data.length;
 var w=(area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower);
-var _51c=plot.axisY.getCoord(plot.axisX.origin,_515,plot);
+var _520=plot.axisY.getCoord(plot.axisX.origin,_519,plot);
 for(var i=0;i<n;i++){
-var _51e=data[i].y;
-var yA=_51c;
-var x=plot.axisX.getCoord(data[i].x,_515,plot)-(w/2)+1;
-var y=plot.axisY.getCoord(_51e,_515,plot);
+var _522=data[i].y;
+var yA=_520;
+var x=plot.axisX.getCoord(data[i].x,_519,plot)-(w/2)+1;
+var y=plot.axisY.getCoord(_522,_519,plot);
 var h=Math.abs(yA-y);
-if(_51e<plot.axisX.origin){
+if(_522<plot.axisX.origin){
 yA=y;
-y=_51c;
+y=_520;
 }
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
@@ -10927,17 +10966,17 @@
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
 bar.appendChild(fill);
-if(_517){
-_517(bar,data[i].src);
+if(_51b){
+_51b(bar,data[i].src);
 }
-_519.appendChild(bar);
+_51d.appendChild(bar);
 }
-return _519;
-},Line:function(data,_526,plot,_528){
-var area=_526.getArea();
-var _52a=dojo.charting.Plotters._group(_526);
+return _51d;
+},Line:function(data,_52a,plot,_52c){
+var area=_52a.getArea();
+var _52e=dojo.charting.Plotters._group(_52a);
 if(data.length==0){
-return _52a;
+return _52e;
 }
 var path=document.createElement("v:shape");
 path.setAttribute("strokeweight","2px");
@@ -10950,14 +10989,14 @@
 path.style.left="0px";
 path.style.width=area.right-area.left+"px";
 path.style.height=area.bottom-area.top+"px";
-var _52c=document.createElement("v:stroke");
-_52c.setAttribute("opacity","0.8");
-path.appendChild(_52c);
+var _530=document.createElement("v:stroke");
+_530.setAttribute("opacity","0.8");
+path.appendChild(_530);
 var cmd=[];
 var r=3;
 for(var i=0;i<data.length;i++){
-var x=Math.round(plot.axisX.getCoord(data[i].x,_526,plot));
-var y=Math.round(plot.axisY.getCoord(data[i].y,_526,plot));
+var x=Math.round(plot.axisX.getCoord(data[i].x,_52a,plot));
+var y=Math.round(plot.axisY.getCoord(data[i].y,_52a,plot));
 if(i==0){
 cmd.push("m");
 cmd.push(x+","+y);
@@ -10981,20 +11020,20 @@
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_52a.appendChild(c);
-if(_528){
-_528(c,data[i].src);
+_52e.appendChild(c);
+if(_52c){
+_52c(c,data[i].src);
 }
 }
 path.setAttribute("path",cmd.join(" ")+" e");
-_52a.appendChild(path);
-return _52a;
-},CurvedLine:function(data,_536,plot,_538){
-var _539=3;
-var area=_536.getArea();
-var _53b=dojo.charting.Plotters._group(_536);
+_52e.appendChild(path);
+return _52e;
+},CurvedLine:function(data,_53a,plot,_53c){
+var _53d=3;
+var area=_53a.getArea();
+var _53f=dojo.charting.Plotters._group(_53a);
 if(data.length==0){
-return _53b;
+return _53f;
 }
 var path=document.createElement("v:shape");
 path.setAttribute("strokeweight","2px");
@@ -11007,26 +11046,26 @@
 path.style.left="0px";
 path.style.width=area.right-area.left+"px";
 path.style.height=area.bottom-area.top+"px";
-var _53d=document.createElement("v:stroke");
-_53d.setAttribute("opacity","0.8");
-path.appendChild(_53d);
+var _541=document.createElement("v:stroke");
+_541.setAttribute("opacity","0.8");
+path.appendChild(_541);
 var cmd=[];
 var r=3;
 for(var i=0;i<data.length;i++){
-var x=Math.round(plot.axisX.getCoord(data[i].x,_536,plot));
-var y=Math.round(plot.axisY.getCoord(data[i].y,_536,plot));
+var x=Math.round(plot.axisX.getCoord(data[i].x,_53a,plot));
+var y=Math.round(plot.axisY.getCoord(data[i].y,_53a,plot));
 if(i==0){
 cmd.push("m");
 cmd.push(x+","+y);
 }else{
-var _543=Math.round(plot.axisX.getCoord(data[i-1].x,_536,plot));
-var _544=Math.round(plot.axisY.getCoord(data[i-1].y,_536,plot));
-var dx=x-_543;
-var dy=y-_544;
+var _547=Math.round(plot.axisX.getCoord(data[i-1].x,_53a,plot));
+var _548=Math.round(plot.axisY.getCoord(data[i-1].y,_53a,plot));
+var dx=x-_547;
+var dy=y-_548;
 cmd.push("c");
-var cx=Math.round((x-(_539-1)*(dx/_539)));
-cmd.push(cx+","+_544);
-cx=Math.round((x-(dx/_539)));
+var cx=Math.round((x-(_53d-1)*(dx/_53d)));
+cmd.push(cx+","+_548);
+cx=Math.round((x-(dx/_53d)));
 cmd.push(cx+","+y);
 cmd.push(x+","+y);
 }
@@ -11046,19 +11085,19 @@
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_53b.appendChild(c);
-if(_538){
-_538(c,data[i].src);
+_53f.appendChild(c);
+if(_53c){
+_53c(c,data[i].src);
 }
 }
 path.setAttribute("path",cmd.join(" ")+" e");
-_53b.appendChild(path);
-return _53b;
-},Area:function(data,_54c,plot,_54e){
-var area=_54c.getArea();
-var _550=dojo.charting.Plotters._group(_54c);
+_53f.appendChild(path);
+return _53f;
+},Area:function(data,_550,plot,_552){
+var area=_550.getArea();
+var _554=dojo.charting.Plotters._group(_550);
 if(data.length==0){
-return _550;
+return _554;
 }
 var path=document.createElement("v:shape");
 path.setAttribute("strokeweight","1px");
@@ -11070,17 +11109,17 @@
 path.style.left="0px";
 path.style.width=area.right-area.left+"px";
 path.style.height=area.bottom-area.top+"px";
-var _552=document.createElement("v:stroke");
-_552.setAttribute("opacity","0.8");
-path.appendChild(_552);
+var _556=document.createElement("v:stroke");
+_556.setAttribute("opacity","0.8");
+path.appendChild(_556);
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.4");
 path.appendChild(fill);
 var cmd=[];
 var r=3;
 for(var i=0;i<data.length;i++){
-var x=Math.round(plot.axisX.getCoord(data[i].x,_54c,plot));
-var y=Math.round(plot.axisY.getCoord(data[i].y,_54c,plot));
+var x=Math.round(plot.axisX.getCoord(data[i].x,_550,plot));
+var y=Math.round(plot.axisY.getCoord(data[i].y,_550,plot));
 if(i==0){
 cmd.push("m");
 cmd.push(x+","+y);
@@ -11104,24 +11143,24 @@
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_550.appendChild(c);
-if(_54e){
-_54e(c,data[i].src);
+_554.appendChild(c);
+if(_552){
+_552(c,data[i].src);
 }
 }
 cmd.push("l");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_54c,plot)));
+cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_550,plot)));
 cmd.push("l");
-cmd.push(Math.round(plot.axisX.getCoord(data[0].x,_54c,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_54c,plot)));
+cmd.push(Math.round(plot.axisX.getCoord(data[0].x,_550,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_550,plot)));
 path.setAttribute("path",cmd.join(" ")+" x e");
-_550.appendChild(path);
-return _550;
-},CurvedArea:function(data,_55d,plot,_55f){
-var _560=3;
-var area=_55d.getArea();
-var _562=dojo.charting.Plotters._group(_55d);
+_554.appendChild(path);
+return _554;
+},CurvedArea:function(data,_561,plot,_563){
+var _564=3;
+var area=_561.getArea();
+var _566=dojo.charting.Plotters._group(_561);
 if(data.length==0){
-return _562;
+return _566;
 }
 var path=document.createElement("v:shape");
 path.setAttribute("strokeweight","1px");
@@ -11133,29 +11172,29 @@
 path.style.left="0px";
 path.style.width=area.right-area.left+"px";
 path.style.height=area.bottom-area.top+"px";
-var _564=document.createElement("v:stroke");
-_564.setAttribute("opacity","0.8");
-path.appendChild(_564);
+var _568=document.createElement("v:stroke");
+_568.setAttribute("opacity","0.8");
+path.appendChild(_568);
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.4");
 path.appendChild(fill);
 var cmd=[];
 var r=3;
 for(var i=0;i<data.length;i++){
-var x=Math.round(plot.axisX.getCoord(data[i].x,_55d,plot));
-var y=Math.round(plot.axisY.getCoord(data[i].y,_55d,plot));
+var x=Math.round(plot.axisX.getCoord(data[i].x,_561,plot));
+var y=Math.round(plot.axisY.getCoord(data[i].y,_561,plot));
 if(i==0){
 cmd.push("m");
 cmd.push(x+","+y);
 }else{
-var _56b=Math.round(plot.axisX.getCoord(data[i-1].x,_55d,plot));
-var _56c=Math.round(plot.axisY.getCoord(data[i-1].y,_55d,plot));
-var dx=x-_56b;
-var dy=y-_56c;
+var _56f=Math.round(plot.axisX.getCoord(data[i-1].x,_561,plot));
+var _570=Math.round(plot.axisY.getCoord(data[i-1].y,_561,plot));
+var dx=x-_56f;
+var dy=y-_570;
 cmd.push("c");
-var cx=Math.round((x-(_560-1)*(dx/_560)));
-cmd.push(cx+","+_56c);
-cx=Math.round((x-(dx/_560)));
+var cx=Math.round((x-(_564-1)*(dx/_564)));
+cmd.push(cx+","+_570);
+cx=Math.round((x-(dx/_564)));
 cmd.push(cx+","+y);
 cmd.push(x+","+y);
 }
@@ -11175,21 +11214,21 @@
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_562.appendChild(c);
-if(_55f){
-_55f(c,data[i].src);
+_566.appendChild(c);
+if(_563){
+_563(c,data[i].src);
 }
 }
 cmd.push("l");
-cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_55d,plot)));
+cmd.push(x+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_561,plot)));
 cmd.push("l");
-cmd.push(Math.round(plot.axisX.getCoord(data[0].x,_55d,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_55d,plot)));
+cmd.push(Math.round(plot.axisX.getCoord(data[0].x,_561,plot))+","+Math.round(plot.axisY.getCoord(plot.axisX.origin,_561,plot)));
 path.setAttribute("path",cmd.join(" ")+" x e");
-_562.appendChild(path);
-return _562;
-},HighLow:function(data,_574,plot,_576){
-var area=_574.getArea();
-var _578=dojo.charting.Plotters._group(_574);
+_566.appendChild(path);
+return _566;
+},HighLow:function(data,_578,plot,_57a){
+var area=_578.getArea();
+var _57c=dojo.charting.Plotters._group(_578);
 var n=data.length;
 var part=((area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower))/4;
 var w=part*2;
@@ -11201,9 +11240,9 @@
 low=high;
 high=t;
 }
-var x=plot.axisX.getCoord(data[i].x,_574,plot)-(w/2);
-var y=plot.axisY.getCoord(high,_574,plot);
-var h=plot.axisY.getCoord(low,_574,plot)-y;
+var x=plot.axisX.getCoord(data[i].x,_578,plot)-(w/2);
+var y=plot.axisY.getCoord(high,_578,plot);
+var h=plot.axisY.getCoord(low,_578,plot)-y;
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
 bar.style.top=y+1+"px";
@@ -11216,15 +11255,15 @@
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
 bar.appendChild(fill);
-if(_576){
-_576(bar,data[i].src);
+if(_57a){
+_57a(bar,data[i].src);
 }
-_578.appendChild(bar);
+_57c.appendChild(bar);
 }
-return _578;
-},HighLowClose:function(data,_586,plot,_588){
-var area=_586.getArea();
-var _58a=dojo.charting.Plotters._group(_586);
+return _57c;
+},HighLowClose:function(data,_58a,plot,_58c){
+var area=_58a.getArea();
+var _58e=dojo.charting.Plotters._group(_58a);
 var n=data.length;
 var part=((area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower))/4;
 var w=part*2;
@@ -11237,10 +11276,10 @@
 high=t;
 }
 var c=data[i].close;
-var x=plot.axisX.getCoord(data[i].x,_586,plot)-(w/2);
-var y=plot.axisY.getCoord(high,_586,plot);
-var h=plot.axisY.getCoord(low,_586,plot)-y;
-var _596=plot.axisY.getCoord(c,_586,plot);
+var x=plot.axisX.getCoord(data[i].x,_58a,plot)-(w/2);
+var y=plot.axisY.getCoord(high,_58a,plot);
+var h=plot.axisY.getCoord(low,_58a,plot)-y;
+var _59a=plot.axisY.getCoord(c,_58a,plot);
 var g=document.createElement("div");
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
@@ -11258,8 +11297,8 @@
 var line=document.createElement("v:line");
 line.setAttribute("strokecolor",data[i].series.color);
 line.setAttribute("strokeweight","1px");
-line.setAttribute("from",x+"px,"+_596+"px");
-line.setAttribute("to",(x+w+(part*2)-2)+"px,"+_596+"px");
+line.setAttribute("from",x+"px,"+_59a+"px");
+line.setAttribute("to",(x+w+(part*2)-2)+"px,"+_59a+"px");
 var s=line.style;
 s.position="absolute";
 s.top="0px";
@@ -11269,15 +11308,15 @@
 str.setAttribute("opacity","0.6");
 line.appendChild(str);
 g.appendChild(line);
-if(_588){
-_588(g,data[i].src);
+if(_58c){
+_58c(g,data[i].src);
 }
-_58a.appendChild(g);
+_58e.appendChild(g);
 }
-return _58a;
-},HighLowOpenClose:function(data,_59e,plot,_5a0){
-var area=_59e.getArea();
-var _5a2=dojo.charting.Plotters._group(_59e);
+return _58e;
+},HighLowOpenClose:function(data,_5a2,plot,_5a4){
+var area=_5a2.getArea();
+var _5a6=dojo.charting.Plotters._group(_5a2);
 var n=data.length;
 var part=((area.right-area.left)/(plot.axisX.range.upper-plot.axisX.range.lower))/4;
 var w=part*2;
@@ -11291,11 +11330,11 @@
 }
 var o=data[i].open;
 var c=data[i].close;
-var x=plot.axisX.getCoord(data[i].x,_59e,plot)-(w/2);
-var y=plot.axisY.getCoord(high,_59e,plot);
-var h=plot.axisY.getCoord(low,_59e,plot)-y;
-var open=plot.axisY.getCoord(o,_59e,plot);
-var _5b0=plot.axisY.getCoord(c,_59e,plot);
+var x=plot.axisX.getCoord(data[i].x,_5a2,plot)-(w/2);
+var y=plot.axisY.getCoord(high,_5a2,plot);
+var h=plot.axisY.getCoord(low,_5a2,plot)-y;
+var open=plot.axisY.getCoord(o,_5a2,plot);
+var _5b4=plot.axisY.getCoord(c,_5a2,plot);
 var g=document.createElement("div");
 var bar=document.createElement("v:rect");
 bar.style.position="absolute";
@@ -11327,8 +11366,8 @@
 var line=document.createElement("v:line");
 line.setAttribute("strokecolor",data[i].series.color);
 line.setAttribute("strokeweight","1px");
-line.setAttribute("from",x+"px,"+_5b0+"px");
-line.setAttribute("to",(x+w+(part*2)-2)+"px,"+_5b0+"px");
+line.setAttribute("from",x+"px,"+_5b4+"px");
+line.setAttribute("to",(x+w+(part*2)-2)+"px,"+_5b4+"px");
 var s=line.style;
 s.position="absolute";
 s.top="0px";
@@ -11338,80 +11377,80 @@
 str.setAttribute("opacity","0.6");
 line.appendChild(str);
 g.appendChild(line);
-if(_5a0){
-_5a0(g,data[i].src);
+if(_5a4){
+_5a4(g,data[i].src);
 }
-_5a2.appendChild(g);
+_5a6.appendChild(g);
 }
-return _5a2;
-},Scatter:function(data,_5b8,plot,_5ba){
+return _5a6;
+},Scatter:function(data,_5bc,plot,_5be){
 var r=6;
 var mod=r/2;
-var area=_5b8.getArea();
-var _5be=dojo.charting.Plotters._group(_5b8);
+var area=_5bc.getArea();
+var _5c2=dojo.charting.Plotters._group(_5bc);
 for(var i=0;i<data.length;i++){
-var x=Math.round(plot.axisX.getCoord(data[i].x,_5b8,plot));
-var y=Math.round(plot.axisY.getCoord(data[i].y,_5b8,plot));
-var _5c2=document.createElement("v:rect");
-_5c2.setAttribute("strokecolor",data[i].series.color);
-_5c2.setAttribute("fillcolor",data[i].series.color);
+var x=Math.round(plot.axisX.getCoord(data[i].x,_5bc,plot));
+var y=Math.round(plot.axisY.getCoord(data[i].y,_5bc,plot));
+var _5c6=document.createElement("v:rect");
+_5c6.setAttribute("strokecolor",data[i].series.color);
+_5c6.setAttribute("fillcolor",data[i].series.color);
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
-_5c2.appendChild(fill);
-var s=_5c2.style;
+_5c6.appendChild(fill);
+var s=_5c6.style;
 s.position="absolute";
 s.rotation="45";
 s.top=(y-mod)+"px";
 s.left=(x-mod)+"px";
 s.width=r+"px";
 s.height=r+"px";
-_5be.appendChild(_5c2);
-if(_5ba){
-_5ba(_5c2,data[i].src);
+_5c2.appendChild(_5c6);
+if(_5be){
+_5be(_5c6,data[i].src);
 }
 }
-return _5be;
-},Bubble:function(data,_5c6,plot,_5c8){
-var _5c9=1;
-var area=_5c6.getArea();
-var _5cb=dojo.charting.Plotters._group(_5c6);
+return _5c2;
+},Bubble:function(data,_5ca,plot,_5cc){
+var _5cd=1;
+var area=_5ca.getArea();
+var _5cf=dojo.charting.Plotters._group(_5ca);
 for(var i=0;i<data.length;i++){
-var x=Math.round(plot.axisX.getCoord(data[i].x,_5c6,plot));
-var y=Math.round(plot.axisY.getCoord(data[i].y,_5c6,plot));
+var x=Math.round(plot.axisX.getCoord(data[i].x,_5ca,plot));
+var y=Math.round(plot.axisY.getCoord(data[i].y,_5ca,plot));
 if(i==0){
 var raw=data[i].size;
-var dy=plot.axisY.getCoord(data[i].y+raw,_5c6,plot)-y;
-_5c9=dy/raw;
+var dy=plot.axisY.getCoord(data[i].y+raw,_5ca,plot)-y;
+_5cd=dy/raw;
 }
-if(_5c9<1){
-_5c9=1;
+if(_5cd<1){
+_5cd=1;
 }
-var r=(data[i].size/2)*_5c9;
-var _5d2=document.createElement("v:oval");
-_5d2.setAttribute("strokecolor",data[i].series.color);
-_5d2.setAttribute("fillcolor",data[i].series.color);
+var r=(data[i].size/2)*_5cd;
+var _5d6=document.createElement("v:oval");
+_5d6.setAttribute("strokecolor",data[i].series.color);
+_5d6.setAttribute("fillcolor",data[i].series.color);
 var fill=document.createElement("v:fill");
 fill.setAttribute("opacity","0.6");
-_5d2.appendChild(fill);
-var s=_5d2.style;
+_5d6.appendChild(fill);
+var s=_5d6.style;
 s.position="absolute";
 s.rotation="45";
 s.top=(y-r)+"px";
 s.left=(x-r)+"px";
 s.width=(r*2)+"px";
 s.height=(r*2)+"px";
-_5cb.appendChild(_5d2);
-if(_5c8){
-_5c8(_5d2,data[i].src);
+_5cf.appendChild(_5d6);
+if(_5cc){
+_5cc(_5d6,data[i].src);
 }
 }
-return _5cb;
+return _5cf;
 }});
 dojo.charting.Plotters["Default"]=dojo.charting.Plotters.Line;
 }
 dojo.provide("dojo.charting.Series");
-dojo.charting.Series=function(_5d5){
-var args=_5d5||{length:1};
+dojo.charting.Series=function(_5d9){
+var args=_5d9||{length:1};
 this.dataSource=args.dataSource||null;
 this.bindings={};
 this.color=args.color;
@@ -11422,22 +11461,22 @@
 }
 }
 };
-dojo.extend(dojo.charting.Series,{bind:function(src,_5d9){
+dojo.extend(dojo.charting.Series,{bind:function(src,_5dd){
 this.dataSource=src;
-this.bindings=_5d9;
-},addBinding:function(name,_5db){
-this.bindings[name]=_5db;
-},evaluate:function(_5dc){
+this.bindings=_5dd;
+},addBinding:function(name,_5df){
+this.bindings[name]=_5df;
+},evaluate:function(_5e0){
 var ret=[];
 var a=this.dataSource.getData();
 var l=a.length;
-var _5e0=0;
+var _5e4=0;
 var end=l;
-if(_5dc){
-if(_5dc.between){
+if(_5e0){
+if(_5e0.between){
 for(var i=0;i<l;i++){
-var fld=this.dataSource.getField(a[i],_5dc.between.field);
-if(fld>=_5dc.between.low&&fld<=_5dc.between.high){
+var fld=this.dataSource.getField(a[i],_5e0.between.field);
+if(fld>=_5e0.between.low&&fld<=_5e0.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]);
@@ -11446,20 +11485,20 @@
 }
 }
 }else{
-if(_5dc.from||_5dc.length){
-if(_5dc.from){
-_5e0=Math.max(_5dc.from,0);
-if(_5dc.to){
-end=Math.min(_5dc.to,end);
+if(_5e0.from||_5e0.length){
+if(_5e0.from){
+_5e4=Math.max(_5e0.from,0);
+if(_5e0.to){
+end=Math.min(_5e0.to,end);
 }
 }else{
-if(_5dc.length<0){
-_5e0=Math.max((end+length),0);
+if(_5e0.length<0){
+_5e4=Math.max((end+length),0);
 }else{
-end=Math.min((_5e0+length),end);
+end=Math.min((_5e4+length),end);
 }
 }
-for(var i=_5e0;i<end;i++){
+for(var i=_5e4;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]);
@@ -11469,7 +11508,7 @@
 }
 }
 }else{
-for(var i=_5e0;i<end;i++){
+for(var i=_5e4;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]);
@@ -11489,75 +11528,75 @@
 });
 }
 return ret;
-},trends:{createRange:function(_5e8,len){
-var idx=_5e8.length-1;
-var _5eb=(len||_5e8.length);
-return {"index":idx,"length":_5eb,"start":Math.max(idx-_5eb,0)};
-},mean:function(_5ec,len){
-var _5ee=this.createRange(_5ec,len);
-if(_5ee.index<0){
+},trends:{createRange:function(_5ec,len){
+var idx=_5ec.length-1;
+var _5ef=(len||_5ec.length);
+return {"index":idx,"length":_5ef,"start":Math.max(idx-_5ef,0)};
+},mean:function(_5f0,len){
+var _5f2=this.createRange(_5f0,len);
+if(_5f2.index<0){
 return 0;
 }
-var _5ef=0;
-var _5f0=0;
-for(var i=_5ee.index;i>=_5ee.start;i--){
-_5ef+=_5ec[i].y;
-_5f0++;
+var _5f3=0;
+var _5f4=0;
+for(var i=_5f2.index;i>=_5f2.start;i--){
+_5f3+=_5f0[i].y;
+_5f4++;
 }
-_5ef/=Math.max(_5f0,1);
-return _5ef;
-},variance:function(_5f2,len){
-var _5f4=this.createRange(_5f2,len);
-if(_5f4.index<0){
+_5f3/=Math.max(_5f4,1);
+return _5f3;
+},variance:function(_5f6,len){
+var _5f8=this.createRange(_5f6,len);
+if(_5f8.index<0){
 return 0;
 }
-var _5f5=0;
-var _5f6=0;
-var _5f7=0;
-for(var i=_5f4.index;i>=_5f4.start;i--){
-_5f5+=_5f2[i].y;
-_5f6+=Math.pow(_5f2[i].y,2);
-_5f7++;
+var _5f9=0;
+var _5fa=0;
+var _5fb=0;
+for(var i=_5f8.index;i>=_5f8.start;i--){
+_5f9+=_5f6[i].y;
+_5fa+=Math.pow(_5f6[i].y,2);
+_5fb++;
 }
-return (_5f6/_5f7)-Math.pow(_5f5/_5f7,2);
-},standardDeviation:function(_5f9,len){
-return Math.sqrt(this.getVariance(_5f9,len));
-},max:function(_5fb,len){
-var _5fd=this.createRange(_5fb,len);
-if(_5fd.index<0){
+return (_5fa/_5fb)-Math.pow(_5f9/_5fb,2);
+},standardDeviation:function(_5fd,len){
+return Math.sqrt(this.getVariance(_5fd,len));
+},max:function(_5ff,len){
+var _601=this.createRange(_5ff,len);
+if(_601.index<0){
 return 0;
 }
 var max=Number.MIN_VALUE;
-for(var i=_5fd.index;i>=_5fd.start;i--){
-max=Math.max(_5fb[i].y,max);
+for(var i=_601.index;i>=_601.start;i--){
+max=Math.max(_5ff[i].y,max);
 }
 return max;
-},min:function(_600,len){
-var _602=this.createRange(_600,len);
-if(_602.index<0){
+},min:function(_604,len){
+var _606=this.createRange(_604,len);
+if(_606.index<0){
 return 0;
 }
 var min=Number.MAX_VALUE;
-for(var i=_602.index;i>=_602.start;i--){
-min=Math.min(_600[i].y,min);
+for(var i=_606.index;i>=_606.start;i--){
+min=Math.min(_604[i].y,min);
 }
 return min;
-},median:function(_605,len){
-var _607=this.createRange(_605,len);
-if(_607.index<0){
+},median:function(_609,len){
+var _60b=this.createRange(_609,len);
+if(_60b.index<0){
 return 0;
 }
 var a=[];
-for(var i=_607.index;i>=_607.start;i--){
+for(var i=_60b.index;i>=_60b.start;i--){
 var b=false;
 for(var j=0;j<a.length;j++){
-if(_605[i].y==a[j]){
+if(_609[i].y==a[j]){
 b=true;
 break;
 }
 }
 if(!b){
-a.push(_605[i].y);
+a.push(_609[i].y);
 }
 }
 a.sort();
@@ -11565,24 +11604,24 @@
 return a[Math.ceil(a.length/2)];
 }
 return 0;
-},mode:function(_60c,len){
-var _60e=this.createRange(_60c,len);
-if(_60e.index<0){
+},mode:function(_610,len){
+var _612=this.createRange(_610,len);
+if(_612.index<0){
 return 0;
 }
 var o={};
 var ret=0;
-var _611=Number.MIN_VALUE;
-for(var i=_60e.index;i>=_60e.start;i--){
-if(!o[_60c[i].y]){
-o[_60c[i].y]=1;
+var _615=Number.MIN_VALUE;
+for(var i=_612.index;i>=_612.start;i--){
+if(!o[_610[i].y]){
+o[_610[i].y]=1;
 }else{
-o[_60c[i].y]++;
+o[_610[i].y]++;
 }
 }
 for(var p in o){
-if(_611<o[p]){
-_611=o[p];
+if(_615<o[p]){
+_615=o[p];
 ret=p;
 }
 }
@@ -11590,7 +11629,7 @@
 }}});
 dojo.provide("dojo.charting.Plot");
 dojo.charting.RenderPlotSeries={Singly:"single",Grouped:"grouped"};
-dojo.charting.Plot=function(_614,_615,_616){
+dojo.charting.Plot=function(_618,_619,_61a){
 var id="dojo-charting-plot-"+dojo.charting.Plot.count++;
 this.getId=function(){
 return id;
@@ -11603,30 +11642,30 @@
 this.series=[];
 this.dataNode=null;
 this.renderType=dojo.charting.RenderPlotSeries.Singly;
-if(_614){
-this.setAxis(_614,"x");
+if(_618){
+this.setAxis(_618,"x");
 }
-if(_615){
-this.setAxis(_615,"y");
+if(_619){
+this.setAxis(_619,"y");
 }
-if(_616){
-for(var i=0;i<_616.length;i++){
-this.addSeries(_616[i]);
+if(_61a){
+for(var i=0;i<_61a.length;i++){
+this.addSeries(_61a[i]);
 }
 }
 };
 dojo.charting.Plot.count=0;
-dojo.extend(dojo.charting.Plot,{addSeries:function(_61a,_61b){
-if(_61a.plotter){
-this.series.push(_61a);
+dojo.extend(dojo.charting.Plot,{addSeries:function(_61e,_61f){
+if(_61e.plotter){
+this.series.push(_61e);
 }else{
-this.series.push({data:_61a,plotter:_61b||dojo.charting.Plotters["Default"]});
+this.series.push({data:_61e,plotter:_61f||dojo.charting.Plotters["Default"]});
 }
-},setAxis:function(axis,_61d){
-if(_61d.toLowerCase()=="x"){
+},setAxis:function(axis,_621){
+if(_621.toLowerCase()=="x"){
 this.axisX=axis;
 }else{
-if(_61d.toLowerCase()=="y"){
+if(_621.toLowerCase()=="y"){
 this.axisY=axis;
 }
 }
@@ -11635,9 +11674,9 @@
 xmin=ymin=Number.MAX_VALUE;
 xmax=ymax=Number.MIN_VALUE;
 for(var i=0;i<this.series.length;i++){
-var _623=this.series[i].data.evaluate();
-for(var j=0;j<_623.length;j++){
-var comp=_623[j];
+var _627=this.series[i].data.evaluate();
+for(var j=0;j<_627.length;j++){
+var comp=_627[j];
 xmin=Math.min(comp.x,xmin);
 ymin=Math.min(comp.y,ymin);
 xmax=Math.max(comp.x,xmax);
@@ -11701,33 +11740,33 @@
 }
 return a;
 },setAxesRanges:function(){
-var _632={};
+var _636={};
 var axes={};
 for(var i=0;i<this.plots.length;i++){
 var plot=this.plots[i];
-var _632=plot.getRanges();
-var x=_632.x;
-var y=_632.y;
+var _636=plot.getRanges();
+var x=_636.x;
+var y=_636.y;
 var ax,ay;
 if(!axes[plot.axisX.getId()]){
 axes[plot.axisX.getId()]=plot.axisX;
-_632[plot.axisX.getId()]={upper:x.upper,lower:x.lower};
+_636[plot.axisX.getId()]={upper:x.upper,lower:x.lower};
 }
-ax=_632[plot.axisX.getId()];
+ax=_636[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;
-_632[plot.axisY.getId()]={upper:y.upper,lower:y.lower};
+_636[plot.axisY.getId()]={upper:y.upper,lower:y.lower};
 }
-ay=_632[plot.axisY.getId()];
+ay=_636[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=_632[p];
+axes[p].range=_636[p];
 }
-},render:function(_63b,_63c){
+},render:function(_63f,_640){
 if(!this.nodes.main||!this.nodes.area||!this.nodes.background||!this.nodes.plots||!this.nodes.axes){
 this.initialize();
 }
@@ -11737,22 +11776,22 @@
 if(plot.dataNode){
 this.nodes.plots.removeChild(plot.dataNode);
 }
-var _63f=this.initializePlot(plot);
+var _643=this.initializePlot(plot);
 switch(plot.renderType){
 case dojo.charting.RenderPlotSeries.Grouped:
 if(plot.series[0]){
-_63f.appendChild(plot.series[0].plotter(this,plot,_63b,_63c));
+_643.appendChild(plot.series[0].plotter(this,plot,_63f,_640));
 }
 break;
 case dojo.charting.RenderPlotSeries.Singly:
 default:
 for(var j=0;j<plot.series.length;j++){
-var _641=plot.series[j];
-var data=_641.data.evaluate(_63b);
-_63f.appendChild(_641.plotter(data,this,plot,_63c));
+var _645=plot.series[j];
+var data=_645.data.evaluate(_63f);
+_643.appendChild(_645.plotter(data,this,plot,_640));
 }
 }
-this.nodes.plots.appendChild(_63f);
+this.nodes.plots.appendChild(_643);
 }
 },destroy:function(){
 for(var i=0;i<this.plots.length;i++){
@@ -11772,8 +11811,6 @@
 this.nodes[p]=null;
 }
 }});
-dojo.requireIf(dojo.render.svg.capable,"dojo.charting.svg.PlotArea");
-dojo.requireIf(dojo.render.vml.capable,"dojo.charting.vml.PlotArea");
 dojo.provide("dojo.charting.svg.PlotArea");
 if(dojo.render.svg.capable){
 dojo.extend(dojo.charting.PlotArea,{resize:function(){
@@ -11878,27 +11915,27 @@
 bg.style.backgroundColor="#fff";
 area.appendChild(bg);
 var a=this.getArea();
-var _65a=this.nodes.plots=document.createElement("div");
-_65a.id=this.getId()+"-plots";
-_65a.style.position="absolute";
-_65a.style.top="0px";
-_65a.style.left="0px";
-area.appendChild(_65a);
+var _65e=this.nodes.plots=document.createElement("div");
+_65e.id=this.getId()+"-plots";
+_65e.style.position="absolute";
+_65e.style.top="0px";
+_65e.style.left="0px";
+area.appendChild(_65e);
 for(var i=0;i<this.plots.length;i++){
-_65a.appendChild(this.initializePlot(this.plots[i]));
+_65e.appendChild(this.initializePlot(this.plots[i]));
 }
 this.resize();
 return main;
 }});
 }
 dojo.provide("dojo.charting.Chart");
-dojo.charting.Chart=function(node,_65d,_65e){
+dojo.charting.Chart=function(node,_661,_662){
 this.node=node||null;
-this.title=_65d||"Chart";
-this.description=_65e||"";
+this.title=_661||"Chart";
+this.description=_662||"";
 this.plotAreas=[];
 };
-dojo.extend(dojo.charting.Chart,{addPlotArea:function(obj,_660){
+dojo.extend(dojo.charting.Chart,{addPlotArea:function(obj,_664){
 if(obj.x!=null&&obj.left==null){
 obj.left=obj.x;
 }
@@ -11906,12 +11943,12 @@
 obj.top=obj.y;
 }
 this.plotAreas.push(obj);
-if(_660){
+if(_664){
 this.render();
 }
-},onInitialize:function(_661){
-},onRender:function(_662){
-},onDestroy:function(_663){
+},onInitialize:function(_665){
+},onRender:function(_666){
+},onDestroy:function(_667){
 },initialize:function(){
 if(!this.node){
 dojo.raise("dojo.charting.Chart.initialize: there must be a root node defined for the Chart.");
@@ -11944,6 +11981,8 @@
 
 __CPAN_EDITION__ charting build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -11974,5970 +12013,7 @@
 ../src/charting/svg/PlotArea.js
 ../src/charting/vml/PlotArea.js
 ../src/charting/Chart.js
-__CPAN_EDITION__ core dojo.js
-/*
-	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
-*/
-
-/*
-	This is a compiled version of Dojo, built for deployment and not for
-	development. To get an editable version, please visit:
-
-		http://dojotoolkit.org
-
-	for documentation and information on getting the source.
-*/
-
-if(typeof dojo=="undefined"){
-var dj_global=this;
-var dj_currentContext=this;
-function dj_undef(_1,_2){
-return (typeof (_2||dj_currentContext)[_1]=="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:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
-with(dojo.version){
-return major+"."+minor+"."+patch+flag+" ("+revision+")";
-}
-}};
-dojo.evalProp=function(_3,_4,_5){
-if((!_4)||(!_3)){
-return undefined;
-}
-if(!dj_undef(_3,_4)){
-return _4[_3];
-}
-return (_5?(_4[_3]={}):undefined);
-};
-dojo.parseObjPath=function(_6,_7,_8){
-var _9=(_7||dojo.global());
-var _a=_6.split(".");
-var _b=_a.pop();
-for(var i=0,l=_a.length;i<l&&_9;i++){
-_9=dojo.evalProp(_a[i],_9,_8);
-}
-return {obj:_9,prop:_b};
-};
-dojo.evalObjPath=function(_e,_f){
-if(typeof _e!="string"){
-return dojo.global();
-}
-if(_e.indexOf(".")==-1){
-return dojo.evalProp(_e,dojo.global(),_f);
-}
-var ref=dojo.parseObjPath(_e,dojo.global(),_f);
-if(ref){
-return dojo.evalProp(ref.prop,ref.obj,_f);
-}
-return null;
-};
-dojo.errorToString=function(_11){
-if(!dj_undef("message",_11)){
-return _11.message;
-}else{
-if(!dj_undef("description",_11)){
-return _11.description;
-}else{
-return _11;
-}
-}
-};
-dojo.raise=function(_12,_13){
-if(_13){
-_12=_12+": "+dojo.errorToString(_13);
-}else{
-_12=dojo.errorToString(_12);
-}
-try{
-if(djConfig.isDebug){
-dojo.hostenv.println("FATAL exception raised: "+_12);
-}
-}
-catch(e){
-}
-throw _13||Error(_12);
-};
-dojo.debug=function(){
-};
-dojo.debugShallow=function(obj){
-};
-dojo.profile={start:function(){
-},end:function(){
-},stop:function(){
-},dump:function(){
-}};
-function dj_eval(_15){
-return dj_global.eval?dj_global.eval(_15):eval(_15);
-}
-dojo.unimplemented=function(_16,_17){
-var _18="'"+_16+"' not implemented";
-if(_17!=null){
-_18+=" "+_17;
-}
-dojo.raise(_18);
-};
-dojo.deprecated=function(_19,_1a,_1b){
-var _1c="DEPRECATED: "+_19;
-if(_1a){
-_1c+=" "+_1a;
-}
-if(_1b){
-_1c+=" -- will be removed in version: "+_1b;
-}
-dojo.debug(_1c);
-};
-dojo.render=(function(){
-function vscaffold(_1d,_1e){
-var tmp={capable:false,support:{builtin:false,plugin:false},prefixes:_1d};
-for(var i=0;i<_1e.length;i++){
-tmp[_1e[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 _21={isDebug:false,allowQueryConfig:false,baseScriptUri:"",baseRelativePath:"",libraryScriptUri:"",iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,delayMozLoadingFix:false,searchIds:[],parseWidgets:true};
-if(typeof djConfig=="undefined"){
-djConfig=_21;
-}else{
-for(var _22 in _21){
-if(typeof djConfig[_22]=="undefined"){
-djConfig[_22]=_21[_22];
-}
-}
-}
-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 _25=uri.lastIndexOf("/");
-djConfig.baseScriptUri=djConfig.baseRelativePath;
-return djConfig.baseScriptUri;
-};
-(function(){
-var _26={pkgFileName:"__package__",loading_modules_:{},loaded_modules_:{},addedToLoadingCount:[],removedFromLoadingCount:[],inFlightCount:0,modulePrefixes_:{dojo:{name:"dojo",value:"src"}},setModulePrefix:function(_27,_28){
-this.modulePrefixes_[_27]={name:_27,value:_28};
-},moduleHasPrefix:function(_29){
-var mp=this.modulePrefixes_;
-return Boolean(mp[_29]&&mp[_29].value);
-},getModulePrefix:function(_2b){
-if(this.moduleHasPrefix(_2b)){
-return this.modulePrefixes_[_2b].value;
-}
-return _2b;
-},getTextStack:[],loadUriStack:[],loadedUris:[],post_load_:false,modulesLoadedListeners:[],unloadListeners:[],loadNotifying:false};
-for(var _2c in _26){
-dojo.hostenv[_2c]=_26[_2c];
-}
-})();
-dojo.hostenv.loadPath=function(_2d,_2e,cb){
-var uri;
-if(_2d.charAt(0)=="/"||_2d.match(/^\w+:/)){
-uri=_2d;
-}else{
-uri=this.getBaseScriptUri()+_2d;
-}
-if(djConfig.cacheBust&&dojo.render.html.capable){
-uri+="?"+String(djConfig.cacheBust).replace(/\W+/g,"");
-}
-try{
-return !_2e?this.loadUri(uri,cb):this.loadUriAndCheck(uri,_2e,cb);
-}
-catch(e){
-dojo.debug(e);
-return false;
-}
-};
-dojo.hostenv.loadUri=function(uri,cb){
-if(this.loadedUris[uri]){
-return true;
-}
-var _33=this.getText(uri,null,true);
-if(!_33){
-return false;
-}
-this.loadedUris[uri]=true;
-if(cb){
-_33="("+_33+")";
-}
-var _34=dj_eval(_33);
-if(cb){
-cb(_34);
-}
-return true;
-};
-dojo.hostenv.loadUriAndCheck=function(uri,_36,cb){
-var ok=true;
-try{
-ok=this.loadUri(uri,cb);
-}
-catch(e){
-dojo.debug("failed loading ",uri," with error: ",e);
-}
-return Boolean(ok&&this.findModule(_36,false));
-};
-dojo.loaded=function(){
-};
-dojo.unloaded=function(){
-};
-dojo.hostenv.loaded=function(){
-this.loadNotifying=true;
-this.post_load_=true;
-var mll=this.modulesLoadedListeners;
-for(var x=0;x<mll.length;x++){
-mll[x]();
-}
-this.modulesLoadedListeners=[];
-this.loadNotifying=false;
-dojo.loaded();
-};
-dojo.hostenv.unloaded=function(){
-var mll=this.unloadListeners;
-while(mll.length){
-(mll.pop())();
-}
-dojo.unloaded();
-};
-dojo.addOnLoad=function(obj,_3d){
-var dh=dojo.hostenv;
-if(arguments.length==1){
-dh.modulesLoadedListeners.push(obj);
-}else{
-if(arguments.length>1){
-dh.modulesLoadedListeners.push(function(){
-obj[_3d]();
-});
-}
-}
-if(dh.post_load_&&dh.inFlightCount==0&&!dh.loadNotifying){
-dh.callLoaded();
-}
-};
-dojo.addOnUnload=function(obj,_40){
-var dh=dojo.hostenv;
-if(arguments.length==1){
-dh.unloadListeners.push(obj);
-}else{
-if(arguments.length>1){
-dh.unloadListeners.push(function(){
-obj[_40]();
-});
-}
-}
-};
-dojo.hostenv.modulesLoaded=function(){
-if(this.post_load_){
-return;
-}
-if(this.loadUriStack.length==0&&this.getTextStack.length==0){
-if(this.inFlightCount>0){
-dojo.debug("files still in flight!");
-return;
-}
-dojo.hostenv.callLoaded();
-}
-};
-dojo.hostenv.callLoaded=function(){
-if(typeof setTimeout=="object"||(djConfig["useXDomain"]&&dojo.render.html.opera)){
-setTimeout("dojo.hostenv.loaded();",0);
-}else{
-dojo.hostenv.loaded();
-}
-};
-dojo.hostenv.getModuleSymbols=function(_42){
-var _43=_42.split(".");
-for(var i=_43.length;i>0;i--){
-var _45=_43.slice(0,i).join(".");
-if((i==1)&&!this.moduleHasPrefix(_45)){
-_43[0]="../"+_43[0];
-}else{
-var _46=this.getModulePrefix(_45);
-if(_46!=_45){
-_43.splice(0,i,_46);
-break;
-}
-}
-}
-return _43;
-};
-dojo.hostenv._global_omit_module_check=false;
-dojo.hostenv.loadModule=function(_47,_48,_49){
-if(!_47){
-return;
-}
-_49=this._global_omit_module_check||_49;
-var _4a=this.findModule(_47,false);
-if(_4a){
-return _4a;
-}
-if(dj_undef(_47,this.loading_modules_)){
-this.addedToLoadingCount.push(_47);
-}
-this.loading_modules_[_47]=1;
-var _4b=_47.replace(/\./g,"/")+".js";
-var _4c=_47.split(".");
-var _4d=this.getModuleSymbols(_47);
-var _4e=((_4d[0].charAt(0)!="/")&&!_4d[0].match(/^\w+:/));
-var _4f=_4d[_4d.length-1];
-var ok;
-if(_4f=="*"){
-_47=_4c.slice(0,-1).join(".");
-while(_4d.length){
-_4d.pop();
-_4d.push(this.pkgFileName);
-_4b=_4d.join("/")+".js";
-if(_4e&&_4b.charAt(0)=="/"){
-_4b=_4b.slice(1);
-}
-ok=this.loadPath(_4b,!_49?_47:null);
-if(ok){
-break;
-}
-_4d.pop();
-}
-}else{
-_4b=_4d.join("/")+".js";
-_47=_4c.join(".");
-var _51=!_49?_47:null;
-ok=this.loadPath(_4b,_51);
-if(!ok&&!_48){
-_4d.pop();
-while(_4d.length){
-_4b=_4d.join("/")+".js";
-ok=this.loadPath(_4b,_51);
-if(ok){
-break;
-}
-_4d.pop();
-_4b=_4d.join("/")+"/"+this.pkgFileName+".js";
-if(_4e&&_4b.charAt(0)=="/"){
-_4b=_4b.slice(1);
-}
-ok=this.loadPath(_4b,_51);
-if(ok){
-break;
-}
-}
-}
-if(!ok&&!_49){
-dojo.raise("Could not load '"+_47+"'; last tried '"+_4b+"'");
-}
-}
-if(!_49&&!this["isXDomain"]){
-_4a=this.findModule(_47,false);
-if(!_4a){
-dojo.raise("symbol '"+_47+"' is not defined after loading '"+_4b+"'");
-}
-}
-return _4a;
-};
-dojo.hostenv.startPackage=function(_52){
-var _53=String(_52);
-var _54=_53;
-var _55=_52.split(/\./);
-if(_55[_55.length-1]=="*"){
-_55.pop();
-_54=_55.join(".");
-}
-var _56=dojo.evalObjPath(_54,true);
-this.loaded_modules_[_53]=_56;
-this.loaded_modules_[_54]=_56;
-return _56;
-};
-dojo.hostenv.findModule=function(_57,_58){
-var lmn=String(_57);
-if(this.loaded_modules_[lmn]){
-return this.loaded_modules_[lmn];
-}
-if(_58){
-dojo.raise("no loaded module named '"+_57+"'");
-}
-return null;
-};
-dojo.kwCompoundRequire=function(_5a){
-var _5b=_5a["common"]||[];
-var _5c=_5a[dojo.hostenv.name_]?_5b.concat(_5a[dojo.hostenv.name_]||[]):_5b.concat(_5a["default"]||[]);
-for(var x=0;x<_5c.length;x++){
-var _5e=_5c[x];
-if(_5e.constructor==Array){
-dojo.hostenv.loadModule.apply(dojo.hostenv,_5e);
-}else{
-dojo.hostenv.loadModule(_5e);
-}
-}
-};
-dojo.require=function(_5f){
-dojo.hostenv.loadModule.apply(dojo.hostenv,arguments);
-};
-dojo.requireIf=function(_60,_61){
-var _62=arguments[0];
-if((_62===true)||(_62=="common")||(_62&&dojo.render[_62].capable)){
-var _63=[];
-for(var i=1;i<arguments.length;i++){
-_63.push(arguments[i]);
-}
-dojo.require.apply(dojo,_63);
-}
-};
-dojo.requireAfterIf=dojo.requireIf;
-dojo.provide=function(_65){
-return dojo.hostenv.startPackage.apply(dojo.hostenv,arguments);
-};
-dojo.registerModulePath=function(_66,_67){
-return dojo.hostenv.setModulePrefix(_66,_67);
-};
-if(djConfig["modulePaths"]){
-for(var param in djConfig["modulePaths"]){
-dojo.registerModulePath(param,djConfig["modulePaths"][param]);
-}
-}
-dojo.setModulePrefix=function(_68,_69){
-dojo.deprecated("dojo.setModulePrefix(\""+_68+"\", \""+_69+"\")","replaced by dojo.registerModulePath","0.5");
-return dojo.registerModulePath(_68,_69);
-};
-dojo.exists=function(obj,_6b){
-var p=_6b.split(".");
-for(var i=0;i<p.length;i++){
-if(!obj[p[i]]){
-return false;
-}
-obj=obj[p[i]];
-}
-return true;
-};
-dojo.hostenv.normalizeLocale=function(_6e){
-var _6f=_6e?_6e.toLowerCase():dojo.locale;
-if(_6f=="root"){
-_6f="ROOT";
-}
-return _6f;
-};
-dojo.hostenv.searchLocalePath=function(_70,_71,_72){
-_70=dojo.hostenv.normalizeLocale(_70);
-var _73=_70.split("-");
-var _74=[];
-for(var i=_73.length;i>0;i--){
-_74.push(_73.slice(0,i).join("-"));
-}
-_74.push(false);
-if(_71){
-_74.reverse();
-}
-for(var j=_74.length-1;j>=0;j--){
-var loc=_74[j]||"ROOT";
-var _78=_72(loc);
-if(_78){
-break;
-}
-}
-};
-dojo.hostenv.localesGenerated;
-dojo.hostenv.registerNlsPrefix=function(){
-dojo.registerModulePath("nls","nls");
-};
-dojo.hostenv.preloadLocalizations=function(){
-if(dojo.hostenv.localesGenerated){
-dojo.hostenv.registerNlsPrefix();
-function preload(_79){
-_79=dojo.hostenv.normalizeLocale(_79);
-dojo.hostenv.searchLocalePath(_79,true,function(loc){
-for(var i=0;i<dojo.hostenv.localesGenerated.length;i++){
-if(dojo.hostenv.localesGenerated[i]==loc){
-dojo["require"]("nls.dojo_"+loc);
-return true;
-}
-}
-return false;
-});
-}
-preload();
-var _7c=djConfig.extraLocale||[];
-for(var i=0;i<_7c.length;i++){
-preload(_7c[i]);
-}
-}
-dojo.hostenv.preloadLocalizations=function(){
-};
-};
-dojo.requireLocalization=function(_7e,_7f,_80,_81){
-dojo.hostenv.preloadLocalizations();
-var _82=dojo.hostenv.normalizeLocale(_80);
-var _83=[_7e,"nls",_7f].join(".");
-var _84="";
-if(_81){
-var _85=_81.split(",");
-for(var i=0;i<_85.length;i++){
-if(_82.indexOf(_85[i])==0){
-if(_85[i].length>_84.length){
-_84=_85[i];
-}
-}
-}
-if(!_84){
-_84="ROOT";
-}
-}
-var _87=_81?_84:_82;
-var _88=dojo.hostenv.findModule(_83);
-var _89=null;
-if(_88){
-if(djConfig.localizationComplete&&_88._built){
-return;
-}
-var _8a=_87.replace("-","_");
-var _8b=_83+"."+_8a;
-_89=dojo.hostenv.findModule(_8b);
-}
-if(!_89){
-_88=dojo.hostenv.startPackage(_83);
-var _8c=dojo.hostenv.getModuleSymbols(_7e);
-var _8d=_8c.concat("nls").join("/");
-var _8e;
-dojo.hostenv.searchLocalePath(_87,_81,function(loc){
-var _90=loc.replace("-","_");
-var _91=_83+"."+_90;
-var _92=false;
-if(!dojo.hostenv.findModule(_91)){
-dojo.hostenv.startPackage(_91);
-var _93=[_8d];
-if(loc!="ROOT"){
-_93.push(loc);
-}
-_93.push(_7f);
-var _94=_93.join("/")+".js";
-_92=dojo.hostenv.loadPath(_94,null,function(_95){
-var _96=function(){
-};
-_96.prototype=_8e;
-_88[_90]=new _96();
-for(var j in _95){
-_88[_90][j]=_95[j];
-}
-});
-}else{
-_92=true;
-}
-if(_92&&_88[_90]){
-_8e=_88[_90];
-}else{
-_88[_90]=_8e;
-}
-if(_81){
-return true;
-}
-});
-}
-if(_81&&_82!=_84){
-_88[_82.replace("-","_")]=_88[_84.replace("-","_")];
-}
-};
-(function(){
-var _98=djConfig.extraLocale;
-if(_98){
-if(!_98 instanceof Array){
-_98=[_98];
-}
-var req=dojo.requireLocalization;
-dojo.requireLocalization=function(m,b,_9c,_9d){
-req(m,b,_9c,_9d);
-if(_9c){
-return;
-}
-for(var i=0;i<_98.length;i++){
-req(m,b,_98[i],_9d);
-}
-};
-}
-})();
-}
-if(typeof window!="undefined"){
-(function(){
-if(djConfig.allowQueryConfig){
-var _9f=document.location.toString();
-var _a0=_9f.split("?",2);
-if(_a0.length>1){
-var _a1=_a0[1];
-var _a2=_a1.split("&");
-for(var x in _a2){
-var sp=_a2[x].split("=");
-if((sp[0].length>9)&&(sp[0].substr(0,9)=="djConfig.")){
-var opt=sp[0].substr(9);
-try{
-djConfig[opt]=eval(sp[1]);
-}
-catch(e){
-djConfig[opt]=sp[1];
-}
-}
-}
-}
-}
-if(((djConfig["baseScriptUri"]=="")||(djConfig["baseRelativePath"]==""))&&(document&&document.getElementsByTagName)){
-var _a6=document.getElementsByTagName("script");
-var _a7=/(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
-for(var i=0;i<_a6.length;i++){
-var src=_a6[i].getAttribute("src");
-if(!src){
-continue;
-}
-var m=src.match(_a7);
-if(m){
-var _ab=src.substring(0,m.index);
-if(src.indexOf("bootstrap1")>-1){
-_ab+="../";
-}
-if(!this["djConfig"]){
-djConfig={};
-}
-if(djConfig["baseScriptUri"]==""){
-djConfig["baseScriptUri"]=_ab;
-}
-if(djConfig["baseRelativePath"]==""){
-djConfig["baseRelativePath"]=_ab;
-}
-break;
-}
-}
-}
-var dr=dojo.render;
-var drh=dojo.render.html;
-var drs=dojo.render.svg;
-var dua=(drh.UA=navigator.userAgent);
-var dav=(drh.AV=navigator.appVersion);
-var t=true;
-var f=false;
-drh.capable=t;
-drh.support.builtin=t;
-dr.ver=parseFloat(drh.AV);
-dr.os.mac=dav.indexOf("Macintosh")>=0;
-dr.os.win=dav.indexOf("Windows")>=0;
-dr.os.linux=dav.indexOf("X11")>=0;
-drh.opera=dua.indexOf("Opera")>=0;
-drh.khtml=(dav.indexOf("Konqueror")>=0)||(dav.indexOf("Safari")>=0);
-drh.safari=dav.indexOf("Safari")>=0;
-var _b3=dua.indexOf("Gecko");
-drh.mozilla=drh.moz=(_b3>=0)&&(!drh.khtml);
-if(drh.mozilla){
-drh.geckoVersion=dua.substring(_b3+6,_b3+14);
-}
-drh.ie=(document.all)&&(!drh.opera);
-drh.ie50=drh.ie&&dav.indexOf("MSIE 5.0")>=0;
-drh.ie55=drh.ie&&dav.indexOf("MSIE 5.5")>=0;
-drh.ie60=drh.ie&&dav.indexOf("MSIE 6.0")>=0;
-drh.ie70=drh.ie&&dav.indexOf("MSIE 7.0")>=0;
-var cm=document["compatMode"];
-drh.quirks=(cm=="BackCompat")||(cm=="QuirksMode")||drh.ie55||drh.ie50;
-dojo.locale=dojo.locale||(drh.ie?navigator.userLanguage:navigator.language).toLowerCase();
-dr.vml.capable=drh.ie;
-drs.capable=f;
-drs.support.plugin=f;
-drs.support.builtin=f;
-var _b5=window["document"];
-var tdi=_b5["implementation"];
-if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg","1.0"))){
-drs.capable=t;
-drs.support.builtin=t;
-drs.support.plugin=f;
-}
-if(drh.safari){
-var tmp=dua.split("AppleWebKit/")[1];
-var ver=parseFloat(tmp.split(" ")[0]);
-if(ver>=420){
-drs.capable=t;
-drs.support.builtin=t;
-drs.support.plugin=f;
-}
-}else{
-}
-})();
-dojo.hostenv.startPackage("dojo.hostenv");
-dojo.render.name=dojo.hostenv.name_="browser";
-dojo.hostenv.searchIds=[];
-dojo.hostenv._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
-dojo.hostenv.getXmlhttpObject=function(){
-var _b9=null;
-var _ba=null;
-try{
-_b9=new XMLHttpRequest();
-}
-catch(e){
-}
-if(!_b9){
-for(var i=0;i<3;++i){
-var _bc=dojo.hostenv._XMLHTTP_PROGIDS[i];
-try{
-_b9=new ActiveXObject(_bc);
-}
-catch(e){
-_ba=e;
-}
-if(_b9){
-dojo.hostenv._XMLHTTP_PROGIDS=[_bc];
-break;
-}
-}
-}
-if(!_b9){
-return dojo.raise("XMLHTTP not available",_ba);
-}
-return _b9;
-};
-dojo.hostenv._blockAsync=false;
-dojo.hostenv.getText=function(uri,_be,_bf){
-if(!_be){
-this._blockAsync=true;
-}
-var _c0=this.getXmlhttpObject();
-function isDocumentOk(_c1){
-var _c2=_c1["status"];
-return Boolean((!_c2)||((200<=_c2)&&(300>_c2))||(_c2==304));
-}
-if(_be){
-var _c3=this,_c4=null,gbl=dojo.global();
-var xhr=dojo.evalObjPath("dojo.io.XMLHTTPTransport");
-_c0.onreadystatechange=function(){
-if(_c4){
-gbl.clearTimeout(_c4);
-_c4=null;
-}
-if(_c3._blockAsync||(xhr&&xhr._blockAsync)){
-_c4=gbl.setTimeout(function(){
-_c0.onreadystatechange.apply(this);
-},10);
-}else{
-if(4==_c0.readyState){
-if(isDocumentOk(_c0)){
-_be(_c0.responseText);
-}
-}
-}
-};
-}
-_c0.open("GET",uri,_be?true:false);
-try{
-_c0.send(null);
-if(_be){
-return null;
-}
-if(!isDocumentOk(_c0)){
-var err=Error("Unable to load "+uri+" status:"+_c0.status);
-err.status=_c0.status;
-err.responseText=_c0.responseText;
-throw err;
-}
-}
-catch(e){
-this._blockAsync=false;
-if((_bf)&&(!_be)){
-return null;
-}else{
-throw e;
-}
-}
-this._blockAsync=false;
-return _c0.responseText;
-};
-dojo.hostenv.defaultDebugContainerId="dojoDebug";
-dojo.hostenv._println_buffer=[];
-dojo.hostenv._println_safe=false;
-dojo.hostenv.println=function(_c8){
-if(!dojo.hostenv._println_safe){
-dojo.hostenv._println_buffer.push(_c8);
-}else{
-try{
-var _c9=document.getElementById(djConfig.debugContainerId?djConfig.debugContainerId:dojo.hostenv.defaultDebugContainerId);
-if(!_c9){
-_c9=dojo.body();
-}
-var div=document.createElement("div");
-div.appendChild(document.createTextNode(_c8));
-_c9.appendChild(div);
-}
-catch(e){
-try{
-document.write("<div>"+_c8+"</div>");
-}
-catch(e2){
-window.status=_c8;
-}
-}
-}
-};
-dojo.addOnLoad(function(){
-dojo.hostenv._println_safe=true;
-while(dojo.hostenv._println_buffer.length>0){
-dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
-}
-});
-function dj_addNodeEvtHdlr(_cb,_cc,fp){
-var _ce=_cb["on"+_cc]||function(){
-};
-_cb["on"+_cc]=function(){
-fp.apply(_cb,arguments);
-_ce.apply(_cb,arguments);
-};
-return true;
-}
-function dj_load_init(e){
-var _d0=(e&&e.type)?e.type.toLowerCase():"load";
-if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
-return;
-}
-arguments.callee.initialized=true;
-if(typeof (_timer)!="undefined"){
-clearInterval(_timer);
-delete _timer;
-}
-var _d1=function(){
-if(dojo.render.html.ie){
-dojo.hostenv.makeWidgets();
-}
-};
-if(dojo.hostenv.inFlightCount==0){
-_d1();
-dojo.hostenv.modulesLoaded();
-}else{
-dojo.hostenv.modulesLoadedListeners.unshift(_d1);
-}
-}
-if(document.addEventListener){
-if(dojo.render.html.opera||(dojo.render.html.moz&&(djConfig["enableMozDomContentLoaded"]===true))){
-document.addEventListener("DOMContentLoaded",dj_load_init,null);
-}
-window.addEventListener("load",dj_load_init,null);
-}
-if(dojo.render.html.ie&&dojo.render.os.win){
-document.attachEvent("onreadystatechange",function(e){
-if(document.readyState=="complete"){
-dj_load_init();
-}
-});
-}
-if(/(WebKit|khtml)/i.test(navigator.userAgent)){
-var _timer=setInterval(function(){
-if(/loaded|complete/.test(document.readyState)){
-dj_load_init();
-}
-},10);
-}
-if(dojo.render.html.ie){
-dj_addNodeEvtHdlr(window,"beforeunload",function(){
-dojo.hostenv._unloading=true;
-window.setTimeout(function(){
-dojo.hostenv._unloading=false;
-},0);
-});
-}
-dj_addNodeEvtHdlr(window,"unload",function(){
-dojo.hostenv.unloaded();
-if((!dojo.render.html.ie)||(dojo.render.html.ie&&dojo.hostenv._unloading)){
-dojo.hostenv.unloaded();
-}
-});
-dojo.hostenv.makeWidgets=function(){
-var _d3=[];
-if(djConfig.searchIds&&djConfig.searchIds.length>0){
-_d3=_d3.concat(djConfig.searchIds);
-}
-if(dojo.hostenv.searchIds&&dojo.hostenv.searchIds.length>0){
-_d3=_d3.concat(dojo.hostenv.searchIds);
-}
-if((djConfig.parseWidgets)||(_d3.length>0)){
-if(dojo.evalObjPath("dojo.widget.Parse")){
-var _d4=new dojo.xml.Parse();
-if(_d3.length>0){
-for(var x=0;x<_d3.length;x++){
-var _d6=document.getElementById(_d3[x]);
-if(!_d6){
-continue;
-}
-var _d7=_d4.parseElement(_d6,null,true);
-dojo.widget.getParser().createComponents(_d7);
-}
-}else{
-if(djConfig.parseWidgets){
-var _d7=_d4.parseElement(dojo.body(),null,true);
-dojo.widget.getParser().createComponents(_d7);
-}
-}
-}
-}
-};
-dojo.addOnLoad(function(){
-if(!dojo.render.html.ie){
-dojo.hostenv.makeWidgets();
-}
-});
-try{
-if(dojo.render.html.ie){
-document.namespaces.add("v","urn:schemas-microsoft-com:vml");
-document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");
-}
-}
-catch(e){
-}
-dojo.hostenv.writeIncludes=function(){
-};
-if(!dj_undef("document",this)){
-dj_currentDocument=this.document;
-}
-dojo.doc=function(){
-return dj_currentDocument;
-};
-dojo.body=function(){
-return dojo.doc().body||dojo.doc().getElementsByTagName("body")[0];
-};
-dojo.byId=function(id,doc){
-if((id)&&((typeof id=="string")||(id instanceof String))){
-if(!doc){
-doc=dj_currentDocument;
-}
-var ele=doc.getElementById(id);
-if(ele&&(ele.id!=id)&&doc.all){
-ele=null;
-eles=doc.all[id];
-if(eles){
-if(eles.length){
-for(var i=0;i<eles.length;i++){
-if(eles[i].id==id){
-ele=eles[i];
-break;
-}
-}
-}else{
-ele=eles;
-}
-}
-}
-return ele;
-}
-return id;
-};
-dojo.setContext=function(_dc,_dd){
-dj_currentContext=_dc;
-dj_currentDocument=_dd;
-};
-dojo._fireCallback=function(_de,_df,_e0){
-if((_df)&&((typeof _de=="string")||(_de instanceof String))){
-_de=_df[_de];
-}
-return (_df?_de.apply(_df,_e0||[]):_de());
-};
-dojo.withGlobal=function(_e1,_e2,_e3,_e4){
-var _e5;
-var _e6=dj_currentContext;
-var _e7=dj_currentDocument;
-try{
-dojo.setContext(_e1,_e1.document);
-_e5=dojo._fireCallback(_e2,_e3,_e4);
-}
-finally{
-dojo.setContext(_e6,_e7);
-}
-return _e5;
-};
-dojo.withDoc=function(_e8,_e9,_ea,_eb){
-var _ec;
-var _ed=dj_currentDocument;
-try{
-dj_currentDocument=_e8;
-_ec=dojo._fireCallback(_e9,_ea,_eb);
-}
-finally{
-dj_currentDocument=_ed;
-}
-return _ec;
-};
-}
-dojo.requireIf((djConfig["isDebug"]||djConfig["debugAtAllCosts"]),"dojo.debug");
-dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&!djConfig["useXDomain"],"dojo.browser_debug");
-dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&djConfig["useXDomain"],"dojo.browser_debug_xd");
-dojo.provide("dojo.lang.common");
-dojo.lang.inherits=function(_ee,_ef){
-if(!dojo.lang.isFunction(_ef)){
-dojo.raise("dojo.inherits: superclass argument ["+_ef+"] must be a function (subclass: ["+_ee+"']");
-}
-_ee.prototype=new _ef();
-_ee.prototype.constructor=_ee;
-_ee.superclass=_ef.prototype;
-_ee["super"]=_ef.prototype;
-};
-dojo.lang._mixin=function(obj,_f1){
-var _f2={};
-for(var x in _f1){
-if((typeof _f2[x]=="undefined")||(_f2[x]!=_f1[x])){
-obj[x]=_f1[x];
-}
-}
-if(dojo.render.html.ie&&(typeof (_f1["toString"])=="function")&&(_f1["toString"]!=obj["toString"])&&(_f1["toString"]!=_f2["toString"])){
-obj.toString=_f1.toString;
-}
-return obj;
-};
-dojo.lang.mixin=function(obj,_f5){
-for(var i=1,l=arguments.length;i<l;i++){
-dojo.lang._mixin(obj,arguments[i]);
-}
-return obj;
-};
-dojo.lang.extend=function(_f8,_f9){
-for(var i=1,l=arguments.length;i<l;i++){
-dojo.lang._mixin(_f8.prototype,arguments[i]);
-}
-return _f8;
-};
-dojo.inherits=dojo.lang.inherits;
-dojo.mixin=dojo.lang.mixin;
-dojo.extend=dojo.lang.extend;
-dojo.lang.find=function(_fc,_fd,_fe,_ff){
-if(!dojo.lang.isArrayLike(_fc)&&dojo.lang.isArrayLike(_fd)){
-dojo.deprecated("dojo.lang.find(value, array)","use dojo.lang.find(array, value) instead","0.5");
-var temp=_fc;
-_fc=_fd;
-_fd=temp;
-}
-var _101=dojo.lang.isString(_fc);
-if(_101){
-_fc=_fc.split("");
-}
-if(_ff){
-var step=-1;
-var i=_fc.length-1;
-var end=-1;
-}else{
-var step=1;
-var i=0;
-var end=_fc.length;
-}
-if(_fe){
-while(i!=end){
-if(_fc[i]===_fd){
-return i;
-}
-i+=step;
-}
-}else{
-while(i!=end){
-if(_fc[i]==_fd){
-return i;
-}
-i+=step;
-}
-}
-return -1;
-};
-dojo.lang.indexOf=dojo.lang.find;
-dojo.lang.findLast=function(_105,_106,_107){
-return dojo.lang.find(_105,_106,_107,true);
-};
-dojo.lang.lastIndexOf=dojo.lang.findLast;
-dojo.lang.inArray=function(_108,_109){
-return dojo.lang.find(_108,_109)>-1;
-};
-dojo.lang.isObject=function(it){
-if(typeof it=="undefined"){
-return false;
-}
-return (typeof it=="object"||it===null||dojo.lang.isArray(it)||dojo.lang.isFunction(it));
-};
-dojo.lang.isArray=function(it){
-return (it&&it instanceof Array||typeof it=="array");
-};
-dojo.lang.isArrayLike=function(it){
-if((!it)||(dojo.lang.isUndefined(it))){
-return false;
-}
-if(dojo.lang.isString(it)){
-return false;
-}
-if(dojo.lang.isFunction(it)){
-return false;
-}
-if(dojo.lang.isArray(it)){
-return true;
-}
-if((it.tagName)&&(it.tagName.toLowerCase()=="form")){
-return false;
-}
-if(dojo.lang.isNumber(it.length)&&isFinite(it.length)){
-return true;
-}
-return false;
-};
-dojo.lang.isFunction=function(it){
-return (it instanceof Function||typeof it=="function");
-};
-(function(){
-if((dojo.render.html.capable)&&(dojo.render.html["safari"])){
-dojo.lang.isFunction=function(it){
-if((typeof (it)=="function")&&(it=="[object NodeList]")){
-return false;
-}
-return (it instanceof Function||typeof it=="function");
-};
-}
-})();
-dojo.lang.isString=function(it){
-return (typeof it=="string"||it instanceof String);
-};
-dojo.lang.isAlien=function(it){
-if(!it){
-return false;
-}
-return !dojo.lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));
-};
-dojo.lang.isBoolean=function(it){
-return (it instanceof Boolean||typeof it=="boolean");
-};
-dojo.lang.isNumber=function(it){
-return (it instanceof Number||typeof it=="number");
-};
-dojo.lang.isUndefined=function(it){
-return ((typeof (it)=="undefined")&&(it==undefined));
-};
-dojo.provide("dojo.lang.array");
-dojo.lang.mixin(dojo.lang,{has:function(obj,name){
-try{
-return typeof obj[name]!="undefined";
-}
-catch(e){
-return false;
-}
-},isEmpty:function(obj){
-if(dojo.lang.isObject(obj)){
-var tmp={};
-var _118=0;
-for(var x in obj){
-if(obj[x]&&(!tmp[x])){
-_118++;
-break;
-}
-}
-return _118==0;
-}else{
-if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
-return obj.length==0;
-}
-}
-},map:function(arr,obj,_11c){
-var _11d=dojo.lang.isString(arr);
-if(_11d){
-arr=arr.split("");
-}
-if(dojo.lang.isFunction(obj)&&(!_11c)){
-_11c=obj;
-obj=dj_global;
-}else{
-if(dojo.lang.isFunction(obj)&&_11c){
-var _11e=obj;
-obj=_11c;
-_11c=_11e;
-}
-}
-if(Array.map){
-var _11f=Array.map(arr,_11c,obj);
-}else{
-var _11f=[];
-for(var i=0;i<arr.length;++i){
-_11f.push(_11c.call(obj,arr[i]));
-}
-}
-if(_11d){
-return _11f.join("");
-}else{
-return _11f;
-}
-},reduce:function(arr,_122,obj,_124){
-var _125=_122;
-if(arguments.length==2){
-_124=_122;
-_125=arr[0];
-arr=arr.slice(1);
-}else{
-if(arguments.length==3){
-if(dojo.lang.isFunction(obj)){
-_124=obj;
-obj=null;
-}
-}else{
-if(dojo.lang.isFunction(obj)){
-var tmp=_124;
-_124=obj;
-obj=tmp;
-}
-}
-}
-var ob=obj||dj_global;
-dojo.lang.map(arr,function(val){
-_125=_124.call(ob,_125,val);
-});
-return _125;
-},forEach:function(_129,_12a,_12b){
-if(dojo.lang.isString(_129)){
-_129=_129.split("");
-}
-if(Array.forEach){
-Array.forEach(_129,_12a,_12b);
-}else{
-if(!_12b){
-_12b=dj_global;
-}
-for(var i=0,l=_129.length;i<l;i++){
-_12a.call(_12b,_129[i],i,_129);
-}
-}
-},_everyOrSome:function(_12e,arr,_130,_131){
-if(dojo.lang.isString(arr)){
-arr=arr.split("");
-}
-if(Array.every){
-return Array[_12e?"every":"some"](arr,_130,_131);
-}else{
-if(!_131){
-_131=dj_global;
-}
-for(var i=0,l=arr.length;i<l;i++){
-var _134=_130.call(_131,arr[i],i,arr);
-if(_12e&&!_134){
-return false;
-}else{
-if((!_12e)&&(_134)){
-return true;
-}
-}
-}
-return Boolean(_12e);
-}
-},every:function(arr,_136,_137){
-return this._everyOrSome(true,arr,_136,_137);
-},some:function(arr,_139,_13a){
-return this._everyOrSome(false,arr,_139,_13a);
-},filter:function(arr,_13c,_13d){
-var _13e=dojo.lang.isString(arr);
-if(_13e){
-arr=arr.split("");
-}
-var _13f;
-if(Array.filter){
-_13f=Array.filter(arr,_13c,_13d);
-}else{
-if(!_13d){
-if(arguments.length>=3){
-dojo.raise("thisObject doesn't exist!");
-}
-_13d=dj_global;
-}
-_13f=[];
-for(var i=0;i<arr.length;i++){
-if(_13c.call(_13d,arr[i],i,arr)){
-_13f.push(arr[i]);
-}
-}
-}
-if(_13e){
-return _13f.join("");
-}else{
-return _13f;
-}
-},unnest:function(){
-var out=[];
-for(var i=0;i<arguments.length;i++){
-if(dojo.lang.isArrayLike(arguments[i])){
-var add=dojo.lang.unnest.apply(this,arguments[i]);
-out=out.concat(add);
-}else{
-out.push(arguments[i]);
-}
-}
-return out;
-},toArray:function(_144,_145){
-var _146=[];
-for(var i=_145||0;i<_144.length;i++){
-_146.push(_144[i]);
-}
-return _146;
-}});
-dojo.provide("dojo.lang.extras");
-dojo.lang.setTimeout=function(func,_149){
-var _14a=window,_14b=2;
-if(!dojo.lang.isFunction(func)){
-_14a=func;
-func=_149;
-_149=arguments[2];
-_14b++;
-}
-if(dojo.lang.isString(func)){
-func=_14a[func];
-}
-var args=[];
-for(var i=_14b;i<arguments.length;i++){
-args.push(arguments[i]);
-}
-return dojo.global().setTimeout(function(){
-func.apply(_14a,args);
-},_149);
-};
-dojo.lang.clearTimeout=function(_14e){
-dojo.global().clearTimeout(_14e);
-};
-dojo.lang.getNameInObj=function(ns,item){
-if(!ns){
-ns=dj_global;
-}
-for(var x in ns){
-if(ns[x]===item){
-return new String(x);
-}
-}
-return null;
-};
-dojo.lang.shallowCopy=function(obj,deep){
-var i,ret;
-if(obj===null){
-return null;
-}
-if(dojo.lang.isObject(obj)){
-ret=new obj.constructor();
-for(i in obj){
-if(dojo.lang.isUndefined(ret[i])){
-ret[i]=deep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
-}
-}
-}else{
-if(dojo.lang.isArray(obj)){
-ret=[];
-for(i=0;i<obj.length;i++){
-ret[i]=deep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
-}
-}else{
-ret=obj;
-}
-}
-return ret;
-};
-dojo.lang.firstValued=function(){
-for(var i=0;i<arguments.length;i++){
-if(typeof arguments[i]!="undefined"){
-return arguments[i];
-}
-}
-return undefined;
-};
-dojo.lang.getObjPathValue=function(_157,_158,_159){
-with(dojo.parseObjPath(_157,_158,_159)){
-return dojo.evalProp(prop,obj,_159);
-}
-};
-dojo.lang.setObjPathValue=function(_15a,_15b,_15c,_15d){
-dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and the '=' operator","0.6");
-if(arguments.length<4){
-_15d=true;
-}
-with(dojo.parseObjPath(_15a,_15c,_15d)){
-if(obj&&(_15d||(prop in obj))){
-obj[prop]=_15b;
-}
-}
-};
-dojo.provide("dojo.lang.declare");
-dojo.lang.declare=function(_15e,_15f,init,_161){
-if((dojo.lang.isFunction(_161))||((!_161)&&(!dojo.lang.isFunction(init)))){
-var temp=_161;
-_161=init;
-init=temp;
-}
-var _163=[];
-if(dojo.lang.isArray(_15f)){
-_163=_15f;
-_15f=_163.shift();
-}
-if(!init){
-init=dojo.evalObjPath(_15e,false);
-if((init)&&(!dojo.lang.isFunction(init))){
-init=null;
-}
-}
-var ctor=dojo.lang.declare._makeConstructor();
-var scp=(_15f?_15f.prototype:null);
-if(scp){
-scp.prototyping=true;
-ctor.prototype=new _15f();
-scp.prototyping=false;
-}
-ctor.superclass=scp;
-ctor.mixins=_163;
-for(var i=0,l=_163.length;i<l;i++){
-dojo.lang.extend(ctor,_163[i].prototype);
-}
-ctor.prototype.initializer=null;
-ctor.prototype.declaredClass=_15e;
-if(dojo.lang.isArray(_161)){
-dojo.lang.extend.apply(dojo.lang,[ctor].concat(_161));
-}else{
-dojo.lang.extend(ctor,(_161)||{});
-}
-dojo.lang.extend(ctor,dojo.lang.declare._common);
-ctor.prototype.constructor=ctor;
-ctor.prototype.initializer=(ctor.prototype.initializer)||(init)||(function(){
-});
-var _168=dojo.parseObjPath(_15e,null,true);
-_168.obj[_168.prop]=ctor;
-return ctor;
-};
-dojo.lang.declare._makeConstructor=function(){
-return function(){
-var self=this._getPropContext();
-var s=self.constructor.superclass;
-if((s)&&(s.constructor)){
-if(s.constructor==arguments.callee){
-this._inherited("constructor",arguments);
-}else{
-this._contextMethod(s,"constructor",arguments);
-}
-}
-var ms=(self.constructor.mixins)||([]);
-for(var i=0,m;(m=ms[i]);i++){
-(((m.prototype)&&(m.prototype.initializer))||(m)).apply(this,arguments);
-}
-if((!this.prototyping)&&(self.initializer)){
-self.initializer.apply(this,arguments);
-}
-};
-};
-dojo.lang.declare._common={_getPropContext:function(){
-return (this.___proto||this);
-},_contextMethod:function(_16e,_16f,args){
-var _171,_172=this.___proto;
-this.___proto=_16e;
-try{
-_171=_16e[_16f].apply(this,(args||[]));
-}
-catch(e){
-throw e;
-}
-finally{
-this.___proto=_172;
-}
-return _171;
-},_inherited:function(prop,args){
-var p=this._getPropContext();
-do{
-if((!p.constructor)||(!p.constructor.superclass)){
-return;
-}
-p=p.constructor.superclass;
-}while(!(prop in p));
-return (dojo.lang.isFunction(p[prop])?this._contextMethod(p,prop,args):p[prop]);
-},inherited:function(prop,args){
-dojo.deprecated("'inherited' method is dangerous, do not up-call! 'inherited' is slated for removal in 0.5; name your super class (or use superclass property) instead.","0.5");
-this._inherited(prop,args);
-}};
-dojo.declare=dojo.lang.declare;
-dojo.provide("dojo.lang.func");
-dojo.lang.hitch=function(_178,_179){
-var fcn=(dojo.lang.isString(_179)?_178[_179]:_179)||function(){
-};
-return function(){
-return fcn.apply(_178,arguments);
-};
-};
-dojo.lang.anonCtr=0;
-dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_17b,_17c,_17d){
-var nso=(_17c||dojo.lang.anon);
-if((_17d)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
-for(var x in nso){
-try{
-if(nso[x]===_17b){
-return x;
-}
-}
-catch(e){
-}
-}
-}
-var ret="__"+dojo.lang.anonCtr++;
-while(typeof nso[ret]!="undefined"){
-ret="__"+dojo.lang.anonCtr++;
-}
-nso[ret]=_17b;
-return ret;
-};
-dojo.lang.forward=function(_181){
-return function(){
-return this[_181].apply(this,arguments);
-};
-};
-dojo.lang.curry=function(_182,func){
-var _184=[];
-_182=_182||dj_global;
-if(dojo.lang.isString(func)){
-func=_182[func];
-}
-for(var x=2;x<arguments.length;x++){
-_184.push(arguments[x]);
-}
-var _186=(func["__preJoinArity"]||func.length)-_184.length;
-function gather(_187,_188,_189){
-var _18a=_189;
-var _18b=_188.slice(0);
-for(var x=0;x<_187.length;x++){
-_18b.push(_187[x]);
-}
-_189=_189-_187.length;
-if(_189<=0){
-var res=func.apply(_182,_18b);
-_189=_18a;
-return res;
-}else{
-return function(){
-return gather(arguments,_18b,_189);
-};
-}
-}
-return gather([],_184,_186);
-};
-dojo.lang.curryArguments=function(_18e,func,args,_191){
-var _192=[];
-var x=_191||0;
-for(x=_191;x<args.length;x++){
-_192.push(args[x]);
-}
-return dojo.lang.curry.apply(dojo.lang,[_18e,func].concat(_192));
-};
-dojo.lang.tryThese=function(){
-for(var x=0;x<arguments.length;x++){
-try{
-if(typeof arguments[x]=="function"){
-var ret=(arguments[x]());
-if(ret){
-return ret;
-}
-}
-}
-catch(e){
-dojo.debug(e);
-}
-}
-};
-dojo.lang.delayThese=function(farr,cb,_198,_199){
-if(!farr.length){
-if(typeof _199=="function"){
-_199();
-}
-return;
-}
-if((typeof _198=="undefined")&&(typeof cb=="number")){
-_198=cb;
-cb=function(){
-};
-}else{
-if(!cb){
-cb=function(){
-};
-if(!_198){
-_198=0;
-}
-}
-}
-setTimeout(function(){
-(farr.shift())();
-cb();
-dojo.lang.delayThese(farr,cb,_198,_199);
-},_198);
-};
-dojo.provide("dojo.event.common");
-dojo.event=new function(){
-this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_19b){
-var dl=dojo.lang;
-var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
-switch(args.length){
-case 0:
-return;
-case 1:
-return;
-case 2:
-ao.srcFunc=args[0];
-ao.adviceFunc=args[1];
-break;
-case 3:
-if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isString(args[2]))){
-ao.adviceType="after";
-ao.srcObj=args[0];
-ao.srcFunc=args[1];
-ao.adviceFunc=args[2];
-}else{
-if((dl.isString(args[1]))&&(dl.isString(args[2]))){
-ao.srcFunc=args[1];
-ao.adviceFunc=args[2];
-}else{
-if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isFunction(args[2]))){
-ao.adviceType="after";
-ao.srcObj=args[0];
-ao.srcFunc=args[1];
-var _19e=dl.nameAnonFunc(args[2],ao.adviceObj,_19b);
-ao.adviceFunc=_19e;
-}else{
-if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
-ao.adviceType="after";
-ao.srcObj=dj_global;
-var _19e=dl.nameAnonFunc(args[0],ao.srcObj,_19b);
-ao.srcFunc=_19e;
-ao.adviceObj=args[1];
-ao.adviceFunc=args[2];
-}
-}
-}
-}
-break;
-case 4:
-if((dl.isObject(args[0]))&&(dl.isObject(args[2]))){
-ao.adviceType="after";
-ao.srcObj=args[0];
-ao.srcFunc=args[1];
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-if((dl.isString(args[0]))&&(dl.isString(args[1]))&&(dl.isObject(args[2]))){
-ao.adviceType=args[0];
-ao.srcObj=dj_global;
-ao.srcFunc=args[1];
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
-ao.adviceType=args[0];
-ao.srcObj=dj_global;
-var _19e=dl.nameAnonFunc(args[1],dj_global,_19b);
-ao.srcFunc=_19e;
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-var _19e=dl.nameAnonFunc(args[3],dj_global,_19b);
-ao.adviceObj=dj_global;
-ao.adviceFunc=_19e;
-}else{
-if(dl.isObject(args[1])){
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-ao.adviceObj=dj_global;
-ao.adviceFunc=args[3];
-}else{
-if(dl.isObject(args[2])){
-ao.srcObj=dj_global;
-ao.srcFunc=args[1];
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-ao.srcObj=ao.adviceObj=ao.aroundObj=dj_global;
-ao.srcFunc=args[1];
-ao.adviceFunc=args[2];
-ao.aroundFunc=args[3];
-}
-}
-}
-}
-}
-}
-break;
-case 6:
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-ao.adviceObj=args[3];
-ao.adviceFunc=args[4];
-ao.aroundFunc=args[5];
-ao.aroundObj=dj_global;
-break;
-default:
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-ao.adviceObj=args[3];
-ao.adviceFunc=args[4];
-ao.aroundObj=args[5];
-ao.aroundFunc=args[6];
-ao.once=args[7];
-ao.delay=args[8];
-ao.rate=args[9];
-ao.adviceMsg=args[10];
-ao.maxCalls=(!isNaN(parseInt(args[11])))?args[11]:-1;
-break;
-}
-if(dl.isFunction(ao.aroundFunc)){
-var _19e=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_19b);
-ao.aroundFunc=_19e;
-}
-if(dl.isFunction(ao.srcFunc)){
-ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
-}
-if(dl.isFunction(ao.adviceFunc)){
-ao.adviceFunc=dl.getNameInObj(ao.adviceObj,ao.adviceFunc);
-}
-if((ao.aroundObj)&&(dl.isFunction(ao.aroundFunc))){
-ao.aroundFunc=dl.getNameInObj(ao.aroundObj,ao.aroundFunc);
-}
-if(!ao.srcObj){
-dojo.raise("bad srcObj for srcFunc: "+ao.srcFunc);
-}
-if(!ao.adviceObj){
-dojo.raise("bad adviceObj for adviceFunc: "+ao.adviceFunc);
-}
-if(!ao.adviceFunc){
-dojo.debug("bad adviceFunc for srcFunc: "+ao.srcFunc);
-dojo.debugShallow(ao);
-}
-return ao;
-}
-this.connect=function(){
-if(arguments.length==1){
-var ao=arguments[0];
-}else{
-var ao=interpolateArgs(arguments,true);
-}
-if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _1a0={};
-for(var x in ao){
-_1a0[x]=ao[x];
-}
-var mjps=[];
-dojo.lang.forEach(ao.srcObj,function(src){
-if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
-src=dojo.byId(src);
-}
-_1a0.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_1a0));
-});
-return mjps;
-}
-var mjp=dojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc);
-if(ao.adviceFunc){
-var mjp2=dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj,ao.adviceFunc);
-}
-mjp.kwAddAdvice(ao);
-return mjp;
-};
-this.log=function(a1,a2){
-var _1a8;
-if((arguments.length==1)&&(typeof a1=="object")){
-_1a8=a1;
-}else{
-_1a8={srcObj:a1,srcFunc:a2};
-}
-_1a8.adviceFunc=function(){
-var _1a9=[];
-for(var x=0;x<arguments.length;x++){
-_1a9.push(arguments[x]);
-}
-dojo.debug("("+_1a8.srcObj+")."+_1a8.srcFunc,":",_1a9.join(", "));
-};
-this.kwConnect(_1a8);
-};
-this.connectBefore=function(){
-var args=["before"];
-for(var i=0;i<arguments.length;i++){
-args.push(arguments[i]);
-}
-return this.connect.apply(this,args);
-};
-this.connectAround=function(){
-var args=["around"];
-for(var i=0;i<arguments.length;i++){
-args.push(arguments[i]);
-}
-return this.connect.apply(this,args);
-};
-this.connectOnce=function(){
-var ao=interpolateArgs(arguments,true);
-ao.once=true;
-return this.connect(ao);
-};
-this.connectRunOnce=function(){
-var ao=interpolateArgs(arguments,true);
-ao.maxCalls=1;
-return this.connect(ao);
-};
-this._kwConnectImpl=function(_1b1,_1b2){
-var fn=(_1b2)?"disconnect":"connect";
-if(typeof _1b1["srcFunc"]=="function"){
-_1b1.srcObj=_1b1["srcObj"]||dj_global;
-var _1b4=dojo.lang.nameAnonFunc(_1b1.srcFunc,_1b1.srcObj,true);
-_1b1.srcFunc=_1b4;
-}
-if(typeof _1b1["adviceFunc"]=="function"){
-_1b1.adviceObj=_1b1["adviceObj"]||dj_global;
-var _1b4=dojo.lang.nameAnonFunc(_1b1.adviceFunc,_1b1.adviceObj,true);
-_1b1.adviceFunc=_1b4;
-}
-_1b1.srcObj=_1b1["srcObj"]||dj_global;
-_1b1.adviceObj=_1b1["adviceObj"]||_1b1["targetObj"]||dj_global;
-_1b1.adviceFunc=_1b1["adviceFunc"]||_1b1["targetFunc"];
-return dojo.event[fn](_1b1);
-};
-this.kwConnect=function(_1b5){
-return this._kwConnectImpl(_1b5,false);
-};
-this.disconnect=function(){
-if(arguments.length==1){
-var ao=arguments[0];
-}else{
-var ao=interpolateArgs(arguments,true);
-}
-if(!ao.adviceFunc){
-return;
-}
-if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
-if(dojo.render.html.ie){
-ao.srcFunc="onkeydown";
-this.disconnect(ao);
-}
-ao.srcFunc="onkeypress";
-}
-if(!ao.srcObj[ao.srcFunc]){
-return null;
-}
-var mjp=dojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc,true);
-mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
-return mjp;
-};
-this.kwDisconnect=function(_1b8){
-return this._kwConnectImpl(_1b8,true);
-};
-};
-dojo.event.MethodInvocation=function(_1b9,obj,args){
-this.jp_=_1b9;
-this.object=obj;
-this.args=[];
-for(var x=0;x<args.length;x++){
-this.args[x]=args[x];
-}
-this.around_index=-1;
-};
-dojo.event.MethodInvocation.prototype.proceed=function(){
-this.around_index++;
-if(this.around_index>=this.jp_.around.length){
-return this.jp_.object[this.jp_.methodname].apply(this.jp_.object,this.args);
-}else{
-var ti=this.jp_.around[this.around_index];
-var mobj=ti[0]||dj_global;
-var meth=ti[1];
-return mobj[meth].call(mobj,this);
-}
-};
-dojo.event.MethodJoinPoint=function(obj,_1c1){
-this.object=obj||dj_global;
-this.methodname=_1c1;
-this.methodfunc=this.object[_1c1];
-this.squelch=false;
-};
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_1c3){
-if(!obj){
-obj=dj_global;
-}
-var ofn=obj[_1c3];
-if(!ofn){
-ofn=obj[_1c3]=function(){
-};
-if(!obj[_1c3]){
-dojo.raise("Cannot set do-nothing method on that object "+_1c3);
-}
-}else{
-if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
-return null;
-}
-}
-var _1c5=_1c3+"$joinpoint";
-var _1c6=_1c3+"$joinpoint$method";
-var _1c7=obj[_1c5];
-if(!_1c7){
-var _1c8=false;
-if(dojo.event["browser"]){
-if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_1c8=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_1c5,_1c6,_1c3]);
-}
-}
-var _1c9=ofn.length;
-obj[_1c6]=ofn;
-_1c7=obj[_1c5]=new dojo.event.MethodJoinPoint(obj,_1c6);
-if(!_1c8){
-obj[_1c3]=function(){
-return _1c7.run.apply(_1c7,arguments);
-};
-}else{
-obj[_1c3]=function(){
-var args=[];
-if(!arguments.length){
-var evt=null;
-try{
-if(obj.ownerDocument){
-evt=obj.ownerDocument.parentWindow.event;
-}else{
-if(obj.documentElement){
-evt=obj.documentElement.ownerDocument.parentWindow.event;
-}else{
-if(obj.event){
-evt=obj.event;
-}else{
-evt=window.event;
-}
-}
-}
-}
-catch(e){
-evt=window.event;
-}
-if(evt){
-args.push(dojo.event.browser.fixEvent(evt,this));
-}
-}else{
-for(var x=0;x<arguments.length;x++){
-if((x==0)&&(dojo.event.browser.isEvent(arguments[x]))){
-args.push(dojo.event.browser.fixEvent(arguments[x],this));
-}else{
-args.push(arguments[x]);
-}
-}
-}
-return _1c7.run.apply(_1c7,args);
-};
-}
-obj[_1c3].__preJoinArity=_1c9;
-}
-return _1c7;
-};
-dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
-this.object[this.methodname]=this.methodfunc;
-this.before=[];
-this.after=[];
-this.around=[];
-},disconnect:dojo.lang.forward("unintercept"),run:function(){
-var obj=this.object||dj_global;
-var args=arguments;
-var _1cf=[];
-for(var x=0;x<args.length;x++){
-_1cf[x]=args[x];
-}
-var _1d1=function(marr){
-if(!marr){
-dojo.debug("Null argument to unrollAdvice()");
-return;
-}
-var _1d3=marr[0]||dj_global;
-var _1d4=marr[1];
-if(!_1d3[_1d4]){
-dojo.raise("function \""+_1d4+"\" does not exist on \""+_1d3+"\"");
-}
-var _1d5=marr[2]||dj_global;
-var _1d6=marr[3];
-var msg=marr[6];
-var _1d8=marr[7];
-if(_1d8>-1){
-if(_1d8==0){
-return;
-}
-marr[7]--;
-}
-var _1d9;
-var to={args:[],jp_:this,object:obj,proceed:function(){
-return _1d3[_1d4].apply(_1d3,to.args);
-}};
-to.args=_1cf;
-var _1db=parseInt(marr[4]);
-var _1dc=((!isNaN(_1db))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
-if(marr[5]){
-var rate=parseInt(marr[5]);
-var cur=new Date();
-var _1df=false;
-if((marr["last"])&&((cur-marr.last)<=rate)){
-if(dojo.event._canTimeout){
-if(marr["delayTimer"]){
-clearTimeout(marr.delayTimer);
-}
-var tod=parseInt(rate*2);
-var mcpy=dojo.lang.shallowCopy(marr);
-marr.delayTimer=setTimeout(function(){
-mcpy[5]=0;
-_1d1(mcpy);
-},tod);
-}
-return;
-}else{
-marr.last=cur;
-}
-}
-if(_1d6){
-_1d5[_1d6].call(_1d5,to);
-}else{
-if((_1dc)&&((dojo.render.html)||(dojo.render.svg))){
-dj_global["setTimeout"](function(){
-if(msg){
-_1d3[_1d4].call(_1d3,to);
-}else{
-_1d3[_1d4].apply(_1d3,args);
-}
-},_1db);
-}else{
-if(msg){
-_1d3[_1d4].call(_1d3,to);
-}else{
-_1d3[_1d4].apply(_1d3,args);
-}
-}
-}
-};
-var _1e2=function(){
-if(this.squelch){
-try{
-return _1d1.apply(this,arguments);
-}
-catch(e){
-dojo.debug(e);
-}
-}else{
-return _1d1.apply(this,arguments);
-}
-};
-if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_1e2);
-}
-var _1e3;
-try{
-if((this["around"])&&(this.around.length>0)){
-var mi=new dojo.event.MethodInvocation(this,obj,args);
-_1e3=mi.proceed();
-}else{
-if(this.methodfunc){
-_1e3=this.object[this.methodname].apply(this.object,args);
-}
-}
-}
-catch(e){
-if(!this.squelch){
-dojo.debug(e,"when calling",this.methodname,"on",this.object,"with arguments",args);
-dojo.raise(e);
-}
-}
-if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_1e2);
-}
-return (this.methodfunc)?_1e3:null;
-},getArr:function(kind){
-var type="after";
-if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
-type="before";
-}else{
-if(kind=="around"){
-type="around";
-}
-}
-if(!this[type]){
-this[type]=[];
-}
-return this[type];
-},kwAddAdvice:function(args){
-this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_1e8,_1e9,_1ea,_1eb,_1ec,_1ed,once,_1ef,rate,_1f1,_1f2){
-var arr=this.getArr(_1ec);
-if(!arr){
-dojo.raise("bad this: "+this);
-}
-var ao=[_1e8,_1e9,_1ea,_1eb,_1ef,rate,_1f1,_1f2];
-if(once){
-if(this.hasAdvice(_1e8,_1e9,_1ec,arr)>=0){
-return;
-}
-}
-if(_1ed=="first"){
-arr.unshift(ao);
-}else{
-arr.push(ao);
-}
-},hasAdvice:function(_1f5,_1f6,_1f7,arr){
-if(!arr){
-arr=this.getArr(_1f7);
-}
-var ind=-1;
-for(var x=0;x<arr.length;x++){
-var aao=(typeof _1f6=="object")?(new String(_1f6)).toString():_1f6;
-var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_1f5)&&(a1o==aao)){
-ind=x;
-}
-}
-return ind;
-},removeAdvice:function(_1fd,_1fe,_1ff,once){
-var arr=this.getArr(_1ff);
-var ind=this.hasAdvice(_1fd,_1fe,_1ff,arr);
-if(ind==-1){
-return false;
-}
-while(ind!=-1){
-arr.splice(ind,1);
-if(once){
-break;
-}
-ind=this.hasAdvice(_1fd,_1fe,_1ff,arr);
-}
-return true;
-}});
-dojo.provide("dojo.event.topic");
-dojo.event.topic=new function(){
-this.topics={};
-this.getTopic=function(_203){
-if(!this.topics[_203]){
-this.topics[_203]=new this.TopicImpl(_203);
-}
-return this.topics[_203];
-};
-this.registerPublisher=function(_204,obj,_206){
-var _204=this.getTopic(_204);
-_204.registerPublisher(obj,_206);
-};
-this.subscribe=function(_207,obj,_209){
-var _207=this.getTopic(_207);
-_207.subscribe(obj,_209);
-};
-this.unsubscribe=function(_20a,obj,_20c){
-var _20a=this.getTopic(_20a);
-_20a.unsubscribe(obj,_20c);
-};
-this.destroy=function(_20d){
-this.getTopic(_20d).destroy();
-delete this.topics[_20d];
-};
-this.publishApply=function(_20e,args){
-var _20e=this.getTopic(_20e);
-_20e.sendMessage.apply(_20e,args);
-};
-this.publish=function(_210,_211){
-var _210=this.getTopic(_210);
-var args=[];
-for(var x=1;x<arguments.length;x++){
-args.push(arguments[x]);
-}
-_210.sendMessage.apply(_210,args);
-};
-};
-dojo.event.topic.TopicImpl=function(_214){
-this.topicName=_214;
-this.subscribe=function(_215,_216){
-var tf=_216||_215;
-var to=(!_216)?dj_global:_215;
-return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
-};
-this.unsubscribe=function(_219,_21a){
-var tf=(!_21a)?_219:_21a;
-var to=(!_21a)?null:_219;
-return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
-};
-this._getJoinPoint=function(){
-return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
-};
-this.setSquelch=function(_21d){
-this._getJoinPoint().squelch=_21d;
-};
-this.destroy=function(){
-this._getJoinPoint().disconnect();
-};
-this.registerPublisher=function(_21e,_21f){
-dojo.event.connect(_21e,_21f,this,"sendMessage");
-};
-this.sendMessage=function(_220){
-};
-};
-dojo.provide("dojo.event.browser");
-dojo._ie_clobber=new function(){
-this.clobberNodes=[];
-function nukeProp(node,prop){
-try{
-node[prop]=null;
-}
-catch(e){
-}
-try{
-delete node[prop];
-}
-catch(e){
-}
-try{
-node.removeAttribute(prop);
-}
-catch(e){
-}
-}
-this.clobber=function(_223){
-var na;
-var tna;
-if(_223){
-tna=_223.all||_223.getElementsByTagName("*");
-na=[_223];
-for(var x=0;x<tna.length;x++){
-if(tna[x]["__doClobber__"]){
-na.push(tna[x]);
-}
-}
-}else{
-try{
-window.onload=null;
-}
-catch(e){
-}
-na=(this.clobberNodes.length)?this.clobberNodes:document.all;
-}
-tna=null;
-var _227={};
-for(var i=na.length-1;i>=0;i=i-1){
-var el=na[i];
-try{
-if(el&&el["__clobberAttrs__"]){
-for(var j=0;j<el.__clobberAttrs__.length;j++){
-nukeProp(el,el.__clobberAttrs__[j]);
-}
-nukeProp(el,"__clobberAttrs__");
-nukeProp(el,"__doClobber__");
-}
-}
-catch(e){
-}
-}
-na=null;
-};
-};
-if(dojo.render.html.ie){
-dojo.addOnUnload(function(){
-dojo._ie_clobber.clobber();
-try{
-if((dojo["widget"])&&(dojo.widget["manager"])){
-dojo.widget.manager.destroyAll();
-}
-}
-catch(e){
-}
-if(dojo.widget){
-for(var name in dojo.widget._templateCache){
-if(dojo.widget._templateCache[name].node){
-dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
-dojo.widget._templateCache[name].node=null;
-delete dojo.widget._templateCache[name].node;
-}
-}
-}
-try{
-window.onload=null;
-}
-catch(e){
-}
-try{
-window.onunload=null;
-}
-catch(e){
-}
-dojo._ie_clobber.clobberNodes=[];
-});
-}
-dojo.event.browser=new function(){
-var _22c=0;
-this.normalizedEventName=function(_22d){
-switch(_22d){
-case "CheckboxStateChange":
-case "DOMAttrModified":
-case "DOMMenuItemActive":
-case "DOMMenuItemInactive":
-case "DOMMouseScroll":
-case "DOMNodeInserted":
-case "DOMNodeRemoved":
-case "RadioStateChange":
-return _22d;
-break;
-default:
-var lcn=_22d.toLowerCase();
-return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
-break;
-}
-};
-this.clean=function(node){
-if(dojo.render.html.ie){
-dojo._ie_clobber.clobber(node);
-}
-};
-this.addClobberNode=function(node){
-if(!dojo.render.html.ie){
-return;
-}
-if(!node["__doClobber__"]){
-node.__doClobber__=true;
-dojo._ie_clobber.clobberNodes.push(node);
-node.__clobberAttrs__=[];
-}
-};
-this.addClobberNodeAttrs=function(node,_232){
-if(!dojo.render.html.ie){
-return;
-}
-this.addClobberNode(node);
-for(var x=0;x<_232.length;x++){
-node.__clobberAttrs__.push(_232[x]);
-}
-};
-this.removeListener=function(node,_235,fp,_237){
-if(!_237){
-var _237=false;
-}
-_235=dojo.event.browser.normalizedEventName(_235);
-if(_235=="key"){
-if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_237);
-}
-_235="keypress";
-}
-if(node.removeEventListener){
-node.removeEventListener(_235,fp,_237);
-}
-};
-this.addListener=function(node,_239,fp,_23b,_23c){
-if(!node){
-return;
-}
-if(!_23b){
-var _23b=false;
-}
-_239=dojo.event.browser.normalizedEventName(_239);
-if(_239=="key"){
-if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_23b,_23c);
-}
-_239="keypress";
-}
-if(!_23c){
-var _23d=function(evt){
-if(!evt){
-evt=window.event;
-}
-var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_23b){
-dojo.event.browser.stopEvent(evt);
-}
-return ret;
-};
-}else{
-_23d=fp;
-}
-if(node.addEventListener){
-node.addEventListener(_239,_23d,_23b);
-return _23d;
-}else{
-_239="on"+_239;
-if(typeof node[_239]=="function"){
-var _240=node[_239];
-node[_239]=function(e){
-_240(e);
-return _23d(e);
-};
-}else{
-node[_239]=_23d;
-}
-if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_239]);
-}
-return _23d;
-}
-};
-this.isEvent=function(obj){
-return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
-};
-this.currentEvent=null;
-this.callListener=function(_243,_244){
-if(typeof _243!="function"){
-dojo.raise("listener not a function: "+_243);
-}
-dojo.event.browser.currentEvent.currentTarget=_244;
-return _243.call(_244,dojo.event.browser.currentEvent);
-};
-this._stopPropagation=function(){
-dojo.event.browser.currentEvent.cancelBubble=true;
-};
-this._preventDefault=function(){
-dojo.event.browser.currentEvent.returnValue=false;
-};
-this.keys={KEY_BACKSPACE:8,KEY_TAB:9,KEY_CLEAR:12,KEY_ENTER:13,KEY_SHIFT:16,KEY_CTRL:17,KEY_ALT:18,KEY_PAUSE:19,KEY_CAPS_LOCK:20,KEY_ESCAPE:27,KEY_SPACE:32,KEY_PAGE_UP:33,KEY_PAGE_DOWN:34,KEY_END:35,KEY_HOME:36,KEY_LEFT_ARROW:37,KEY_UP_ARROW:38,KEY_RIGHT_ARROW:39,KEY_DOWN_ARROW:40,KEY_INSERT:45,KEY_DELETE:46,KEY_HELP:47,KEY_LEFT_WINDOW:91,KEY_RIGHT_WINDOW:92,KEY_SELECT:93,KEY_NUMPAD_0:96,KEY_NUMPAD_1:97,KEY_NUMPAD_2:98,KEY_NUMPAD_3:99,KEY_NUMPAD_4:100,KEY_NUMPAD_5:101,KEY_NUMPAD_6:102,KEY_NUMPAD_7:103,KEY_NUMPAD_8:104,KEY_NUMPAD_9:105,KEY_NUMPAD_MULTIPLY:106,KEY_NUMPAD_PLUS:107,KEY_NUMPAD_ENTER:108,KEY_NUMPAD_MINUS:109,KEY_NUMPAD_PERIOD:110,KEY_NUMPAD_DIVIDE:111,KEY_F1:112,KEY_F2:113,KEY_F3:114,KEY_F4:115,KEY_F5:116,KEY_F6:117,KEY_F7:118,KEY_F8:119,KEY_F9:120,KEY_F10:121,KEY_F11:122,KEY_F12:123,KEY_F13:124,KEY_F14:125,KEY_F15:126,KEY_NUM_LOCK:144,KEY_SCROLL_LOCK:145};
-this.revKeys=[];
-for(var key in this.keys){
-this.revKeys[this.keys[key]]=key;
-}
-this.fixEvent=function(evt,_247){
-if(!evt){
-if(window["event"]){
-evt=window.event;
-}
-}
-if((evt["type"])&&(evt["type"].indexOf("key")==0)){
-evt.keys=this.revKeys;
-for(var key in this.keys){
-evt[key]=this.keys[key];
-}
-if(evt["type"]=="keydown"&&dojo.render.html.ie){
-switch(evt.keyCode){
-case evt.KEY_SHIFT:
-case evt.KEY_CTRL:
-case evt.KEY_ALT:
-case evt.KEY_CAPS_LOCK:
-case evt.KEY_LEFT_WINDOW:
-case evt.KEY_RIGHT_WINDOW:
-case evt.KEY_SELECT:
-case evt.KEY_NUM_LOCK:
-case evt.KEY_SCROLL_LOCK:
-case evt.KEY_NUMPAD_0:
-case evt.KEY_NUMPAD_1:
-case evt.KEY_NUMPAD_2:
-case evt.KEY_NUMPAD_3:
-case evt.KEY_NUMPAD_4:
-case evt.KEY_NUMPAD_5:
-case evt.KEY_NUMPAD_6:
-case evt.KEY_NUMPAD_7:
-case evt.KEY_NUMPAD_8:
-case evt.KEY_NUMPAD_9:
-case evt.KEY_NUMPAD_PERIOD:
-break;
-case evt.KEY_NUMPAD_MULTIPLY:
-case evt.KEY_NUMPAD_PLUS:
-case evt.KEY_NUMPAD_ENTER:
-case evt.KEY_NUMPAD_MINUS:
-case evt.KEY_NUMPAD_DIVIDE:
-break;
-case evt.KEY_PAUSE:
-case evt.KEY_TAB:
-case evt.KEY_BACKSPACE:
-case evt.KEY_ENTER:
-case evt.KEY_ESCAPE:
-case evt.KEY_PAGE_UP:
-case evt.KEY_PAGE_DOWN:
-case evt.KEY_END:
-case evt.KEY_HOME:
-case evt.KEY_LEFT_ARROW:
-case evt.KEY_UP_ARROW:
-case evt.KEY_RIGHT_ARROW:
-case evt.KEY_DOWN_ARROW:
-case evt.KEY_INSERT:
-case evt.KEY_DELETE:
-case evt.KEY_F1:
-case evt.KEY_F2:
-case evt.KEY_F3:
-case evt.KEY_F4:
-case evt.KEY_F5:
-case evt.KEY_F6:
-case evt.KEY_F7:
-case evt.KEY_F8:
-case evt.KEY_F9:
-case evt.KEY_F10:
-case evt.KEY_F11:
-case evt.KEY_F12:
-case evt.KEY_F12:
-case evt.KEY_F13:
-case evt.KEY_F14:
-case evt.KEY_F15:
-case evt.KEY_CLEAR:
-case evt.KEY_HELP:
-evt.key=evt.keyCode;
-break;
-default:
-if(evt.ctrlKey||evt.altKey){
-var _249=evt.keyCode;
-if(_249>=65&&_249<=90&&evt.shiftKey==false){
-_249+=32;
-}
-if(_249>=1&&_249<=26&&evt.ctrlKey){
-_249+=96;
-}
-evt.key=String.fromCharCode(_249);
-}
-}
-}else{
-if(evt["type"]=="keypress"){
-if(dojo.render.html.opera){
-if(evt.which==0){
-evt.key=evt.keyCode;
-}else{
-if(evt.which>0){
-switch(evt.which){
-case evt.KEY_SHIFT:
-case evt.KEY_CTRL:
-case evt.KEY_ALT:
-case evt.KEY_CAPS_LOCK:
-case evt.KEY_NUM_LOCK:
-case evt.KEY_SCROLL_LOCK:
-break;
-case evt.KEY_PAUSE:
-case evt.KEY_TAB:
-case evt.KEY_BACKSPACE:
-case evt.KEY_ENTER:
-case evt.KEY_ESCAPE:
-evt.key=evt.which;
-break;
-default:
-var _249=evt.which;
-if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_249+=32;
-}
-evt.key=String.fromCharCode(_249);
-}
-}
-}
-}else{
-if(dojo.render.html.ie){
-if(!evt.ctrlKey&&!evt.altKey&&evt.keyCode>=evt.KEY_SPACE){
-evt.key=String.fromCharCode(evt.keyCode);
-}
-}else{
-if(dojo.render.html.safari){
-switch(evt.keyCode){
-case 25:
-evt.key=evt.KEY_TAB;
-evt.shift=true;
-break;
-case 63232:
-evt.key=evt.KEY_UP_ARROW;
-break;
-case 63233:
-evt.key=evt.KEY_DOWN_ARROW;
-break;
-case 63234:
-evt.key=evt.KEY_LEFT_ARROW;
-break;
-case 63235:
-evt.key=evt.KEY_RIGHT_ARROW;
-break;
-case 63236:
-evt.key=evt.KEY_F1;
-break;
-case 63237:
-evt.key=evt.KEY_F2;
-break;
-case 63238:
-evt.key=evt.KEY_F3;
-break;
-case 63239:
-evt.key=evt.KEY_F4;
-break;
-case 63240:
-evt.key=evt.KEY_F5;
-break;
-case 63241:
-evt.key=evt.KEY_F6;
-break;
-case 63242:
-evt.key=evt.KEY_F7;
-break;
-case 63243:
-evt.key=evt.KEY_F8;
-break;
-case 63244:
-evt.key=evt.KEY_F9;
-break;
-case 63245:
-evt.key=evt.KEY_F10;
-break;
-case 63246:
-evt.key=evt.KEY_F11;
-break;
-case 63247:
-evt.key=evt.KEY_F12;
-break;
-case 63250:
-evt.key=evt.KEY_PAUSE;
-break;
-case 63272:
-evt.key=evt.KEY_DELETE;
-break;
-case 63273:
-evt.key=evt.KEY_HOME;
-break;
-case 63275:
-evt.key=evt.KEY_END;
-break;
-case 63276:
-evt.key=evt.KEY_PAGE_UP;
-break;
-case 63277:
-evt.key=evt.KEY_PAGE_DOWN;
-break;
-case 63302:
-evt.key=evt.KEY_INSERT;
-break;
-case 63248:
-case 63249:
-case 63289:
-break;
-default:
-evt.key=evt.charCode>=evt.KEY_SPACE?String.fromCharCode(evt.charCode):evt.keyCode;
-}
-}else{
-evt.key=evt.charCode>0?String.fromCharCode(evt.charCode):evt.keyCode;
-}
-}
-}
-}
-}
-}
-if(dojo.render.html.ie){
-if(!evt.target){
-evt.target=evt.srcElement;
-}
-if(!evt.currentTarget){
-evt.currentTarget=(_247?_247:evt.srcElement);
-}
-if(!evt.layerX){
-evt.layerX=evt.offsetX;
-}
-if(!evt.layerY){
-evt.layerY=evt.offsetY;
-}
-var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _24b=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
-if(!evt.pageX){
-evt.pageX=evt.clientX+(_24b.scrollLeft||0);
-}
-if(!evt.pageY){
-evt.pageY=evt.clientY+(_24b.scrollTop||0);
-}
-if(evt.type=="mouseover"){
-evt.relatedTarget=evt.fromElement;
-}
-if(evt.type=="mouseout"){
-evt.relatedTarget=evt.toElement;
-}
-this.currentEvent=evt;
-evt.callListener=this.callListener;
-evt.stopPropagation=this._stopPropagation;
-evt.preventDefault=this._preventDefault;
-}
-return evt;
-};
-this.stopEvent=function(evt){
-if(window.event){
-evt.cancelBubble=true;
-evt.returnValue=false;
-}else{
-evt.preventDefault();
-evt.stopPropagation();
-}
-};
-};
-dojo.kwCompoundRequire({common:["dojo.event.common","dojo.event.topic"],browser:["dojo.event.browser"],dashboard:["dojo.event.browser"]});
-dojo.provide("dojo.event.*");
-dojo.provide("dojo.event");
-dojo.deprecated("dojo.event","replaced by dojo.event.*","0.5");
-dojo.provide("dojo.string.common");
-dojo.string.trim=function(str,wh){
-if(!str.replace){
-return str;
-}
-if(!str.length){
-return str;
-}
-var re=(wh>0)?(/^\s+/):(wh<0)?(/\s+$/):(/^\s+|\s+$/g);
-return str.replace(re,"");
-};
-dojo.string.trimStart=function(str){
-return dojo.string.trim(str,1);
-};
-dojo.string.trimEnd=function(str){
-return dojo.string.trim(str,-1);
-};
-dojo.string.repeat=function(str,_253,_254){
-var out="";
-for(var i=0;i<_253;i++){
-out+=str;
-if(_254&&i<_253-1){
-out+=_254;
-}
-}
-return out;
-};
-dojo.string.pad=function(str,len,c,dir){
-var out=String(str);
-if(!c){
-c="0";
-}
-if(!dir){
-dir=1;
-}
-while(out.length<len){
-if(dir>0){
-out=c+out;
-}else{
-out+=c;
-}
-}
-return out;
-};
-dojo.string.padLeft=function(str,len,c){
-return dojo.string.pad(str,len,c,1);
-};
-dojo.string.padRight=function(str,len,c){
-return dojo.string.pad(str,len,c,-1);
-};
-dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_262,hash){
-var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _262.replace(/\%\{(\w+)\}/g,function(_265,key){
-if(typeof (map[key])!="undefined"&&map[key]!=null){
-return map[key];
-}
-dojo.raise("Substitution not found: "+key);
-});
-};
-dojo.string.capitalize=function(str){
-if(!dojo.lang.isString(str)){
-return "";
-}
-if(arguments.length==0){
-str=this;
-}
-var _268=str.split(" ");
-for(var i=0;i<_268.length;i++){
-_268[i]=_268[i].charAt(0).toUpperCase()+_268[i].substring(1);
-}
-return _268.join(" ");
-};
-dojo.string.isBlank=function(str){
-if(!dojo.lang.isString(str)){
-return true;
-}
-return (dojo.string.trim(str).length==0);
-};
-dojo.string.encodeAscii=function(str){
-if(!dojo.lang.isString(str)){
-return str;
-}
-var ret="";
-var _26d=escape(str);
-var _26e,re=/%u([0-9A-F]{4})/i;
-while((_26e=_26d.match(re))){
-var num=Number("0x"+_26e[1]);
-var _271=escape("&#"+num+";");
-ret+=_26d.substring(0,_26e.index)+_271;
-_26d=_26d.substring(_26e.index+_26e[0].length);
-}
-ret+=_26d.replace(/\+/g,"%2B");
-return ret;
-};
-dojo.string.escape=function(type,str){
-var args=dojo.lang.toArray(arguments,1);
-switch(type.toLowerCase()){
-case "xml":
-case "html":
-case "xhtml":
-return dojo.string.escapeXml.apply(this,args);
-case "sql":
-return dojo.string.escapeSql.apply(this,args);
-case "regexp":
-case "regex":
-return dojo.string.escapeRegExp.apply(this,args);
-case "javascript":
-case "jscript":
-case "js":
-return dojo.string.escapeJavaScript.apply(this,args);
-case "ascii":
-return dojo.string.encodeAscii.apply(this,args);
-default:
-return str;
-}
-};
-dojo.string.escapeXml=function(str,_276){
-str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_276){
-str=str.replace(/'/gm,"&#39;");
-}
-return str;
-};
-dojo.string.escapeSql=function(str){
-return str.replace(/'/gm,"''");
-};
-dojo.string.escapeRegExp=function(str){
-return str.replace(/\\/gm,"\\\\").replace(/([\f\b\n\t\r[\^$|?*+(){}])/gm,"\\$1");
-};
-dojo.string.escapeJavaScript=function(str){
-return str.replace(/(["'\f\b\n\t\r])/gm,"\\$1");
-};
-dojo.string.escapeString=function(str){
-return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");
-};
-dojo.string.summary=function(str,len){
-if(!len||str.length<=len){
-return str;
-}
-return str.substring(0,len).replace(/\.+$/,"")+"...";
-};
-dojo.string.endsWith=function(str,end,_27f){
-if(_27f){
-str=str.toLowerCase();
-end=end.toLowerCase();
-}
-if((str.length-end.length)<0){
-return false;
-}
-return str.lastIndexOf(end)==str.length-end.length;
-};
-dojo.string.endsWithAny=function(str){
-for(var i=1;i<arguments.length;i++){
-if(dojo.string.endsWith(str,arguments[i])){
-return true;
-}
-}
-return false;
-};
-dojo.string.startsWith=function(str,_283,_284){
-if(_284){
-str=str.toLowerCase();
-_283=_283.toLowerCase();
-}
-return str.indexOf(_283)==0;
-};
-dojo.string.startsWithAny=function(str){
-for(var i=1;i<arguments.length;i++){
-if(dojo.string.startsWith(str,arguments[i])){
-return true;
-}
-}
-return false;
-};
-dojo.string.has=function(str){
-for(var i=1;i<arguments.length;i++){
-if(str.indexOf(arguments[i])>-1){
-return true;
-}
-}
-return false;
-};
-dojo.string.normalizeNewlines=function(text,_28a){
-if(_28a=="\n"){
-text=text.replace(/\r\n/g,"\n");
-text=text.replace(/\r/g,"\n");
-}else{
-if(_28a=="\r"){
-text=text.replace(/\r\n/g,"\r");
-text=text.replace(/\n/g,"\r");
-}else{
-text=text.replace(/([^\r])\n/g,"$1\r\n").replace(/\r([^\n])/g,"\r\n$1");
-}
-}
-return text;
-};
-dojo.string.splitEscaped=function(str,_28c){
-var _28d=[];
-for(var i=0,_28f=0;i<str.length;i++){
-if(str.charAt(i)=="\\"){
-i++;
-continue;
-}
-if(str.charAt(i)==_28c){
-_28d.push(str.substring(_28f,i));
-_28f=i+1;
-}
-}
-_28d.push(str.substr(_28f));
-return _28d;
-};
-dojo.provide("dojo.string");
-dojo.provide("dojo.io.common");
-dojo.io.transports=[];
-dojo.io.hdlrFuncNames=["load","error","timeout"];
-dojo.io.Request=function(url,_291,_292,_293){
-if((arguments.length==1)&&(arguments[0].constructor==Object)){
-this.fromKwArgs(arguments[0]);
-}else{
-this.url=url;
-if(_291){
-this.mimetype=_291;
-}
-if(_292){
-this.transport=_292;
-}
-if(arguments.length>=4){
-this.changeUrl=_293;
-}
-}
-};
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_296,_297){
-},error:function(type,_299,_29a,_29b){
-},timeout:function(type,_29d,_29e,_29f){
-},handle:function(type,data,_2a2,_2a3){
-},timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_2a4){
-if(_2a4["url"]){
-_2a4.url=_2a4.url.toString();
-}
-if(_2a4["formNode"]){
-_2a4.formNode=dojo.byId(_2a4.formNode);
-}
-if(!_2a4["method"]&&_2a4["formNode"]&&_2a4["formNode"].method){
-_2a4.method=_2a4["formNode"].method;
-}
-if(!_2a4["handle"]&&_2a4["handler"]){
-_2a4.handle=_2a4.handler;
-}
-if(!_2a4["load"]&&_2a4["loaded"]){
-_2a4.load=_2a4.loaded;
-}
-if(!_2a4["changeUrl"]&&_2a4["changeURL"]){
-_2a4.changeUrl=_2a4.changeURL;
-}
-_2a4.encoding=dojo.lang.firstValued(_2a4["encoding"],djConfig["bindEncoding"],"");
-_2a4.sendTransport=dojo.lang.firstValued(_2a4["sendTransport"],djConfig["ioSendTransport"],false);
-var _2a5=dojo.lang.isFunction;
-for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
-var fn=dojo.io.hdlrFuncNames[x];
-if(_2a4[fn]&&_2a5(_2a4[fn])){
-continue;
-}
-if(_2a4["handle"]&&_2a5(_2a4["handle"])){
-_2a4[fn]=_2a4.handle;
-}
-}
-dojo.lang.mixin(this,_2a4);
-}});
-dojo.io.Error=function(msg,type,num){
-this.message=msg;
-this.type=type||"unknown";
-this.number=num||0;
-};
-dojo.io.transports.addTransport=function(name){
-this.push(name);
-this[name]=dojo.io[name];
-};
-dojo.io.bind=function(_2ac){
-if(!(_2ac instanceof dojo.io.Request)){
-try{
-_2ac=new dojo.io.Request(_2ac);
-}
-catch(e){
-dojo.debug(e);
-}
-}
-var _2ad="";
-if(_2ac["transport"]){
-_2ad=_2ac["transport"];
-if(!this[_2ad]){
-dojo.io.sendBindError(_2ac,"No dojo.io.bind() transport with name '"+_2ac["transport"]+"'.");
-return _2ac;
-}
-if(!this[_2ad].canHandle(_2ac)){
-dojo.io.sendBindError(_2ac,"dojo.io.bind() transport with name '"+_2ac["transport"]+"' cannot handle this type of request.");
-return _2ac;
-}
-}else{
-for(var x=0;x<dojo.io.transports.length;x++){
-var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_2ac))){
-_2ad=tmp;
-break;
-}
-}
-if(_2ad==""){
-dojo.io.sendBindError(_2ac,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _2ac;
-}
-}
-this[_2ad].bind(_2ac);
-_2ac.bindSuccess=true;
-return _2ac;
-};
-dojo.io.sendBindError=function(_2b0,_2b1){
-if((typeof _2b0.error=="function"||typeof _2b0.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _2b2=new dojo.io.Error(_2b1);
-setTimeout(function(){
-_2b0[(typeof _2b0.error=="function")?"error":"handle"]("error",_2b2,null,_2b0);
-},50);
-}else{
-dojo.raise(_2b1);
-}
-};
-dojo.io.queueBind=function(_2b3){
-if(!(_2b3 instanceof dojo.io.Request)){
-try{
-_2b3=new dojo.io.Request(_2b3);
-}
-catch(e){
-dojo.debug(e);
-}
-}
-var _2b4=_2b3.load;
-_2b3.load=function(){
-dojo.io._queueBindInFlight=false;
-var ret=_2b4.apply(this,arguments);
-dojo.io._dispatchNextQueueBind();
-return ret;
-};
-var _2b6=_2b3.error;
-_2b3.error=function(){
-dojo.io._queueBindInFlight=false;
-var ret=_2b6.apply(this,arguments);
-dojo.io._dispatchNextQueueBind();
-return ret;
-};
-dojo.io._bindQueue.push(_2b3);
-dojo.io._dispatchNextQueueBind();
-return _2b3;
-};
-dojo.io._dispatchNextQueueBind=function(){
-if(!dojo.io._queueBindInFlight){
-dojo.io._queueBindInFlight=true;
-if(dojo.io._bindQueue.length>0){
-dojo.io.bind(dojo.io._bindQueue.shift());
-}else{
-dojo.io._queueBindInFlight=false;
-}
-}
-};
-dojo.io._bindQueue=[];
-dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_2b9,last){
-var enc=/utf/i.test(_2b9||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _2bc=[];
-var _2bd=new Object();
-for(var name in map){
-var _2bf=function(elt){
-var val=enc(name)+"="+enc(elt);
-_2bc[(last==name)?"push":"unshift"](val);
-};
-if(!_2bd[name]){
-var _2c2=map[name];
-if(dojo.lang.isArray(_2c2)){
-dojo.lang.forEach(_2c2,_2bf);
-}else{
-_2bf(_2c2);
-}
-}
-}
-return _2bc.join("&");
-};
-dojo.io.setIFrameSrc=function(_2c3,src,_2c5){
-try{
-var r=dojo.render.html;
-if(!_2c5){
-if(r.safari){
-_2c3.location=src;
-}else{
-frames[_2c3.name].location=src;
-}
-}else{
-var idoc;
-if(r.ie){
-idoc=_2c3.contentWindow.document;
-}else{
-if(r.safari){
-idoc=_2c3.document;
-}else{
-idoc=_2c3.contentWindow;
-}
-}
-if(!idoc){
-_2c3.location=src;
-return;
-}else{
-idoc.location.replace(src);
-}
-}
-}
-catch(e){
-dojo.debug(e);
-dojo.debug("setIFrameSrc: "+e);
-}
-};
-dojo.provide("dojo.dom");
-dojo.dom.ELEMENT_NODE=1;
-dojo.dom.ATTRIBUTE_NODE=2;
-dojo.dom.TEXT_NODE=3;
-dojo.dom.CDATA_SECTION_NODE=4;
-dojo.dom.ENTITY_REFERENCE_NODE=5;
-dojo.dom.ENTITY_NODE=6;
-dojo.dom.PROCESSING_INSTRUCTION_NODE=7;
-dojo.dom.COMMENT_NODE=8;
-dojo.dom.DOCUMENT_NODE=9;
-dojo.dom.DOCUMENT_TYPE_NODE=10;
-dojo.dom.DOCUMENT_FRAGMENT_NODE=11;
-dojo.dom.NOTATION_NODE=12;
-dojo.dom.dojoml="http://www.dojotoolkit.org/2004/dojoml";
-dojo.dom.xmlns={svg:"http://www.w3.org/2000/svg",smil:"http://www.w3.org/2001/SMIL20/",mml:"http://www.w3.org/1998/Math/MathML",cml:"http://www.xml-cml.org",xlink:"http://www.w3.org/1999/xlink",xhtml:"http://www.w3.org/1999/xhtml",xul:"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",xbl:"http://www.mozilla.org/xbl",fo:"http://www.w3.org/1999/XSL/Format",xsl:"http://www.w3.org/1999/XSL/Transform",xslt:"http://www.w3.org/1999/XSL/Transform",xi:"http://www.w3.org/2001/XInclude",xforms:"http://www.w3.org/2002/01/xforms",saxon:"http://icl.com/saxon",xalan:"http://xml.apache.org/xslt",xsd:"http://www.w3.org/2001/XMLSchema",dt:"http://www.w3.org/2001/XMLSchema-datatypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",dc:"http://purl.org/dc/elements/1.1/",dcq:"http://purl.org/dc/qualifiers/1.0","soap-env":"http://schemas.xmlsoap.org/soap/envelope/",wsdl:"http://schemas.xmlsoap.org/wsdl/",AdobeExtensions:"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"};
-dojo.dom.isNode=function(wh){
-if(typeof Element=="function"){
-try{
-return wh instanceof Element;
-}
-catch(e){
-}
-}else{
-return wh&&!isNaN(wh.nodeType);
-}
-};
-dojo.dom.getUniqueId=function(){
-var _2c9=dojo.doc();
-do{
-var id="dj_unique_"+(++arguments.callee._idIncrement);
-}while(_2c9.getElementById(id));
-return id;
-};
-dojo.dom.getUniqueId._idIncrement=0;
-dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_2cb,_2cc){
-var node=_2cb.firstChild;
-while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
-node=node.nextSibling;
-}
-if(_2cc&&node&&node.tagName&&node.tagName.toLowerCase()!=_2cc.toLowerCase()){
-node=dojo.dom.nextElement(node,_2cc);
-}
-return node;
-};
-dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_2ce,_2cf){
-var node=_2ce.lastChild;
-while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
-node=node.previousSibling;
-}
-if(_2cf&&node&&node.tagName&&node.tagName.toLowerCase()!=_2cf.toLowerCase()){
-node=dojo.dom.prevElement(node,_2cf);
-}
-return node;
-};
-dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_2d2){
-if(!node){
-return null;
-}
-do{
-node=node.nextSibling;
-}while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_2d2&&_2d2.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.nextElement(node,_2d2);
-}
-return node;
-};
-dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_2d4){
-if(!node){
-return null;
-}
-if(_2d4){
-_2d4=_2d4.toLowerCase();
-}
-do{
-node=node.previousSibling;
-}while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_2d4&&_2d4.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.prevElement(node,_2d4);
-}
-return node;
-};
-dojo.dom.moveChildren=function(_2d5,_2d6,trim){
-var _2d8=0;
-if(trim){
-while(_2d5.hasChildNodes()&&_2d5.firstChild.nodeType==dojo.dom.TEXT_NODE){
-_2d5.removeChild(_2d5.firstChild);
-}
-while(_2d5.hasChildNodes()&&_2d5.lastChild.nodeType==dojo.dom.TEXT_NODE){
-_2d5.removeChild(_2d5.lastChild);
-}
-}
-while(_2d5.hasChildNodes()){
-_2d6.appendChild(_2d5.firstChild);
-_2d8++;
-}
-return _2d8;
-};
-dojo.dom.copyChildren=function(_2d9,_2da,trim){
-var _2dc=_2d9.cloneNode(true);
-return this.moveChildren(_2dc,_2da,trim);
-};
-dojo.dom.replaceChildren=function(node,_2de){
-var _2df=[];
-if(dojo.render.html.ie){
-for(var i=0;i<node.childNodes.length;i++){
-_2df.push(node.childNodes[i]);
-}
-}
-dojo.dom.removeChildren(node);
-node.appendChild(_2de);
-for(var i=0;i<_2df.length;i++){
-dojo.dom.destroyNode(_2df[i]);
-}
-};
-dojo.dom.removeChildren=function(node){
-var _2e2=node.childNodes.length;
-while(node.hasChildNodes()){
-dojo.dom.removeNode(node.firstChild);
-}
-return _2e2;
-};
-dojo.dom.replaceNode=function(node,_2e4){
-return node.parentNode.replaceChild(_2e4,node);
-};
-dojo.dom.destroyNode=function(node){
-if(node.parentNode){
-node=dojo.dom.removeNode(node);
-}
-if(node.nodeType!=3){
-if(dojo.evalObjPath("dojo.event.browser.clean",false)){
-dojo.event.browser.clean(node);
-}
-if(dojo.render.html.ie){
-node.outerHTML="";
-}
-}
-};
-dojo.dom.removeNode=function(node){
-if(node&&node.parentNode){
-return node.parentNode.removeChild(node);
-}
-};
-dojo.dom.getAncestors=function(node,_2e8,_2e9){
-var _2ea=[];
-var _2eb=(_2e8&&(_2e8 instanceof Function||typeof _2e8=="function"));
-while(node){
-if(!_2eb||_2e8(node)){
-_2ea.push(node);
-}
-if(_2e9&&_2ea.length>0){
-return _2ea[0];
-}
-node=node.parentNode;
-}
-if(_2e9){
-return null;
-}
-return _2ea;
-};
-dojo.dom.getAncestorsByTag=function(node,tag,_2ee){
-tag=tag.toLowerCase();
-return dojo.dom.getAncestors(node,function(el){
-return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
-},_2ee);
-};
-dojo.dom.getFirstAncestorByTag=function(node,tag){
-return dojo.dom.getAncestorsByTag(node,tag,true);
-};
-dojo.dom.isDescendantOf=function(node,_2f3,_2f4){
-if(_2f4&&node){
-node=node.parentNode;
-}
-while(node){
-if(node==_2f3){
-return true;
-}
-node=node.parentNode;
-}
-return false;
-};
-dojo.dom.innerXML=function(node){
-if(node.innerXML){
-return node.innerXML;
-}else{
-if(node.xml){
-return node.xml;
-}else{
-if(typeof XMLSerializer!="undefined"){
-return (new XMLSerializer()).serializeToString(node);
-}
-}
-}
-};
-dojo.dom.createDocument=function(){
-var doc=null;
-var _2f7=dojo.doc();
-if(!dj_undef("ActiveXObject")){
-var _2f8=["MSXML2","Microsoft","MSXML","MSXML3"];
-for(var i=0;i<_2f8.length;i++){
-try{
-doc=new ActiveXObject(_2f8[i]+".XMLDOM");
-}
-catch(e){
-}
-if(doc){
-break;
-}
-}
-}else{
-if((_2f7.implementation)&&(_2f7.implementation.createDocument)){
-doc=_2f7.implementation.createDocument("","",null);
-}
-}
-return doc;
-};
-dojo.dom.createDocumentFromText=function(str,_2fb){
-if(!_2fb){
-_2fb="text/xml";
-}
-if(!dj_undef("DOMParser")){
-var _2fc=new DOMParser();
-return _2fc.parseFromString(str,_2fb);
-}else{
-if(!dj_undef("ActiveXObject")){
-var _2fd=dojo.dom.createDocument();
-if(_2fd){
-_2fd.async=false;
-_2fd.loadXML(str);
-return _2fd;
-}else{
-dojo.debug("toXml didn't work?");
-}
-}else{
-var _2fe=dojo.doc();
-if(_2fe.createElement){
-var tmp=_2fe.createElement("xml");
-tmp.innerHTML=str;
-if(_2fe.implementation&&_2fe.implementation.createDocument){
-var _300=_2fe.implementation.createDocument("foo","",null);
-for(var i=0;i<tmp.childNodes.length;i++){
-_300.importNode(tmp.childNodes.item(i),true);
-}
-return _300;
-}
-return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
-}
-}
-}
-return null;
-};
-dojo.dom.prependChild=function(node,_303){
-if(_303.firstChild){
-_303.insertBefore(node,_303.firstChild);
-}else{
-_303.appendChild(node);
-}
-return true;
-};
-dojo.dom.insertBefore=function(node,ref,_306){
-if((_306!=true)&&(node===ref||node.nextSibling===ref)){
-return false;
-}
-var _307=ref.parentNode;
-_307.insertBefore(node,ref);
-return true;
-};
-dojo.dom.insertAfter=function(node,ref,_30a){
-var pn=ref.parentNode;
-if(ref==pn.lastChild){
-if((_30a!=true)&&(node===ref)){
-return false;
-}
-pn.appendChild(node);
-}else{
-return this.insertBefore(node,ref.nextSibling,_30a);
-}
-return true;
-};
-dojo.dom.insertAtPosition=function(node,ref,_30e){
-if((!node)||(!ref)||(!_30e)){
-return false;
-}
-switch(_30e.toLowerCase()){
-case "before":
-return dojo.dom.insertBefore(node,ref);
-case "after":
-return dojo.dom.insertAfter(node,ref);
-case "first":
-if(ref.firstChild){
-return dojo.dom.insertBefore(node,ref.firstChild);
-}else{
-ref.appendChild(node);
-return true;
-}
-break;
-default:
-ref.appendChild(node);
-return true;
-}
-};
-dojo.dom.insertAtIndex=function(node,_310,_311){
-var _312=_310.childNodes;
-if(!_312.length||_312.length==_311){
-_310.appendChild(node);
-return true;
-}
-if(_311==0){
-return dojo.dom.prependChild(node,_310);
-}
-return dojo.dom.insertAfter(node,_312[_311-1]);
-};
-dojo.dom.textContent=function(node,text){
-if(arguments.length>1){
-var _315=dojo.doc();
-dojo.dom.replaceChildren(node,_315.createTextNode(text));
-return text;
-}else{
-if(node.textContent!=undefined){
-return node.textContent;
-}
-var _316="";
-if(node==null){
-return _316;
-}
-for(var i=0;i<node.childNodes.length;i++){
-switch(node.childNodes[i].nodeType){
-case 1:
-case 5:
-_316+=dojo.dom.textContent(node.childNodes[i]);
-break;
-case 3:
-case 2:
-case 4:
-_316+=node.childNodes[i].nodeValue;
-break;
-default:
-break;
-}
-}
-return _316;
-}
-};
-dojo.dom.hasParent=function(node){
-return Boolean(node&&node.parentNode&&dojo.dom.isNode(node.parentNode));
-};
-dojo.dom.isTag=function(node){
-if(node&&node.tagName){
-for(var i=1;i<arguments.length;i++){
-if(node.tagName==String(arguments[i])){
-return String(arguments[i]);
-}
-}
-}
-return "";
-};
-dojo.dom.setAttributeNS=function(elem,_31c,_31d,_31e){
-if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
-dojo.raise("No element given to dojo.dom.setAttributeNS");
-}
-if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
-elem.setAttributeNS(_31c,_31d,_31e);
-}else{
-var _31f=elem.ownerDocument;
-var _320=_31f.createNode(2,_31d,_31c);
-_320.nodeValue=_31e;
-elem.setAttributeNode(_320);
-}
-};
-dojo.provide("dojo.undo.browser");
-try{
-if((!djConfig["preventBackButtonFix"])&&(!dojo.hostenv.post_load_)){
-document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='"+(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"'></iframe>");
-}
-}
-catch(e){
-}
-if(dojo.render.html.opera){
-dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work.");
-}
-dojo.undo.browser={initialHref:(!dj_undef("window"))?window.location.href:"",initialHash:(!dj_undef("window"))?window.location.hash:"",moveForward:false,historyStack:[],forwardStack:[],historyIframe:null,bookmarkAnchor:null,locationTimer:null,setInitialState:function(args){
-this.initialState=this._createState(this.initialHref,args,this.initialHash);
-},addToHistory:function(args){
-this.forwardStack=[];
-var hash=null;
-var url=null;
-if(!this.historyIframe){
-if(djConfig["useXDomain"]&&!djConfig["dojoIframeHistoryUrl"]){
-dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html");
-}
-this.historyIframe=window.frames["djhistory"];
-}
-if(!this.bookmarkAnchor){
-this.bookmarkAnchor=document.createElement("a");
-dojo.body().appendChild(this.bookmarkAnchor);
-this.bookmarkAnchor.style.display="none";
-}
-if(args["changeUrl"]){
-hash="#"+((args["changeUrl"]!==true)?args["changeUrl"]:(new Date()).getTime());
-if(this.historyStack.length==0&&this.initialState.urlHash==hash){
-this.initialState=this._createState(url,args,hash);
-return;
-}else{
-if(this.historyStack.length>0&&this.historyStack[this.historyStack.length-1].urlHash==hash){
-this.historyStack[this.historyStack.length-1]=this._createState(url,args,hash);
-return;
-}
-}
-this.changingUrl=true;
-setTimeout("window.location.href = '"+hash+"'; dojo.undo.browser.changingUrl = false;",1);
-this.bookmarkAnchor.href=hash;
-if(dojo.render.html.ie){
-url=this._loadIframeHistory();
-var _325=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_327){
-if(window.location.hash!=""){
-setTimeout("window.location.href = '"+hash+"';",1);
-}
-_325.apply(this,[_327]);
-};
-if(args["back"]){
-args.back=tcb;
-}else{
-if(args["backButton"]){
-args.backButton=tcb;
-}else{
-if(args["handle"]){
-args.handle=tcb;
-}
-}
-}
-var _328=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_32a){
-if(window.location.hash!=""){
-window.location.href=hash;
-}
-if(_328){
-_328.apply(this,[_32a]);
-}
-};
-if(args["forward"]){
-args.forward=tfw;
-}else{
-if(args["forwardButton"]){
-args.forwardButton=tfw;
-}else{
-if(args["handle"]){
-args.handle=tfw;
-}
-}
-}
-}else{
-if(dojo.render.html.moz){
-if(!this.locationTimer){
-this.locationTimer=setInterval("dojo.undo.browser.checkLocation();",200);
-}
-}
-}
-}else{
-url=this._loadIframeHistory();
-}
-this.historyStack.push(this._createState(url,args,hash));
-},checkLocation:function(){
-if(!this.changingUrl){
-var hsl=this.historyStack.length;
-if((window.location.hash==this.initialHash||window.location.href==this.initialHref)&&(hsl==1)){
-this.handleBackButton();
-return;
-}
-if(this.forwardStack.length>0){
-if(this.forwardStack[this.forwardStack.length-1].urlHash==window.location.hash){
-this.handleForwardButton();
-return;
-}
-}
-if((hsl>=2)&&(this.historyStack[hsl-2])){
-if(this.historyStack[hsl-2].urlHash==window.location.hash){
-this.handleBackButton();
-return;
-}
-}
-}
-},iframeLoaded:function(evt,_32d){
-if(!dojo.render.html.opera){
-var _32e=this._getUrlQuery(_32d.href);
-if(_32e==null){
-if(this.historyStack.length==1){
-this.handleBackButton();
-}
-return;
-}
-if(this.moveForward){
-this.moveForward=false;
-return;
-}
-if(this.historyStack.length>=2&&_32e==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
-this.handleBackButton();
-}else{
-if(this.forwardStack.length>0&&_32e==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
-this.handleForwardButton();
-}
-}
-}
-},handleBackButton:function(){
-var _32f=this.historyStack.pop();
-if(!_32f){
-return;
-}
-var last=this.historyStack[this.historyStack.length-1];
-if(!last&&this.historyStack.length==0){
-last=this.initialState;
-}
-if(last){
-if(last.kwArgs["back"]){
-last.kwArgs["back"]();
-}else{
-if(last.kwArgs["backButton"]){
-last.kwArgs["backButton"]();
-}else{
-if(last.kwArgs["handle"]){
-last.kwArgs.handle("back");
-}
-}
-}
-}
-this.forwardStack.push(_32f);
-},handleForwardButton:function(){
-var last=this.forwardStack.pop();
-if(!last){
-return;
-}
-if(last.kwArgs["forward"]){
-last.kwArgs.forward();
-}else{
-if(last.kwArgs["forwardButton"]){
-last.kwArgs.forwardButton();
-}else{
-if(last.kwArgs["handle"]){
-last.kwArgs.handle("forward");
-}
-}
-}
-this.historyStack.push(last);
-},_createState:function(url,args,hash){
-return {"url":url,"kwArgs":args,"urlHash":hash};
-},_getUrlQuery:function(url){
-var _336=url.split("?");
-if(_336.length<2){
-return null;
-}else{
-return _336[1];
-}
-},_loadIframeHistory:function(){
-var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
-this.moveForward=true;
-dojo.io.setIFrameSrc(this.historyIframe,url,false);
-return url;
-}};
-dojo.provide("dojo.io.BrowserIO");
-if(!dj_undef("window")){
-dojo.io.checkChildrenForFile=function(node){
-var _339=false;
-var _33a=node.getElementsByTagName("input");
-dojo.lang.forEach(_33a,function(_33b){
-if(_339){
-return;
-}
-if(_33b.getAttribute("type")=="file"){
-_339=true;
-}
-});
-return _339;
-};
-dojo.io.formHasFile=function(_33c){
-return dojo.io.checkChildrenForFile(_33c);
-};
-dojo.io.updateNode=function(node,_33e){
-node=dojo.byId(node);
-var args=_33e;
-if(dojo.lang.isString(_33e)){
-args={url:_33e};
-}
-args.mimetype="text/html";
-args.load=function(t,d,e){
-while(node.firstChild){
-dojo.dom.destroyNode(node.firstChild);
-}
-node.innerHTML=d;
-};
-dojo.io.bind(args);
-};
-dojo.io.formFilter=function(node){
-var type=(node.type||"").toLowerCase();
-return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
-};
-dojo.io.encodeForm=function(_345,_346,_347){
-if((!_345)||(!_345.tagName)||(!_345.tagName.toLowerCase()=="form")){
-dojo.raise("Attempted to encode a non-form element.");
-}
-if(!_347){
-_347=dojo.io.formFilter;
-}
-var enc=/utf/i.test(_346||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _349=[];
-for(var i=0;i<_345.elements.length;i++){
-var elm=_345.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_347(elm)){
-continue;
-}
-var name=enc(elm.name);
-var type=elm.type.toLowerCase();
-if(type=="select-multiple"){
-for(var j=0;j<elm.options.length;j++){
-if(elm.options[j].selected){
-_349.push(name+"="+enc(elm.options[j].value));
-}
-}
-}else{
-if(dojo.lang.inArray(["radio","checkbox"],type)){
-if(elm.checked){
-_349.push(name+"="+enc(elm.value));
-}
-}else{
-_349.push(name+"="+enc(elm.value));
-}
-}
-}
-var _34f=_345.getElementsByTagName("input");
-for(var i=0;i<_34f.length;i++){
-var _350=_34f[i];
-if(_350.type.toLowerCase()=="image"&&_350.form==_345&&_347(_350)){
-var name=enc(_350.name);
-_349.push(name+"="+enc(_350.value));
-_349.push(name+".x=0");
-_349.push(name+".y=0");
-}
-}
-return _349.join("&")+"&";
-};
-dojo.io.FormBind=function(args){
-this.bindArgs={};
-if(args&&args.formNode){
-this.init(args);
-}else{
-if(args){
-this.init({formNode:args});
-}
-}
-};
-dojo.lang.extend(dojo.io.FormBind,{form:null,bindArgs:null,clickedButton:null,init:function(args){
-var form=dojo.byId(args.formNode);
-if(!form||!form.tagName||form.tagName.toLowerCase()!="form"){
-throw new Error("FormBind: Couldn't apply, invalid form");
-}else{
-if(this.form==form){
-return;
-}else{
-if(this.form){
-throw new Error("FormBind: Already applied to a form");
-}
-}
-}
-dojo.lang.mixin(this.bindArgs,args);
-this.form=form;
-this.connect(form,"onsubmit","submit");
-for(var i=0;i<form.elements.length;i++){
-var node=form.elements[i];
-if(node&&node.type&&dojo.lang.inArray(["submit","button"],node.type.toLowerCase())){
-this.connect(node,"onclick","click");
-}
-}
-var _356=form.getElementsByTagName("input");
-for(var i=0;i<_356.length;i++){
-var _357=_356[i];
-if(_357.type.toLowerCase()=="image"&&_357.form==form){
-this.connect(_357,"onclick","click");
-}
-}
-},onSubmit:function(form){
-return true;
-},submit:function(e){
-e.preventDefault();
-if(this.onSubmit(this.form)){
-dojo.io.bind(dojo.lang.mixin(this.bindArgs,{formFilter:dojo.lang.hitch(this,"formFilter")}));
-}
-},click:function(e){
-var node=e.currentTarget;
-if(node.disabled){
-return;
-}
-this.clickedButton=node;
-},formFilter:function(node){
-var type=(node.type||"").toLowerCase();
-var _35e=false;
-if(node.disabled||!node.name){
-_35e=false;
-}else{
-if(dojo.lang.inArray(["submit","button","image"],type)){
-if(!this.clickedButton){
-this.clickedButton=node;
-}
-_35e=node==this.clickedButton;
-}else{
-_35e=!dojo.lang.inArray(["file","submit","reset","button"],type);
-}
-}
-return _35e;
-},connect:function(_35f,_360,_361){
-if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_35f,_360,this,_361);
-}else{
-var fcn=dojo.lang.hitch(this,_361);
-_35f[_360]=function(e){
-if(!e){
-e=window.event;
-}
-if(!e.currentTarget){
-e.currentTarget=e.srcElement;
-}
-if(!e.preventDefault){
-e.preventDefault=function(){
-window.event.returnValue=false;
-};
-}
-fcn(e);
-};
-}
-}});
-dojo.io.XMLHTTPTransport=new function(){
-var _364=this;
-var _365={};
-this.useCache=false;
-this.preventCache=false;
-function getCacheKey(url,_367,_368){
-return url+"|"+_367+"|"+_368.toLowerCase();
-}
-function addToCache(url,_36a,_36b,http){
-_365[getCacheKey(url,_36a,_36b)]=http;
-}
-function getFromCache(url,_36e,_36f){
-return _365[getCacheKey(url,_36e,_36f)];
-}
-this.clearCache=function(){
-_365={};
-};
-function doLoad(_370,http,url,_373,_374){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
-var ret;
-if(_370.method.toLowerCase()=="head"){
-var _376=http.getAllResponseHeaders();
-ret={};
-ret.toString=function(){
-return _376;
-};
-var _377=_376.split(/[\r\n]+/g);
-for(var i=0;i<_377.length;i++){
-var pair=_377[i].match(/^([^:]+)\s*:\s*(.+)$/i);
-if(pair){
-ret[pair[1]]=pair[2];
-}
-}
-}else{
-if(_370.mimetype=="text/javascript"){
-try{
-ret=dj_eval(http.responseText);
-}
-catch(e){
-dojo.debug(e);
-dojo.debug(http.responseText);
-ret=null;
-}
-}else{
-if(_370.mimetype=="text/json"||_370.mimetype=="application/json"){
-try{
-ret=dj_eval("("+http.responseText+")");
-}
-catch(e){
-dojo.debug(e);
-dojo.debug(http.responseText);
-ret=false;
-}
-}else{
-if((_370.mimetype=="application/xml")||(_370.mimetype=="text/xml")){
-ret=http.responseXML;
-if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
-ret=dojo.dom.createDocumentFromText(http.responseText);
-}
-}else{
-ret=http.responseText;
-}
-}
-}
-}
-if(_374){
-addToCache(url,_373,_370.method,http);
-}
-_370[(typeof _370.load=="function")?"load":"handle"]("load",ret,http,_370);
-}else{
-var _37a=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_370[(typeof _370.error=="function")?"error":"handle"]("error",_37a,http,_370);
-}
-}
-function setHeaders(http,_37c){
-if(_37c["headers"]){
-for(var _37d in _37c["headers"]){
-if(_37d.toLowerCase()=="content-type"&&!_37c["contentType"]){
-_37c["contentType"]=_37c["headers"][_37d];
-}else{
-http.setRequestHeader(_37d,_37c["headers"][_37d]);
-}
-}
-}
-}
-this.inFlight=[];
-this.inFlightTimer=null;
-this.startWatchingInFlight=function(){
-if(!this.inFlightTimer){
-this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
-}
-};
-this.watchInFlight=function(){
-var now=null;
-if(!dojo.hostenv._blockAsync&&!_364._blockAsync){
-for(var x=this.inFlight.length-1;x>=0;x--){
-try{
-var tif=this.inFlight[x];
-if(!tif||tif.http._aborted||!tif.http.readyState){
-this.inFlight.splice(x,1);
-continue;
-}
-if(4==tif.http.readyState){
-this.inFlight.splice(x,1);
-doLoad(tif.req,tif.http,tif.url,tif.query,tif.useCache);
-}else{
-if(tif.startTime){
-if(!now){
-now=(new Date()).getTime();
-}
-if(tif.startTime+(tif.req.timeoutSeconds*1000)<now){
-if(typeof tif.http.abort=="function"){
-tif.http.abort();
-}
-this.inFlight.splice(x,1);
-tif.req[(typeof tif.req.timeout=="function")?"timeout":"handle"]("timeout",null,tif.http,tif.req);
-}
-}
-}
-}
-catch(e){
-try{
-var _381=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_381,tif.http,tif.req);
-}
-catch(e2){
-dojo.debug("XMLHttpTransport error callback failed: "+e2);
-}
-}
-}
-}
-clearTimeout(this.inFlightTimer);
-if(this.inFlight.length==0){
-this.inFlightTimer=null;
-return;
-}
-this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
-};
-var _382=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_383){
-return _382&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_383["mimetype"].toLowerCase()||""))&&!(_383["formNode"]&&dojo.io.formHasFile(_383["formNode"]));
-};
-this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_384){
-if(!_384["url"]){
-if(!_384["formNode"]&&(_384["backButton"]||_384["back"]||_384["changeUrl"]||_384["watchForURL"])&&(!djConfig.preventBackButtonFix)){
-dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_384);
-return true;
-}
-}
-var url=_384.url;
-var _386="";
-if(_384["formNode"]){
-var ta=_384.formNode.getAttribute("action");
-if((ta)&&(!_384["url"])){
-url=ta;
-}
-var tp=_384.formNode.getAttribute("method");
-if((tp)&&(!_384["method"])){
-_384.method=tp;
-}
-_386+=dojo.io.encodeForm(_384.formNode,_384.encoding,_384["formFilter"]);
-}
-if(url.indexOf("#")>-1){
-dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
-url=url.split("#")[0];
-}
-if(_384["file"]){
-_384.method="post";
-}
-if(!_384["method"]){
-_384.method="get";
-}
-if(_384.method.toLowerCase()=="get"){
-_384.multipart=false;
-}else{
-if(_384["file"]){
-_384.multipart=true;
-}else{
-if(!_384["multipart"]){
-_384.multipart=false;
-}
-}
-}
-if(_384["backButton"]||_384["back"]||_384["changeUrl"]){
-dojo.undo.browser.addToHistory(_384);
-}
-var _389=_384["content"]||{};
-if(_384.sendTransport){
-_389["dojo.transport"]="xmlhttp";
-}
-do{
-if(_384.postContent){
-_386=_384.postContent;
-break;
-}
-if(_389){
-_386+=dojo.io.argsFromMap(_389,_384.encoding);
-}
-if(_384.method.toLowerCase()=="get"||!_384.multipart){
-break;
-}
-var t=[];
-if(_386.length){
-var q=_386.split("&");
-for(var i=0;i<q.length;++i){
-if(q[i].length){
-var p=q[i].split("=");
-t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+p[0]+"\"","",p[1]);
-}
-}
-}
-if(_384.file){
-if(dojo.lang.isArray(_384.file)){
-for(var i=0;i<_384.file.length;++i){
-var o=_384.file[i];
-t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
-}
-}else{
-var o=_384.file;
-t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
-}
-}
-if(t.length){
-t.push("--"+this.multipartBoundary+"--","");
-_386=t.join("\r\n");
-}
-}while(false);
-var _38f=_384["sync"]?false:true;
-var _390=_384["preventCache"]||(this.preventCache==true&&_384["preventCache"]!=false);
-var _391=_384["useCache"]==true||(this.useCache==true&&_384["useCache"]!=false);
-if(!_390&&_391){
-var _392=getFromCache(url,_386,_384.method);
-if(_392){
-doLoad(_384,_392,url,_386,false);
-return;
-}
-}
-var http=dojo.hostenv.getXmlhttpObject(_384);
-var _394=false;
-if(_38f){
-var _395=this.inFlight.push({"req":_384,"http":http,"url":url,"query":_386,"useCache":_391,"startTime":_384.timeoutSeconds?(new Date()).getTime():0});
-this.startWatchingInFlight();
-}else{
-_364._blockAsync=true;
-}
-if(_384.method.toLowerCase()=="post"){
-if(!_384.user){
-http.open("POST",url,_38f);
-}else{
-http.open("POST",url,_38f,_384.user,_384.password);
-}
-setHeaders(http,_384);
-http.setRequestHeader("Content-Type",_384.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_384.contentType||"application/x-www-form-urlencoded"));
-try{
-http.send(_386);
-}
-catch(e){
-if(typeof http.abort=="function"){
-http.abort();
-}
-doLoad(_384,{status:404},url,_386,_391);
-}
-}else{
-var _396=url;
-if(_386!=""){
-_396+=(_396.indexOf("?")>-1?"&":"?")+_386;
-}
-if(_390){
-_396+=(dojo.string.endsWithAny(_396,"?","&")?"":(_396.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
-}
-if(!_384.user){
-http.open(_384.method.toUpperCase(),_396,_38f);
-}else{
-http.open(_384.method.toUpperCase(),_396,_38f,_384.user,_384.password);
-}
-setHeaders(http,_384);
-try{
-http.send(null);
-}
-catch(e){
-if(typeof http.abort=="function"){
-http.abort();
-}
-doLoad(_384,{status:404},url,_386,_391);
-}
-}
-if(!_38f){
-doLoad(_384,http,url,_386,_391);
-_364._blockAsync=false;
-}
-_384.abort=function(){
-try{
-http._aborted=true;
-}
-catch(e){
-}
-return http.abort();
-};
-return;
-};
-dojo.io.transports.addTransport("XMLHTTPTransport");
-};
-}
-dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_398,days,path,_39b,_39c){
-var _39d=-1;
-if((typeof days=="number")&&(days>=0)){
-var d=new Date();
-d.setTime(d.getTime()+(days*24*60*60*1000));
-_39d=d.toGMTString();
-}
-_398=escape(_398);
-document.cookie=name+"="+_398+";"+(_39d!=-1?" expires="+_39d+";":"")+(path?"path="+path:"")+(_39b?"; domain="+_39b:"")+(_39c?"; secure":"");
-};
-dojo.io.cookie.set=dojo.io.cookie.setCookie;
-dojo.io.cookie.getCookie=function(name){
-var idx=document.cookie.lastIndexOf(name+"=");
-if(idx==-1){
-return null;
-}
-var _3a1=document.cookie.substring(idx+name.length+1);
-var end=_3a1.indexOf(";");
-if(end==-1){
-end=_3a1.length;
-}
-_3a1=_3a1.substring(0,end);
-_3a1=unescape(_3a1);
-return _3a1;
-};
-dojo.io.cookie.get=dojo.io.cookie.getCookie;
-dojo.io.cookie.deleteCookie=function(name){
-dojo.io.cookie.setCookie(name,"-",0);
-};
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_3a8,_3a9,_3aa){
-if(arguments.length==5){
-_3aa=_3a8;
-_3a8=null;
-_3a9=null;
-}
-var _3ab=[],_3ac,_3ad="";
-if(!_3aa){
-_3ac=dojo.io.cookie.getObjectCookie(name);
-}
-if(days>=0){
-if(!_3ac){
-_3ac={};
-}
-for(var prop in obj){
-if(obj[prop]==null){
-delete _3ac[prop];
-}else{
-if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_3ac[prop]=obj[prop];
-}
-}
-}
-prop=null;
-for(var prop in _3ac){
-_3ab.push(escape(prop)+"="+escape(_3ac[prop]));
-}
-_3ad=_3ab.join("&");
-}
-dojo.io.cookie.setCookie(name,_3ad,days,path,_3a8,_3a9);
-};
-dojo.io.cookie.getObjectCookie=function(name){
-var _3b0=null,_3b1=dojo.io.cookie.getCookie(name);
-if(_3b1){
-_3b0={};
-var _3b2=_3b1.split("&");
-for(var i=0;i<_3b2.length;i++){
-var pair=_3b2[i].split("=");
-var _3b5=pair[1];
-if(isNaN(_3b5)){
-_3b5=unescape(pair[1]);
-}
-_3b0[unescape(pair[0])]=_3b5;
-}
-}
-return _3b0;
-};
-dojo.io.cookie.isSupported=function(){
-if(typeof navigator.cookieEnabled!="boolean"){
-dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _3b6=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_3b6=="CookiesAllowed");
-if(navigator.cookieEnabled){
-this.deleteCookie("__TestingYourBrowserForCookieSupport__");
-}
-}
-return navigator.cookieEnabled;
-};
-if(!dojo.io.cookies){
-dojo.io.cookies=dojo.io.cookie;
-}
-dojo.kwCompoundRequire({common:["dojo.io.common"],rhino:["dojo.io.RhinoIO"],browser:["dojo.io.BrowserIO","dojo.io.cookie"],dashboard:["dojo.io.BrowserIO","dojo.io.cookie"]});
-dojo.provide("dojo.io.*");
-dojo.provide("dojo.io");
-dojo.deprecated("dojo.io","replaced by dojo.io.*","0.5");
-dojo.provide("dojo.AdapterRegistry");
-dojo.AdapterRegistry=function(_3b7){
-this.pairs=[];
-this.returnWrappers=_3b7||false;
-};
-dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_3b9,wrap,_3bb,_3bc){
-var type=(_3bc)?"unshift":"push";
-this.pairs[type]([name,_3b9,wrap,_3bb]);
-},match:function(){
-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");
-},unregister:function(name){
-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;
-}});
-dojo.provide("dojo.json");
-dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_3c4,wrap,_3c6){
-dojo.json.jsonRegistry.register(name,_3c4,wrap,_3c6);
-},evalJson:function(json){
-try{
-return eval("("+json+")");
-}
-catch(e){
-dojo.debug(e);
-return json;
-}
-},serialize:function(o){
-var _3c9=typeof (o);
-if(_3c9=="undefined"){
-return "undefined";
-}else{
-if((_3c9=="number")||(_3c9=="boolean")){
-return o+"";
-}else{
-if(o===null){
-return "null";
-}
-}
-}
-if(_3c9=="string"){
-return dojo.string.escapeString(o);
-}
-var me=arguments.callee;
-var _3cb;
-if(typeof (o.__json__)=="function"){
-_3cb=o.__json__();
-if(o!==_3cb){
-return me(_3cb);
-}
-}
-if(typeof (o.json)=="function"){
-_3cb=o.json();
-if(o!==_3cb){
-return me(_3cb);
-}
-}
-if(_3c9!="function"&&typeof (o.length)=="number"){
-var res=[];
-for(var i=0;i<o.length;i++){
-var val=me(o[i]);
-if(typeof (val)!="string"){
-val="undefined";
-}
-res.push(val);
-}
-return "["+res.join(",")+"]";
-}
-try{
-window.o=o;
-_3cb=dojo.json.jsonRegistry.match(o);
-return me(_3cb);
-}
-catch(e){
-}
-if(_3c9=="function"){
-return null;
-}
-res=[];
-for(var k in o){
-var _3d0;
-if(typeof (k)=="number"){
-_3d0="\""+k+"\"";
-}else{
-if(typeof (k)=="string"){
-_3d0=dojo.string.escapeString(k);
-}else{
-continue;
-}
-}
-val=me(o[k]);
-if(typeof (val)!="string"){
-continue;
-}
-res.push(_3d0+":"+val);
-}
-return "{"+res.join(",")+"}";
-}};
-dojo.provide("dojo.html.common");
-dojo.lang.mixin(dojo.html,dojo.dom);
-dojo.html.body=function(){
-dojo.deprecated("dojo.html.body() moved to dojo.body()","0.5");
-return dojo.body();
-};
-dojo.html.getEventTarget=function(evt){
-if(!evt){
-evt=dojo.global().event||{};
-}
-var t=(evt.srcElement?evt.srcElement:(evt.target?evt.target:null));
-while((t)&&(t.nodeType!=1)){
-t=t.parentNode;
-}
-return t;
-};
-dojo.html.getViewport=function(){
-var _3d3=dojo.global();
-var _3d4=dojo.doc();
-var w=0;
-var h=0;
-if(dojo.render.html.mozilla){
-w=_3d4.documentElement.clientWidth;
-h=_3d3.innerHeight;
-}else{
-if(!dojo.render.html.opera&&_3d3.innerWidth){
-w=_3d3.innerWidth;
-h=_3d3.innerHeight;
-}else{
-if(!dojo.render.html.opera&&dojo.exists(_3d4,"documentElement.clientWidth")){
-var w2=_3d4.documentElement.clientWidth;
-if(!w||w2&&w2<w){
-w=w2;
-}
-h=_3d4.documentElement.clientHeight;
-}else{
-if(dojo.body().clientWidth){
-w=dojo.body().clientWidth;
-h=dojo.body().clientHeight;
-}
-}
-}
-}
-return {width:w,height:h};
-};
-dojo.html.getScroll=function(){
-var _3d8=dojo.global();
-var _3d9=dojo.doc();
-var top=_3d8.pageYOffset||_3d9.documentElement.scrollTop||dojo.body().scrollTop||0;
-var left=_3d8.pageXOffset||_3d9.documentElement.scrollLeft||dojo.body().scrollLeft||0;
-return {top:top,left:left,offset:{x:left,y:top}};
-};
-dojo.html.getParentByType=function(node,type){
-var _3de=dojo.doc();
-var _3df=dojo.byId(node);
-type=type.toLowerCase();
-while((_3df)&&(_3df.nodeName.toLowerCase()!=type)){
-if(_3df==(_3de["body"]||_3de["documentElement"])){
-return null;
-}
-_3df=_3df.parentNode;
-}
-return _3df;
-};
-dojo.html.getAttribute=function(node,attr){
-node=dojo.byId(node);
-if((!node)||(!node.getAttribute)){
-return null;
-}
-var ta=typeof attr=="string"?attr:new String(attr);
-var v=node.getAttribute(ta.toUpperCase());
-if((v)&&(typeof v=="string")&&(v!="")){
-return v;
-}
-if(v&&v.value){
-return v.value;
-}
-if((node.getAttributeNode)&&(node.getAttributeNode(ta))){
-return (node.getAttributeNode(ta)).value;
-}else{
-if(node.getAttribute(ta)){
-return node.getAttribute(ta);
-}else{
-if(node.getAttribute(ta.toLowerCase())){
-return node.getAttribute(ta.toLowerCase());
-}
-}
-}
-return null;
-};
-dojo.html.hasAttribute=function(node,attr){
-return dojo.html.getAttribute(dojo.byId(node),attr)?true:false;
-};
-dojo.html.getCursorPosition=function(e){
-e=e||dojo.global().event;
-var _3e7={x:0,y:0};
-if(e.pageX||e.pageY){
-_3e7.x=e.pageX;
-_3e7.y=e.pageY;
-}else{
-var de=dojo.doc().documentElement;
-var db=dojo.body();
-_3e7.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
-_3e7.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
-}
-return _3e7;
-};
-dojo.html.isTag=function(node){
-node=dojo.byId(node);
-if(node&&node.tagName){
-for(var i=1;i<arguments.length;i++){
-if(node.tagName.toLowerCase()==String(arguments[i]).toLowerCase()){
-return String(arguments[i]).toLowerCase();
-}
-}
-}
-return "";
-};
-if(dojo.render.html.ie&&!dojo.render.html.ie70){
-if(window.location.href.substr(0,6).toLowerCase()!="https:"){
-(function(){
-var _3ec=dojo.doc().createElement("script");
-_3ec.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
-dojo.doc().getElementsByTagName("head")[0].appendChild(_3ec);
-})();
-}
-}else{
-dojo.html.createExternalElement=function(doc,tag){
-return doc.createElement(tag);
-};
-}
-dojo.html._callDeprecated=function(_3ef,_3f0,args,_3f2,_3f3){
-dojo.deprecated("dojo.html."+_3ef,"replaced by dojo.html."+_3f0+"("+(_3f2?"node, {"+_3f2+": "+_3f2+"}":"")+")"+(_3f3?"."+_3f3:""),"0.5");
-var _3f4=[];
-if(_3f2){
-var _3f5={};
-_3f5[_3f2]=args[1];
-_3f4.push(args[0]);
-_3f4.push(_3f5);
-}else{
-_3f4=args;
-}
-var ret=dojo.html[_3f0].apply(dojo.html,args);
-if(_3f3){
-return ret[_3f3];
-}else{
-return ret;
-}
-};
-dojo.html.getViewportWidth=function(){
-return dojo.html._callDeprecated("getViewportWidth","getViewport",arguments,null,"width");
-};
-dojo.html.getViewportHeight=function(){
-return dojo.html._callDeprecated("getViewportHeight","getViewport",arguments,null,"height");
-};
-dojo.html.getViewportSize=function(){
-return dojo.html._callDeprecated("getViewportSize","getViewport",arguments);
-};
-dojo.html.getScrollTop=function(){
-return dojo.html._callDeprecated("getScrollTop","getScroll",arguments,null,"top");
-};
-dojo.html.getScrollLeft=function(){
-return dojo.html._callDeprecated("getScrollLeft","getScroll",arguments,null,"left");
-};
-dojo.html.getScrollOffset=function(){
-return dojo.html._callDeprecated("getScrollOffset","getScroll",arguments,null,"offset");
-};
-dojo.provide("dojo.uri.Uri");
-dojo.uri=new function(){
-this.dojoUri=function(uri){
-return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
-};
-this.moduleUri=function(_3f8,uri){
-var loc=dojo.hostenv.getModuleSymbols(_3f8).join("/");
-if(!loc){
-return null;
-}
-if(loc.lastIndexOf("/")!=loc.length-1){
-loc+="/";
-}
-var _3fb=loc.indexOf(":");
-var _3fc=loc.indexOf("/");
-if(loc.charAt(0)!="/"&&(_3fb==-1||_3fb>_3fc)){
-loc=dojo.hostenv.getBaseScriptUri()+loc;
-}
-return new dojo.uri.Uri(loc,uri);
-};
-this.Uri=function(){
-var uri=arguments[0];
-for(var i=1;i<arguments.length;i++){
-if(!arguments[i]){
-continue;
-}
-var _3ff=new dojo.uri.Uri(arguments[i].toString());
-var _400=new dojo.uri.Uri(uri.toString());
-if((_3ff.path=="")&&(_3ff.scheme==null)&&(_3ff.authority==null)&&(_3ff.query==null)){
-if(_3ff.fragment!=null){
-_400.fragment=_3ff.fragment;
-}
-_3ff=_400;
-}else{
-if(_3ff.scheme==null){
-_3ff.scheme=_400.scheme;
-if(_3ff.authority==null){
-_3ff.authority=_400.authority;
-if(_3ff.path.charAt(0)!="/"){
-var path=_400.path.substring(0,_400.path.lastIndexOf("/")+1)+_3ff.path;
-var segs=path.split("/");
-for(var j=0;j<segs.length;j++){
-if(segs[j]=="."){
-if(j==segs.length-1){
-segs[j]="";
-}else{
-segs.splice(j,1);
-j--;
-}
-}else{
-if(j>0&&!(j==1&&segs[0]=="")&&segs[j]==".."&&segs[j-1]!=".."){
-if(j==segs.length-1){
-segs.splice(j,1);
-segs[j-1]="";
-}else{
-segs.splice(j-1,2);
-j-=2;
-}
-}
-}
-}
-_3ff.path=segs.join("/");
-}
-}
-}
-}
-uri="";
-if(_3ff.scheme!=null){
-uri+=_3ff.scheme+":";
-}
-if(_3ff.authority!=null){
-uri+="//"+_3ff.authority;
-}
-uri+=_3ff.path;
-if(_3ff.query!=null){
-uri+="?"+_3ff.query;
-}
-if(_3ff.fragment!=null){
-uri+="#"+_3ff.fragment;
-}
-}
-this.uri=uri.toString();
-var _404="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
-var r=this.uri.match(new RegExp(_404));
-this.scheme=r[2]||(r[1]?"":null);
-this.authority=r[4]||(r[3]?"":null);
-this.path=r[5];
-this.query=r[7]||(r[6]?"":null);
-this.fragment=r[9]||(r[8]?"":null);
-if(this.authority!=null){
-_404="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
-r=this.authority.match(new RegExp(_404));
-this.user=r[3]||null;
-this.password=r[4]||null;
-this.host=r[5];
-this.port=r[7]||null;
-}
-this.toString=function(){
-return this.uri;
-};
-};
-};
-dojo.provide("dojo.html.style");
-dojo.html.getClass=function(node){
-node=dojo.byId(node);
-if(!node){
-return "";
-}
-var cs="";
-if(node.className){
-cs=node.className;
-}else{
-if(dojo.html.hasAttribute(node,"class")){
-cs=dojo.html.getAttribute(node,"class");
-}
-}
-return cs.replace(/^\s+|\s+$/g,"");
-};
-dojo.html.getClasses=function(node){
-var c=dojo.html.getClass(node);
-return (c=="")?[]:c.split(/\s+/g);
-};
-dojo.html.hasClass=function(node,_40b){
-return (new RegExp("(^|\\s+)"+_40b+"(\\s+|$)")).test(dojo.html.getClass(node));
-};
-dojo.html.prependClass=function(node,_40d){
-_40d+=" "+dojo.html.getClass(node);
-return dojo.html.setClass(node,_40d);
-};
-dojo.html.addClass=function(node,_40f){
-if(dojo.html.hasClass(node,_40f)){
-return false;
-}
-_40f=(dojo.html.getClass(node)+" "+_40f).replace(/^\s+|\s+$/g,"");
-return dojo.html.setClass(node,_40f);
-};
-dojo.html.setClass=function(node,_411){
-node=dojo.byId(node);
-var cs=new String(_411);
-try{
-if(typeof node.className=="string"){
-node.className=cs;
-}else{
-if(node.setAttribute){
-node.setAttribute("class",_411);
-node.className=cs;
-}else{
-return false;
-}
-}
-}
-catch(e){
-dojo.debug("dojo.html.setClass() failed",e);
-}
-return true;
-};
-dojo.html.removeClass=function(node,_414,_415){
-try{
-if(!_415){
-var _416=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_414+"(\\s+|$)"),"$1$2");
-}else{
-var _416=dojo.html.getClass(node).replace(_414,"");
-}
-dojo.html.setClass(node,_416);
-}
-catch(e){
-dojo.debug("dojo.html.removeClass() failed",e);
-}
-return true;
-};
-dojo.html.replaceClass=function(node,_418,_419){
-dojo.html.removeClass(node,_419);
-dojo.html.addClass(node,_418);
-};
-dojo.html.classMatchType={ContainsAll:0,ContainsAny:1,IsOnly:2};
-dojo.html.getElementsByClass=function(_41a,_41b,_41c,_41d,_41e){
-_41e=false;
-var _41f=dojo.doc();
-_41b=dojo.byId(_41b)||_41f;
-var _420=_41a.split(/\s+/g);
-var _421=[];
-if(_41d!=1&&_41d!=2){
-_41d=0;
-}
-var _422=new RegExp("(\\s|^)(("+_420.join(")|(")+"))(\\s|$)");
-var _423=_420.join(" ").length;
-var _424=[];
-if(!_41e&&_41f.evaluate){
-var _425=".//"+(_41c||"*")+"[contains(";
-if(_41d!=dojo.html.classMatchType.ContainsAny){
-_425+="concat(' ', at class,' '), ' "+_420.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
-if(_41d==2){
-_425+=" and string-length(@class)="+_423+"]";
-}else{
-_425+="]";
-}
-}else{
-_425+="concat(' ', at class,' '), ' "+_420.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
-}
-var _426=_41f.evaluate(_425,_41b,null,XPathResult.ANY_TYPE,null);
-var _427=_426.iterateNext();
-while(_427){
-try{
-_424.push(_427);
-_427=_426.iterateNext();
-}
-catch(e){
-break;
-}
-}
-return _424;
-}else{
-if(!_41c){
-_41c="*";
-}
-_424=_41b.getElementsByTagName(_41c);
-var node,i=0;
-outer:
-while(node=_424[i++]){
-var _42a=dojo.html.getClasses(node);
-if(_42a.length==0){
-continue outer;
-}
-var _42b=0;
-for(var j=0;j<_42a.length;j++){
-if(_422.test(_42a[j])){
-if(_41d==dojo.html.classMatchType.ContainsAny){
-_421.push(node);
-continue outer;
-}else{
-_42b++;
-}
-}else{
-if(_41d==dojo.html.classMatchType.IsOnly){
-continue outer;
-}
-}
-}
-if(_42b==_420.length){
-if((_41d==dojo.html.classMatchType.IsOnly)&&(_42b==_42a.length)){
-_421.push(node);
-}else{
-if(_41d==dojo.html.classMatchType.ContainsAll){
-_421.push(node);
-}
-}
-}
-}
-return _421;
-}
-};
-dojo.html.getElementsByClassName=dojo.html.getElementsByClass;
-dojo.html.toCamelCase=function(_42d){
-var arr=_42d.split("-"),cc=arr[0];
-for(var i=1;i<arr.length;i++){
-cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
-}
-return cc;
-};
-dojo.html.toSelectorCase=function(_431){
-return _431.replace(/([A-Z])/g,"-$1").toLowerCase();
-};
-if(dojo.render.html.ie){
-dojo.html.getComputedStyle=function(node,_433,_434){
-node=dojo.byId(node);
-if(!node||!node.style){
-return _434;
-}
-return node.currentStyle[dojo.html.toCamelCase(_433)];
-};
-dojo.html.getComputedStyles=function(node){
-return node.currentStyle;
-};
-}else{
-dojo.html.getComputedStyle=function(node,_437,_438){
-node=dojo.byId(node);
-if(!node||!node.style){
-return _438;
-}
-var s=document.defaultView.getComputedStyle(node,null);
-return (s&&s[dojo.html.toCamelCase(_437)])||"";
-};
-dojo.html.getComputedStyles=function(node){
-return document.defaultView.getComputedStyle(node,null);
-};
-}
-dojo.html.getStyleProperty=function(node,_43c){
-node=dojo.byId(node);
-return (node&&node.style?node.style[dojo.html.toCamelCase(_43c)]:undefined);
-};
-dojo.html.getStyle=function(node,_43e){
-var _43f=dojo.html.getStyleProperty(node,_43e);
-return (_43f?_43f:dojo.html.getComputedStyle(node,_43e));
-};
-dojo.html.setStyle=function(node,_441,_442){
-node=dojo.byId(node);
-if(node&&node.style){
-var _443=dojo.html.toCamelCase(_441);
-node.style[_443]=_442;
-}
-};
-dojo.html.setStyleText=function(_444,text){
-try{
-_444.style.cssText=text;
-}
-catch(e){
-_444.setAttribute("style",text);
-}
-};
-dojo.html.copyStyle=function(_446,_447){
-if(!_447.style.cssText){
-_446.setAttribute("style",_447.getAttribute("style"));
-}else{
-_446.style.cssText=_447.style.cssText;
-}
-dojo.html.addClass(_446,dojo.html.getClass(_447));
-};
-dojo.html.getUnitValue=function(node,_449,_44a){
-var s=dojo.html.getComputedStyle(node,_449);
-if((!s)||((s=="auto")&&(_44a))){
-return {value:0,units:"px"};
-}
-var _44c=s.match(/(\-?[\d.]+)([a-z%]*)/i);
-if(!_44c){
-return dojo.html.getUnitValue.bad;
-}
-return {value:Number(_44c[1]),units:_44c[2].toLowerCase()};
-};
-dojo.html.getUnitValue.bad={value:NaN,units:""};
-if(dojo.render.html.ie){
-dojo.html.toPixelValue=function(_44d,_44e){
-if(!_44e){
-return 0;
-}
-if(_44e.slice(-2)=="px"){
-return parseFloat(_44e);
-}
-var _44f=0;
-with(_44d){
-var _450=style.left;
-var _451=runtimeStyle.left;
-runtimeStyle.left=currentStyle.left;
-try{
-style.left=_44e||0;
-_44f=style.pixelLeft;
-style.left=_450;
-runtimeStyle.left=_451;
-}
-catch(e){
-}
-}
-return _44f;
-};
-}else{
-dojo.html.toPixelValue=function(_452,_453){
-return (_453&&(_453.slice(-2)=="px")?parseFloat(_453):0);
-};
-}
-dojo.html.getPixelValue=function(node,_455,_456){
-return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_455));
-};
-dojo.html.setPositivePixelValue=function(node,_458,_459){
-if(isNaN(_459)){
-return false;
-}
-node.style[_458]=Math.max(0,_459)+"px";
-return true;
-};
-dojo.html.styleSheet=null;
-dojo.html.insertCssRule=function(_45a,_45b,_45c){
-if(!dojo.html.styleSheet){
-if(document.createStyleSheet){
-dojo.html.styleSheet=document.createStyleSheet();
-}else{
-if(document.styleSheets[0]){
-dojo.html.styleSheet=document.styleSheets[0];
-}else{
-return null;
-}
-}
-}
-if(arguments.length<3){
-if(dojo.html.styleSheet.cssRules){
-_45c=dojo.html.styleSheet.cssRules.length;
-}else{
-if(dojo.html.styleSheet.rules){
-_45c=dojo.html.styleSheet.rules.length;
-}else{
-return null;
-}
-}
-}
-if(dojo.html.styleSheet.insertRule){
-var rule=_45a+" { "+_45b+" }";
-return dojo.html.styleSheet.insertRule(rule,_45c);
-}else{
-if(dojo.html.styleSheet.addRule){
-return dojo.html.styleSheet.addRule(_45a,_45b,_45c);
-}else{
-return null;
-}
-}
-};
-dojo.html.removeCssRule=function(_45e){
-if(!dojo.html.styleSheet){
-dojo.debug("no stylesheet defined for removing rules");
-return false;
-}
-if(dojo.render.html.ie){
-if(!_45e){
-_45e=dojo.html.styleSheet.rules.length;
-dojo.html.styleSheet.removeRule(_45e);
-}
-}else{
-if(document.styleSheets[0]){
-if(!_45e){
-_45e=dojo.html.styleSheet.cssRules.length;
-}
-dojo.html.styleSheet.deleteRule(_45e);
-}
-}
-return true;
-};
-dojo.html._insertedCssFiles=[];
-dojo.html.insertCssFile=function(URI,doc,_461,_462){
-if(!URI){
-return;
-}
-if(!doc){
-doc=document;
-}
-var _463=dojo.hostenv.getText(URI,false,_462);
-if(_463===null){
-return;
-}
-_463=dojo.html.fixPathsInCssText(_463,URI);
-if(_461){
-var idx=-1,node,ent=dojo.html._insertedCssFiles;
-for(var i=0;i<ent.length;i++){
-if((ent[i].doc==doc)&&(ent[i].cssText==_463)){
-idx=i;
-node=ent[i].nodeRef;
-break;
-}
-}
-if(node){
-var _468=doc.getElementsByTagName("style");
-for(var i=0;i<_468.length;i++){
-if(_468[i]==node){
-return;
-}
-}
-dojo.html._insertedCssFiles.shift(idx,1);
-}
-}
-var _469=dojo.html.insertCssText(_463,doc);
-dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_463,"nodeRef":_469});
-if(_469&&djConfig.isDebug){
-_469.setAttribute("dbgHref",URI);
-}
-return _469;
-};
-dojo.html.insertCssText=function(_46a,doc,URI){
-if(!_46a){
-return;
-}
-if(!doc){
-doc=document;
-}
-if(URI){
-_46a=dojo.html.fixPathsInCssText(_46a,URI);
-}
-var _46d=doc.createElement("style");
-_46d.setAttribute("type","text/css");
-var head=doc.getElementsByTagName("head")[0];
-if(!head){
-dojo.debug("No head tag in document, aborting styles");
-return;
-}else{
-head.appendChild(_46d);
-}
-if(_46d.styleSheet){
-var _46f=function(){
-try{
-_46d.styleSheet.cssText=_46a;
-}
-catch(e){
-dojo.debug(e);
-}
-};
-if(_46d.styleSheet.disabled){
-setTimeout(_46f,10);
-}else{
-_46f();
-}
-}else{
-var _470=doc.createTextNode(_46a);
-_46d.appendChild(_470);
-}
-return _46d;
-};
-dojo.html.fixPathsInCssText=function(_471,URI){
-if(!_471||!URI){
-return;
-}
-var _473,str="",url="",_476="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
-var _477=new RegExp("url\\(\\s*("+_476+")\\s*\\)");
-var _478=/(file|https?|ftps?):\/\//;
-regexTrim=new RegExp("^[\\s]*(['\"]?)("+_476+")\\1[\\s]*?$");
-if(dojo.render.html.ie55||dojo.render.html.ie60){
-var _479=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_476+")['\"]");
-while(_473=_479.exec(_471)){
-url=_473[2].replace(regexTrim,"$2");
-if(!_478.exec(url)){
-url=(new dojo.uri.Uri(URI,url).toString());
-}
-str+=_471.substring(0,_473.index)+"AlphaImageLoader("+_473[1]+"src='"+url+"'";
-_471=_471.substr(_473.index+_473[0].length);
-}
-_471=str+_471;
-str="";
-}
-while(_473=_477.exec(_471)){
-url=_473[1].replace(regexTrim,"$2");
-if(!_478.exec(url)){
-url=(new dojo.uri.Uri(URI,url).toString());
-}
-str+=_471.substring(0,_473.index)+"url("+url+")";
-_471=_471.substr(_473.index+_473[0].length);
-}
-return str+_471;
-};
-dojo.html.setActiveStyleSheet=function(_47a){
-var i=0,a,els=dojo.doc().getElementsByTagName("link");
-while(a=els[i++]){
-if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){
-a.disabled=true;
-if(a.getAttribute("title")==_47a){
-a.disabled=false;
-}
-}
-}
-};
-dojo.html.getActiveStyleSheet=function(){
-var i=0,a,els=dojo.doc().getElementsByTagName("link");
-while(a=els[i++]){
-if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")&&!a.disabled){
-return a.getAttribute("title");
-}
-}
-return null;
-};
-dojo.html.getPreferredStyleSheet=function(){
-var i=0,a,els=dojo.doc().getElementsByTagName("link");
-while(a=els[i++]){
-if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("rel").indexOf("alt")==-1&&a.getAttribute("title")){
-return a.getAttribute("title");
-}
-}
-return null;
-};
-dojo.html.applyBrowserClass=function(node){
-var drh=dojo.render.html;
-var _486={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
-for(var p in _486){
-if(_486[p]){
-dojo.html.addClass(node,p);
-}
-}
-};
-dojo.kwCompoundRequire({common:["dojo.html.common","dojo.html.style"]});
-dojo.provide("dojo.html.*");
-dojo.provide("dojo.html.display");
-dojo.html._toggle=function(node,_489,_48a){
-node=dojo.byId(node);
-_48a(node,!_489(node));
-return _489(node);
-};
-dojo.html.show=function(node){
-node=dojo.byId(node);
-if(dojo.html.getStyleProperty(node,"display")=="none"){
-dojo.html.setStyle(node,"display",(node.dojoDisplayCache||""));
-node.dojoDisplayCache=undefined;
-}
-};
-dojo.html.hide=function(node){
-node=dojo.byId(node);
-if(typeof node["dojoDisplayCache"]=="undefined"){
-var d=dojo.html.getStyleProperty(node,"display");
-if(d!="none"){
-node.dojoDisplayCache=d;
-}
-}
-dojo.html.setStyle(node,"display","none");
-};
-dojo.html.setShowing=function(node,_48f){
-dojo.html[(_48f?"show":"hide")](node);
-};
-dojo.html.isShowing=function(node){
-return (dojo.html.getStyleProperty(node,"display")!="none");
-};
-dojo.html.toggleShowing=function(node){
-return dojo.html._toggle(node,dojo.html.isShowing,dojo.html.setShowing);
-};
-dojo.html.displayMap={tr:"",td:"",th:"",img:"inline",span:"inline",input:"inline",button:"inline"};
-dojo.html.suggestDisplayByTagName=function(node){
-node=dojo.byId(node);
-if(node&&node.tagName){
-var tag=node.tagName.toLowerCase();
-return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
-}
-};
-dojo.html.setDisplay=function(node,_495){
-dojo.html.setStyle(node,"display",((_495 instanceof String||typeof _495=="string")?_495:(_495?dojo.html.suggestDisplayByTagName(node):"none")));
-};
-dojo.html.isDisplayed=function(node){
-return (dojo.html.getComputedStyle(node,"display")!="none");
-};
-dojo.html.toggleDisplay=function(node){
-return dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
-};
-dojo.html.setVisibility=function(node,_499){
-dojo.html.setStyle(node,"visibility",((_499 instanceof String||typeof _499=="string")?_499:(_499?"visible":"hidden")));
-};
-dojo.html.isVisible=function(node){
-return (dojo.html.getComputedStyle(node,"visibility")!="hidden");
-};
-dojo.html.toggleVisibility=function(node){
-return dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
-};
-dojo.html.setOpacity=function(node,_49d,_49e){
-node=dojo.byId(node);
-var h=dojo.render.html;
-if(!_49e){
-if(_49d>=1){
-if(h.ie){
-dojo.html.clearOpacity(node);
-return;
-}else{
-_49d=0.999999;
-}
-}else{
-if(_49d<0){
-_49d=0;
-}
-}
-}
-if(h.ie){
-if(node.nodeName.toLowerCase()=="tr"){
-var tds=node.getElementsByTagName("td");
-for(var x=0;x<tds.length;x++){
-tds[x].style.filter="Alpha(Opacity="+_49d*100+")";
-}
-}
-node.style.filter="Alpha(Opacity="+_49d*100+")";
-}else{
-if(h.moz){
-node.style.opacity=_49d;
-node.style.MozOpacity=_49d;
-}else{
-if(h.safari){
-node.style.opacity=_49d;
-node.style.KhtmlOpacity=_49d;
-}else{
-node.style.opacity=_49d;
-}
-}
-}
-};
-dojo.html.clearOpacity=function(node){
-node=dojo.byId(node);
-var ns=node.style;
-var h=dojo.render.html;
-if(h.ie){
-try{
-if(node.filters&&node.filters.alpha){
-ns.filter="";
-}
-}
-catch(e){
-}
-}else{
-if(h.moz){
-ns.opacity=1;
-ns.MozOpacity=1;
-}else{
-if(h.safari){
-ns.opacity=1;
-ns.KhtmlOpacity=1;
-}else{
-ns.opacity=1;
-}
-}
-}
-};
-dojo.html.getOpacity=function(node){
-node=dojo.byId(node);
-var h=dojo.render.html;
-if(h.ie){
-var opac=(node.filters&&node.filters.alpha&&typeof node.filters.alpha.opacity=="number"?node.filters.alpha.opacity:100)/100;
-}else{
-var opac=node.style.opacity||node.style.MozOpacity||node.style.KhtmlOpacity||1;
-}
-return opac>=0.999999?1:Number(opac);
-};
-dojo.provide("dojo.html.layout");
-dojo.html.sumAncestorProperties=function(node,prop){
-node=dojo.byId(node);
-if(!node){
-return 0;
-}
-var _4aa=0;
-while(node){
-if(dojo.html.getComputedStyle(node,"position")=="fixed"){
-return 0;
-}
-var val=node[prop];
-if(val){
-_4aa+=val-0;
-if(node==dojo.body()){
-break;
-}
-}
-node=node.parentNode;
-}
-return _4aa;
-};
-dojo.html.setStyleAttributes=function(node,_4ad){
-node=dojo.byId(node);
-var _4ae=_4ad.replace(/(;)?\s*$/,"").split(";");
-for(var i=0;i<_4ae.length;i++){
-var _4b0=_4ae[i].split(":");
-var name=_4b0[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
-var _4b2=_4b0[1].replace(/\s*$/,"").replace(/^\s*/,"");
-switch(name){
-case "opacity":
-dojo.html.setOpacity(node,_4b2);
-break;
-case "content-height":
-dojo.html.setContentBox(node,{height:_4b2});
-break;
-case "content-width":
-dojo.html.setContentBox(node,{width:_4b2});
-break;
-case "outer-height":
-dojo.html.setMarginBox(node,{height:_4b2});
-break;
-case "outer-width":
-dojo.html.setMarginBox(node,{width:_4b2});
-break;
-default:
-node.style[dojo.html.toCamelCase(name)]=_4b2;
-}
-}
-};
-dojo.html.boxSizing={MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PADDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
-dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_4b4,_4b5){
-node=dojo.byId(node,node.ownerDocument);
-var ret={x:0,y:0};
-var bs=dojo.html.boxSizing;
-if(!_4b5){
-_4b5=bs.CONTENT_BOX;
-}
-var _4b8=2;
-var _4b9;
-switch(_4b5){
-case bs.MARGIN_BOX:
-_4b9=3;
-break;
-case bs.BORDER_BOX:
-_4b9=2;
-break;
-case bs.PADDING_BOX:
-default:
-_4b9=1;
-break;
-case bs.CONTENT_BOX:
-_4b9=0;
-break;
-}
-var h=dojo.render.html;
-var db=document["body"]||document["documentElement"];
-if(h.ie){
-with(node.getBoundingClientRect()){
-ret.x=left-2;
-ret.y=top-2;
-}
-}else{
-if(document.getBoxObjectFor){
-_4b8=1;
-try{
-var bo=document.getBoxObjectFor(node);
-ret.x=bo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
-ret.y=bo.y-dojo.html.sumAncestorProperties(node,"scrollTop");
-}
-catch(e){
-}
-}else{
-if(node["offsetParent"]){
-var _4bd;
-if((h.safari)&&(node.style.getPropertyValue("position")=="absolute")&&(node.parentNode==db)){
-_4bd=db;
-}else{
-_4bd=db.parentNode;
-}
-if(node.parentNode!=db){
-var nd=node;
-if(dojo.render.html.opera){
-nd=db;
-}
-ret.x-=dojo.html.sumAncestorProperties(nd,"scrollLeft");
-ret.y-=dojo.html.sumAncestorProperties(nd,"scrollTop");
-}
-var _4bf=node;
-do{
-var n=_4bf["offsetLeft"];
-if(!h.opera||n>0){
-ret.x+=isNaN(n)?0:n;
-}
-var m=_4bf["offsetTop"];
-ret.y+=isNaN(m)?0:m;
-_4bf=_4bf.offsetParent;
-}while((_4bf!=_4bd)&&(_4bf!=null));
-}else{
-if(node["x"]&&node["y"]){
-ret.x+=isNaN(node.x)?0:node.x;
-ret.y+=isNaN(node.y)?0:node.y;
-}
-}
-}
-}
-if(_4b4){
-var _4c2=dojo.html.getScroll();
-ret.y+=_4c2.top;
-ret.x+=_4c2.left;
-}
-var _4c3=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
-if(_4b8>_4b9){
-for(var i=_4b9;i<_4b8;++i){
-ret.y+=_4c3[i](node,"top");
-ret.x+=_4c3[i](node,"left");
-}
-}else{
-if(_4b8<_4b9){
-for(var i=_4b9;i>_4b8;--i){
-ret.y-=_4c3[i-1](node,"top");
-ret.x-=_4c3[i-1](node,"left");
-}
-}
-}
-ret.top=ret.y;
-ret.left=ret.x;
-return ret;
-};
-dojo.html.isPositionAbsolute=function(node){
-return (dojo.html.getComputedStyle(node,"position")=="absolute");
-};
-dojo.html._sumPixelValues=function(node,_4c7,_4c8){
-var _4c9=0;
-for(var x=0;x<_4c7.length;x++){
-_4c9+=dojo.html.getPixelValue(node,_4c7[x],_4c8);
-}
-return _4c9;
-};
-dojo.html.getMargin=function(node){
-return {width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(dojo.html.getComputedStyle(node,"position")=="absolute")),height:dojo.html._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComputedStyle(node,"position")=="absolute"))};
-};
-dojo.html.getBorder=function(node){
-return {width:dojo.html.getBorderExtent(node,"left")+dojo.html.getBorderExtent(node,"right"),height:dojo.html.getBorderExtent(node,"top")+dojo.html.getBorderExtent(node,"bottom")};
-};
-dojo.html.getBorderExtent=function(node,side){
-return (dojo.html.getStyle(node,"border-"+side+"-style")=="none"?0:dojo.html.getPixelValue(node,"border-"+side+"-width"));
-};
-dojo.html.getMarginExtent=function(node,side){
-return dojo.html._sumPixelValues(node,["margin-"+side],dojo.html.isPositionAbsolute(node));
-};
-dojo.html.getPaddingExtent=function(node,side){
-return dojo.html._sumPixelValues(node,["padding-"+side],true);
-};
-dojo.html.getPadding=function(node){
-return {width:dojo.html._sumPixelValues(node,["padding-left","padding-right"],true),height:dojo.html._sumPixelValues(node,["padding-top","padding-bottom"],true)};
-};
-dojo.html.getPadBorder=function(node){
-var pad=dojo.html.getPadding(node);
-var _4d6=dojo.html.getBorder(node);
-return {width:pad.width+_4d6.width,height:pad.height+_4d6.height};
-};
-dojo.html.getBoxSizing=function(node){
-var h=dojo.render.html;
-var bs=dojo.html.boxSizing;
-if(((h.ie)||(h.opera))&&node.nodeName.toLowerCase()!="img"){
-var cm=document["compatMode"];
-if((cm=="BackCompat")||(cm=="QuirksMode")){
-return bs.BORDER_BOX;
-}else{
-return bs.CONTENT_BOX;
-}
-}else{
-if(arguments.length==0){
-node=document.documentElement;
-}
-var _4db;
-if(!h.ie){
-_4db=dojo.html.getStyle(node,"-moz-box-sizing");
-if(!_4db){
-_4db=dojo.html.getStyle(node,"box-sizing");
-}
-}
-return (_4db?_4db:bs.CONTENT_BOX);
-}
-};
-dojo.html.isBorderBox=function(node){
-return (dojo.html.getBoxSizing(node)==dojo.html.boxSizing.BORDER_BOX);
-};
-dojo.html.getBorderBox=function(node){
-node=dojo.byId(node);
-return {width:node.offsetWidth,height:node.offsetHeight};
-};
-dojo.html.getPaddingBox=function(node){
-var box=dojo.html.getBorderBox(node);
-var _4e0=dojo.html.getBorder(node);
-return {width:box.width-_4e0.width,height:box.height-_4e0.height};
-};
-dojo.html.getContentBox=function(node){
-node=dojo.byId(node);
-var _4e2=dojo.html.getPadBorder(node);
-return {width:node.offsetWidth-_4e2.width,height:node.offsetHeight-_4e2.height};
-};
-dojo.html.setContentBox=function(node,args){
-node=dojo.byId(node);
-var _4e5=0;
-var _4e6=0;
-var isbb=dojo.html.isBorderBox(node);
-var _4e8=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
-var ret={};
-if(typeof args.width!="undefined"){
-_4e5=args.width+_4e8.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_4e5);
-}
-if(typeof args.height!="undefined"){
-_4e6=args.height+_4e8.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_4e6);
-}
-return ret;
-};
-dojo.html.getMarginBox=function(node){
-var _4eb=dojo.html.getBorderBox(node);
-var _4ec=dojo.html.getMargin(node);
-return {width:_4eb.width+_4ec.width,height:_4eb.height+_4ec.height};
-};
-dojo.html.setMarginBox=function(node,args){
-node=dojo.byId(node);
-var _4ef=0;
-var _4f0=0;
-var isbb=dojo.html.isBorderBox(node);
-var _4f2=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
-var _4f3=dojo.html.getMargin(node);
-var ret={};
-if(typeof args.width!="undefined"){
-_4ef=args.width-_4f2.width;
-_4ef-=_4f3.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_4ef);
-}
-if(typeof args.height!="undefined"){
-_4f0=args.height-_4f2.height;
-_4f0-=_4f3.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_4f0);
-}
-return ret;
-};
-dojo.html.getElementBox=function(node,type){
-var bs=dojo.html.boxSizing;
-switch(type){
-case bs.MARGIN_BOX:
-return dojo.html.getMarginBox(node);
-case bs.BORDER_BOX:
-return dojo.html.getBorderBox(node);
-case bs.PADDING_BOX:
-return dojo.html.getPaddingBox(node);
-case bs.CONTENT_BOX:
-default:
-return dojo.html.getContentBox(node);
-}
-};
-dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_4f8,_4f9,_4fa){
-if(_4f8 instanceof Array||typeof _4f8=="array"){
-dojo.deprecated("dojo.html.toCoordinateArray","use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead","0.5");
-while(_4f8.length<4){
-_4f8.push(0);
-}
-while(_4f8.length>4){
-_4f8.pop();
-}
-var ret={left:_4f8[0],top:_4f8[1],width:_4f8[2],height:_4f8[3]};
-}else{
-if(!_4f8.nodeType&&!(_4f8 instanceof String||typeof _4f8=="string")&&("width" in _4f8||"height" in _4f8||"left" in _4f8||"x" in _4f8||"top" in _4f8||"y" in _4f8)){
-var ret={left:_4f8.left||_4f8.x||0,top:_4f8.top||_4f8.y||0,width:_4f8.width||0,height:_4f8.height||0};
-}else{
-var node=dojo.byId(_4f8);
-var pos=dojo.html.abs(node,_4f9,_4fa);
-var _4fe=dojo.html.getMarginBox(node);
-var ret={left:pos.left,top:pos.top,width:_4fe.width,height:_4fe.height};
-}
-}
-ret.x=ret.left;
-ret.y=ret.top;
-return ret;
-};
-dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_500){
-return dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"width");
-};
-dojo.html.setMarginBoxHeight=dojo.html.setOuterHeight=function(){
-return dojo.html._callDeprecated("setMarginBoxHeight","setMarginBox",arguments,"height");
-};
-dojo.html.getMarginBoxWidth=dojo.html.getOuterWidth=function(){
-return dojo.html._callDeprecated("getMarginBoxWidth","getMarginBox",arguments,null,"width");
-};
-dojo.html.getMarginBoxHeight=dojo.html.getOuterHeight=function(){
-return dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,null,"height");
-};
-dojo.html.getTotalOffset=function(node,type,_503){
-return dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",arguments,null,type);
-};
-dojo.html.getAbsoluteX=function(node,_505){
-return dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,null,"x");
-};
-dojo.html.getAbsoluteY=function(node,_507){
-return dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,null,"y");
-};
-dojo.html.totalOffsetLeft=function(node,_509){
-return dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",arguments,null,"left");
-};
-dojo.html.totalOffsetTop=function(node,_50b){
-return dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",arguments,null,"top");
-};
-dojo.html.getMarginWidth=function(node){
-return dojo.html._callDeprecated("getMarginWidth","getMargin",arguments,null,"width");
-};
-dojo.html.getMarginHeight=function(node){
-return dojo.html._callDeprecated("getMarginHeight","getMargin",arguments,null,"height");
-};
-dojo.html.getBorderWidth=function(node){
-return dojo.html._callDeprecated("getBorderWidth","getBorder",arguments,null,"width");
-};
-dojo.html.getBorderHeight=function(node){
-return dojo.html._callDeprecated("getBorderHeight","getBorder",arguments,null,"height");
-};
-dojo.html.getPaddingWidth=function(node){
-return dojo.html._callDeprecated("getPaddingWidth","getPadding",arguments,null,"width");
-};
-dojo.html.getPaddingHeight=function(node){
-return dojo.html._callDeprecated("getPaddingHeight","getPadding",arguments,null,"height");
-};
-dojo.html.getPadBorderWidth=function(node){
-return dojo.html._callDeprecated("getPadBorderWidth","getPadBorder",arguments,null,"width");
-};
-dojo.html.getPadBorderHeight=function(node){
-return dojo.html._callDeprecated("getPadBorderHeight","getPadBorder",arguments,null,"height");
-};
-dojo.html.getBorderBoxWidth=dojo.html.getInnerWidth=function(){
-return dojo.html._callDeprecated("getBorderBoxWidth","getBorderBox",arguments,null,"width");
-};
-dojo.html.getBorderBoxHeight=dojo.html.getInnerHeight=function(){
-return dojo.html._callDeprecated("getBorderBoxHeight","getBorderBox",arguments,null,"height");
-};
-dojo.html.getContentBoxWidth=dojo.html.getContentWidth=function(){
-return dojo.html._callDeprecated("getContentBoxWidth","getContentBox",arguments,null,"width");
-};
-dojo.html.getContentBoxHeight=dojo.html.getContentHeight=function(){
-return dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments,null,"height");
-};
-dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_515){
-return dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,"width");
-};
-dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_517){
-return dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments,"height");
-};
-dojo.provide("dojo.html.util");
-dojo.html.getElementWindow=function(_518){
-return dojo.html.getDocumentWindow(_518.ownerDocument);
-};
-dojo.html.getDocumentWindow=function(doc){
-if(dojo.render.html.safari&&!doc._parentWindow){
-var fix=function(win){
-win.document._parentWindow=win;
-for(var i=0;i<win.frames.length;i++){
-fix(win.frames[i]);
-}
-};
-fix(window.top);
-}
-if(dojo.render.html.ie&&window!==document.parentWindow&&!doc._parentWindow){
-doc.parentWindow.execScript("document._parentWindow = window;","Javascript");
-var win=doc._parentWindow;
-doc._parentWindow=null;
-return win;
-}
-return doc._parentWindow||doc.parentWindow||doc.defaultView;
-};
-dojo.html.gravity=function(node,e){
-node=dojo.byId(node);
-var _520=dojo.html.getCursorPosition(e);
-with(dojo.html){
-var _521=getAbsolutePosition(node,true);
-var bb=getBorderBox(node);
-var _523=_521.x+(bb.width/2);
-var _524=_521.y+(bb.height/2);
-}
-with(dojo.html.gravity){
-return ((_520.x<_523?WEST:EAST)|(_520.y<_524?NORTH:SOUTH));
-}
-};
-dojo.html.gravity.NORTH=1;
-dojo.html.gravity.SOUTH=1<<1;
-dojo.html.gravity.EAST=1<<2;
-dojo.html.gravity.WEST=1<<3;
-dojo.html.overElement=function(_525,e){
-_525=dojo.byId(_525);
-var _527=dojo.html.getCursorPosition(e);
-var bb=dojo.html.getBorderBox(_525);
-var _529=dojo.html.getAbsolutePosition(_525,true,dojo.html.boxSizing.BORDER_BOX);
-var top=_529.y;
-var _52b=top+bb.height;
-var left=_529.x;
-var _52d=left+bb.width;
-return (_527.x>=left&&_527.x<=_52d&&_527.y>=top&&_527.y<=_52b);
-};
-dojo.html.renderedTextContent=function(node){
-node=dojo.byId(node);
-var _52f="";
-if(node==null){
-return _52f;
-}
-for(var i=0;i<node.childNodes.length;i++){
-switch(node.childNodes[i].nodeType){
-case 1:
-case 5:
-var _531="unknown";
-try{
-_531=dojo.html.getStyle(node.childNodes[i],"display");
-}
-catch(E){
-}
-switch(_531){
-case "block":
-case "list-item":
-case "run-in":
-case "table":
-case "table-row-group":
-case "table-header-group":
-case "table-footer-group":
-case "table-row":
-case "table-column-group":
-case "table-column":
-case "table-cell":
-case "table-caption":
-_52f+="\n";
-_52f+=dojo.html.renderedTextContent(node.childNodes[i]);
-_52f+="\n";
-break;
-case "none":
-break;
-default:
-if(node.childNodes[i].tagName&&node.childNodes[i].tagName.toLowerCase()=="br"){
-_52f+="\n";
-}else{
-_52f+=dojo.html.renderedTextContent(node.childNodes[i]);
-}
-break;
-}
-break;
-case 3:
-case 2:
-case 4:
-var text=node.childNodes[i].nodeValue;
-var _533="unknown";
-try{
-_533=dojo.html.getStyle(node,"text-transform");
-}
-catch(E){
-}
-switch(_533){
-case "capitalize":
-var _534=text.split(" ");
-for(var i=0;i<_534.length;i++){
-_534[i]=_534[i].charAt(0).toUpperCase()+_534[i].substring(1);
-}
-text=_534.join(" ");
-break;
-case "uppercase":
-text=text.toUpperCase();
-break;
-case "lowercase":
-text=text.toLowerCase();
-break;
-default:
-break;
-}
-switch(_533){
-case "nowrap":
-break;
-case "pre-wrap":
-break;
-case "pre-line":
-break;
-case "pre":
-break;
-default:
-text=text.replace(/\s+/," ");
-if(/\s$/.test(_52f)){
-text.replace(/^\s/,"");
-}
-break;
-}
-_52f+=text;
-break;
-default:
-break;
-}
-}
-return _52f;
-};
-dojo.html.createNodesFromText=function(txt,trim){
-if(trim){
-txt=txt.replace(/^\s+|\s+$/g,"");
-}
-var tn=dojo.doc().createElement("div");
-tn.style.visibility="hidden";
-dojo.body().appendChild(tn);
-var _538="none";
-if((/^<t[dh][\s\r\n>]/i).test(txt.replace(/^\s+/))){
-txt="<table><tbody><tr>"+txt+"</tr></tbody></table>";
-_538="cell";
-}else{
-if((/^<tr[\s\r\n>]/i).test(txt.replace(/^\s+/))){
-txt="<table><tbody>"+txt+"</tbody></table>";
-_538="row";
-}else{
-if((/^<(thead|tbody|tfoot)[\s\r\n>]/i).test(txt.replace(/^\s+/))){
-txt="<table>"+txt+"</table>";
-_538="section";
-}
-}
-}
-tn.innerHTML=txt;
-if(tn["normalize"]){
-tn.normalize();
-}
-var _539=null;
-switch(_538){
-case "cell":
-_539=tn.getElementsByTagName("tr")[0];
-break;
-case "row":
-_539=tn.getElementsByTagName("tbody")[0];
-break;
-case "section":
-_539=tn.getElementsByTagName("table")[0];
-break;
-default:
-_539=tn;
-break;
-}
-var _53a=[];
-for(var x=0;x<_539.childNodes.length;x++){
-_53a.push(_539.childNodes[x].cloneNode(true));
-}
-tn.style.display="none";
-dojo.html.destroyNode(tn);
-return _53a;
-};
-dojo.html.placeOnScreen=function(node,_53d,_53e,_53f,_540,_541,_542){
-if(_53d instanceof Array||typeof _53d=="array"){
-_542=_541;
-_541=_540;
-_540=_53f;
-_53f=_53e;
-_53e=_53d[1];
-_53d=_53d[0];
-}
-if(_541 instanceof String||typeof _541=="string"){
-_541=_541.split(",");
-}
-if(!isNaN(_53f)){
-_53f=[Number(_53f),Number(_53f)];
-}else{
-if(!(_53f instanceof Array||typeof _53f=="array")){
-_53f=[0,0];
-}
-}
-var _543=dojo.html.getScroll().offset;
-var view=dojo.html.getViewport();
-node=dojo.byId(node);
-var _545=node.style.display;
-node.style.display="";
-var bb=dojo.html.getBorderBox(node);
-var w=bb.width;
-var h=bb.height;
-node.style.display=_545;
-if(!(_541 instanceof Array||typeof _541=="array")){
-_541=["TL"];
-}
-var _549,_54a,_54b=Infinity,_54c;
-for(var _54d=0;_54d<_541.length;++_54d){
-var _54e=_541[_54d];
-var _54f=true;
-var tryX=_53d-(_54e.charAt(1)=="L"?0:w)+_53f[0]*(_54e.charAt(1)=="L"?1:-1);
-var tryY=_53e-(_54e.charAt(0)=="T"?0:h)+_53f[1]*(_54e.charAt(0)=="T"?1:-1);
-if(_540){
-tryX-=_543.x;
-tryY-=_543.y;
-}
-if(tryX<0){
-tryX=0;
-_54f=false;
-}
-if(tryY<0){
-tryY=0;
-_54f=false;
-}
-var x=tryX+w;
-if(x>view.width){
-x=view.width-w;
-_54f=false;
-}else{
-x=tryX;
-}
-x=Math.max(_53f[0],x)+_543.x;
-var y=tryY+h;
-if(y>view.height){
-y=view.height-h;
-_54f=false;
-}else{
-y=tryY;
-}
-y=Math.max(_53f[1],y)+_543.y;
-if(_54f){
-_549=x;
-_54a=y;
-_54b=0;
-_54c=_54e;
-break;
-}else{
-var dist=Math.pow(x-tryX-_543.x,2)+Math.pow(y-tryY-_543.y,2);
-if(_54b>dist){
-_54b=dist;
-_549=x;
-_54a=y;
-_54c=_54e;
-}
-}
-}
-if(!_542){
-node.style.left=_549+"px";
-node.style.top=_54a+"px";
-}
-return {left:_549,top:_54a,x:_549,y:_54a,dist:_54b,corner:_54c};
-};
-dojo.html.placeOnScreenPoint=function(node,_556,_557,_558,_559){
-dojo.deprecated("dojo.html.placeOnScreenPoint","use dojo.html.placeOnScreen() instead","0.5");
-return dojo.html.placeOnScreen(node,_556,_557,_558,_559,["TL","TR","BL","BR"]);
-};
-dojo.html.placeOnScreenAroundElement=function(node,_55b,_55c,_55d,_55e,_55f){
-var best,_561=Infinity;
-_55b=dojo.byId(_55b);
-var _562=_55b.style.display;
-_55b.style.display="";
-var mb=dojo.html.getElementBox(_55b,_55d);
-var _564=mb.width;
-var _565=mb.height;
-var _566=dojo.html.getAbsolutePosition(_55b,true,_55d);
-_55b.style.display=_562;
-for(var _567 in _55e){
-var pos,_569,_56a;
-var _56b=_55e[_567];
-_569=_566.x+(_567.charAt(1)=="L"?0:_564);
-_56a=_566.y+(_567.charAt(0)=="T"?0:_565);
-pos=dojo.html.placeOnScreen(node,_569,_56a,_55c,true,_56b,true);
-if(pos.dist==0){
-best=pos;
-break;
-}else{
-if(_561>pos.dist){
-_561=pos.dist;
-best=pos;
-}
-}
-}
-if(!_55f){
-node.style.left=best.left+"px";
-node.style.top=best.top+"px";
-}
-return best;
-};
-dojo.html.scrollIntoView=function(node){
-if(!node){
-return;
-}
-if(dojo.render.html.ie){
-if(dojo.html.getBorderBox(node.parentNode).height<=node.parentNode.scrollHeight){
-node.scrollIntoView(false);
-}
-}else{
-if(dojo.render.html.mozilla){
-node.scrollIntoView(false);
-}else{
-var _56d=node.parentNode;
-var _56e=_56d.scrollTop+dojo.html.getBorderBox(_56d).height;
-var _56f=node.offsetTop+dojo.html.getMarginBox(node).height;
-if(_56e<_56f){
-_56d.scrollTop+=(_56f-_56e);
-}else{
-if(_56d.scrollTop>node.offsetTop){
-_56d.scrollTop-=(_56d.scrollTop-node.offsetTop);
-}
-}
-}
-}
-};
-
-
-__CPAN_EDITION__ core build.txt
-Files baked into this build:
-dojoGuardStart.js
-../src/bootstrap1.js
-../src/loader.js
-dojoGuardEnd.js
-../src/hostenv_browser.js
-../src/lang/common.js
-../src/lang/array.js
-../src/lang/extras.js
-../src/lang/declare.js
-../src/lang/func.js
-../src/event/common.js
-../src/event/topic.js
-../src/event/browser.js
-../src/event/__package__.js
-../src/event.js
-../src/string/common.js
-../src/string/extras.js
-../src/string.js
-../src/io/common.js
-../src/dom.js
-../src/undo/browser.js
-../src/io/BrowserIO.js
-../src/io/cookie.js
-../src/io/__package__.js
-../src/io.js
-../src/AdapterRegistry.js
-../src/json.js
-../src/html/common.js
-../src/uri/Uri.js
-../src/html/style.js
-../src/html/__package__.js
-../src/html/display.js
-../src/html/layout.js
-../src/html/util.js
 __CPAN_EDITION__ editor dojo.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17974,7 +12050,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -18770,7 +12846,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -19608,20 +13686,28 @@
 };
 dojo.provide("dojo.lang.func");
 dojo.lang.hitch=function(_18d,_18e){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
 var fcn=(dojo.lang.isString(_18e)?_18d[_18e]:_18e)||function(){
 };
 return function(){
-return fcn.apply(_18d,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_18d,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_190,_191,_192){
-var nso=(_191||dojo.lang.anon);
-if((_192)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_194,_195,_196){
+var nso=(_195||dojo.lang.anon);
+if((_196)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_190){
+if(nso[x]===_194){
 return x;
 }
 }
@@ -19633,50 +13719,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_190;
+nso[ret]=_194;
 return ret;
 };
-dojo.lang.forward=function(_196){
+dojo.lang.forward=function(_19a){
 return function(){
-return this[_196].apply(this,arguments);
+return this[_19a].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_197,func){
-var _199=[];
-_197=_197||dj_global;
+dojo.lang.curry=function(_19b,func){
+var _19d=[];
+_19b=_19b||dj_global;
 if(dojo.lang.isString(func)){
-func=_197[func];
+func=_19b[func];
 }
 for(var x=2;x<arguments.length;x++){
-_199.push(arguments[x]);
+_19d.push(arguments[x]);
 }
-var _19b=(func["__preJoinArity"]||func.length)-_199.length;
-function gather(_19c,_19d,_19e){
-var _19f=_19e;
-var _1a0=_19d.slice(0);
-for(var x=0;x<_19c.length;x++){
-_1a0.push(_19c[x]);
+var _19f=(func["__preJoinArity"]||func.length)-_19d.length;
+function gather(_1a0,_1a1,_1a2){
+var _1a3=_1a2;
+var _1a4=_1a1.slice(0);
+for(var x=0;x<_1a0.length;x++){
+_1a4.push(_1a0[x]);
 }
-_19e=_19e-_19c.length;
-if(_19e<=0){
-var res=func.apply(_197,_1a0);
-_19e=_19f;
+_1a2=_1a2-_1a0.length;
+if(_1a2<=0){
+var res=func.apply(_19b,_1a4);
+_1a2=_1a3;
 return res;
 }else{
 return function(){
-return gather(arguments,_1a0,_19e);
+return gather(arguments,_1a4,_1a2);
 };
 }
 }
-return gather([],_199,_19b);
+return gather([],_19d,_19f);
 };
-dojo.lang.curryArguments=function(_1a3,func,args,_1a6){
-var _1a7=[];
-var x=_1a6||0;
-for(x=_1a6;x<args.length;x++){
-_1a7.push(args[x]);
+dojo.lang.curryArguments=function(_1a7,func,args,_1aa){
+var _1ab=[];
+var x=_1aa||0;
+for(x=_1aa;x<args.length;x++){
+_1ab.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_1a3,func].concat(_1a7));
+return dojo.lang.curry.apply(dojo.lang,[_1a7,func].concat(_1ab));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -19693,31 +13779,31 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_1ad,_1ae){
+dojo.lang.delayThese=function(farr,cb,_1b1,_1b2){
 if(!farr.length){
-if(typeof _1ae=="function"){
-_1ae();
+if(typeof _1b2=="function"){
+_1b2();
 }
 return;
 }
-if((typeof _1ad=="undefined")&&(typeof cb=="number")){
-_1ad=cb;
+if((typeof _1b1=="undefined")&&(typeof cb=="number")){
+_1b1=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_1ad){
-_1ad=0;
+if(!_1b1){
+_1b1=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_1ad,_1ae);
-},_1ad);
+dojo.lang.delayThese(farr,cb,_1b1,_1b2);
+},_1b1);
 };
 dojo.provide("dojo.lang.array");
 dojo.lang.mixin(dojo.lang,{has:function(obj,name){
@@ -19730,138 +13816,138 @@
 },isEmpty:function(obj){
 if(dojo.lang.isObject(obj)){
 var tmp={};
-var _1b3=0;
+var _1b7=0;
 for(var x in obj){
 if(obj[x]&&(!tmp[x])){
-_1b3++;
+_1b7++;
 break;
 }
 }
-return _1b3==0;
+return _1b7==0;
 }else{
 if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
 return obj.length==0;
 }
 }
-},map:function(arr,obj,_1b7){
-var _1b8=dojo.lang.isString(arr);
-if(_1b8){
+},map:function(arr,obj,_1bb){
+var _1bc=dojo.lang.isString(arr);
+if(_1bc){
 arr=arr.split("");
 }
-if(dojo.lang.isFunction(obj)&&(!_1b7)){
-_1b7=obj;
+if(dojo.lang.isFunction(obj)&&(!_1bb)){
+_1bb=obj;
 obj=dj_global;
 }else{
-if(dojo.lang.isFunction(obj)&&_1b7){
-var _1b9=obj;
-obj=_1b7;
-_1b7=_1b9;
+if(dojo.lang.isFunction(obj)&&_1bb){
+var _1bd=obj;
+obj=_1bb;
+_1bb=_1bd;
 }
 }
 if(Array.map){
-var _1ba=Array.map(arr,_1b7,obj);
+var _1be=Array.map(arr,_1bb,obj);
 }else{
-var _1ba=[];
+var _1be=[];
 for(var i=0;i<arr.length;++i){
-_1ba.push(_1b7.call(obj,arr[i]));
+_1be.push(_1bb.call(obj,arr[i]));
 }
 }
-if(_1b8){
-return _1ba.join("");
+if(_1bc){
+return _1be.join("");
 }else{
-return _1ba;
+return _1be;
 }
-},reduce:function(arr,_1bd,obj,_1bf){
-var _1c0=_1bd;
+},reduce:function(arr,_1c1,obj,_1c3){
+var _1c4=_1c1;
 if(arguments.length==2){
-_1bf=_1bd;
-_1c0=arr[0];
+_1c3=_1c1;
+_1c4=arr[0];
 arr=arr.slice(1);
 }else{
 if(arguments.length==3){
 if(dojo.lang.isFunction(obj)){
-_1bf=obj;
+_1c3=obj;
 obj=null;
 }
 }else{
 if(dojo.lang.isFunction(obj)){
-var tmp=_1bf;
-_1bf=obj;
+var tmp=_1c3;
+_1c3=obj;
 obj=tmp;
 }
 }
 }
 var ob=obj||dj_global;
 dojo.lang.map(arr,function(val){
-_1c0=_1bf.call(ob,_1c0,val);
+_1c4=_1c3.call(ob,_1c4,val);
 });
-return _1c0;
-},forEach:function(_1c4,_1c5,_1c6){
-if(dojo.lang.isString(_1c4)){
-_1c4=_1c4.split("");
+return _1c4;
+},forEach:function(_1c8,_1c9,_1ca){
+if(dojo.lang.isString(_1c8)){
+_1c8=_1c8.split("");
 }
 if(Array.forEach){
-Array.forEach(_1c4,_1c5,_1c6);
+Array.forEach(_1c8,_1c9,_1ca);
 }else{
-if(!_1c6){
-_1c6=dj_global;
+if(!_1ca){
+_1ca=dj_global;
 }
-for(var i=0,l=_1c4.length;i<l;i++){
-_1c5.call(_1c6,_1c4[i],i,_1c4);
+for(var i=0,l=_1c8.length;i<l;i++){
+_1c9.call(_1ca,_1c8[i],i,_1c8);
 }
 }
-},_everyOrSome:function(_1c9,arr,_1cb,_1cc){
+},_everyOrSome:function(_1cd,arr,_1cf,_1d0){
 if(dojo.lang.isString(arr)){
 arr=arr.split("");
 }
 if(Array.every){
-return Array[_1c9?"every":"some"](arr,_1cb,_1cc);
+return Array[_1cd?"every":"some"](arr,_1cf,_1d0);
 }else{
-if(!_1cc){
-_1cc=dj_global;
+if(!_1d0){
+_1d0=dj_global;
 }
 for(var i=0,l=arr.length;i<l;i++){
-var _1cf=_1cb.call(_1cc,arr[i],i,arr);
-if(_1c9&&!_1cf){
+var _1d3=_1cf.call(_1d0,arr[i],i,arr);
+if(_1cd&&!_1d3){
 return false;
 }else{
-if((!_1c9)&&(_1cf)){
+if((!_1cd)&&(_1d3)){
 return true;
 }
 }
 }
-return Boolean(_1c9);
+return Boolean(_1cd);
 }
-},every:function(arr,_1d1,_1d2){
-return this._everyOrSome(true,arr,_1d1,_1d2);
-},some:function(arr,_1d4,_1d5){
-return this._everyOrSome(false,arr,_1d4,_1d5);
-},filter:function(arr,_1d7,_1d8){
-var _1d9=dojo.lang.isString(arr);
-if(_1d9){
+},every:function(arr,_1d5,_1d6){
+return this._everyOrSome(true,arr,_1d5,_1d6);
+},some:function(arr,_1d8,_1d9){
+return this._everyOrSome(false,arr,_1d8,_1d9);
+},filter:function(arr,_1db,_1dc){
+var _1dd=dojo.lang.isString(arr);
+if(_1dd){
 arr=arr.split("");
 }
-var _1da;
+var _1de;
 if(Array.filter){
-_1da=Array.filter(arr,_1d7,_1d8);
+_1de=Array.filter(arr,_1db,_1dc);
 }else{
-if(!_1d8){
+if(!_1dc){
 if(arguments.length>=3){
 dojo.raise("thisObject doesn't exist!");
 }
-_1d8=dj_global;
+_1dc=dj_global;
 }
-_1da=[];
+_1de=[];
 for(var i=0;i<arr.length;i++){
-if(_1d7.call(_1d8,arr[i],i,arr)){
-_1da.push(arr[i]);
+if(_1db.call(_1dc,arr[i],i,arr)){
+_1de.push(arr[i]);
 }
 }
 }
-if(_1d9){
-return _1da.join("");
+if(_1dd){
+return _1de.join("");
 }else{
-return _1da;
+return _1de;
 }
 },unnest:function(){
 var out=[];
@@ -19874,35 +13960,35 @@
 }
 }
 return out;
-},toArray:function(_1df,_1e0){
-var _1e1=[];
-for(var i=_1e0||0;i<_1df.length;i++){
-_1e1.push(_1df[i]);
+},toArray:function(_1e3,_1e4){
+var _1e5=[];
+for(var i=_1e4||0;i<_1e3.length;i++){
+_1e5.push(_1e3[i]);
 }
-return _1e1;
+return _1e5;
 }});
 dojo.provide("dojo.lang.extras");
-dojo.lang.setTimeout=function(func,_1e4){
-var _1e5=window,_1e6=2;
+dojo.lang.setTimeout=function(func,_1e8){
+var _1e9=window,_1ea=2;
 if(!dojo.lang.isFunction(func)){
-_1e5=func;
-func=_1e4;
-_1e4=arguments[2];
-_1e6++;
+_1e9=func;
+func=_1e8;
+_1e8=arguments[2];
+_1ea++;
 }
 if(dojo.lang.isString(func)){
-func=_1e5[func];
+func=_1e9[func];
 }
 var args=[];
-for(var i=_1e6;i<arguments.length;i++){
+for(var i=_1ea;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 return dojo.global().setTimeout(function(){
-func.apply(_1e5,args);
-},_1e4);
+func.apply(_1e9,args);
+},_1e8);
 };
-dojo.lang.clearTimeout=function(_1e9){
-dojo.global().clearTimeout(_1e9);
+dojo.lang.clearTimeout=function(_1ed){
+dojo.global().clearTimeout(_1ed);
 };
 dojo.lang.getNameInObj=function(ns,item){
 if(!ns){
@@ -19947,65 +14033,65 @@
 }
 return undefined;
 };
-dojo.lang.getObjPathValue=function(_1f2,_1f3,_1f4){
-with(dojo.parseObjPath(_1f2,_1f3,_1f4)){
-return dojo.evalProp(prop,obj,_1f4);
+dojo.lang.getObjPathValue=function(_1f6,_1f7,_1f8){
+with(dojo.parseObjPath(_1f6,_1f7,_1f8)){
+return dojo.evalProp(prop,obj,_1f8);
 }
 };
-dojo.lang.setObjPathValue=function(_1f5,_1f6,_1f7,_1f8){
+dojo.lang.setObjPathValue=function(_1f9,_1fa,_1fb,_1fc){
 dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and the '=' operator","0.6");
 if(arguments.length<4){
-_1f8=true;
+_1fc=true;
 }
-with(dojo.parseObjPath(_1f5,_1f7,_1f8)){
-if(obj&&(_1f8||(prop in obj))){
-obj[prop]=_1f6;
+with(dojo.parseObjPath(_1f9,_1fb,_1fc)){
+if(obj&&(_1fc||(prop in obj))){
+obj[prop]=_1fa;
 }
 }
 };
 dojo.provide("dojo.lang.declare");
-dojo.lang.declare=function(_1f9,_1fa,init,_1fc){
-if((dojo.lang.isFunction(_1fc))||((!_1fc)&&(!dojo.lang.isFunction(init)))){
-var temp=_1fc;
-_1fc=init;
+dojo.lang.declare=function(_1fd,_1fe,init,_200){
+if((dojo.lang.isFunction(_200))||((!_200)&&(!dojo.lang.isFunction(init)))){
+var temp=_200;
+_200=init;
 init=temp;
 }
-var _1fe=[];
-if(dojo.lang.isArray(_1fa)){
-_1fe=_1fa;
-_1fa=_1fe.shift();
+var _202=[];
+if(dojo.lang.isArray(_1fe)){
+_202=_1fe;
+_1fe=_202.shift();
 }
 if(!init){
-init=dojo.evalObjPath(_1f9,false);
+init=dojo.evalObjPath(_1fd,false);
 if((init)&&(!dojo.lang.isFunction(init))){
 init=null;
 }
 }
 var ctor=dojo.lang.declare._makeConstructor();
-var scp=(_1fa?_1fa.prototype:null);
+var scp=(_1fe?_1fe.prototype:null);
 if(scp){
 scp.prototyping=true;
-ctor.prototype=new _1fa();
+ctor.prototype=new _1fe();
 scp.prototyping=false;
 }
 ctor.superclass=scp;
-ctor.mixins=_1fe;
-for(var i=0,l=_1fe.length;i<l;i++){
-dojo.lang.extend(ctor,_1fe[i].prototype);
+ctor.mixins=_202;
+for(var i=0,l=_202.length;i<l;i++){
+dojo.lang.extend(ctor,_202[i].prototype);
 }
 ctor.prototype.initializer=null;
-ctor.prototype.declaredClass=_1f9;
-if(dojo.lang.isArray(_1fc)){
-dojo.lang.extend.apply(dojo.lang,[ctor].concat(_1fc));
+ctor.prototype.declaredClass=_1fd;
+if(dojo.lang.isArray(_200)){
+dojo.lang.extend.apply(dojo.lang,[ctor].concat(_200));
 }else{
-dojo.lang.extend(ctor,(_1fc)||{});
+dojo.lang.extend(ctor,(_200)||{});
 }
 dojo.lang.extend(ctor,dojo.lang.declare._common);
 ctor.prototype.constructor=ctor;
 ctor.prototype.initializer=(ctor.prototype.initializer)||(init)||(function(){
 });
-var _203=dojo.parseObjPath(_1f9,null,true);
-_203.obj[_203.prop]=ctor;
+var _207=dojo.parseObjPath(_1fd,null,true);
+_207.obj[_207.prop]=ctor;
 return ctor;
 };
 dojo.lang.declare._makeConstructor=function(){
@@ -20030,19 +14116,19 @@
 };
 dojo.lang.declare._common={_getPropContext:function(){
 return (this.___proto||this);
-},_contextMethod:function(_209,_20a,args){
-var _20c,_20d=this.___proto;
-this.___proto=_209;
+},_contextMethod:function(_20d,_20e,args){
+var _210,_211=this.___proto;
+this.___proto=_20d;
 try{
-_20c=_209[_20a].apply(this,(args||[]));
+_210=_20d[_20e].apply(this,(args||[]));
 }
 catch(e){
 throw e;
 }
 finally{
-this.___proto=_20d;
+this.___proto=_211;
 }
-return _20c;
+return _210;
 },_inherited:function(prop,args){
 var p=this._getPropContext();
 do{
@@ -20058,9 +14144,9 @@
 }};
 dojo.declare=dojo.lang.declare;
 dojo.provide("dojo.ns");
-dojo.ns={namespaces:{},failed:{},loading:{},loaded:{},register:function(name,_214,_215,_216){
-if(!_216||!this.namespaces[name]){
-this.namespaces[name]=new dojo.ns.Ns(name,_214,_215);
+dojo.ns={namespaces:{},failed:{},loading:{},loaded:{},register:function(name,_218,_219,_21a){
+if(!_21a||!this.namespaces[name]){
+this.namespaces[name]=new dojo.ns.Ns(name,_218,_219);
 }
 },allow:function(name){
 if(this.failed[name]){
@@ -20104,50 +14190,50 @@
 }
 return this.namespaces[name];
 }};
-dojo.ns.Ns=function(name,_21d,_21e){
+dojo.ns.Ns=function(name,_221,_222){
 this.name=name;
-this.module=_21d;
-this.resolver=_21e;
+this.module=_221;
+this.resolver=_222;
 this._loaded=[];
 this._failed=[];
 };
-dojo.ns.Ns.prototype.resolve=function(name,_220,_221){
+dojo.ns.Ns.prototype.resolve=function(name,_224,_225){
 if(!this.resolver||djConfig["skipAutoRequire"]){
 return false;
 }
-var _222=this.resolver(name,_220);
-if((_222)&&(!this._loaded[_222])&&(!this._failed[_222])){
+var _226=this.resolver(name,_224);
+if((_226)&&(!this._loaded[_226])&&(!this._failed[_226])){
 var req=dojo.require;
-req(_222,false,true);
-if(dojo.hostenv.findModule(_222,false)){
-this._loaded[_222]=true;
+req(_226,false,true);
+if(dojo.hostenv.findModule(_226,false)){
+this._loaded[_226]=true;
 }else{
-if(!_221){
-dojo.raise("dojo.ns.Ns.resolve: module '"+_222+"' not found after loading via namespace '"+this.name+"'");
+if(!_225){
+dojo.raise("dojo.ns.Ns.resolve: module '"+_226+"' not found after loading via namespace '"+this.name+"'");
 }
-this._failed[_222]=true;
+this._failed[_226]=true;
 }
 }
-return Boolean(this._loaded[_222]);
+return Boolean(this._loaded[_226]);
 };
-dojo.registerNamespace=function(name,_225,_226){
+dojo.registerNamespace=function(name,_229,_22a){
 dojo.ns.register.apply(dojo.ns,arguments);
 };
-dojo.registerNamespaceResolver=function(name,_228){
+dojo.registerNamespaceResolver=function(name,_22c){
 var n=dojo.ns.namespaces[name];
 if(n){
-n.resolver=_228;
+n.resolver=_22c;
 }
 };
-dojo.registerNamespaceManifest=function(_22a,path,name,_22d,_22e){
+dojo.registerNamespaceManifest=function(_22e,path,name,_231,_232){
 dojo.registerModulePath(name,path);
-dojo.registerNamespace(name,_22d,_22e);
+dojo.registerNamespace(name,_231,_232);
 };
 dojo.registerNamespace("dojo","dojo.widget");
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_230){
+function interpolateArgs(args,_234){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -20174,14 +14260,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _233=dl.nameAnonFunc(args[2],ao.adviceObj,_230);
-ao.adviceFunc=_233;
+var _237=dl.nameAnonFunc(args[2],ao.adviceObj,_234);
+ao.adviceFunc=_237;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _233=dl.nameAnonFunc(args[0],ao.srcObj,_230);
-ao.srcFunc=_233;
+var _237=dl.nameAnonFunc(args[0],ao.srcObj,_234);
+ao.srcFunc=_237;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -20207,17 +14293,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _233=dl.nameAnonFunc(args[1],dj_global,_230);
-ao.srcFunc=_233;
+var _237=dl.nameAnonFunc(args[1],dj_global,_234);
+ao.srcFunc=_237;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _233=dl.nameAnonFunc(args[3],dj_global,_230);
+var _237=dl.nameAnonFunc(args[3],dj_global,_234);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_233;
+ao.adviceFunc=_237;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -20265,8 +14351,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _233=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_230);
-ao.aroundFunc=_233;
+var _237=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_234);
+ao.aroundFunc=_237;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -20295,18 +14381,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _235={};
+var _239={};
 for(var x in ao){
-_235[x]=ao[x];
+_239[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_235.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_235));
+_239.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_239));
 });
 return mjps;
 }
@@ -20318,20 +14411,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _23d;
+var _241;
 if((arguments.length==1)&&(typeof a1=="object")){
-_23d=a1;
+_241=a1;
 }else{
-_23d={srcObj:a1,srcFunc:a2};
+_241={srcObj:a1,srcFunc:a2};
 }
-_23d.adviceFunc=function(){
-var _23e=[];
+_241.adviceFunc=function(){
+var _242=[];
 for(var x=0;x<arguments.length;x++){
-_23e.push(arguments[x]);
+_242.push(arguments[x]);
 }
-dojo.debug("("+_23d.srcObj+")."+_23d.srcFunc,":",_23e.join(", "));
+dojo.debug("("+_241.srcObj+")."+_241.srcFunc,":",_242.join(", "));
 };
-this.kwConnect(_23d);
+this.kwConnect(_241);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -20357,25 +14450,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_246,_247){
-var fn=(_247)?"disconnect":"connect";
-if(typeof _246["srcFunc"]=="function"){
-_246.srcObj=_246["srcObj"]||dj_global;
-var _249=dojo.lang.nameAnonFunc(_246.srcFunc,_246.srcObj,true);
-_246.srcFunc=_249;
+this._kwConnectImpl=function(_24a,_24b){
+var fn=(_24b)?"disconnect":"connect";
+if(typeof _24a["srcFunc"]=="function"){
+_24a.srcObj=_24a["srcObj"]||dj_global;
+var _24d=dojo.lang.nameAnonFunc(_24a.srcFunc,_24a.srcObj,true);
+_24a.srcFunc=_24d;
 }
-if(typeof _246["adviceFunc"]=="function"){
-_246.adviceObj=_246["adviceObj"]||dj_global;
-var _249=dojo.lang.nameAnonFunc(_246.adviceFunc,_246.adviceObj,true);
-_246.adviceFunc=_249;
+if(typeof _24a["adviceFunc"]=="function"){
+_24a.adviceObj=_24a["adviceObj"]||dj_global;
+var _24d=dojo.lang.nameAnonFunc(_24a.adviceFunc,_24a.adviceObj,true);
+_24a.adviceFunc=_24d;
 }
-_246.srcObj=_246["srcObj"]||dj_global;
-_246.adviceObj=_246["adviceObj"]||_246["targetObj"]||dj_global;
-_246.adviceFunc=_246["adviceFunc"]||_246["targetFunc"];
-return dojo.event[fn](_246);
+_24a.srcObj=_24a["srcObj"]||dj_global;
+_24a.adviceObj=_24a["adviceObj"]||_24a["targetObj"]||dj_global;
+_24a.adviceFunc=_24a["adviceFunc"]||_24a["targetFunc"];
+return dojo.event[fn](_24a);
 };
-this.kwConnect=function(_24a){
-return this._kwConnectImpl(_24a,false);
+this.kwConnect=function(_24e){
+return this._kwConnectImpl(_24e,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -20400,12 +14493,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_24d){
-return this._kwConnectImpl(_24d,true);
+this.kwDisconnect=function(_251){
+return this._kwConnectImpl(_251,true);
 };
 };
-dojo.event.MethodInvocation=function(_24e,obj,args){
-this.jp_=_24e;
+dojo.event.MethodInvocation=function(_252,obj,args){
+this.jp_=_252;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -20424,48 +14517,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_256){
+dojo.event.MethodJoinPoint=function(obj,_25a){
 this.object=obj||dj_global;
-this.methodname=_256;
-this.methodfunc=this.object[_256];
+this.methodname=_25a;
+this.methodfunc=this.object[_25a];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_258){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_25c){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_258];
+var ofn=obj[_25c];
 if(!ofn){
-ofn=obj[_258]=function(){
+ofn=obj[_25c]=function(){
 };
-if(!obj[_258]){
-dojo.raise("Cannot set do-nothing method on that object "+_258);
+if(!obj[_25c]){
+dojo.raise("Cannot set do-nothing method on that object "+_25c);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _25a=_258+"$joinpoint";
-var _25b=_258+"$joinpoint$method";
-var _25c=obj[_25a];
-if(!_25c){
-var _25d=false;
+var _25e=_25c+"$joinpoint";
+var _25f=_25c+"$joinpoint$method";
+var _260=obj[_25e];
+if(!_260){
+var _261=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_25d=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_25a,_25b,_258]);
+_261=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_25e,_25f,_25c]);
 }
 }
-var _25e=ofn.length;
-obj[_25b]=ofn;
-_25c=obj[_25a]=new dojo.event.MethodJoinPoint(obj,_25b);
-if(!_25d){
-obj[_258]=function(){
-return _25c.run.apply(_25c,arguments);
+var _262=ofn.length;
+obj[_25f]=ofn;
+_260=obj[_25e]=new dojo.event.MethodJoinPoint(obj,_25f);
+if(!_261){
+obj[_25c]=function(){
+return _260.run.apply(_260,arguments);
 };
 }else{
-obj[_258]=function(){
+obj[_25c]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -20499,12 +14592,12 @@
 }
 }
 }
-return _25c.run.apply(_25c,args);
+return _260.run.apply(_260,args);
 };
 }
-obj[_258].__preJoinArity=_25e;
+obj[_25c].__preJoinArity=_262;
 }
-return _25c;
+return _260;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -20514,41 +14607,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _264=[];
+var _268=[];
 for(var x=0;x<args.length;x++){
-_264[x]=args[x];
+_268[x]=args[x];
 }
-var _266=function(marr){
+var _26a=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _268=marr[0]||dj_global;
-var _269=marr[1];
-if(!_268[_269]){
-dojo.raise("function \""+_269+"\" does not exist on \""+_268+"\"");
+var _26c=marr[0]||dj_global;
+var _26d=marr[1];
+if(!_26c[_26d]){
+dojo.raise("function \""+_26d+"\" does not exist on \""+_26c+"\"");
 }
-var _26a=marr[2]||dj_global;
-var _26b=marr[3];
+var _26e=marr[2]||dj_global;
+var _26f=marr[3];
 var msg=marr[6];
-var _26d=marr[7];
-if(_26d>-1){
-if(_26d==0){
+var _271=marr[7];
+if(_271>-1){
+if(_271==0){
 return;
 }
 marr[7]--;
 }
-var _26e;
+var _272;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _268[_269].apply(_268,to.args);
+return _26c[_26d].apply(_26c,to.args);
 }};
-to.args=_264;
-var _270=parseInt(marr[4]);
-var _271=((!isNaN(_270))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_268;
+var _274=parseInt(marr[4]);
+var _275=((!isNaN(_274))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _274=false;
+var _278=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -20558,7 +14651,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_266(mcpy);
+_26a(mcpy);
 },tod);
 }
 return;
@@ -20566,49 +14659,49 @@
 marr.last=cur;
 }
 }
-if(_26b){
-_26a[_26b].call(_26a,to);
+if(_26f){
+_26e[_26f].call(_26e,to);
 }else{
-if((_271)&&((dojo.render.html)||(dojo.render.svg))){
+if((_275)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_268[_269].call(_268,to);
+_26c[_26d].call(_26c,to);
 }else{
-_268[_269].apply(_268,args);
+_26c[_26d].apply(_26c,args);
 }
-},_270);
+},_274);
 }else{
 if(msg){
-_268[_269].call(_268,to);
+_26c[_26d].call(_26c,to);
 }else{
-_268[_269].apply(_268,args);
+_26c[_26d].apply(_26c,args);
 }
 }
 }
 };
-var _277=function(){
+var _27b=function(){
 if(this.squelch){
 try{
-return _266.apply(this,arguments);
+return _26a.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _266.apply(this,arguments);
+return _26a.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_277);
+dojo.lang.forEach(this.before.concat(new Array()),_27b);
 }
-var _278;
+var _27c;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_278=mi.proceed();
+_27c=mi.proceed();
 }else{
 if(this.methodfunc){
-_278=this.object[this.methodname].apply(this.object,args);
+_27c=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -20619,9 +14712,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_277);
+dojo.lang.forEach(this.after.concat(new Array()),_27b);
 }
-return (this.methodfunc)?_278:null;
+return (this.methodfunc)?_27c:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -20637,38 +14730,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_27d,_27e,_27f,_280,_281,_282,once,_284,rate,_286,_287){
-var arr=this.getArr(_281);
+},addAdvice:function(_281,_282,_283,_284,_285,_286,once,_288,rate,_28a,_28b){
+var arr=this.getArr(_285);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_27d,_27e,_27f,_280,_284,rate,_286,_287];
+var ao=[_281,_282,_283,_284,_288,rate,_28a,_28b];
 if(once){
-if(this.hasAdvice(_27d,_27e,_281,arr)>=0){
+if(this.hasAdvice(_281,_282,_285,arr)>=0){
 return;
 }
 }
-if(_282=="first"){
+if(_286=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_28a,_28b,_28c,arr){
+},hasAdvice:function(_28e,_28f,_290,arr){
 if(!arr){
-arr=this.getArr(_28c);
+arr=this.getArr(_290);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _28b=="object")?(new String(_28b)).toString():_28b;
+var aao=(typeof _28f=="object")?(new String(_28f)).toString():_28f;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_28a)&&(a1o==aao)){
+if((arr[x][0]==_28e)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_292,_293,_294,once){
-var arr=this.getArr(_294);
-var ind=this.hasAdvice(_292,_293,_294,arr);
+},removeAdvice:function(_296,_297,_298,once){
+var arr=this.getArr(_298);
+var ind=this.hasAdvice(_296,_297,_298,arr);
 if(ind==-1){
 return false;
 }
@@ -20677,73 +14770,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_292,_293,_294,arr);
+ind=this.hasAdvice(_296,_297,_298,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_298){
-if(!this.topics[_298]){
-this.topics[_298]=new this.TopicImpl(_298);
+this.getTopic=function(_29c){
+if(!this.topics[_29c]){
+this.topics[_29c]=new this.TopicImpl(_29c);
 }
-return this.topics[_298];
+return this.topics[_29c];
 };
-this.registerPublisher=function(_299,obj,_29b){
-var _299=this.getTopic(_299);
-_299.registerPublisher(obj,_29b);
+this.registerPublisher=function(_29d,obj,_29f){
+var _29d=this.getTopic(_29d);
+_29d.registerPublisher(obj,_29f);
 };
-this.subscribe=function(_29c,obj,_29e){
-var _29c=this.getTopic(_29c);
-_29c.subscribe(obj,_29e);
+this.subscribe=function(_2a0,obj,_2a2){
+var _2a0=this.getTopic(_2a0);
+_2a0.subscribe(obj,_2a2);
 };
-this.unsubscribe=function(_29f,obj,_2a1){
-var _29f=this.getTopic(_29f);
-_29f.unsubscribe(obj,_2a1);
+this.unsubscribe=function(_2a3,obj,_2a5){
+var _2a3=this.getTopic(_2a3);
+_2a3.unsubscribe(obj,_2a5);
 };
-this.destroy=function(_2a2){
-this.getTopic(_2a2).destroy();
-delete this.topics[_2a2];
+this.destroy=function(_2a6){
+this.getTopic(_2a6).destroy();
+delete this.topics[_2a6];
 };
-this.publishApply=function(_2a3,args){
-var _2a3=this.getTopic(_2a3);
-_2a3.sendMessage.apply(_2a3,args);
+this.publishApply=function(_2a7,args){
+var _2a7=this.getTopic(_2a7);
+_2a7.sendMessage.apply(_2a7,args);
 };
-this.publish=function(_2a5,_2a6){
-var _2a5=this.getTopic(_2a5);
+this.publish=function(_2a9,_2aa){
+var _2a9=this.getTopic(_2a9);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_2a5.sendMessage.apply(_2a5,args);
+_2a9.sendMessage.apply(_2a9,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_2a9){
-this.topicName=_2a9;
-this.subscribe=function(_2aa,_2ab){
-var tf=_2ab||_2aa;
-var to=(!_2ab)?dj_global:_2aa;
+dojo.event.topic.TopicImpl=function(_2ad){
+this.topicName=_2ad;
+this.subscribe=function(_2ae,_2af){
+var tf=_2af||_2ae;
+var to=(!_2af)?dj_global:_2ae;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_2ae,_2af){
-var tf=(!_2af)?_2ae:_2af;
-var to=(!_2af)?null:_2ae;
+this.unsubscribe=function(_2b2,_2b3){
+var tf=(!_2b3)?_2b2:_2b3;
+var to=(!_2b3)?null:_2b2;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_2b2){
-this._getJoinPoint().squelch=_2b2;
+this.setSquelch=function(_2b6){
+this._getJoinPoint().squelch=_2b6;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_2b3,_2b4){
-dojo.event.connect(_2b3,_2b4,this,"sendMessage");
+this.registerPublisher=function(_2b7,_2b8){
+dojo.event.connect(_2b7,_2b8,this,"sendMessage");
 };
-this.sendMessage=function(_2b5){
+this.sendMessage=function(_2b9){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -20766,12 +14859,12 @@
 catch(e){
 }
 }
-this.clobber=function(_2b8){
+this.clobber=function(_2bc){
 var na;
 var tna;
-if(_2b8){
-tna=_2b8.all||_2b8.getElementsByTagName("*");
-na=[_2b8];
+if(_2bc){
+tna=_2bc.all||_2bc.getElementsByTagName("*");
+na=[_2bc];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -20786,7 +14879,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _2bc={};
+var _2c0={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -20837,9 +14930,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _2c1=0;
-this.normalizedEventName=function(_2c2){
-switch(_2c2){
+var _2c5=0;
+this.normalizedEventName=function(_2c6){
+switch(_2c6){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -20848,10 +14941,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _2c2;
+return _2c6;
 break;
 default:
-var lcn=_2c2.toLowerCase();
+var lcn=_2c6.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -20871,88 +14964,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_2c7){
+this.addClobberNodeAttrs=function(node,_2cb){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_2c7.length;x++){
-node.__clobberAttrs__.push(_2c7[x]);
+for(var x=0;x<_2cb.length;x++){
+node.__clobberAttrs__.push(_2cb[x]);
 }
 };
-this.removeListener=function(node,_2ca,fp,_2cc){
-if(!_2cc){
-var _2cc=false;
+this.removeListener=function(node,_2ce,fp,_2d0){
+if(!_2d0){
+var _2d0=false;
 }
-_2ca=dojo.event.browser.normalizedEventName(_2ca);
-if(_2ca=="key"){
+_2ce=dojo.event.browser.normalizedEventName(_2ce);
+if(_2ce=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_2cc);
+this.removeListener(node,"onkeydown",fp,_2d0);
 }
-_2ca="keypress";
+_2ce="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_2ca,fp,_2cc);
+node.removeEventListener(_2ce,fp,_2d0);
 }
 };
-this.addListener=function(node,_2ce,fp,_2d0,_2d1){
+this.addListener=function(node,_2d2,fp,_2d4,_2d5){
 if(!node){
 return;
 }
-if(!_2d0){
-var _2d0=false;
+if(!_2d4){
+var _2d4=false;
 }
-_2ce=dojo.event.browser.normalizedEventName(_2ce);
-if(_2ce=="key"){
+_2d2=dojo.event.browser.normalizedEventName(_2d2);
+if(_2d2=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_2d0,_2d1);
+this.addListener(node,"onkeydown",fp,_2d4,_2d5);
 }
-_2ce="keypress";
+_2d2="keypress";
 }
-if(!_2d1){
-var _2d2=function(evt){
+if(!_2d5){
+var _2d6=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_2d0){
+if(_2d4){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_2d2=fp;
+_2d6=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_2ce,_2d2,_2d0);
-return _2d2;
+node.addEventListener(_2d2,_2d6,_2d4);
+return _2d6;
 }else{
-_2ce="on"+_2ce;
-if(typeof node[_2ce]=="function"){
-var _2d5=node[_2ce];
-node[_2ce]=function(e){
-_2d5(e);
-return _2d2(e);
+_2d2="on"+_2d2;
+if(typeof node[_2d2]=="function"){
+var _2d9=node[_2d2];
+node[_2d2]=function(e){
+_2d9(e);
+return _2d6(e);
 };
 }else{
-node[_2ce]=_2d2;
+node[_2d2]=_2d6;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_2ce]);
+this.addClobberNodeAttrs(node,[_2d2]);
 }
-return _2d2;
+return _2d6;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_2d8,_2d9){
-if(typeof _2d8!="function"){
-dojo.raise("listener not a function: "+_2d8);
+this.callListener=function(_2dc,_2dd){
+if(typeof _2dc!="function"){
+dojo.raise("listener not a function: "+_2dc);
 }
-dojo.event.browser.currentEvent.currentTarget=_2d9;
-return _2d8.call(_2d9,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_2dd;
+return _2dc.call(_2dd,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -20965,7 +15058,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_2dc){
+this.fixEvent=function(evt,_2e0){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -21042,14 +15135,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _2de=evt.keyCode;
-if(_2de>=65&&_2de<=90&&evt.shiftKey==false){
-_2de+=32;
+var _2e2=evt.keyCode;
+if(_2e2>=65&&_2e2<=90&&evt.shiftKey==false){
+_2e2+=32;
 }
-if(_2de>=1&&_2de<=26&&evt.ctrlKey){
-_2de+=96;
+if(_2e2>=1&&_2e2<=26&&evt.ctrlKey){
+_2e2+=96;
 }
-evt.key=String.fromCharCode(_2de);
+evt.key=String.fromCharCode(_2e2);
 }
 }
 }else{
@@ -21075,11 +15168,11 @@
 evt.key=evt.which;
 break;
 default:
-var _2de=evt.which;
+var _2e2=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_2de+=32;
+_2e2+=32;
 }
-evt.key=String.fromCharCode(_2de);
+evt.key=String.fromCharCode(_2e2);
 }
 }
 }
@@ -21184,7 +15277,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_2dc?_2dc:evt.srcElement);
+evt.currentTarget=(_2e0?_2e0:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -21193,12 +15286,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _2e0=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _2e4=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_2e0.scrollLeft||0);
+evt.pageX=evt.clientX+(_2e4.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_2e0.scrollTop||0);
+evt.pageY=evt.clientY+(_2e4.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -21230,35 +15323,35 @@
 this.widgets=[];
 this.widgetIds=[];
 this.topWidgets={};
-var _2e2={};
-var _2e3=[];
-this.getUniqueId=function(_2e4){
-var _2e5;
+var _2e6={};
+var _2e7=[];
+this.getUniqueId=function(_2e8){
+var _2e9;
 do{
-_2e5=_2e4+"_"+(_2e2[_2e4]!=undefined?++_2e2[_2e4]:_2e2[_2e4]=0);
-}while(this.getWidgetById(_2e5));
-return _2e5;
+_2e9=_2e8+"_"+(_2e6[_2e8]!=undefined?++_2e6[_2e8]:_2e6[_2e8]=0);
+}while(this.getWidgetById(_2e9));
+return _2e9;
 };
-this.add=function(_2e6){
-this.widgets.push(_2e6);
-if(!_2e6.extraArgs["id"]){
-_2e6.extraArgs["id"]=_2e6.extraArgs["ID"];
+this.add=function(_2ea){
+this.widgets.push(_2ea);
+if(!_2ea.extraArgs["id"]){
+_2ea.extraArgs["id"]=_2ea.extraArgs["ID"];
 }
-if(_2e6.widgetId==""){
-if(_2e6["id"]){
-_2e6.widgetId=_2e6["id"];
+if(_2ea.widgetId==""){
+if(_2ea["id"]){
+_2ea.widgetId=_2ea["id"];
 }else{
-if(_2e6.extraArgs["id"]){
-_2e6.widgetId=_2e6.extraArgs["id"];
+if(_2ea.extraArgs["id"]){
+_2ea.widgetId=_2ea.extraArgs["id"];
 }else{
-_2e6.widgetId=this.getUniqueId(_2e6.ns+"_"+_2e6.widgetType);
+_2ea.widgetId=this.getUniqueId(_2ea.ns+"_"+_2ea.widgetType);
 }
 }
 }
-if(this.widgetIds[_2e6.widgetId]){
-dojo.debug("widget ID collision on ID: "+_2e6.widgetId);
+if(this.widgetIds[_2ea.widgetId]){
+dojo.debug("widget ID collision on ID: "+_2ea.widgetId);
 }
-this.widgetIds[_2e6.widgetId]=_2e6;
+this.widgetIds[_2ea.widgetId]=_2ea;
 };
 this.destroyAll=function(){
 for(var x=this.widgets.length-1;x>=0;x--){
@@ -21270,14 +15363,14 @@
 }
 }
 };
-this.remove=function(_2e8){
-if(dojo.lang.isNumber(_2e8)){
-var tw=this.widgets[_2e8].widgetId;
+this.remove=function(_2ec){
+if(dojo.lang.isNumber(_2ec)){
+var tw=this.widgets[_2ec].widgetId;
 delete this.topWidgets[tw];
 delete this.widgetIds[tw];
-this.widgets.splice(_2e8,1);
+this.widgets.splice(_2ec,1);
 }else{
-this.removeById(_2e8);
+this.removeById(_2ec);
 }
 };
 this.removeById=function(id){
@@ -21303,31 +15396,31 @@
 };
 this.getWidgetsByType=function(type){
 var lt=type.toLowerCase();
-var _2ef=(type.indexOf(":")<0?function(x){
+var _2f3=(type.indexOf(":")<0?function(x){
 return x.widgetType.toLowerCase();
 }:function(x){
 return x.getNamespacedType();
 });
 var ret=[];
 dojo.lang.forEach(this.widgets,function(x){
-if(_2ef(x)==lt){
+if(_2f3(x)==lt){
 ret.push(x);
 }
 });
 return ret;
 };
-this.getWidgetsByFilter=function(_2f4,_2f5){
+this.getWidgetsByFilter=function(_2f8,_2f9){
 var ret=[];
 dojo.lang.every(this.widgets,function(x){
-if(_2f4(x)){
+if(_2f8(x)){
 ret.push(x);
-if(_2f5){
+if(_2f9){
 return false;
 }
 }
 return true;
 });
-return (_2f5?ret[0]:ret);
+return (_2f9?ret[0]:ret);
 };
 this.getAllWidgets=function(){
 return this.widgets.concat();
@@ -21346,99 +15439,99 @@
 this.byType=this.getWidgetsByType;
 this.byFilter=this.getWidgetsByFilter;
 this.byNode=this.getWidgetByNode;
-var _2fb={};
-var _2fc=["dojo.widget"];
-for(var i=0;i<_2fc.length;i++){
-_2fc[_2fc[i]]=true;
+var _2ff={};
+var _300=["dojo.widget"];
+for(var i=0;i<_300.length;i++){
+_300[_300[i]]=true;
 }
-this.registerWidgetPackage=function(_2fe){
-if(!_2fc[_2fe]){
-_2fc[_2fe]=true;
-_2fc.push(_2fe);
+this.registerWidgetPackage=function(_302){
+if(!_300[_302]){
+_300[_302]=true;
+_300.push(_302);
 }
 };
 this.getWidgetPackageList=function(){
-return dojo.lang.map(_2fc,function(elt){
+return dojo.lang.map(_300,function(elt){
 return (elt!==true?elt:undefined);
 });
 };
-this.getImplementation=function(_300,_301,_302,ns){
-var impl=this.getImplementationName(_300,ns);
+this.getImplementation=function(_304,_305,_306,ns){
+var impl=this.getImplementationName(_304,ns);
 if(impl){
-var ret=_301?new impl(_301):new impl();
+var ret=_305?new impl(_305):new impl();
 return ret;
 }
 };
 function buildPrefixCache(){
-for(var _306 in dojo.render){
-if(dojo.render[_306]["capable"]===true){
-var _307=dojo.render[_306].prefixes;
-for(var i=0;i<_307.length;i++){
-_2e3.push(_307[i].toLowerCase());
+for(var _30a in dojo.render){
+if(dojo.render[_30a]["capable"]===true){
+var _30b=dojo.render[_30a].prefixes;
+for(var i=0;i<_30b.length;i++){
+_2e7.push(_30b[i].toLowerCase());
 }
 }
 }
 }
-var _309=function(_30a,_30b){
-if(!_30b){
+var _30d=function(_30e,_30f){
+if(!_30f){
 return null;
 }
-for(var i=0,l=_2e3.length,_30e;i<=l;i++){
-_30e=(i<l?_30b[_2e3[i]]:_30b);
-if(!_30e){
+for(var i=0,l=_2e7.length,_312;i<=l;i++){
+_312=(i<l?_30f[_2e7[i]]:_30f);
+if(!_312){
 continue;
 }
-for(var name in _30e){
-if(name.toLowerCase()==_30a){
-return _30e[name];
+for(var name in _312){
+if(name.toLowerCase()==_30e){
+return _312[name];
 }
 }
 }
 return null;
 };
-var _310=function(_311,_312){
-var _313=dojo.evalObjPath(_312,false);
-return (_313?_309(_311,_313):null);
+var _314=function(_315,_316){
+var _317=dojo.evalObjPath(_316,false);
+return (_317?_30d(_315,_317):null);
 };
-this.getImplementationName=function(_314,ns){
-var _316=_314.toLowerCase();
+this.getImplementationName=function(_318,ns){
+var _31a=_318.toLowerCase();
 ns=ns||"dojo";
-var imps=_2fb[ns]||(_2fb[ns]={});
-var impl=imps[_316];
+var imps=_2ff[ns]||(_2ff[ns]={});
+var impl=imps[_31a];
 if(impl){
 return impl;
 }
-if(!_2e3.length){
+if(!_2e7.length){
 buildPrefixCache();
 }
-var _319=dojo.ns.get(ns);
-if(!_319){
+var _31d=dojo.ns.get(ns);
+if(!_31d){
 dojo.ns.register(ns,ns+".widget");
-_319=dojo.ns.get(ns);
+_31d=dojo.ns.get(ns);
 }
-if(_319){
-_319.resolve(_314);
+if(_31d){
+_31d.resolve(_318);
 }
-impl=_310(_316,_319.module);
+impl=_314(_31a,_31d.module);
 if(impl){
-return (imps[_316]=impl);
+return (imps[_31a]=impl);
 }
-_319=dojo.ns.require(ns);
-if((_319)&&(_319.resolver)){
-_319.resolve(_314);
-impl=_310(_316,_319.module);
+_31d=dojo.ns.require(ns);
+if((_31d)&&(_31d.resolver)){
+_31d.resolve(_318);
+impl=_314(_31a,_31d.module);
 if(impl){
-return (imps[_316]=impl);
+return (imps[_31a]=impl);
 }
 }
-dojo.deprecated("dojo.widget.Manager.getImplementationName","Could not locate widget implementation for \""+_314+"\" in \""+_319.module+"\" registered to namespace \""+_319.name+"\". "+"Developers must specify correct namespaces for all non-Dojo widgets","0.5");
-for(var i=0;i<_2fc.length;i++){
-impl=_310(_316,_2fc[i]);
+dojo.deprecated("dojo.widget.Manager.getImplementationName","Could not locate widget implementation for \""+_318+"\" in \""+_31d.module+"\" registered to namespace \""+_31d.name+"\". "+"Developers must specify correct namespaces for all non-Dojo widgets","0.5");
+for(var i=0;i<_300.length;i++){
+impl=_314(_31a,_300[i]);
 if(impl){
-return (imps[_316]=impl);
+return (imps[_31a]=impl);
 }
 }
-throw new Error("Could not locate widget implementation for \""+_314+"\" in \""+_319.module+"\" registered to namespace \""+_319.name+"\"");
+throw new Error("Could not locate widget implementation for \""+_318+"\" in \""+_31d.module+"\" registered to namespace \""+_31d.name+"\"");
 };
 this.resizing=false;
 this.onWindowResized=function(){
@@ -21448,9 +15541,9 @@
 try{
 this.resizing=true;
 for(var id in this.topWidgets){
-var _31c=this.topWidgets[id];
-if(_31c.checkSize){
-_31c.checkSize();
+var _320=this.topWidgets[id];
+if(_320.checkSize){
+_320.checkSize();
 }
 }
 }
@@ -21469,8 +15562,8 @@
 var dw=dojo.widget;
 var dwm=dw.manager;
 var h=dojo.lang.curry(dojo.lang,"hitch",dwm);
-var g=function(_321,_322){
-dw[(_322||_321)]=h(_321);
+var g=function(_325,_326){
+dw[(_326||_325)]=h(_325);
 };
 g("add","addWidget");
 g("destroyAll","destroyAllWidgets");
@@ -21484,11 +15577,11 @@
 g("getWidgetsByFilter","byFilter");
 g("getWidgetByNode","byNode");
 dw.all=function(n){
-var _324=dwm.getAllWidgets.apply(dwm,arguments);
+var _328=dwm.getAllWidgets.apply(dwm,arguments);
 if(arguments.length>0){
-return _324[n];
+return _328[n];
 }
-return _324;
+return _328;
 };
 g("registerWidgetPackage");
 g("getImplementation","getWidgetImplementation");
@@ -21502,17 +15595,17 @@
 this.dojoUri=function(uri){
 return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
 };
-this.moduleUri=function(_326,uri){
-var loc=dojo.hostenv.getModuleSymbols(_326).join("/");
+this.moduleUri=function(_32a,uri){
+var loc=dojo.hostenv.getModuleSymbols(_32a).join("/");
 if(!loc){
 return null;
 }
 if(loc.lastIndexOf("/")!=loc.length-1){
 loc+="/";
 }
-var _329=loc.indexOf(":");
-var _32a=loc.indexOf("/");
-if(loc.charAt(0)!="/"&&(_329==-1||_329>_32a)){
+var _32d=loc.indexOf(":");
+var _32e=loc.indexOf("/");
+if(loc.charAt(0)!="/"&&(_32d==-1||_32d>_32e)){
 loc=dojo.hostenv.getBaseScriptUri()+loc;
 }
 return new dojo.uri.Uri(loc,uri);
@@ -21523,20 +15616,20 @@
 if(!arguments[i]){
 continue;
 }
-var _32d=new dojo.uri.Uri(arguments[i].toString());
-var _32e=new dojo.uri.Uri(uri.toString());
-if((_32d.path=="")&&(_32d.scheme==null)&&(_32d.authority==null)&&(_32d.query==null)){
-if(_32d.fragment!=null){
-_32e.fragment=_32d.fragment;
+var _331=new dojo.uri.Uri(arguments[i].toString());
+var _332=new dojo.uri.Uri(uri.toString());
+if((_331.path=="")&&(_331.scheme==null)&&(_331.authority==null)&&(_331.query==null)){
+if(_331.fragment!=null){
+_332.fragment=_331.fragment;
 }
-_32d=_32e;
+_331=_332;
 }else{
-if(_32d.scheme==null){
-_32d.scheme=_32e.scheme;
-if(_32d.authority==null){
-_32d.authority=_32e.authority;
-if(_32d.path.charAt(0)!="/"){
-var path=_32e.path.substring(0,_32e.path.lastIndexOf("/")+1)+_32d.path;
+if(_331.scheme==null){
+_331.scheme=_332.scheme;
+if(_331.authority==null){
+_331.authority=_332.authority;
+if(_331.path.charAt(0)!="/"){
+var path=_332.path.substring(0,_332.path.lastIndexOf("/")+1)+_331.path;
 var segs=path.split("/");
 for(var j=0;j<segs.length;j++){
 if(segs[j]=="."){
@@ -21558,37 +15651,37 @@
 }
 }
 }
-_32d.path=segs.join("/");
+_331.path=segs.join("/");
 }
 }
 }
 }
 uri="";
-if(_32d.scheme!=null){
-uri+=_32d.scheme+":";
+if(_331.scheme!=null){
+uri+=_331.scheme+":";
 }
-if(_32d.authority!=null){
-uri+="//"+_32d.authority;
+if(_331.authority!=null){
+uri+="//"+_331.authority;
 }
-uri+=_32d.path;
-if(_32d.query!=null){
-uri+="?"+_32d.query;
+uri+=_331.path;
+if(_331.query!=null){
+uri+="?"+_331.query;
 }
-if(_32d.fragment!=null){
-uri+="#"+_32d.fragment;
+if(_331.fragment!=null){
+uri+="#"+_331.fragment;
 }
 }
 this.uri=uri.toString();
-var _332="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
-var r=this.uri.match(new RegExp(_332));
+var _336="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+var r=this.uri.match(new RegExp(_336));
 this.scheme=r[2]||(r[1]?"":null);
 this.authority=r[4]||(r[3]?"":null);
 this.path=r[5];
 this.query=r[7]||(r[6]?"":null);
 this.fragment=r[9]||(r[8]?"":null);
 if(this.authority!=null){
-_332="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
-r=this.authority.match(new RegExp(_332));
+_336="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
+r=this.authority.match(new RegExp(_336));
 this.user=r[3]||null;
 this.password=r[4]||null;
 this.host=r[5];
@@ -21618,24 +15711,24 @@
 return t;
 };
 dojo.html.getViewport=function(){
-var _336=dojo.global();
-var _337=dojo.doc();
+var _33a=dojo.global();
+var _33b=dojo.doc();
 var w=0;
 var h=0;
 if(dojo.render.html.mozilla){
-w=_337.documentElement.clientWidth;
-h=_336.innerHeight;
+w=_33b.documentElement.clientWidth;
+h=_33a.innerHeight;
 }else{
-if(!dojo.render.html.opera&&_336.innerWidth){
-w=_336.innerWidth;
-h=_336.innerHeight;
+if(!dojo.render.html.opera&&_33a.innerWidth){
+w=_33a.innerWidth;
+h=_33a.innerHeight;
 }else{
-if(!dojo.render.html.opera&&dojo.exists(_337,"documentElement.clientWidth")){
-var w2=_337.documentElement.clientWidth;
+if(!dojo.render.html.opera&&dojo.exists(_33b,"documentElement.clientWidth")){
+var w2=_33b.documentElement.clientWidth;
 if(!w||w2&&w2<w){
 w=w2;
 }
-h=_337.documentElement.clientHeight;
+h=_33b.documentElement.clientHeight;
 }else{
 if(dojo.body().clientWidth){
 w=dojo.body().clientWidth;
@@ -21647,23 +15740,23 @@
 return {width:w,height:h};
 };
 dojo.html.getScroll=function(){
-var _33b=dojo.global();
-var _33c=dojo.doc();
-var top=_33b.pageYOffset||_33c.documentElement.scrollTop||dojo.body().scrollTop||0;
-var left=_33b.pageXOffset||_33c.documentElement.scrollLeft||dojo.body().scrollLeft||0;
+var _33f=dojo.global();
+var _340=dojo.doc();
+var top=_33f.pageYOffset||_340.documentElement.scrollTop||dojo.body().scrollTop||0;
+var left=_33f.pageXOffset||_340.documentElement.scrollLeft||dojo.body().scrollLeft||0;
 return {top:top,left:left,offset:{x:left,y:top}};
 };
 dojo.html.getParentByType=function(node,type){
-var _341=dojo.doc();
-var _342=dojo.byId(node);
+var _345=dojo.doc();
+var _346=dojo.byId(node);
 type=type.toLowerCase();
-while((_342)&&(_342.nodeName.toLowerCase()!=type)){
-if(_342==(_341["body"]||_341["documentElement"])){
+while((_346)&&(_346.nodeName.toLowerCase()!=type)){
+if(_346==(_345["body"]||_345["documentElement"])){
 return null;
 }
-_342=_342.parentNode;
+_346=_346.parentNode;
 }
-return _342;
+return _346;
 };
 dojo.html.getAttribute=function(node,attr){
 node=dojo.byId(node);
@@ -21696,17 +15789,17 @@
 };
 dojo.html.getCursorPosition=function(e){
 e=e||dojo.global().event;
-var _34a={x:0,y:0};
+var _34e={x:0,y:0};
 if(e.pageX||e.pageY){
-_34a.x=e.pageX;
-_34a.y=e.pageY;
+_34e.x=e.pageX;
+_34e.y=e.pageY;
 }else{
 var de=dojo.doc().documentElement;
 var db=dojo.body();
-_34a.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
-_34a.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
+_34e.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
+_34e.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
 }
-return _34a;
+return _34e;
 };
 dojo.html.isTag=function(node){
 node=dojo.byId(node);
@@ -21722,9 +15815,9 @@
 if(dojo.render.html.ie&&!dojo.render.html.ie70){
 if(window.location.href.substr(0,6).toLowerCase()!="https:"){
 (function(){
-var _34f=dojo.doc().createElement("script");
-_34f.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
-dojo.doc().getElementsByTagName("head")[0].appendChild(_34f);
+var _353=dojo.doc().createElement("script");
+_353.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
+dojo.doc().getElementsByTagName("head")[0].appendChild(_353);
 })();
 }
 }else{
@@ -21732,20 +15825,20 @@
 return doc.createElement(tag);
 };
 }
-dojo.html._callDeprecated=function(_352,_353,args,_355,_356){
-dojo.deprecated("dojo.html."+_352,"replaced by dojo.html."+_353+"("+(_355?"node, {"+_355+": "+_355+"}":"")+")"+(_356?"."+_356:""),"0.5");
-var _357=[];
-if(_355){
-var _358={};
-_358[_355]=args[1];
-_357.push(args[0]);
-_357.push(_358);
+dojo.html._callDeprecated=function(_356,_357,args,_359,_35a){
+dojo.deprecated("dojo.html."+_356,"replaced by dojo.html."+_357+"("+(_359?"node, {"+_359+": "+_359+"}":"")+")"+(_35a?"."+_35a:""),"0.5");
+var _35b=[];
+if(_359){
+var _35c={};
+_35c[_359]=args[1];
+_35b.push(args[0]);
+_35b.push(_35c);
 }else{
-_357=args;
+_35b=args;
 }
-var ret=dojo.html[_353].apply(dojo.html,args);
-if(_356){
-return ret[_356];
+var ret=dojo.html[_357].apply(dojo.html,args);
+if(_35a){
+return ret[_35a];
 }else{
 return ret;
 }
@@ -21783,22 +15876,22 @@
 var div=document.createElement("div");
 div.style.backgroundImage="url(\""+this.imgPath+"/tab_close.gif\")";
 dojo.body().appendChild(div);
-var _35b=null;
+var _35f=null;
 if(window.getComputedStyle){
-var _35c=getComputedStyle(div,"");
-_35b=_35c.getPropertyValue("background-image");
+var _360=getComputedStyle(div,"");
+_35f=_360.getPropertyValue("background-image");
 }else{
-_35b=div.currentStyle.backgroundImage;
+_35f=div.currentStyle.backgroundImage;
 }
-var _35d=false;
-if(_35b!=null&&(_35b=="none"||_35b=="url(invalid-url:)")){
+var _361=false;
+if(_35f!=null&&(_35f=="none"||_35f=="url(invalid-url:)")){
 this.accessible=true;
 }
 dojo.body().removeChild(div);
 }
 return this.accessible;
-},setCheckAccessible:function(_35e){
-this.doAccessibleCheck=_35e;
+},setCheckAccessible:function(_362){
+this.doAccessibleCheck=_362;
 },setAccessibleMode:function(){
 if(this.accessible===null){
 if(this.checkAccessible()){
@@ -21825,52 +15918,52 @@
 this.notifyChildrenOfResize();
 },notifyChildrenOfResize:function(){
 for(var i=0;i<this.children.length;i++){
-var _360=this.children[i];
-if(_360.onResized){
-_360.onResized();
+var _364=this.children[i];
+if(_364.onResized){
+_364.onResized();
 }
 }
-},create:function(args,_362,_363,ns){
+},create:function(args,_366,_367,ns){
 if(ns){
 this.ns=ns;
 }
-this.satisfyPropertySets(args,_362,_363);
-this.mixInProperties(args,_362,_363);
-this.postMixInProperties(args,_362,_363);
+this.satisfyPropertySets(args,_366,_367);
+this.mixInProperties(args,_366,_367);
+this.postMixInProperties(args,_366,_367);
 dojo.widget.manager.add(this);
-this.buildRendering(args,_362,_363);
-this.initialize(args,_362,_363);
-this.postInitialize(args,_362,_363);
-this.postCreate(args,_362,_363);
+this.buildRendering(args,_366,_367);
+this.initialize(args,_366,_367);
+this.postInitialize(args,_366,_367);
+this.postCreate(args,_366,_367);
 return this;
-},destroy:function(_365){
+},destroy:function(_369){
 if(this.parent){
 this.parent.removeChild(this);
 }
 this.destroyChildren();
 this.uninitialize();
-this.destroyRendering(_365);
+this.destroyRendering(_369);
 dojo.widget.manager.removeById(this.widgetId);
 },destroyChildren:function(){
-var _366;
+var _36a;
 var i=0;
 while(this.children.length>i){
-_366=this.children[i];
-if(_366 instanceof dojo.widget.Widget){
-this.removeChild(_366);
-_366.destroy();
+_36a=this.children[i];
+if(_36a instanceof dojo.widget.Widget){
+this.removeChild(_36a);
+_36a.destroy();
 continue;
 }
 i++;
 }
-},getChildrenOfType:function(type,_369){
+},getChildrenOfType:function(type,_36d){
 var ret=[];
-var _36b=dojo.lang.isFunction(type);
-if(!_36b){
+var _36f=dojo.lang.isFunction(type);
+if(!_36f){
 type=type.toLowerCase();
 }
 for(var x=0;x<this.children.length;x++){
-if(_36b){
+if(_36f){
 if(this.children[x] instanceof type){
 ret.push(this.children[x]);
 }
@@ -21879,24 +15972,24 @@
 ret.push(this.children[x]);
 }
 }
-if(_369){
-ret=ret.concat(this.children[x].getChildrenOfType(type,_369));
+if(_36d){
+ret=ret.concat(this.children[x].getChildrenOfType(type,_36d));
 }
 }
 return ret;
 },getDescendants:function(){
-var _36d=[];
-var _36e=[this];
+var _371=[];
+var _372=[this];
 var elem;
-while((elem=_36e.pop())){
-_36d.push(elem);
+while((elem=_372.pop())){
+_371.push(elem);
 if(elem.children){
 dojo.lang.forEach(elem.children,function(elem){
-_36e.push(elem);
+_372.push(elem);
 });
 }
 }
-return _36d;
+return _371;
 },isFirstChild:function(){
 return this===this.parent.children[0];
 },isLastChild:function(){
@@ -21910,29 +16003,29 @@
 }
 return;
 }
-var _375;
-var _376=dojo.widget.lcArgsCache[this.widgetType];
-if(_376==null){
-_376={};
+var _379;
+var _37a=dojo.widget.lcArgsCache[this.widgetType];
+if(_37a==null){
+_37a={};
 for(var y in this){
-_376[((new String(y)).toLowerCase())]=y;
+_37a[((new String(y)).toLowerCase())]=y;
 }
-dojo.widget.lcArgsCache[this.widgetType]=_376;
+dojo.widget.lcArgsCache[this.widgetType]=_37a;
 }
-var _378={};
+var _37c={};
 for(var x in args){
 if(!this[x]){
-var y=_376[(new String(x)).toLowerCase()];
+var y=_37a[(new String(x)).toLowerCase()];
 if(y){
 args[y]=args[x];
 x=y;
 }
 }
-if(_378[x]){
+if(_37c[x]){
 continue;
 }
-_378[x]=true;
-if((typeof this[x])!=(typeof _375)){
+_37c[x]=true;
+if((typeof this[x])!=(typeof _379)){
 if(typeof args[x]!="string"){
 this[x]=args[x];
 }else{
@@ -21963,11 +16056,11 @@
 if(this[x] instanceof dojo.uri.Uri){
 this[x]=dojo.uri.dojoUri(args[x]);
 }else{
-var _37a=args[x].split(";");
-for(var y=0;y<_37a.length;y++){
-var si=_37a[y].indexOf(":");
-if((si!=-1)&&(_37a[y].length>si)){
-this[x][_37a[y].substr(0,si).replace(/^\s+|\s+$/g,"")]=_37a[y].substr(si+1);
+var _37e=args[x].split(";");
+for(var y=0;y<_37e.length;y++){
+var si=_37e[y].indexOf(":");
+if((si!=-1)&&(_37e[y].length>si)){
+this[x][_37e[y].substr(0,si).replace(/^\s+|\s+$/g,"")]=_37e[y].substr(si+1);
 }
 }
 }
@@ -21985,34 +16078,34 @@
 this.extraArgs[x.toLowerCase()]=args[x];
 }
 }
-},postMixInProperties:function(args,frag,_37e){
-},initialize:function(args,frag,_381){
+},postMixInProperties:function(args,frag,_382){
+},initialize:function(args,frag,_385){
 return false;
-},postInitialize:function(args,frag,_384){
+},postInitialize:function(args,frag,_388){
 return false;
-},postCreate:function(args,frag,_387){
+},postCreate:function(args,frag,_38b){
 return false;
 },uninitialize:function(){
 return false;
-},buildRendering:function(args,frag,_38a){
+},buildRendering:function(args,frag,_38e){
 dojo.unimplemented("dojo.widget.Widget.buildRendering, on "+this.toString()+", ");
 return false;
 },destroyRendering:function(){
 dojo.unimplemented("dojo.widget.Widget.destroyRendering");
 return false;
-},addedTo:function(_38b){
-},addChild:function(_38c){
+},addedTo:function(_38f){
+},addChild:function(_390){
 dojo.unimplemented("dojo.widget.Widget.addChild");
 return false;
-},removeChild:function(_38d){
+},removeChild:function(_391){
 for(var x=0;x<this.children.length;x++){
-if(this.children[x]===_38d){
+if(this.children[x]===_391){
 this.children.splice(x,1);
-_38d.parent=null;
+_391.parent=null;
 break;
 }
 }
-return _38d;
+return _391;
 },getPreviousSibling:function(){
 var idx=this.getParentIndex();
 if(idx<=0){
@@ -22038,30 +16131,30 @@
 dojo.widget.tags.addParseTreeHandler=function(type){
 dojo.deprecated("addParseTreeHandler",". ParseTreeHandlers are now reserved for components. Any unfiltered DojoML tag without a ParseTreeHandler is assumed to be a widget","0.5");
 };
-dojo.widget.tags["dojo:propertyset"]=function(_392,_393,_394){
-var _395=_393.parseProperties(_392["dojo:propertyset"]);
+dojo.widget.tags["dojo:propertyset"]=function(_396,_397,_398){
+var _399=_397.parseProperties(_396["dojo:propertyset"]);
 };
-dojo.widget.tags["dojo:connect"]=function(_396,_397,_398){
-var _399=_397.parseProperties(_396["dojo:connect"]);
+dojo.widget.tags["dojo:connect"]=function(_39a,_39b,_39c){
+var _39d=_39b.parseProperties(_39a["dojo:connect"]);
 };
-dojo.widget.buildWidgetFromParseTree=function(type,frag,_39c,_39d,_39e,_39f){
+dojo.widget.buildWidgetFromParseTree=function(type,frag,_3a0,_3a1,_3a2,_3a3){
 dojo.a11y.setAccessibleMode();
-var _3a0=type.split(":");
-_3a0=(_3a0.length==2)?_3a0[1]:type;
-var _3a1=_39f||_39c.parseProperties(frag[frag["ns"]+":"+_3a0]);
-var _3a2=dojo.widget.manager.getImplementation(_3a0,null,null,frag["ns"]);
-if(!_3a2){
+var _3a4=type.split(":");
+_3a4=(_3a4.length==2)?_3a4[1]:type;
+var _3a5=_3a3||_3a0.parseProperties(frag[frag["ns"]+":"+_3a4]);
+var _3a6=dojo.widget.manager.getImplementation(_3a4,null,null,frag["ns"]);
+if(!_3a6){
 throw new Error("cannot find \""+type+"\" widget");
 }else{
-if(!_3a2.create){
+if(!_3a6.create){
 throw new Error("\""+type+"\" widget object has no \"create\" method and does not appear to implement *Widget");
 }
 }
-_3a1["dojoinsertionindex"]=_39e;
-var ret=_3a2.create(_3a1,frag,_39d,frag["ns"]);
+_3a5["dojoinsertionindex"]=_3a2;
+var ret=_3a6.create(_3a5,frag,_3a1,frag["ns"]);
 return ret;
 };
-dojo.widget.defineWidget=function(_3a4,_3a5,_3a6,init,_3a8){
+dojo.widget.defineWidget=function(_3a8,_3a9,_3aa,init,_3ac){
 if(dojo.lang.isString(arguments[3])){
 dojo.widget._defineWidget(arguments[0],arguments[3],arguments[1],arguments[4],arguments[2]);
 }else{
@@ -22081,50 +16174,50 @@
 }
 };
 dojo.widget.defineWidget.renderers="html|svg|vml";
-dojo.widget._defineWidget=function(_3ab,_3ac,_3ad,init,_3af){
-var _3b0=_3ab.split(".");
-var type=_3b0.pop();
-var regx="\\.("+(_3ac?_3ac+"|":"")+dojo.widget.defineWidget.renderers+")\\.";
-var r=_3ab.search(new RegExp(regx));
-_3b0=(r<0?_3b0.join("."):_3ab.substr(0,r));
-dojo.widget.manager.registerWidgetPackage(_3b0);
-var pos=_3b0.indexOf(".");
-var _3b5=(pos>-1)?_3b0.substring(0,pos):_3b0;
-_3af=(_3af)||{};
-_3af.widgetType=type;
-if((!init)&&(_3af["classConstructor"])){
-init=_3af.classConstructor;
-delete _3af.classConstructor;
+dojo.widget._defineWidget=function(_3af,_3b0,_3b1,init,_3b3){
+var _3b4=_3af.split(".");
+var type=_3b4.pop();
+var regx="\\.("+(_3b0?_3b0+"|":"")+dojo.widget.defineWidget.renderers+")\\.";
+var r=_3af.search(new RegExp(regx));
+_3b4=(r<0?_3b4.join("."):_3af.substr(0,r));
+dojo.widget.manager.registerWidgetPackage(_3b4);
+var pos=_3b4.indexOf(".");
+var _3b9=(pos>-1)?_3b4.substring(0,pos):_3b4;
+_3b3=(_3b3)||{};
+_3b3.widgetType=type;
+if((!init)&&(_3b3["classConstructor"])){
+init=_3b3.classConstructor;
+delete _3b3.classConstructor;
 }
-dojo.declare(_3ab,_3ad,init,_3af);
+dojo.declare(_3af,_3b1,init,_3b3);
 };
 dojo.provide("dojo.widget.Parse");
-dojo.widget.Parse=function(_3b6){
+dojo.widget.Parse=function(_3ba){
 this.propertySetsList=[];
-this.fragment=_3b6;
-this.createComponents=function(frag,_3b8){
-var _3b9=[];
-var _3ba=false;
+this.fragment=_3ba;
+this.createComponents=function(frag,_3bc){
+var _3bd=[];
+var _3be=false;
 try{
 if(frag&&frag.tagName&&(frag!=frag.nodeRef)){
-var _3bb=dojo.widget.tags;
+var _3bf=dojo.widget.tags;
 var tna=String(frag.tagName).split(";");
 for(var x=0;x<tna.length;x++){
 var ltn=tna[x].replace(/^\s+|\s+$/g,"").toLowerCase();
 frag.tagName=ltn;
 var ret;
-if(_3bb[ltn]){
-_3ba=true;
-ret=_3bb[ltn](frag,this,_3b8,frag.index);
-_3b9.push(ret);
+if(_3bf[ltn]){
+_3be=true;
+ret=_3bf[ltn](frag,this,_3bc,frag.index);
+_3bd.push(ret);
 }else{
 if(ltn.indexOf(":")==-1){
 ltn="dojo:"+ltn;
 }
-ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,_3b8,frag.index);
+ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,_3bc,frag.index);
 if(ret){
-_3ba=true;
-_3b9.push(ret);
+_3be=true;
+_3bd.push(ret);
 }
 }
 }
@@ -22133,43 +16226,43 @@
 catch(e){
 dojo.debug("dojo.widget.Parse: error:",e);
 }
-if(!_3ba){
-_3b9=_3b9.concat(this.createSubComponents(frag,_3b8));
+if(!_3be){
+_3bd=_3bd.concat(this.createSubComponents(frag,_3bc));
 }
-return _3b9;
+return _3bd;
 };
-this.createSubComponents=function(_3c0,_3c1){
-var frag,_3c3=[];
-for(var item in _3c0){
-frag=_3c0[item];
-if(frag&&typeof frag=="object"&&(frag!=_3c0.nodeRef)&&(frag!=_3c0.tagName)&&(!dojo.dom.isNode(frag))){
-_3c3=_3c3.concat(this.createComponents(frag,_3c1));
+this.createSubComponents=function(_3c4,_3c5){
+var frag,_3c7=[];
+for(var item in _3c4){
+frag=_3c4[item];
+if(frag&&typeof frag=="object"&&(frag!=_3c4.nodeRef)&&(frag!=_3c4.tagName)&&(!dojo.dom.isNode(frag))){
+_3c7=_3c7.concat(this.createComponents(frag,_3c5));
 }
 }
-return _3c3;
+return _3c7;
 };
-this.parsePropertySets=function(_3c5){
+this.parsePropertySets=function(_3c9){
 return [];
 };
-this.parseProperties=function(_3c6){
-var _3c7={};
-for(var item in _3c6){
-if((_3c6[item]==_3c6.tagName)||(_3c6[item]==_3c6.nodeRef)){
+this.parseProperties=function(_3ca){
+var _3cb={};
+for(var item in _3ca){
+if((_3ca[item]==_3ca.tagName)||(_3ca[item]==_3ca.nodeRef)){
 }else{
-var frag=_3c6[item];
+var frag=_3ca[item];
 if(frag.tagName&&dojo.widget.tags[frag.tagName.toLowerCase()]){
 }else{
 if(frag[0]&&frag[0].value!=""&&frag[0].value!=null){
 try{
 if(item.toLowerCase()=="dataprovider"){
-var _3ca=this;
-this.getDataProvider(_3ca,frag[0].value);
-_3c7.dataProvider=this.dataProvider;
+var _3ce=this;
+this.getDataProvider(_3ce,frag[0].value);
+_3cb.dataProvider=this.dataProvider;
 }
-_3c7[item]=frag[0].value;
-var _3cb=this.parseProperties(frag);
-for(var _3cc in _3cb){
-_3c7[_3cc]=_3cb[_3cc];
+_3cb[item]=frag[0].value;
+var _3cf=this.parseProperties(frag);
+for(var _3d0 in _3cf){
+_3cb[_3d0]=_3cf[_3d0];
 }
 }
 catch(e){
@@ -22180,67 +16273,67 @@
 switch(item.toLowerCase()){
 case "checked":
 case "disabled":
-if(typeof _3c7[item]!="boolean"){
-_3c7[item]=true;
+if(typeof _3cb[item]!="boolean"){
+_3cb[item]=true;
 }
 break;
 }
 }
 }
-return _3c7;
+return _3cb;
 };
-this.getDataProvider=function(_3cd,_3ce){
-dojo.io.bind({url:_3ce,load:function(type,_3d0){
+this.getDataProvider=function(_3d1,_3d2){
+dojo.io.bind({url:_3d2,load:function(type,_3d4){
 if(type=="load"){
-_3cd.dataProvider=_3d0;
+_3d1.dataProvider=_3d4;
 }
 },mimetype:"text/javascript",sync:true});
 };
-this.getPropertySetById=function(_3d1){
+this.getPropertySetById=function(_3d5){
 for(var x=0;x<this.propertySetsList.length;x++){
-if(_3d1==this.propertySetsList[x]["id"][0].value){
+if(_3d5==this.propertySetsList[x]["id"][0].value){
 return this.propertySetsList[x];
 }
 }
 return "";
 };
-this.getPropertySetsByType=function(_3d3){
-var _3d4=[];
+this.getPropertySetsByType=function(_3d7){
+var _3d8=[];
 for(var x=0;x<this.propertySetsList.length;x++){
 var cpl=this.propertySetsList[x];
 var cpcc=cpl.componentClass||cpl.componentType||null;
-var _3d8=this.propertySetsList[x]["id"][0].value;
-if(cpcc&&(_3d8==cpcc[0].value)){
-_3d4.push(cpl);
+var _3dc=this.propertySetsList[x]["id"][0].value;
+if(cpcc&&(_3dc==cpcc[0].value)){
+_3d8.push(cpl);
 }
 }
-return _3d4;
+return _3d8;
 };
-this.getPropertySets=function(_3d9){
+this.getPropertySets=function(_3dd){
 var ppl="dojo:propertyproviderlist";
-var _3db=[];
-var _3dc=_3d9.tagName;
-if(_3d9[ppl]){
-var _3dd=_3d9[ppl].value.split(" ");
-for(var _3de in _3dd){
-if((_3de.indexOf("..")==-1)&&(_3de.indexOf("://")==-1)){
-var _3df=this.getPropertySetById(_3de);
-if(_3df!=""){
-_3db.push(_3df);
+var _3df=[];
+var _3e0=_3dd.tagName;
+if(_3dd[ppl]){
+var _3e1=_3dd[ppl].value.split(" ");
+for(var _3e2 in _3e1){
+if((_3e2.indexOf("..")==-1)&&(_3e2.indexOf("://")==-1)){
+var _3e3=this.getPropertySetById(_3e2);
+if(_3e3!=""){
+_3df.push(_3e3);
 }
 }else{
 }
 }
 }
-return this.getPropertySetsByType(_3dc).concat(_3db);
+return this.getPropertySetsByType(_3e0).concat(_3df);
 };
-this.createComponentFromScript=function(_3e0,_3e1,_3e2,ns){
-_3e2.fastMixIn=true;
-var ltn=(ns||"dojo")+":"+_3e1.toLowerCase();
+this.createComponentFromScript=function(_3e4,_3e5,_3e6,ns){
+_3e6.fastMixIn=true;
+var ltn=(ns||"dojo")+":"+_3e5.toLowerCase();
 if(dojo.widget.tags[ltn]){
-return [dojo.widget.tags[ltn](_3e2,this,null,null,_3e2)];
+return [dojo.widget.tags[ltn](_3e6,this,null,null,_3e6)];
 }
-return [dojo.widget.buildWidgetFromParseTree(ltn,_3e2,this,null,null,_3e2)];
+return [dojo.widget.buildWidgetFromParseTree(ltn,_3e6,this,null,null,_3e6)];
 };
 };
 dojo.widget._parser_collection={"dojo":new dojo.widget.Parse()};
@@ -22253,62 +16346,62 @@
 }
 return this._parser_collection[name];
 };
-dojo.widget.createWidget=function(name,_3e7,_3e8,_3e9){
-var _3ea=false;
-var _3eb=(typeof name=="string");
-if(_3eb){
+dojo.widget.createWidget=function(name,_3eb,_3ec,_3ed){
+var _3ee=false;
+var _3ef=(typeof name=="string");
+if(_3ef){
 var pos=name.indexOf(":");
 var ns=(pos>-1)?name.substring(0,pos):"dojo";
 if(pos>-1){
 name=name.substring(pos+1);
 }
-var _3ee=name.toLowerCase();
-var _3ef=ns+":"+_3ee;
-_3ea=(dojo.byId(name)&&!dojo.widget.tags[_3ef]);
+var _3f2=name.toLowerCase();
+var _3f3=ns+":"+_3f2;
+_3ee=(dojo.byId(name)&&!dojo.widget.tags[_3f3]);
 }
-if((arguments.length==1)&&(_3ea||!_3eb)){
+if((arguments.length==1)&&(_3ee||!_3ef)){
 var xp=new dojo.xml.Parse();
-var tn=_3ea?dojo.byId(name):name;
+var tn=_3ee?dojo.byId(name):name;
 return dojo.widget.getParser().createComponents(xp.parseElement(tn,null,true))[0];
 }
-function fromScript(_3f2,name,_3f4,ns){
-_3f4[_3ef]={dojotype:[{value:_3ee}],nodeRef:_3f2,fastMixIn:true};
-_3f4.ns=ns;
-return dojo.widget.getParser().createComponentFromScript(_3f2,name,_3f4,ns);
+function fromScript(_3f6,name,_3f8,ns){
+_3f8[_3f3]={dojotype:[{value:_3f2}],nodeRef:_3f6,fastMixIn:true};
+_3f8.ns=ns;
+return dojo.widget.getParser().createComponentFromScript(_3f6,name,_3f8,ns);
 }
-_3e7=_3e7||{};
-var _3f6=false;
+_3eb=_3eb||{};
+var _3fa=false;
 var tn=null;
 var h=dojo.render.html.capable;
 if(h){
 tn=document.createElement("span");
 }
-if(!_3e8){
-_3f6=true;
-_3e8=tn;
+if(!_3ec){
+_3fa=true;
+_3ec=tn;
 if(h){
-dojo.body().appendChild(_3e8);
+dojo.body().appendChild(_3ec);
 }
 }else{
-if(_3e9){
-dojo.dom.insertAtPosition(tn,_3e8,_3e9);
+if(_3ed){
+dojo.dom.insertAtPosition(tn,_3ec,_3ed);
 }else{
-tn=_3e8;
+tn=_3ec;
 }
 }
-var _3f8=fromScript(tn,name.toLowerCase(),_3e7,ns);
-if((!_3f8)||(!_3f8[0])||(typeof _3f8[0].widgetType=="undefined")){
+var _3fc=fromScript(tn,name.toLowerCase(),_3eb,ns);
+if((!_3fc)||(!_3fc[0])||(typeof _3fc[0].widgetType=="undefined")){
 throw new Error("createWidget: Creation of \""+name+"\" widget failed.");
 }
 try{
-if(_3f6&&_3f8[0].domNode.parentNode){
-_3f8[0].domNode.parentNode.removeChild(_3f8[0].domNode);
+if(_3fa&&_3fc[0].domNode.parentNode){
+_3fc[0].domNode.parentNode.removeChild(_3fc[0].domNode);
 }
 }
 catch(e){
 dojo.debug(e);
 }
-return _3f8[0];
+return _3fc[0];
 };
 dojo.provide("dojo.html.style");
 dojo.html.getClass=function(node){
@@ -22330,29 +16423,29 @@
 var c=dojo.html.getClass(node);
 return (c=="")?[]:c.split(/\s+/g);
 };
-dojo.html.hasClass=function(node,_3fe){
-return (new RegExp("(^|\\s+)"+_3fe+"(\\s+|$)")).test(dojo.html.getClass(node));
+dojo.html.hasClass=function(node,_402){
+return (new RegExp("(^|\\s+)"+_402+"(\\s+|$)")).test(dojo.html.getClass(node));
 };
-dojo.html.prependClass=function(node,_400){
-_400+=" "+dojo.html.getClass(node);
-return dojo.html.setClass(node,_400);
+dojo.html.prependClass=function(node,_404){
+_404+=" "+dojo.html.getClass(node);
+return dojo.html.setClass(node,_404);
 };
-dojo.html.addClass=function(node,_402){
-if(dojo.html.hasClass(node,_402)){
+dojo.html.addClass=function(node,_406){
+if(dojo.html.hasClass(node,_406)){
 return false;
 }
-_402=(dojo.html.getClass(node)+" "+_402).replace(/^\s+|\s+$/g,"");
-return dojo.html.setClass(node,_402);
+_406=(dojo.html.getClass(node)+" "+_406).replace(/^\s+|\s+$/g,"");
+return dojo.html.setClass(node,_406);
 };
-dojo.html.setClass=function(node,_404){
+dojo.html.setClass=function(node,_408){
 node=dojo.byId(node);
-var cs=new String(_404);
+var cs=new String(_408);
 try{
 if(typeof node.className=="string"){
 node.className=cs;
 }else{
 if(node.setAttribute){
-node.setAttribute("class",_404);
+node.setAttribute("class",_408);
 node.className=cs;
 }else{
 return false;
@@ -22364,220 +16457,220 @@
 }
 return true;
 };
-dojo.html.removeClass=function(node,_407,_408){
+dojo.html.removeClass=function(node,_40b,_40c){
 try{
-if(!_408){
-var _409=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_407+"(\\s+|$)"),"$1$2");
+if(!_40c){
+var _40d=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_40b+"(\\s+|$)"),"$1$2");
 }else{
-var _409=dojo.html.getClass(node).replace(_407,"");
+var _40d=dojo.html.getClass(node).replace(_40b,"");
 }
-dojo.html.setClass(node,_409);
+dojo.html.setClass(node,_40d);
 }
 catch(e){
 dojo.debug("dojo.html.removeClass() failed",e);
 }
 return true;
 };
-dojo.html.replaceClass=function(node,_40b,_40c){
-dojo.html.removeClass(node,_40c);
-dojo.html.addClass(node,_40b);
+dojo.html.replaceClass=function(node,_40f,_410){
+dojo.html.removeClass(node,_410);
+dojo.html.addClass(node,_40f);
 };
 dojo.html.classMatchType={ContainsAll:0,ContainsAny:1,IsOnly:2};
-dojo.html.getElementsByClass=function(_40d,_40e,_40f,_410,_411){
-_411=false;
-var _412=dojo.doc();
-_40e=dojo.byId(_40e)||_412;
-var _413=_40d.split(/\s+/g);
-var _414=[];
-if(_410!=1&&_410!=2){
-_410=0;
+dojo.html.getElementsByClass=function(_411,_412,_413,_414,_415){
+_415=false;
+var _416=dojo.doc();
+_412=dojo.byId(_412)||_416;
+var _417=_411.split(/\s+/g);
+var _418=[];
+if(_414!=1&&_414!=2){
+_414=0;
 }
-var _415=new RegExp("(\\s|^)(("+_413.join(")|(")+"))(\\s|$)");
-var _416=_413.join(" ").length;
-var _417=[];
-if(!_411&&_412.evaluate){
-var _418=".//"+(_40f||"*")+"[contains(";
-if(_410!=dojo.html.classMatchType.ContainsAny){
-_418+="concat(' ', at class,' '), ' "+_413.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
-if(_410==2){
-_418+=" and string-length(@class)="+_416+"]";
+var _419=new RegExp("(\\s|^)(("+_417.join(")|(")+"))(\\s|$)");
+var _41a=_417.join(" ").length;
+var _41b=[];
+if(!_415&&_416.evaluate){
+var _41c=".//"+(_413||"*")+"[contains(";
+if(_414!=dojo.html.classMatchType.ContainsAny){
+_41c+="concat(' ', at class,' '), ' "+_417.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
+if(_414==2){
+_41c+=" and string-length(@class)="+_41a+"]";
 }else{
-_418+="]";
+_41c+="]";
 }
 }else{
-_418+="concat(' ', at class,' '), ' "+_413.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
+_41c+="concat(' ', at class,' '), ' "+_417.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
 }
-var _419=_412.evaluate(_418,_40e,null,XPathResult.ANY_TYPE,null);
-var _41a=_419.iterateNext();
-while(_41a){
+var _41d=_416.evaluate(_41c,_412,null,XPathResult.ANY_TYPE,null);
+var _41e=_41d.iterateNext();
+while(_41e){
 try{
-_417.push(_41a);
-_41a=_419.iterateNext();
+_41b.push(_41e);
+_41e=_41d.iterateNext();
 }
 catch(e){
 break;
 }
 }
-return _417;
+return _41b;
 }else{
-if(!_40f){
-_40f="*";
+if(!_413){
+_413="*";
 }
-_417=_40e.getElementsByTagName(_40f);
+_41b=_412.getElementsByTagName(_413);
 var node,i=0;
 outer:
-while(node=_417[i++]){
-var _41d=dojo.html.getClasses(node);
-if(_41d.length==0){
+while(node=_41b[i++]){
+var _421=dojo.html.getClasses(node);
+if(_421.length==0){
 continue outer;
 }
-var _41e=0;
-for(var j=0;j<_41d.length;j++){
-if(_415.test(_41d[j])){
-if(_410==dojo.html.classMatchType.ContainsAny){
-_414.push(node);
+var _422=0;
+for(var j=0;j<_421.length;j++){
+if(_419.test(_421[j])){
+if(_414==dojo.html.classMatchType.ContainsAny){
+_418.push(node);
 continue outer;
 }else{
-_41e++;
+_422++;
 }
 }else{
-if(_410==dojo.html.classMatchType.IsOnly){
+if(_414==dojo.html.classMatchType.IsOnly){
 continue outer;
 }
 }
 }
-if(_41e==_413.length){
-if((_410==dojo.html.classMatchType.IsOnly)&&(_41e==_41d.length)){
-_414.push(node);
+if(_422==_417.length){
+if((_414==dojo.html.classMatchType.IsOnly)&&(_422==_421.length)){
+_418.push(node);
 }else{
-if(_410==dojo.html.classMatchType.ContainsAll){
-_414.push(node);
+if(_414==dojo.html.classMatchType.ContainsAll){
+_418.push(node);
 }
 }
 }
 }
-return _414;
+return _418;
 }
 };
 dojo.html.getElementsByClassName=dojo.html.getElementsByClass;
-dojo.html.toCamelCase=function(_420){
-var arr=_420.split("-"),cc=arr[0];
+dojo.html.toCamelCase=function(_424){
+var arr=_424.split("-"),cc=arr[0];
 for(var i=1;i<arr.length;i++){
 cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
 }
 return cc;
 };
-dojo.html.toSelectorCase=function(_424){
-return _424.replace(/([A-Z])/g,"-$1").toLowerCase();
+dojo.html.toSelectorCase=function(_428){
+return _428.replace(/([A-Z])/g,"-$1").toLowerCase();
 };
 if(dojo.render.html.ie){
-dojo.html.getComputedStyle=function(node,_426,_427){
+dojo.html.getComputedStyle=function(node,_42a,_42b){
 node=dojo.byId(node);
-if(!node||!node.style){
-return _427;
+if(!node||!node.currentStyle){
+return _42b;
 }
-return node.currentStyle[dojo.html.toCamelCase(_426)];
+return node.currentStyle[dojo.html.toCamelCase(_42a)];
 };
 dojo.html.getComputedStyles=function(node){
 return node.currentStyle;
 };
 }else{
-dojo.html.getComputedStyle=function(node,_42a,_42b){
+dojo.html.getComputedStyle=function(node,_42e,_42f){
 node=dojo.byId(node);
 if(!node||!node.style){
-return _42b;
+return _42f;
 }
 var s=document.defaultView.getComputedStyle(node,null);
-return (s&&s[dojo.html.toCamelCase(_42a)])||"";
+return (s&&s[dojo.html.toCamelCase(_42e)])||"";
 };
 dojo.html.getComputedStyles=function(node){
 return document.defaultView.getComputedStyle(node,null);
 };
 }
-dojo.html.getStyleProperty=function(node,_42f){
+dojo.html.getStyleProperty=function(node,_433){
 node=dojo.byId(node);
-return (node&&node.style?node.style[dojo.html.toCamelCase(_42f)]:undefined);
+return (node&&node.style?node.style[dojo.html.toCamelCase(_433)]:undefined);
 };
-dojo.html.getStyle=function(node,_431){
-var _432=dojo.html.getStyleProperty(node,_431);
-return (_432?_432:dojo.html.getComputedStyle(node,_431));
+dojo.html.getStyle=function(node,_435){
+var _436=dojo.html.getStyleProperty(node,_435);
+return (_436?_436:dojo.html.getComputedStyle(node,_435));
 };
-dojo.html.setStyle=function(node,_434,_435){
+dojo.html.setStyle=function(node,_438,_439){
 node=dojo.byId(node);
 if(node&&node.style){
-var _436=dojo.html.toCamelCase(_434);
-node.style[_436]=_435;
+var _43a=dojo.html.toCamelCase(_438);
+node.style[_43a]=_439;
 }
 };
-dojo.html.setStyleText=function(_437,text){
+dojo.html.setStyleText=function(_43b,text){
 try{
-_437.style.cssText=text;
+_43b.style.cssText=text;
 }
 catch(e){
-_437.setAttribute("style",text);
+_43b.setAttribute("style",text);
 }
 };
-dojo.html.copyStyle=function(_439,_43a){
-if(!_43a.style.cssText){
-_439.setAttribute("style",_43a.getAttribute("style"));
+dojo.html.copyStyle=function(_43d,_43e){
+if(!_43e.style.cssText){
+_43d.setAttribute("style",_43e.getAttribute("style"));
 }else{
-_439.style.cssText=_43a.style.cssText;
+_43d.style.cssText=_43e.style.cssText;
 }
-dojo.html.addClass(_439,dojo.html.getClass(_43a));
+dojo.html.addClass(_43d,dojo.html.getClass(_43e));
 };
-dojo.html.getUnitValue=function(node,_43c,_43d){
-var s=dojo.html.getComputedStyle(node,_43c);
-if((!s)||((s=="auto")&&(_43d))){
+dojo.html.getUnitValue=function(node,_440,_441){
+var s=dojo.html.getComputedStyle(node,_440);
+if((!s)||((s=="auto")&&(_441))){
 return {value:0,units:"px"};
 }
-var _43f=s.match(/(\-?[\d.]+)([a-z%]*)/i);
-if(!_43f){
+var _443=s.match(/(\-?[\d.]+)([a-z%]*)/i);
+if(!_443){
 return dojo.html.getUnitValue.bad;
 }
-return {value:Number(_43f[1]),units:_43f[2].toLowerCase()};
+return {value:Number(_443[1]),units:_443[2].toLowerCase()};
 };
 dojo.html.getUnitValue.bad={value:NaN,units:""};
 if(dojo.render.html.ie){
-dojo.html.toPixelValue=function(_440,_441){
-if(!_441){
+dojo.html.toPixelValue=function(_444,_445){
+if(!_445){
 return 0;
 }
-if(_441.slice(-2)=="px"){
-return parseFloat(_441);
+if(_445.slice(-2)=="px"){
+return parseFloat(_445);
 }
-var _442=0;
-with(_440){
-var _443=style.left;
-var _444=runtimeStyle.left;
+var _446=0;
+with(_444){
+var _447=style.left;
+var _448=runtimeStyle.left;
 runtimeStyle.left=currentStyle.left;
 try{
-style.left=_441||0;
-_442=style.pixelLeft;
-style.left=_443;
-runtimeStyle.left=_444;
+style.left=_445||0;
+_446=style.pixelLeft;
+style.left=_447;
+runtimeStyle.left=_448;
 }
 catch(e){
 }
 }
-return _442;
+return _446;
 };
 }else{
-dojo.html.toPixelValue=function(_445,_446){
-return (_446&&(_446.slice(-2)=="px")?parseFloat(_446):0);
+dojo.html.toPixelValue=function(_449,_44a){
+return (_44a&&(_44a.slice(-2)=="px")?parseFloat(_44a):0);
 };
 }
-dojo.html.getPixelValue=function(node,_448,_449){
-return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_448));
+dojo.html.getPixelValue=function(node,_44c,_44d){
+return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_44c));
 };
-dojo.html.setPositivePixelValue=function(node,_44b,_44c){
-if(isNaN(_44c)){
+dojo.html.setPositivePixelValue=function(node,_44f,_450){
+if(isNaN(_450)){
 return false;
 }
-node.style[_44b]=Math.max(0,_44c)+"px";
+node.style[_44f]=Math.max(0,_450)+"px";
 return true;
 };
 dojo.html.styleSheet=null;
-dojo.html.insertCssRule=function(_44d,_44e,_44f){
+dojo.html.insertCssRule=function(_451,_452,_453){
 if(!dojo.html.styleSheet){
 if(document.createStyleSheet){
 dojo.html.styleSheet=document.createStyleSheet();
@@ -22591,161 +16684,161 @@
 }
 if(arguments.length<3){
 if(dojo.html.styleSheet.cssRules){
-_44f=dojo.html.styleSheet.cssRules.length;
+_453=dojo.html.styleSheet.cssRules.length;
 }else{
 if(dojo.html.styleSheet.rules){
-_44f=dojo.html.styleSheet.rules.length;
+_453=dojo.html.styleSheet.rules.length;
 }else{
 return null;
 }
 }
 }
 if(dojo.html.styleSheet.insertRule){
-var rule=_44d+" { "+_44e+" }";
-return dojo.html.styleSheet.insertRule(rule,_44f);
+var rule=_451+" { "+_452+" }";
+return dojo.html.styleSheet.insertRule(rule,_453);
 }else{
 if(dojo.html.styleSheet.addRule){
-return dojo.html.styleSheet.addRule(_44d,_44e,_44f);
+return dojo.html.styleSheet.addRule(_451,_452,_453);
 }else{
 return null;
 }
 }
 };
-dojo.html.removeCssRule=function(_451){
+dojo.html.removeCssRule=function(_455){
 if(!dojo.html.styleSheet){
 dojo.debug("no stylesheet defined for removing rules");
 return false;
 }
 if(dojo.render.html.ie){
-if(!_451){
-_451=dojo.html.styleSheet.rules.length;
-dojo.html.styleSheet.removeRule(_451);
+if(!_455){
+_455=dojo.html.styleSheet.rules.length;
+dojo.html.styleSheet.removeRule(_455);
 }
 }else{
 if(document.styleSheets[0]){
-if(!_451){
-_451=dojo.html.styleSheet.cssRules.length;
+if(!_455){
+_455=dojo.html.styleSheet.cssRules.length;
 }
-dojo.html.styleSheet.deleteRule(_451);
+dojo.html.styleSheet.deleteRule(_455);
 }
 }
 return true;
 };
 dojo.html._insertedCssFiles=[];
-dojo.html.insertCssFile=function(URI,doc,_454,_455){
+dojo.html.insertCssFile=function(URI,doc,_458,_459){
 if(!URI){
 return;
 }
 if(!doc){
 doc=document;
 }
-var _456=dojo.hostenv.getText(URI,false,_455);
-if(_456===null){
+var _45a=dojo.hostenv.getText(URI,false,_459);
+if(_45a===null){
 return;
 }
-_456=dojo.html.fixPathsInCssText(_456,URI);
-if(_454){
+_45a=dojo.html.fixPathsInCssText(_45a,URI);
+if(_458){
 var idx=-1,node,ent=dojo.html._insertedCssFiles;
 for(var i=0;i<ent.length;i++){
-if((ent[i].doc==doc)&&(ent[i].cssText==_456)){
+if((ent[i].doc==doc)&&(ent[i].cssText==_45a)){
 idx=i;
 node=ent[i].nodeRef;
 break;
 }
 }
 if(node){
-var _45b=doc.getElementsByTagName("style");
-for(var i=0;i<_45b.length;i++){
-if(_45b[i]==node){
+var _45f=doc.getElementsByTagName("style");
+for(var i=0;i<_45f.length;i++){
+if(_45f[i]==node){
 return;
 }
 }
 dojo.html._insertedCssFiles.shift(idx,1);
 }
 }
-var _45c=dojo.html.insertCssText(_456,doc);
-dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_456,"nodeRef":_45c});
-if(_45c&&djConfig.isDebug){
-_45c.setAttribute("dbgHref",URI);
+var _460=dojo.html.insertCssText(_45a,doc);
+dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_45a,"nodeRef":_460});
+if(_460&&djConfig.isDebug){
+_460.setAttribute("dbgHref",URI);
 }
-return _45c;
+return _460;
 };
-dojo.html.insertCssText=function(_45d,doc,URI){
-if(!_45d){
+dojo.html.insertCssText=function(_461,doc,URI){
+if(!_461){
 return;
 }
 if(!doc){
 doc=document;
 }
 if(URI){
-_45d=dojo.html.fixPathsInCssText(_45d,URI);
+_461=dojo.html.fixPathsInCssText(_461,URI);
 }
-var _460=doc.createElement("style");
-_460.setAttribute("type","text/css");
+var _464=doc.createElement("style");
+_464.setAttribute("type","text/css");
 var head=doc.getElementsByTagName("head")[0];
 if(!head){
 dojo.debug("No head tag in document, aborting styles");
 return;
 }else{
-head.appendChild(_460);
+head.appendChild(_464);
 }
-if(_460.styleSheet){
-var _462=function(){
+if(_464.styleSheet){
+var _466=function(){
 try{
-_460.styleSheet.cssText=_45d;
+_464.styleSheet.cssText=_461;
 }
 catch(e){
 dojo.debug(e);
 }
 };
-if(_460.styleSheet.disabled){
-setTimeout(_462,10);
+if(_464.styleSheet.disabled){
+setTimeout(_466,10);
 }else{
-_462();
+_466();
 }
 }else{
-var _463=doc.createTextNode(_45d);
-_460.appendChild(_463);
+var _467=doc.createTextNode(_461);
+_464.appendChild(_467);
 }
-return _460;
+return _464;
 };
-dojo.html.fixPathsInCssText=function(_464,URI){
-if(!_464||!URI){
+dojo.html.fixPathsInCssText=function(_468,URI){
+if(!_468||!URI){
 return;
 }
-var _466,str="",url="",_469="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
-var _46a=new RegExp("url\\(\\s*("+_469+")\\s*\\)");
-var _46b=/(file|https?|ftps?):\/\//;
-regexTrim=new RegExp("^[\\s]*(['\"]?)("+_469+")\\1[\\s]*?$");
+var _46a,str="",url="",_46d="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
+var _46e=new RegExp("url\\(\\s*("+_46d+")\\s*\\)");
+var _46f=/(file|https?|ftps?):\/\//;
+regexTrim=new RegExp("^[\\s]*(['\"]?)("+_46d+")\\1[\\s]*?$");
 if(dojo.render.html.ie55||dojo.render.html.ie60){
-var _46c=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_469+")['\"]");
-while(_466=_46c.exec(_464)){
-url=_466[2].replace(regexTrim,"$2");
-if(!_46b.exec(url)){
+var _470=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_46d+")['\"]");
+while(_46a=_470.exec(_468)){
+url=_46a[2].replace(regexTrim,"$2");
+if(!_46f.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_464.substring(0,_466.index)+"AlphaImageLoader("+_466[1]+"src='"+url+"'";
-_464=_464.substr(_466.index+_466[0].length);
+str+=_468.substring(0,_46a.index)+"AlphaImageLoader("+_46a[1]+"src='"+url+"'";
+_468=_468.substr(_46a.index+_46a[0].length);
 }
-_464=str+_464;
+_468=str+_468;
 str="";
 }
-while(_466=_46a.exec(_464)){
-url=_466[1].replace(regexTrim,"$2");
-if(!_46b.exec(url)){
+while(_46a=_46e.exec(_468)){
+url=_46a[1].replace(regexTrim,"$2");
+if(!_46f.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_464.substring(0,_466.index)+"url("+url+")";
-_464=_464.substr(_466.index+_466[0].length);
+str+=_468.substring(0,_46a.index)+"url("+url+")";
+_468=_468.substr(_46a.index+_46a[0].length);
 }
-return str+_464;
+return str+_468;
 };
-dojo.html.setActiveStyleSheet=function(_46d){
+dojo.html.setActiveStyleSheet=function(_471){
 var i=0,a,els=dojo.doc().getElementsByTagName("link");
 while(a=els[i++]){
 if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){
 a.disabled=true;
-if(a.getAttribute("title")==_46d){
+if(a.getAttribute("title")==_471){
 a.disabled=false;
 }
 }
@@ -22771,9 +16864,9 @@
 };
 dojo.html.applyBrowserClass=function(node){
 var drh=dojo.render.html;
-var _479={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
-for(var p in _479){
-if(_479[p]){
+var _47d={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
+for(var p in _47d){
+if(_47d[p]){
 dojo.html.addClass(node,p);
 }
 }
@@ -22783,67 +16876,67 @@
 dojo.widget._cssStrings={};
 dojo.widget._templateCache={};
 dojo.widget.defaultStrings={dojoRoot:dojo.hostenv.getBaseScriptUri(),dojoWidgetModuleUri:dojo.uri.moduleUri("dojo.widget"),baseScriptUri:dojo.hostenv.getBaseScriptUri()};
-dojo.widget.fillFromTemplateCache=function(obj,_47c,_47d,_47e){
-var _47f=_47c||obj.templatePath;
-var _480=dojo.widget._templateCache;
-if(!_47f&&!obj["widgetType"]){
+dojo.widget.fillFromTemplateCache=function(obj,_480,_481,_482){
+var _483=_480||obj.templatePath;
+var _484=dojo.widget._templateCache;
+if(!_483&&!obj["widgetType"]){
 do{
-var _481="__dummyTemplate__"+dojo.widget._templateCache.dummyCount++;
-}while(_480[_481]);
-obj.widgetType=_481;
+var _485="__dummyTemplate__"+dojo.widget._templateCache.dummyCount++;
+}while(_484[_485]);
+obj.widgetType=_485;
 }
-var wt=_47f?_47f.toString():obj.widgetType;
-var ts=_480[wt];
+var wt=_483?_483.toString():obj.widgetType;
+var ts=_484[wt];
 if(!ts){
-_480[wt]={"string":null,"node":null};
-if(_47e){
+_484[wt]={"string":null,"node":null};
+if(_482){
 ts={};
 }else{
-ts=_480[wt];
+ts=_484[wt];
 }
 }
-if((!obj.templateString)&&(!_47e)){
-obj.templateString=_47d||ts["string"];
+if((!obj.templateString)&&(!_482)){
+obj.templateString=_481||ts["string"];
 }
 if(obj.templateString){
 obj.templateString=this._sanitizeTemplateString(obj.templateString);
 }
-if((!obj.templateNode)&&(!_47e)){
+if((!obj.templateNode)&&(!_482)){
 obj.templateNode=ts["node"];
 }
-if((!obj.templateNode)&&(!obj.templateString)&&(_47f)){
-var _484=this._sanitizeTemplateString(dojo.hostenv.getText(_47f));
-obj.templateString=_484;
-if(!_47e){
-_480[wt]["string"]=_484;
+if((!obj.templateNode)&&(!obj.templateString)&&(_483)){
+var _488=this._sanitizeTemplateString(dojo.hostenv.getText(_483));
+obj.templateString=_488;
+if(!_482){
+_484[wt]["string"]=_488;
 }
 }
-if((!ts["string"])&&(!_47e)){
+if((!ts["string"])&&(!_482)){
 ts.string=obj.templateString;
 }
 };
-dojo.widget._sanitizeTemplateString=function(_485){
-if(_485){
-_485=_485.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
-var _486=_485.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
-if(_486){
-_485=_486[1];
+dojo.widget._sanitizeTemplateString=function(_489){
+if(_489){
+_489=_489.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
+var _48a=_489.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+if(_48a){
+_489=_48a[1];
 }
 }else{
-_485="";
+_489="";
 }
-return _485;
+return _489;
 };
 dojo.widget._templateCache.dummyCount=0;
 dojo.widget.attachProperties=["dojoAttachPoint","id"];
 dojo.widget.eventAttachProperty="dojoAttachEvent";
 dojo.widget.onBuildProperty="dojoOnBuild";
 dojo.widget.waiNames=["waiRole","waiState"];
-dojo.widget.wai={waiRole:{name:"waiRole","namespace":"http://www.w3.org/TR/xhtml2",alias:"x2",prefix:"wairole:"},waiState:{name:"waiState","namespace":"http://www.w3.org/2005/07/aaa",alias:"aaa",prefix:""},setAttr:function(node,ns,attr,_48a){
+dojo.widget.wai={waiRole:{name:"waiRole","namespace":"http://www.w3.org/TR/xhtml2",alias:"x2",prefix:"wairole:"},waiState:{name:"waiState","namespace":"http://www.w3.org/2005/07/aaa",alias:"aaa",prefix:""},setAttr:function(node,ns,attr,_48e){
 if(dojo.render.html.ie){
-node.setAttribute(this[ns].alias+":"+attr,this[ns].prefix+_48a);
+node.setAttribute(this[ns].alias+":"+attr,this[ns].prefix+_48e);
 }else{
-node.setAttributeNS(this[ns]["namespace"],attr,this[ns].prefix+_48a);
+node.setAttributeNS(this[ns]["namespace"],attr,this[ns].prefix+_48e);
 }
 },getAttr:function(node,ns,attr){
 if(dojo.render.html.ie){
@@ -22852,119 +16945,119 @@
 return node.getAttributeNS(this[ns]["namespace"],attr);
 }
 },removeAttr:function(node,ns,attr){
-var _491=true;
+var _495=true;
 if(dojo.render.html.ie){
-_491=node.removeAttribute(this[ns].alias+":"+attr);
+_495=node.removeAttribute(this[ns].alias+":"+attr);
 }else{
 node.removeAttributeNS(this[ns]["namespace"],attr);
 }
-return _491;
+return _495;
 }};
-dojo.widget.attachTemplateNodes=function(_492,_493,_494){
-var _495=dojo.dom.ELEMENT_NODE;
+dojo.widget.attachTemplateNodes=function(_496,_497,_498){
+var _499=dojo.dom.ELEMENT_NODE;
 function trim(str){
 return str.replace(/^\s+|\s+$/g,"");
 }
-if(!_492){
-_492=_493.domNode;
+if(!_496){
+_496=_497.domNode;
 }
-if(_492.nodeType!=_495){
+if(_496.nodeType!=_499){
 return;
 }
-var _497=_492.all||_492.getElementsByTagName("*");
-var _498=_493;
-for(var x=-1;x<_497.length;x++){
-var _49a=(x==-1)?_492:_497[x];
-var _49b=[];
-if(!_493.widgetsInTemplate||!_49a.getAttribute("dojoType")){
+var _49b=_496.all||_496.getElementsByTagName("*");
+var _49c=_497;
+for(var x=-1;x<_49b.length;x++){
+var _49e=(x==-1)?_496:_49b[x];
+var _49f=[];
+if(!_497.widgetsInTemplate||!_49e.getAttribute("dojoType")){
 for(var y=0;y<this.attachProperties.length;y++){
-var _49d=_49a.getAttribute(this.attachProperties[y]);
-if(_49d){
-_49b=_49d.split(";");
-for(var z=0;z<_49b.length;z++){
-if(dojo.lang.isArray(_493[_49b[z]])){
-_493[_49b[z]].push(_49a);
+var _4a1=_49e.getAttribute(this.attachProperties[y]);
+if(_4a1){
+_49f=_4a1.split(";");
+for(var z=0;z<_49f.length;z++){
+if(dojo.lang.isArray(_497[_49f[z]])){
+_497[_49f[z]].push(_49e);
 }else{
-_493[_49b[z]]=_49a;
+_497[_49f[z]]=_49e;
 }
 }
 break;
 }
 }
-var _49f=_49a.getAttribute(this.eventAttachProperty);
-if(_49f){
-var evts=_49f.split(";");
+var _4a3=_49e.getAttribute(this.eventAttachProperty);
+if(_4a3){
+var evts=_4a3.split(";");
 for(var y=0;y<evts.length;y++){
 if((!evts[y])||(!evts[y].length)){
 continue;
 }
-var _4a1=null;
+var _4a5=null;
 var tevt=trim(evts[y]);
 if(evts[y].indexOf(":")>=0){
-var _4a3=tevt.split(":");
-tevt=trim(_4a3[0]);
-_4a1=trim(_4a3[1]);
+var _4a7=tevt.split(":");
+tevt=trim(_4a7[0]);
+_4a5=trim(_4a7[1]);
 }
-if(!_4a1){
-_4a1=tevt;
+if(!_4a5){
+_4a5=tevt;
 }
 var tf=function(){
-var ntf=new String(_4a1);
+var ntf=new String(_4a5);
 return function(evt){
-if(_498[ntf]){
-_498[ntf](dojo.event.browser.fixEvent(evt,this));
+if(_49c[ntf]){
+_49c[ntf](dojo.event.browser.fixEvent(evt,this));
 }
 };
 }();
-dojo.event.browser.addListener(_49a,tevt,tf,false,true);
+dojo.event.browser.addListener(_49e,tevt,tf,false,true);
 }
 }
-for(var y=0;y<_494.length;y++){
-var _4a7=_49a.getAttribute(_494[y]);
-if((_4a7)&&(_4a7.length)){
-var _4a1=null;
-var _4a8=_494[y].substr(4);
-_4a1=trim(_4a7);
-var _4a9=[_4a1];
-if(_4a1.indexOf(";")>=0){
-_4a9=dojo.lang.map(_4a1.split(";"),trim);
+for(var y=0;y<_498.length;y++){
+var _4ab=_49e.getAttribute(_498[y]);
+if((_4ab)&&(_4ab.length)){
+var _4a5=null;
+var _4ac=_498[y].substr(4);
+_4a5=trim(_4ab);
+var _4ad=[_4a5];
+if(_4a5.indexOf(";")>=0){
+_4ad=dojo.lang.map(_4a5.split(";"),trim);
 }
-for(var z=0;z<_4a9.length;z++){
-if(!_4a9[z].length){
+for(var z=0;z<_4ad.length;z++){
+if(!_4ad[z].length){
 continue;
 }
 var tf=function(){
-var ntf=new String(_4a9[z]);
+var ntf=new String(_4ad[z]);
 return function(evt){
-if(_498[ntf]){
-_498[ntf](dojo.event.browser.fixEvent(evt,this));
+if(_49c[ntf]){
+_49c[ntf](dojo.event.browser.fixEvent(evt,this));
 }
 };
 }();
-dojo.event.browser.addListener(_49a,_4a8,tf,false,true);
+dojo.event.browser.addListener(_49e,_4ac,tf,false,true);
 }
 }
 }
 }
-var _4ac=_49a.getAttribute(this.templateProperty);
-if(_4ac){
-_493[_4ac]=_49a;
+var _4b0=_49e.getAttribute(this.templateProperty);
+if(_4b0){
+_497[_4b0]=_49e;
 }
 dojo.lang.forEach(dojo.widget.waiNames,function(name){
 var wai=dojo.widget.wai[name];
-var val=_49a.getAttribute(wai.name);
+var val=_49e.getAttribute(wai.name);
 if(val){
 if(val.indexOf("-")==-1){
-dojo.widget.wai.setAttr(_49a,wai.name,"role",val);
+dojo.widget.wai.setAttr(_49e,wai.name,"role",val);
 }else{
-var _4b0=val.split("-");
-dojo.widget.wai.setAttr(_49a,wai.name,_4b0[0],_4b0[1]);
+var _4b4=val.split("-");
+dojo.widget.wai.setAttr(_49e,wai.name,_4b4[0],_4b4[1]);
 }
 }
 },this);
-var _4b1=_49a.getAttribute(this.onBuildProperty);
-if(_4b1){
-eval("var node = baseNode; var widget = targetObj; "+_4b1);
+var _4b5=_49e.getAttribute(this.onBuildProperty);
+if(_4b5){
+eval("var node = baseNode; var widget = targetObj; "+_4b5);
 }
 }
 };
@@ -22990,23 +17083,23 @@
 if((arguments.length>0)&&(typeof arguments[0]=="object")){
 this.create(arguments[0]);
 }
-},{templateNode:null,templateString:null,templateCssString:null,preventClobber:false,domNode:null,containerNode:null,widgetsInTemplate:false,addChild:function(_4b9,_4ba,pos,ref,_4bd){
+},{templateNode:null,templateString:null,templateCssString:null,preventClobber:false,domNode:null,containerNode:null,widgetsInTemplate:false,addChild:function(_4bd,_4be,pos,ref,_4c1){
 if(!this.isContainer){
 dojo.debug("dojo.widget.DomWidget.addChild() attempted on non-container widget");
 return null;
 }else{
-if(_4bd==undefined){
-_4bd=this.children.length;
+if(_4c1==undefined){
+_4c1=this.children.length;
 }
-this.addWidgetAsDirectChild(_4b9,_4ba,pos,ref,_4bd);
-this.registerChild(_4b9,_4bd);
+this.addWidgetAsDirectChild(_4bd,_4be,pos,ref,_4c1);
+this.registerChild(_4bd,_4c1);
 }
-return _4b9;
-},addWidgetAsDirectChild:function(_4be,_4bf,pos,ref,_4c2){
-if((!this.containerNode)&&(!_4bf)){
+return _4bd;
+},addWidgetAsDirectChild:function(_4c2,_4c3,pos,ref,_4c6){
+if((!this.containerNode)&&(!_4c3)){
 this.containerNode=this.domNode;
 }
-var cn=(_4bf)?_4bf:this.containerNode;
+var cn=(_4c3)?_4c3:this.containerNode;
 if(!pos){
 pos="after";
 }
@@ -23016,38 +17109,38 @@
 }
 ref=cn.lastChild;
 }
-if(!_4c2){
-_4c2=0;
+if(!_4c6){
+_4c6=0;
 }
-_4be.domNode.setAttribute("dojoinsertionindex",_4c2);
+_4c2.domNode.setAttribute("dojoinsertionindex",_4c6);
 if(!ref){
-cn.appendChild(_4be.domNode);
+cn.appendChild(_4c2.domNode);
 }else{
 if(pos=="insertAtIndex"){
-dojo.dom.insertAtIndex(_4be.domNode,ref.parentNode,_4c2);
+dojo.dom.insertAtIndex(_4c2.domNode,ref.parentNode,_4c6);
 }else{
 if((pos=="after")&&(ref===cn.lastChild)){
-cn.appendChild(_4be.domNode);
+cn.appendChild(_4c2.domNode);
 }else{
-dojo.dom.insertAtPosition(_4be.domNode,cn,pos);
+dojo.dom.insertAtPosition(_4c2.domNode,cn,pos);
 }
 }
 }
-},registerChild:function(_4c4,_4c5){
-_4c4.dojoInsertionIndex=_4c5;
+},registerChild:function(_4c8,_4c9){
+_4c8.dojoInsertionIndex=_4c9;
 var idx=-1;
 for(var i=0;i<this.children.length;i++){
-if(this.children[i].dojoInsertionIndex<=_4c5){
+if(this.children[i].dojoInsertionIndex<=_4c9){
 idx=i;
 }
 }
-this.children.splice(idx+1,0,_4c4);
-_4c4.parent=this;
-_4c4.addedTo(this,idx+1);
-delete dojo.widget.manager.topWidgets[_4c4.widgetId];
-},removeChild:function(_4c8){
-dojo.dom.removeNode(_4c8.domNode);
-return dojo.widget.DomWidget.superclass.removeChild.call(this,_4c8);
+this.children.splice(idx+1,0,_4c8);
+_4c8.parent=this;
+_4c8.addedTo(this,idx+1);
+delete dojo.widget.manager.topWidgets[_4c8.widgetId];
+},removeChild:function(_4cc){
+dojo.dom.removeNode(_4cc.domNode);
+return dojo.widget.DomWidget.superclass.removeChild.call(this,_4cc);
 },getFragNodeRef:function(frag){
 if(!frag){
 return null;
@@ -23056,91 +17149,91 @@
 dojo.raise("Error: no frag for widget type "+this.getNamespacedType()+", id "+this.widgetId+" (maybe a widget has set it's type incorrectly)");
 }
 return frag[this.getNamespacedType()]["nodeRef"];
-},postInitialize:function(args,frag,_4cc){
-var _4cd=this.getFragNodeRef(frag);
-if(_4cc&&(_4cc.snarfChildDomOutput||!_4cd)){
-_4cc.addWidgetAsDirectChild(this,"","insertAtIndex","",args["dojoinsertionindex"],_4cd);
+},postInitialize:function(args,frag,_4d0){
+var _4d1=this.getFragNodeRef(frag);
+if(_4d0&&(_4d0.snarfChildDomOutput||!_4d1)){
+_4d0.addWidgetAsDirectChild(this,"","insertAtIndex","",args["dojoinsertionindex"],_4d1);
 }else{
-if(_4cd){
-if(this.domNode&&(this.domNode!==_4cd)){
-this._sourceNodeRef=dojo.dom.replaceNode(_4cd,this.domNode);
+if(_4d1){
+if(this.domNode&&(this.domNode!==_4d1)){
+this._sourceNodeRef=dojo.dom.replaceNode(_4d1,this.domNode);
 }
 }
 }
-if(_4cc){
-_4cc.registerChild(this,args.dojoinsertionindex);
+if(_4d0){
+_4d0.registerChild(this,args.dojoinsertionindex);
 }else{
 dojo.widget.manager.topWidgets[this.widgetId]=this;
 }
 if(this.widgetsInTemplate){
-var _4ce=new dojo.xml.Parse();
-var _4cf;
-var _4d0=this.domNode.getElementsByTagName("*");
-for(var i=0;i<_4d0.length;i++){
-if(_4d0[i].getAttribute("dojoAttachPoint")=="subContainerWidget"){
-_4cf=_4d0[i];
+var _4d2=new dojo.xml.Parse();
+var _4d3;
+var _4d4=this.domNode.getElementsByTagName("*");
+for(var i=0;i<_4d4.length;i++){
+if(_4d4[i].getAttribute("dojoAttachPoint")=="subContainerWidget"){
+_4d3=_4d4[i];
 }
-if(_4d0[i].getAttribute("dojoType")){
-_4d0[i].setAttribute("isSubWidget",true);
+if(_4d4[i].getAttribute("dojoType")){
+_4d4[i].setAttribute("isSubWidget",true);
 }
 }
 if(this.isContainer&&!this.containerNode){
-if(_4cf){
+if(_4d3){
 var src=this.getFragNodeRef(frag);
 if(src){
-dojo.dom.moveChildren(src,_4cf);
+dojo.dom.moveChildren(src,_4d3);
 frag["dojoDontFollow"]=true;
 }
 }else{
 dojo.debug("No subContainerWidget node can be found in template file for widget "+this);
 }
 }
-var _4d3=_4ce.parseElement(this.domNode,null,true);
-dojo.widget.getParser().createSubComponents(_4d3,this);
-var _4d4=[];
-var _4d5=[this];
+var _4d7=_4d2.parseElement(this.domNode,null,true);
+dojo.widget.getParser().createSubComponents(_4d7,this);
+var _4d8=[];
+var _4d9=[this];
 var w;
-while((w=_4d5.pop())){
+while((w=_4d9.pop())){
 for(var i=0;i<w.children.length;i++){
-var _4d7=w.children[i];
-if(_4d7._processedSubWidgets||!_4d7.extraArgs["issubwidget"]){
+var _4db=w.children[i];
+if(_4db._processedSubWidgets||!_4db.extraArgs["issubwidget"]){
 continue;
 }
-_4d4.push(_4d7);
-if(_4d7.isContainer){
-_4d5.push(_4d7);
+_4d8.push(_4db);
+if(_4db.isContainer){
+_4d9.push(_4db);
 }
 }
 }
-for(var i=0;i<_4d4.length;i++){
-var _4d8=_4d4[i];
-if(_4d8._processedSubWidgets){
+for(var i=0;i<_4d8.length;i++){
+var _4dc=_4d8[i];
+if(_4dc._processedSubWidgets){
 dojo.debug("This should not happen: widget._processedSubWidgets is already true!");
 return;
 }
-_4d8._processedSubWidgets=true;
-if(_4d8.extraArgs["dojoattachevent"]){
-var evts=_4d8.extraArgs["dojoattachevent"].split(";");
+_4dc._processedSubWidgets=true;
+if(_4dc.extraArgs["dojoattachevent"]){
+var evts=_4dc.extraArgs["dojoattachevent"].split(";");
 for(var j=0;j<evts.length;j++){
-var _4db=null;
+var _4df=null;
 var tevt=dojo.string.trim(evts[j]);
 if(tevt.indexOf(":")>=0){
-var _4dd=tevt.split(":");
-tevt=dojo.string.trim(_4dd[0]);
-_4db=dojo.string.trim(_4dd[1]);
+var _4e1=tevt.split(":");
+tevt=dojo.string.trim(_4e1[0]);
+_4df=dojo.string.trim(_4e1[1]);
 }
-if(!_4db){
-_4db=tevt;
+if(!_4df){
+_4df=tevt;
 }
-if(dojo.lang.isFunction(_4d8[tevt])){
-dojo.event.kwConnect({srcObj:_4d8,srcFunc:tevt,targetObj:this,targetFunc:_4db});
+if(dojo.lang.isFunction(_4dc[tevt])){
+dojo.event.kwConnect({srcObj:_4dc,srcFunc:tevt,targetObj:this,targetFunc:_4df});
 }else{
-alert(tevt+" is not a function in widget "+_4d8);
+alert(tevt+" is not a function in widget "+_4dc);
 }
 }
 }
-if(_4d8.extraArgs["dojoattachpoint"]){
-this[_4d8.extraArgs["dojoattachpoint"]]=_4d8;
+if(_4dc.extraArgs["dojoattachpoint"]){
+this[_4dc.extraArgs["dojoattachpoint"]]=_4dc;
 }
 }
 }
@@ -23152,16 +17245,16 @@
 if(args["templatecsspath"]){
 args["templateCssPath"]=args["templatecsspath"];
 }
-var _4e1=args["templateCssPath"]||this.templateCssPath;
-if(_4e1&&!dojo.widget._cssFiles[_4e1.toString()]){
-if((!this.templateCssString)&&(_4e1)){
-this.templateCssString=dojo.hostenv.getText(_4e1);
+var _4e5=args["templateCssPath"]||this.templateCssPath;
+if(_4e5&&!dojo.widget._cssFiles[_4e5.toString()]){
+if((!this.templateCssString)&&(_4e5)){
+this.templateCssString=dojo.hostenv.getText(_4e5);
 this.templateCssPath=null;
 }
-dojo.widget._cssFiles[_4e1.toString()]=true;
+dojo.widget._cssFiles[_4e5.toString()]=true;
 }
 if((this["templateCssString"])&&(!dojo.widget._cssStrings[this.templateCssString])){
-dojo.html.insertCssText(this.templateCssString,null,_4e1);
+dojo.html.insertCssText(this.templateCssString,null,_4e5);
 dojo.widget._cssStrings[this.templateCssString]=true;
 }
 if((!this.preventClobber)&&((this.templatePath)||(this.templateNode)||((this["templateString"])&&(this.templateString.length))||((typeof ts!="undefined")&&((ts["string"])||(ts["node"]))))){
@@ -23171,13 +17264,13 @@
 }
 this.fillInTemplate(args,frag);
 },buildFromTemplate:function(args,frag){
-var _4e4=false;
+var _4e8=false;
 if(args["templatepath"]){
 args["templatePath"]=args["templatepath"];
 }
-dojo.widget.fillFromTemplateCache(this,args["templatePath"],null,_4e4);
+dojo.widget.fillFromTemplateCache(this,args["templatePath"],null,_4e8);
 var ts=dojo.widget._templateCache[this.templatePath?this.templatePath.toString():this.widgetType];
-if((ts)&&(!_4e4)){
+if((ts)&&(!_4e8)){
 if(!this.templateString.length){
 this.templateString=ts["string"];
 }
@@ -23185,43 +17278,43 @@
 this.templateNode=ts["node"];
 }
 }
-var _4e6=false;
+var _4ea=false;
 var node=null;
 var tstr=this.templateString;
 if((!this.templateNode)&&(this.templateString)){
-_4e6=this.templateString.match(/\$\{([^\}]+)\}/g);
-if(_4e6){
+_4ea=this.templateString.match(/\$\{([^\}]+)\}/g);
+if(_4ea){
 var hash=this.strings||{};
 for(var key in dojo.widget.defaultStrings){
 if(dojo.lang.isUndefined(hash[key])){
 hash[key]=dojo.widget.defaultStrings[key];
 }
 }
-for(var i=0;i<_4e6.length;i++){
-var key=_4e6[i];
+for(var i=0;i<_4ea.length;i++){
+var key=_4ea[i];
 key=key.substring(2,key.length-1);
 var kval=(key.substring(0,5)=="this.")?dojo.lang.getObjPathValue(key.substring(5),this):hash[key];
-var _4ed;
+var _4f1;
 if((kval)||(dojo.lang.isString(kval))){
-_4ed=new String((dojo.lang.isFunction(kval))?kval.call(this,key,this.templateString):kval);
-while(_4ed.indexOf("\"")>-1){
-_4ed=_4ed.replace("\"","&quot;");
+_4f1=new String((dojo.lang.isFunction(kval))?kval.call(this,key,this.templateString):kval);
+while(_4f1.indexOf("\"")>-1){
+_4f1=_4f1.replace("\"","&quot;");
 }
-tstr=tstr.replace(_4e6[i],_4ed);
+tstr=tstr.replace(_4ea[i],_4f1);
 }
 }
 }else{
 this.templateNode=this.createNodesFromText(this.templateString,true)[0];
-if(!_4e4){
+if(!_4e8){
 ts.node=this.templateNode;
 }
 }
 }
-if((!this.templateNode)&&(!_4e6)){
+if((!this.templateNode)&&(!_4ea)){
 dojo.debug("DomWidget.buildFromTemplate: could not create template");
 return false;
 }else{
-if(!_4e6){
+if(!_4ea){
 node=this.templateNode.cloneNode(true);
 if(!node){
 return false;
@@ -23238,14 +17331,14 @@
 dojo.dom.moveChildren(src,this.containerNode);
 }
 }
-},attachTemplateNodes:function(_4ef,_4f0){
-if(!_4ef){
-_4ef=this.domNode;
+},attachTemplateNodes:function(_4f3,_4f4){
+if(!_4f3){
+_4f3=this.domNode;
 }
-if(!_4f0){
-_4f0=this;
+if(!_4f4){
+_4f4=this;
 }
-return dojo.widget.attachTemplateNodes(_4ef,_4f0,dojo.widget.getDojoEventsFromStr(this.templateString));
+return dojo.widget.attachTemplateNodes(_4f3,_4f4,dojo.widget.getDojoEventsFromStr(this.templateString));
 },fillInTemplate:function(){
 },destroyRendering:function(){
 try{
@@ -23265,10 +17358,10 @@
 dojo.unimplemented("dojo.widget.DomWidget.createNodesFromText");
 }});
 dojo.provide("dojo.html.display");
-dojo.html._toggle=function(node,_4f2,_4f3){
+dojo.html._toggle=function(node,_4f6,_4f7){
 node=dojo.byId(node);
-_4f3(node,!_4f2(node));
-return _4f2(node);
+_4f7(node,!_4f6(node));
+return _4f6(node);
 };
 dojo.html.show=function(node){
 node=dojo.byId(node);
@@ -23287,8 +17380,8 @@
 }
 dojo.html.setStyle(node,"display","none");
 };
-dojo.html.setShowing=function(node,_4f8){
-dojo.html[(_4f8?"show":"hide")](node);
+dojo.html.setShowing=function(node,_4fc){
+dojo.html[(_4fc?"show":"hide")](node);
 };
 dojo.html.isShowing=function(node){
 return (dojo.html.getStyleProperty(node,"display")!="none");
@@ -23304,8 +17397,8 @@
 return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
 }
 };
-dojo.html.setDisplay=function(node,_4fe){
-dojo.html.setStyle(node,"display",((_4fe instanceof String||typeof _4fe=="string")?_4fe:(_4fe?dojo.html.suggestDisplayByTagName(node):"none")));
+dojo.html.setDisplay=function(node,_502){
+dojo.html.setStyle(node,"display",((_502 instanceof String||typeof _502=="string")?_502:(_502?dojo.html.suggestDisplayByTagName(node):"none")));
 };
 dojo.html.isDisplayed=function(node){
 return (dojo.html.getComputedStyle(node,"display")!="none");
@@ -23313,8 +17406,8 @@
 dojo.html.toggleDisplay=function(node){
 return dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
 };
-dojo.html.setVisibility=function(node,_502){
-dojo.html.setStyle(node,"visibility",((_502 instanceof String||typeof _502=="string")?_502:(_502?"visible":"hidden")));
+dojo.html.setVisibility=function(node,_506){
+dojo.html.setStyle(node,"visibility",((_506 instanceof String||typeof _506=="string")?_506:(_506?"visible":"hidden")));
 };
 dojo.html.isVisible=function(node){
 return (dojo.html.getComputedStyle(node,"visibility")!="hidden");
@@ -23322,20 +17415,20 @@
 dojo.html.toggleVisibility=function(node){
 return dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
 };
-dojo.html.setOpacity=function(node,_506,_507){
+dojo.html.setOpacity=function(node,_50a,_50b){
 node=dojo.byId(node);
 var h=dojo.render.html;
-if(!_507){
-if(_506>=1){
+if(!_50b){
+if(_50a>=1){
 if(h.ie){
 dojo.html.clearOpacity(node);
 return;
 }else{
-_506=0.999999;
+_50a=0.999999;
 }
 }else{
-if(_506<0){
-_506=0;
+if(_50a<0){
+_50a=0;
 }
 }
 }
@@ -23343,20 +17436,20 @@
 if(node.nodeName.toLowerCase()=="tr"){
 var tds=node.getElementsByTagName("td");
 for(var x=0;x<tds.length;x++){
-tds[x].style.filter="Alpha(Opacity="+_506*100+")";
+tds[x].style.filter="Alpha(Opacity="+_50a*100+")";
 }
 }
-node.style.filter="Alpha(Opacity="+_506*100+")";
+node.style.filter="Alpha(Opacity="+_50a*100+")";
 }else{
 if(h.moz){
-node.style.opacity=_506;
-node.style.MozOpacity=_506;
+node.style.opacity=_50a;
+node.style.MozOpacity=_50a;
 }else{
 if(h.safari){
-node.style.opacity=_506;
-node.style.KhtmlOpacity=_506;
+node.style.opacity=_50a;
+node.style.KhtmlOpacity=_50a;
 }else{
-node.style.opacity=_506;
+node.style.opacity=_50a;
 }
 }
 }
@@ -23403,73 +17496,73 @@
 if(!node){
 return 0;
 }
-var _513=0;
+var _517=0;
 while(node){
 if(dojo.html.getComputedStyle(node,"position")=="fixed"){
 return 0;
 }
 var val=node[prop];
 if(val){
-_513+=val-0;
+_517+=val-0;
 if(node==dojo.body()){
 break;
 }
 }
 node=node.parentNode;
 }
-return _513;
+return _517;
 };
-dojo.html.setStyleAttributes=function(node,_516){
+dojo.html.setStyleAttributes=function(node,_51a){
 node=dojo.byId(node);
-var _517=_516.replace(/(;)?\s*$/,"").split(";");
-for(var i=0;i<_517.length;i++){
-var _519=_517[i].split(":");
-var name=_519[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
-var _51b=_519[1].replace(/\s*$/,"").replace(/^\s*/,"");
+var _51b=_51a.replace(/(;)?\s*$/,"").split(";");
+for(var i=0;i<_51b.length;i++){
+var _51d=_51b[i].split(":");
+var name=_51d[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
+var _51f=_51d[1].replace(/\s*$/,"").replace(/^\s*/,"");
 switch(name){
 case "opacity":
-dojo.html.setOpacity(node,_51b);
+dojo.html.setOpacity(node,_51f);
 break;
 case "content-height":
-dojo.html.setContentBox(node,{height:_51b});
+dojo.html.setContentBox(node,{height:_51f});
 break;
 case "content-width":
-dojo.html.setContentBox(node,{width:_51b});
+dojo.html.setContentBox(node,{width:_51f});
 break;
 case "outer-height":
-dojo.html.setMarginBox(node,{height:_51b});
+dojo.html.setMarginBox(node,{height:_51f});
 break;
 case "outer-width":
-dojo.html.setMarginBox(node,{width:_51b});
+dojo.html.setMarginBox(node,{width:_51f});
 break;
 default:
-node.style[dojo.html.toCamelCase(name)]=_51b;
+node.style[dojo.html.toCamelCase(name)]=_51f;
 }
 }
 };
 dojo.html.boxSizing={MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PADDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
-dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_51d,_51e){
+dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_521,_522){
 node=dojo.byId(node,node.ownerDocument);
 var ret={x:0,y:0};
 var bs=dojo.html.boxSizing;
-if(!_51e){
-_51e=bs.CONTENT_BOX;
+if(!_522){
+_522=bs.CONTENT_BOX;
 }
-var _521=2;
-var _522;
-switch(_51e){
+var _525=2;
+var _526;
+switch(_522){
 case bs.MARGIN_BOX:
-_522=3;
+_526=3;
 break;
 case bs.BORDER_BOX:
-_522=2;
+_526=2;
 break;
 case bs.PADDING_BOX:
 default:
-_522=1;
+_526=1;
 break;
 case bs.CONTENT_BOX:
-_522=0;
+_526=0;
 break;
 }
 var h=dojo.render.html;
@@ -23481,7 +17574,7 @@
 }
 }else{
 if(document.getBoxObjectFor){
-_521=1;
+_525=1;
 try{
 var bo=document.getBoxObjectFor(node);
 ret.x=bo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
@@ -23491,11 +17584,11 @@
 }
 }else{
 if(node["offsetParent"]){
-var _526;
+var _52a;
 if((h.safari)&&(node.style.getPropertyValue("position")=="absolute")&&(node.parentNode==db)){
-_526=db;
+_52a=db;
 }else{
-_526=db.parentNode;
+_52a=db.parentNode;
 }
 if(node.parentNode!=db){
 var nd=node;
@@ -23505,16 +17598,16 @@
 ret.x-=dojo.html.sumAncestorProperties(nd,"scrollLeft");
 ret.y-=dojo.html.sumAncestorProperties(nd,"scrollTop");
 }
-var _528=node;
+var _52c=node;
 do{
-var n=_528["offsetLeft"];
+var n=_52c["offsetLeft"];
 if(!h.opera||n>0){
 ret.x+=isNaN(n)?0:n;
 }
-var m=_528["offsetTop"];
+var m=_52c["offsetTop"];
 ret.y+=isNaN(m)?0:m;
-_528=_528.offsetParent;
-}while((_528!=_526)&&(_528!=null));
+_52c=_52c.offsetParent;
+}while((_52c!=_52a)&&(_52c!=null));
 }else{
 if(node["x"]&&node["y"]){
 ret.x+=isNaN(node.x)?0:node.x;
@@ -23523,22 +17616,22 @@
 }
 }
 }
-if(_51d){
-var _52b=dojo.html.getScroll();
-ret.y+=_52b.top;
-ret.x+=_52b.left;
+if(_521){
+var _52f=dojo.html.getScroll();
+ret.y+=_52f.top;
+ret.x+=_52f.left;
 }
-var _52c=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
-if(_521>_522){
-for(var i=_522;i<_521;++i){
-ret.y+=_52c[i](node,"top");
-ret.x+=_52c[i](node,"left");
+var _530=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
+if(_525>_526){
+for(var i=_526;i<_525;++i){
+ret.y+=_530[i](node,"top");
+ret.x+=_530[i](node,"left");
 }
 }else{
-if(_521<_522){
-for(var i=_522;i>_521;--i){
-ret.y-=_52c[i-1](node,"top");
-ret.x-=_52c[i-1](node,"left");
+if(_525<_526){
+for(var i=_526;i>_525;--i){
+ret.y-=_530[i-1](node,"top");
+ret.x-=_530[i-1](node,"left");
 }
 }
 }
@@ -23549,12 +17642,12 @@
 dojo.html.isPositionAbsolute=function(node){
 return (dojo.html.getComputedStyle(node,"position")=="absolute");
 };
-dojo.html._sumPixelValues=function(node,_530,_531){
-var _532=0;
-for(var x=0;x<_530.length;x++){
-_532+=dojo.html.getPixelValue(node,_530[x],_531);
+dojo.html._sumPixelValues=function(node,_534,_535){
+var _536=0;
+for(var x=0;x<_534.length;x++){
+_536+=dojo.html.getPixelValue(node,_534[x],_535);
 }
-return _532;
+return _536;
 };
 dojo.html.getMargin=function(node){
 return {width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(dojo.html.getComputedStyle(node,"position")=="absolute")),height:dojo.html._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComputedStyle(node,"position")=="absolute"))};
@@ -23576,8 +17669,8 @@
 };
 dojo.html.getPadBorder=function(node){
 var pad=dojo.html.getPadding(node);
-var _53f=dojo.html.getBorder(node);
-return {width:pad.width+_53f.width,height:pad.height+_53f.height};
+var _543=dojo.html.getBorder(node);
+return {width:pad.width+_543.width,height:pad.height+_543.height};
 };
 dojo.html.getBoxSizing=function(node){
 var h=dojo.render.html;
@@ -23593,14 +17686,14 @@
 if(arguments.length==0){
 node=document.documentElement;
 }
-var _544;
+var _548;
 if(!h.ie){
-_544=dojo.html.getStyle(node,"-moz-box-sizing");
-if(!_544){
-_544=dojo.html.getStyle(node,"box-sizing");
+_548=dojo.html.getStyle(node,"-moz-box-sizing");
+if(!_548){
+_548=dojo.html.getStyle(node,"box-sizing");
 }
 }
-return (_544?_544:bs.CONTENT_BOX);
+return (_548?_548:bs.CONTENT_BOX);
 }
 };
 dojo.html.isBorderBox=function(node){
@@ -23612,53 +17705,53 @@
 };
 dojo.html.getPaddingBox=function(node){
 var box=dojo.html.getBorderBox(node);
-var _549=dojo.html.getBorder(node);
-return {width:box.width-_549.width,height:box.height-_549.height};
+var _54d=dojo.html.getBorder(node);
+return {width:box.width-_54d.width,height:box.height-_54d.height};
 };
 dojo.html.getContentBox=function(node){
 node=dojo.byId(node);
-var _54b=dojo.html.getPadBorder(node);
-return {width:node.offsetWidth-_54b.width,height:node.offsetHeight-_54b.height};
+var _54f=dojo.html.getPadBorder(node);
+return {width:node.offsetWidth-_54f.width,height:node.offsetHeight-_54f.height};
 };
 dojo.html.setContentBox=function(node,args){
 node=dojo.byId(node);
-var _54e=0;
-var _54f=0;
+var _552=0;
+var _553=0;
 var isbb=dojo.html.isBorderBox(node);
-var _551=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _555=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
 var ret={};
 if(typeof args.width!="undefined"){
-_54e=args.width+_551.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_54e);
+_552=args.width+_555.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_552);
 }
 if(typeof args.height!="undefined"){
-_54f=args.height+_551.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_54f);
+_553=args.height+_555.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_553);
 }
 return ret;
 };
 dojo.html.getMarginBox=function(node){
-var _554=dojo.html.getBorderBox(node);
-var _555=dojo.html.getMargin(node);
-return {width:_554.width+_555.width,height:_554.height+_555.height};
+var _558=dojo.html.getBorderBox(node);
+var _559=dojo.html.getMargin(node);
+return {width:_558.width+_559.width,height:_558.height+_559.height};
 };
 dojo.html.setMarginBox=function(node,args){
 node=dojo.byId(node);
-var _558=0;
-var _559=0;
+var _55c=0;
+var _55d=0;
 var isbb=dojo.html.isBorderBox(node);
-var _55b=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
-var _55c=dojo.html.getMargin(node);
+var _55f=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _560=dojo.html.getMargin(node);
 var ret={};
 if(typeof args.width!="undefined"){
-_558=args.width-_55b.width;
-_558-=_55c.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_558);
+_55c=args.width-_55f.width;
+_55c-=_560.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_55c);
 }
 if(typeof args.height!="undefined"){
-_559=args.height-_55b.height;
-_559-=_55c.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_559);
+_55d=args.height-_55f.height;
+_55d-=_560.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_55d);
 }
 return ret;
 };
@@ -23676,31 +17769,31 @@
 return dojo.html.getContentBox(node);
 }
 };
-dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_561,_562,_563){
-if(_561 instanceof Array||typeof _561=="array"){
+dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_565,_566,_567){
+if(_565 instanceof Array||typeof _565=="array"){
 dojo.deprecated("dojo.html.toCoordinateArray","use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead","0.5");
-while(_561.length<4){
-_561.push(0);
+while(_565.length<4){
+_565.push(0);
 }
-while(_561.length>4){
-_561.pop();
+while(_565.length>4){
+_565.pop();
 }
-var ret={left:_561[0],top:_561[1],width:_561[2],height:_561[3]};
+var ret={left:_565[0],top:_565[1],width:_565[2],height:_565[3]};
 }else{
-if(!_561.nodeType&&!(_561 instanceof String||typeof _561=="string")&&("width" in _561||"height" in _561||"left" in _561||"x" in _561||"top" in _561||"y" in _561)){
-var ret={left:_561.left||_561.x||0,top:_561.top||_561.y||0,width:_561.width||0,height:_561.height||0};
+if(!_565.nodeType&&!(_565 instanceof String||typeof _565=="string")&&("width" in _565||"height" in _565||"left" in _565||"x" in _565||"top" in _565||"y" in _565)){
+var ret={left:_565.left||_565.x||0,top:_565.top||_565.y||0,width:_565.width||0,height:_565.height||0};
 }else{
-var node=dojo.byId(_561);
-var pos=dojo.html.abs(node,_562,_563);
-var _567=dojo.html.getMarginBox(node);
-var ret={left:pos.left,top:pos.top,width:_567.width,height:_567.height};
+var node=dojo.byId(_565);
+var pos=dojo.html.abs(node,_566,_567);
+var _56b=dojo.html.getMarginBox(node);
+var ret={left:pos.left,top:pos.top,width:_56b.width,height:_56b.height};
 }
 }
 ret.x=ret.left;
 ret.y=ret.top;
 return ret;
 };
-dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_569){
+dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_56d){
 return dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"width");
 };
 dojo.html.setMarginBoxHeight=dojo.html.setOuterHeight=function(){
@@ -23712,19 +17805,19 @@
 dojo.html.getMarginBoxHeight=dojo.html.getOuterHeight=function(){
 return dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,null,"height");
 };
-dojo.html.getTotalOffset=function(node,type,_56c){
+dojo.html.getTotalOffset=function(node,type,_570){
 return dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",arguments,null,type);
 };
-dojo.html.getAbsoluteX=function(node,_56e){
+dojo.html.getAbsoluteX=function(node,_572){
 return dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,null,"x");
 };
-dojo.html.getAbsoluteY=function(node,_570){
+dojo.html.getAbsoluteY=function(node,_574){
 return dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,null,"y");
 };
-dojo.html.totalOffsetLeft=function(node,_572){
+dojo.html.totalOffsetLeft=function(node,_576){
 return dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",arguments,null,"left");
 };
-dojo.html.totalOffsetTop=function(node,_574){
+dojo.html.totalOffsetTop=function(node,_578){
 return dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",arguments,null,"top");
 };
 dojo.html.getMarginWidth=function(node){
@@ -23763,15 +17856,15 @@
 dojo.html.getContentBoxHeight=dojo.html.getContentHeight=function(){
 return dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments,null,"height");
 };
-dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_57e){
+dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_582){
 return dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,"width");
 };
-dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_580){
+dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_584){
 return dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments,"height");
 };
 dojo.provide("dojo.html.util");
-dojo.html.getElementWindow=function(_581){
-return dojo.html.getDocumentWindow(_581.ownerDocument);
+dojo.html.getElementWindow=function(_585){
+return dojo.html.getDocumentWindow(_585.ownerDocument);
 };
 dojo.html.getDocumentWindow=function(doc){
 if(dojo.render.html.safari&&!doc._parentWindow){
@@ -23793,49 +17886,49 @@
 };
 dojo.html.gravity=function(node,e){
 node=dojo.byId(node);
-var _589=dojo.html.getCursorPosition(e);
+var _58d=dojo.html.getCursorPosition(e);
 with(dojo.html){
-var _58a=getAbsolutePosition(node,true);
+var _58e=getAbsolutePosition(node,true);
 var bb=getBorderBox(node);
-var _58c=_58a.x+(bb.width/2);
-var _58d=_58a.y+(bb.height/2);
+var _590=_58e.x+(bb.width/2);
+var _591=_58e.y+(bb.height/2);
 }
 with(dojo.html.gravity){
-return ((_589.x<_58c?WEST:EAST)|(_589.y<_58d?NORTH:SOUTH));
+return ((_58d.x<_590?WEST:EAST)|(_58d.y<_591?NORTH:SOUTH));
 }
 };
 dojo.html.gravity.NORTH=1;
 dojo.html.gravity.SOUTH=1<<1;
 dojo.html.gravity.EAST=1<<2;
 dojo.html.gravity.WEST=1<<3;
-dojo.html.overElement=function(_58e,e){
-_58e=dojo.byId(_58e);
-var _590=dojo.html.getCursorPosition(e);
-var bb=dojo.html.getBorderBox(_58e);
-var _592=dojo.html.getAbsolutePosition(_58e,true,dojo.html.boxSizing.BORDER_BOX);
-var top=_592.y;
-var _594=top+bb.height;
-var left=_592.x;
-var _596=left+bb.width;
-return (_590.x>=left&&_590.x<=_596&&_590.y>=top&&_590.y<=_594);
+dojo.html.overElement=function(_592,e){
+_592=dojo.byId(_592);
+var _594=dojo.html.getCursorPosition(e);
+var bb=dojo.html.getBorderBox(_592);
+var _596=dojo.html.getAbsolutePosition(_592,true,dojo.html.boxSizing.BORDER_BOX);
+var top=_596.y;
+var _598=top+bb.height;
+var left=_596.x;
+var _59a=left+bb.width;
+return (_594.x>=left&&_594.x<=_59a&&_594.y>=top&&_594.y<=_598);
 };
 dojo.html.renderedTextContent=function(node){
 node=dojo.byId(node);
-var _598="";
+var _59c="";
 if(node==null){
-return _598;
+return _59c;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-var _59a="unknown";
+var _59e="unknown";
 try{
-_59a=dojo.html.getStyle(node.childNodes[i],"display");
+_59e=dojo.html.getStyle(node.childNodes[i],"display");
 }
 catch(E){
 }
-switch(_59a){
+switch(_59e){
 case "block":
 case "list-item":
 case "run-in":
@@ -23848,17 +17941,17 @@
 case "table-column":
 case "table-cell":
 case "table-caption":
-_598+="\n";
-_598+=dojo.html.renderedTextContent(node.childNodes[i]);
-_598+="\n";
+_59c+="\n";
+_59c+=dojo.html.renderedTextContent(node.childNodes[i]);
+_59c+="\n";
 break;
 case "none":
 break;
 default:
 if(node.childNodes[i].tagName&&node.childNodes[i].tagName.toLowerCase()=="br"){
-_598+="\n";
+_59c+="\n";
 }else{
-_598+=dojo.html.renderedTextContent(node.childNodes[i]);
+_59c+=dojo.html.renderedTextContent(node.childNodes[i]);
 }
 break;
 }
@@ -23867,19 +17960,19 @@
 case 2:
 case 4:
 var text=node.childNodes[i].nodeValue;
-var _59c="unknown";
+var _5a0="unknown";
 try{
-_59c=dojo.html.getStyle(node,"text-transform");
+_5a0=dojo.html.getStyle(node,"text-transform");
 }
 catch(E){
 }
-switch(_59c){
+switch(_5a0){
 case "capitalize":
-var _59d=text.split(" ");
-for(var i=0;i<_59d.length;i++){
-_59d[i]=_59d[i].charAt(0).toUpperCase()+_59d[i].substring(1);
+var _5a1=text.split(" ");
+for(var i=0;i<_5a1.length;i++){
+_5a1[i]=_5a1[i].charAt(0).toUpperCase()+_5a1[i].substring(1);
 }
-text=_59d.join(" ");
+text=_5a1.join(" ");
 break;
 case "uppercase":
 text=text.toUpperCase();
@@ -23890,7 +17983,7 @@
 default:
 break;
 }
-switch(_59c){
+switch(_5a0){
 case "nowrap":
 break;
 case "pre-wrap":
@@ -23901,18 +17994,18 @@
 break;
 default:
 text=text.replace(/\s+/," ");
-if(/\s$/.test(_598)){
+if(/\s$/.test(_59c)){
 text.replace(/^\s/,"");
 }
 break;
 }
-_598+=text;
+_59c+=text;
 break;
 default:
 break;
 }
 }
-return _598;
+return _59c;
 };
 dojo.html.createNodesFromText=function(txt,trim){
 if(trim){
@@ -23921,18 +18014,18 @@
 var tn=dojo.doc().createElement("div");
 tn.style.visibility="hidden";
 dojo.body().appendChild(tn);
-var _5a1="none";
+var _5a5="none";
 if((/^<t[dh][\s\r\n>]/i).test(txt.replace(/^\s+/))){
 txt="<table><tbody><tr>"+txt+"</tr></tbody></table>";
-_5a1="cell";
+_5a5="cell";
 }else{
 if((/^<tr[\s\r\n>]/i).test(txt.replace(/^\s+/))){
 txt="<table><tbody>"+txt+"</tbody></table>";
-_5a1="row";
+_5a5="row";
 }else{
 if((/^<(thead|tbody|tfoot)[\s\r\n>]/i).test(txt.replace(/^\s+/))){
 txt="<table>"+txt+"</table>";
-_5a1="section";
+_5a5="section";
 }
 }
 }
@@ -23940,147 +18033,147 @@
 if(tn["normalize"]){
 tn.normalize();
 }
-var _5a2=null;
-switch(_5a1){
+var _5a6=null;
+switch(_5a5){
 case "cell":
-_5a2=tn.getElementsByTagName("tr")[0];
+_5a6=tn.getElementsByTagName("tr")[0];
 break;
 case "row":
-_5a2=tn.getElementsByTagName("tbody")[0];
+_5a6=tn.getElementsByTagName("tbody")[0];
 break;
 case "section":
-_5a2=tn.getElementsByTagName("table")[0];
+_5a6=tn.getElementsByTagName("table")[0];
 break;
 default:
-_5a2=tn;
+_5a6=tn;
 break;
 }
-var _5a3=[];
-for(var x=0;x<_5a2.childNodes.length;x++){
-_5a3.push(_5a2.childNodes[x].cloneNode(true));
+var _5a7=[];
+for(var x=0;x<_5a6.childNodes.length;x++){
+_5a7.push(_5a6.childNodes[x].cloneNode(true));
 }
 tn.style.display="none";
 dojo.html.destroyNode(tn);
-return _5a3;
+return _5a7;
 };
-dojo.html.placeOnScreen=function(node,_5a6,_5a7,_5a8,_5a9,_5aa,_5ab){
-if(_5a6 instanceof Array||typeof _5a6=="array"){
-_5ab=_5aa;
-_5aa=_5a9;
-_5a9=_5a8;
-_5a8=_5a7;
-_5a7=_5a6[1];
-_5a6=_5a6[0];
+dojo.html.placeOnScreen=function(node,_5aa,_5ab,_5ac,_5ad,_5ae,_5af){
+if(_5aa instanceof Array||typeof _5aa=="array"){
+_5af=_5ae;
+_5ae=_5ad;
+_5ad=_5ac;
+_5ac=_5ab;
+_5ab=_5aa[1];
+_5aa=_5aa[0];
 }
-if(_5aa instanceof String||typeof _5aa=="string"){
-_5aa=_5aa.split(",");
+if(_5ae instanceof String||typeof _5ae=="string"){
+_5ae=_5ae.split(",");
 }
-if(!isNaN(_5a8)){
-_5a8=[Number(_5a8),Number(_5a8)];
+if(!isNaN(_5ac)){
+_5ac=[Number(_5ac),Number(_5ac)];
 }else{
-if(!(_5a8 instanceof Array||typeof _5a8=="array")){
-_5a8=[0,0];
+if(!(_5ac instanceof Array||typeof _5ac=="array")){
+_5ac=[0,0];
 }
 }
-var _5ac=dojo.html.getScroll().offset;
+var _5b0=dojo.html.getScroll().offset;
 var view=dojo.html.getViewport();
 node=dojo.byId(node);
-var _5ae=node.style.display;
+var _5b2=node.style.display;
 node.style.display="";
 var bb=dojo.html.getBorderBox(node);
 var w=bb.width;
 var h=bb.height;
-node.style.display=_5ae;
-if(!(_5aa instanceof Array||typeof _5aa=="array")){
-_5aa=["TL"];
+node.style.display=_5b2;
+if(!(_5ae instanceof Array||typeof _5ae=="array")){
+_5ae=["TL"];
 }
-var _5b2,_5b3,_5b4=Infinity,_5b5;
-for(var _5b6=0;_5b6<_5aa.length;++_5b6){
-var _5b7=_5aa[_5b6];
-var _5b8=true;
-var tryX=_5a6-(_5b7.charAt(1)=="L"?0:w)+_5a8[0]*(_5b7.charAt(1)=="L"?1:-1);
-var tryY=_5a7-(_5b7.charAt(0)=="T"?0:h)+_5a8[1]*(_5b7.charAt(0)=="T"?1:-1);
-if(_5a9){
-tryX-=_5ac.x;
-tryY-=_5ac.y;
+var _5b6,_5b7,_5b8=Infinity,_5b9;
+for(var _5ba=0;_5ba<_5ae.length;++_5ba){
+var _5bb=_5ae[_5ba];
+var _5bc=true;
+var tryX=_5aa-(_5bb.charAt(1)=="L"?0:w)+_5ac[0]*(_5bb.charAt(1)=="L"?1:-1);
+var tryY=_5ab-(_5bb.charAt(0)=="T"?0:h)+_5ac[1]*(_5bb.charAt(0)=="T"?1:-1);
+if(_5ad){
+tryX-=_5b0.x;
+tryY-=_5b0.y;
 }
 if(tryX<0){
 tryX=0;
-_5b8=false;
+_5bc=false;
 }
 if(tryY<0){
 tryY=0;
-_5b8=false;
+_5bc=false;
 }
 var x=tryX+w;
 if(x>view.width){
 x=view.width-w;
-_5b8=false;
+_5bc=false;
 }else{
 x=tryX;
 }
-x=Math.max(_5a8[0],x)+_5ac.x;
+x=Math.max(_5ac[0],x)+_5b0.x;
 var y=tryY+h;
 if(y>view.height){
 y=view.height-h;
-_5b8=false;
+_5bc=false;
 }else{
 y=tryY;
 }
-y=Math.max(_5a8[1],y)+_5ac.y;
-if(_5b8){
-_5b2=x;
-_5b3=y;
-_5b4=0;
-_5b5=_5b7;
+y=Math.max(_5ac[1],y)+_5b0.y;
+if(_5bc){
+_5b6=x;
+_5b7=y;
+_5b8=0;
+_5b9=_5bb;
 break;
 }else{
-var dist=Math.pow(x-tryX-_5ac.x,2)+Math.pow(y-tryY-_5ac.y,2);
-if(_5b4>dist){
-_5b4=dist;
-_5b2=x;
-_5b3=y;
-_5b5=_5b7;
+var dist=Math.pow(x-tryX-_5b0.x,2)+Math.pow(y-tryY-_5b0.y,2);
+if(_5b8>dist){
+_5b8=dist;
+_5b6=x;
+_5b7=y;
+_5b9=_5bb;
 }
 }
 }
-if(!_5ab){
-node.style.left=_5b2+"px";
-node.style.top=_5b3+"px";
+if(!_5af){
+node.style.left=_5b6+"px";
+node.style.top=_5b7+"px";
 }
-return {left:_5b2,top:_5b3,x:_5b2,y:_5b3,dist:_5b4,corner:_5b5};
+return {left:_5b6,top:_5b7,x:_5b6,y:_5b7,dist:_5b8,corner:_5b9};
 };
-dojo.html.placeOnScreenPoint=function(node,_5bf,_5c0,_5c1,_5c2){
+dojo.html.placeOnScreenPoint=function(node,_5c3,_5c4,_5c5,_5c6){
 dojo.deprecated("dojo.html.placeOnScreenPoint","use dojo.html.placeOnScreen() instead","0.5");
-return dojo.html.placeOnScreen(node,_5bf,_5c0,_5c1,_5c2,["TL","TR","BL","BR"]);
+return dojo.html.placeOnScreen(node,_5c3,_5c4,_5c5,_5c6,["TL","TR","BL","BR"]);
 };
-dojo.html.placeOnScreenAroundElement=function(node,_5c4,_5c5,_5c6,_5c7,_5c8){
-var best,_5ca=Infinity;
-_5c4=dojo.byId(_5c4);
-var _5cb=_5c4.style.display;
-_5c4.style.display="";
-var mb=dojo.html.getElementBox(_5c4,_5c6);
-var _5cd=mb.width;
-var _5ce=mb.height;
-var _5cf=dojo.html.getAbsolutePosition(_5c4,true,_5c6);
-_5c4.style.display=_5cb;
-for(var _5d0 in _5c7){
-var pos,_5d2,_5d3;
-var _5d4=_5c7[_5d0];
-_5d2=_5cf.x+(_5d0.charAt(1)=="L"?0:_5cd);
-_5d3=_5cf.y+(_5d0.charAt(0)=="T"?0:_5ce);
-pos=dojo.html.placeOnScreen(node,_5d2,_5d3,_5c5,true,_5d4,true);
+dojo.html.placeOnScreenAroundElement=function(node,_5c8,_5c9,_5ca,_5cb,_5cc){
+var best,_5ce=Infinity;
+_5c8=dojo.byId(_5c8);
+var _5cf=_5c8.style.display;
+_5c8.style.display="";
+var mb=dojo.html.getElementBox(_5c8,_5ca);
+var _5d1=mb.width;
+var _5d2=mb.height;
+var _5d3=dojo.html.getAbsolutePosition(_5c8,true,_5ca);
+_5c8.style.display=_5cf;
+for(var _5d4 in _5cb){
+var pos,_5d6,_5d7;
+var _5d8=_5cb[_5d4];
+_5d6=_5d3.x+(_5d4.charAt(1)=="L"?0:_5d1);
+_5d7=_5d3.y+(_5d4.charAt(0)=="T"?0:_5d2);
+pos=dojo.html.placeOnScreen(node,_5d6,_5d7,_5c9,true,_5d8,true);
 if(pos.dist==0){
 best=pos;
 break;
 }else{
-if(_5ca>pos.dist){
-_5ca=pos.dist;
+if(_5ce>pos.dist){
+_5ce=pos.dist;
 best=pos;
 }
 }
 }
-if(!_5c8){
+if(!_5cc){
 node.style.left=best.left+"px";
 node.style.top=best.top+"px";
 }
@@ -24098,14 +18191,14 @@
 if(dojo.render.html.mozilla){
 node.scrollIntoView(false);
 }else{
-var _5d6=node.parentNode;
-var _5d7=_5d6.scrollTop+dojo.html.getBorderBox(_5d6).height;
-var _5d8=node.offsetTop+dojo.html.getMarginBox(node).height;
-if(_5d7<_5d8){
-_5d6.scrollTop+=(_5d8-_5d7);
+var _5da=node.parentNode;
+var _5db=_5da.scrollTop+dojo.html.getBorderBox(_5da).height;
+var _5dc=node.offsetTop+dojo.html.getMarginBox(node).height;
+if(_5db<_5dc){
+_5da.scrollTop+=(_5dc-_5db);
 }else{
-if(_5d6.scrollTop>node.offsetTop){
-_5d6.scrollTop-=(_5d6.scrollTop-node.offsetTop);
+if(_5da.scrollTop>node.offsetTop){
+_5da.scrollTop-=(_5da.scrollTop-node.offsetTop);
 }
 }
 }
@@ -24143,8 +18236,8 @@
 dojo.gfx.color.Color.fromArray=function(arr){
 return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
 };
-dojo.extend(dojo.gfx.color.Color,{toRgb:function(_5df){
-if(_5df){
+dojo.extend(dojo.gfx.color.Color,{toRgb:function(_5e3){
+if(_5e3){
 return this.toRgba();
 }else{
 return [this.r,this.g,this.b];
@@ -24157,62 +18250,62 @@
 return "rgb("+this.toRgb().join()+")";
 },toString:function(){
 return this.toHex();
-},blend:function(_5e0,_5e1){
+},blend:function(_5e4,_5e5){
 var rgb=null;
-if(dojo.lang.isArray(_5e0)){
-rgb=_5e0;
+if(dojo.lang.isArray(_5e4)){
+rgb=_5e4;
 }else{
-if(_5e0 instanceof dojo.gfx.color.Color){
-rgb=_5e0.toRgb();
+if(_5e4 instanceof dojo.gfx.color.Color){
+rgb=_5e4.toRgb();
 }else{
-rgb=new dojo.gfx.color.Color(_5e0).toRgb();
+rgb=new dojo.gfx.color.Color(_5e4).toRgb();
 }
 }
-return dojo.gfx.color.blend(this.toRgb(),rgb,_5e1);
+return dojo.gfx.color.blend(this.toRgb(),rgb,_5e5);
 }});
 dojo.gfx.color.named={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128,128],silver:[192,192,192]};
-dojo.gfx.color.blend=function(a,b,_5e5){
+dojo.gfx.color.blend=function(a,b,_5e9){
 if(typeof a=="string"){
-return dojo.gfx.color.blendHex(a,b,_5e5);
+return dojo.gfx.color.blendHex(a,b,_5e9);
 }
-if(!_5e5){
-_5e5=0;
+if(!_5e9){
+_5e9=0;
 }
-_5e5=Math.min(Math.max(-1,_5e5),1);
-_5e5=((_5e5+1)/2);
+_5e9=Math.min(Math.max(-1,_5e9),1);
+_5e9=((_5e9+1)/2);
 var c=[];
 for(var x=0;x<3;x++){
-c[x]=parseInt(b[x]+((a[x]-b[x])*_5e5));
+c[x]=parseInt(b[x]+((a[x]-b[x])*_5e9));
 }
 return c;
 };
-dojo.gfx.color.blendHex=function(a,b,_5ea){
-return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_5ea));
+dojo.gfx.color.blendHex=function(a,b,_5ee){
+return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_5ee));
 };
-dojo.gfx.color.extractRGB=function(_5eb){
+dojo.gfx.color.extractRGB=function(_5ef){
 var hex="0123456789abcdef";
-_5eb=_5eb.toLowerCase();
-if(_5eb.indexOf("rgb")==0){
-var _5ed=_5eb.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
-var ret=_5ed.splice(1,3);
+_5ef=_5ef.toLowerCase();
+if(_5ef.indexOf("rgb")==0){
+var _5f1=_5ef.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
+var ret=_5f1.splice(1,3);
 return ret;
 }else{
-var _5ef=dojo.gfx.color.hex2rgb(_5eb);
-if(_5ef){
-return _5ef;
+var _5f3=dojo.gfx.color.hex2rgb(_5ef);
+if(_5f3){
+return _5f3;
 }else{
-return dojo.gfx.color.named[_5eb]||[255,255,255];
+return dojo.gfx.color.named[_5ef]||[255,255,255];
 }
 }
 };
 dojo.gfx.color.hex2rgb=function(hex){
-var _5f1="0123456789ABCDEF";
+var _5f5="0123456789ABCDEF";
 var rgb=new Array(3);
 if(hex.indexOf("#")==0){
 hex=hex.substring(1);
 }
 hex=hex.toUpperCase();
-if(hex.replace(new RegExp("["+_5f1+"]","g"),"")!=""){
+if(hex.replace(new RegExp("["+_5f5+"]","g"),"")!=""){
 return null;
 }
 if(hex.length==3){
@@ -24225,7 +18318,7 @@
 rgb[2]=hex.substring(4);
 }
 for(var i=0;i<rgb.length;i++){
-rgb[i]=_5f1.indexOf(rgb[i].charAt(0))*16+_5f1.indexOf(rgb[i].charAt(1));
+rgb[i]=_5f5.indexOf(rgb[i].charAt(0))*16+_5f5.indexOf(rgb[i].charAt(1));
 }
 return rgb;
 };
@@ -24247,10 +18340,10 @@
 return ret.join("");
 };
 dojo.provide("dojo.lfx.Animation");
-dojo.lfx.Line=function(_5fa,end){
-this.start=_5fa;
+dojo.lfx.Line=function(_5fe,end){
+this.start=_5fe;
 this.end=end;
-if(dojo.lang.isArray(_5fa)){
+if(dojo.lang.isArray(_5fe)){
 var diff=[];
 dojo.lang.forEach(this.start,function(s,i){
 diff[i]=this.end[i]-s;
@@ -24263,7 +18356,7 @@
 return res;
 };
 }else{
-var diff=end-_5fa;
+var diff=end-_5fe;
 this.getValue=function(n){
 return (diff*n)+this.start;
 };
@@ -24289,17 +18382,17 @@
 };
 dojo.lfx.IAnimation=function(){
 };
-dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_60a,_60b){
-if(!_60b){
-_60b=_60a;
-_60a=this;
+dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_60e,_60f){
+if(!_60f){
+_60f=_60e;
+_60e=this;
 }
-_60b=dojo.lang.hitch(_60a,_60b);
-var _60c=this[evt]||function(){
+_60f=dojo.lang.hitch(_60e,_60f);
+var _610=this[evt]||function(){
 };
 this[evt]=function(){
-var ret=_60c.apply(this,arguments);
-_60b.apply(this,arguments);
+var ret=_610.apply(this,arguments);
+_60f.apply(this,arguments);
 return ret;
 };
 return this;
@@ -24308,57 +18401,57 @@
 this[evt].apply(this,(args||[]));
 }
 return this;
-},repeat:function(_610){
-this.repeatCount=_610;
+},repeat:function(_614){
+this.repeatCount=_614;
 return this;
 },_active:false,_paused:false});
-dojo.lfx.Animation=function(_611,_612,_613,_614,_615,rate){
+dojo.lfx.Animation=function(_615,_616,_617,_618,_619,rate){
 dojo.lfx.IAnimation.call(this);
-if(dojo.lang.isNumber(_611)||(!_611&&_612.getValue)){
-rate=_615;
-_615=_614;
-_614=_613;
-_613=_612;
-_612=_611;
-_611=null;
+if(dojo.lang.isNumber(_615)||(!_615&&_616.getValue)){
+rate=_619;
+_619=_618;
+_618=_617;
+_617=_616;
+_616=_615;
+_615=null;
 }else{
-if(_611.getValue||dojo.lang.isArray(_611)){
-rate=_614;
-_615=_613;
-_614=_612;
-_613=_611;
-_612=null;
-_611=null;
+if(_615.getValue||dojo.lang.isArray(_615)){
+rate=_618;
+_619=_617;
+_618=_616;
+_617=_615;
+_616=null;
+_615=null;
 }
 }
-if(dojo.lang.isArray(_613)){
-this.curve=new dojo.lfx.Line(_613[0],_613[1]);
+if(dojo.lang.isArray(_617)){
+this.curve=new dojo.lfx.Line(_617[0],_617[1]);
 }else{
-this.curve=_613;
+this.curve=_617;
 }
-if(_612!=null&&_612>0){
-this.duration=_612;
+if(_616!=null&&_616>0){
+this.duration=_616;
 }
-if(_615){
-this.repeatCount=_615;
+if(_619){
+this.repeatCount=_619;
 }
 if(rate){
 this.rate=rate;
 }
-if(_611){
+if(_615){
 dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","onStop","onAnimate"],function(item){
-if(_611[item]){
-this.connect(item,_611[item]);
+if(_615[item]){
+this.connect(item,_615[item]);
 }
 },this);
 }
-if(_614&&dojo.lang.isFunction(_614)){
-this.easing=_614;
+if(_618&&dojo.lang.isFunction(_618)){
+this.easing=_618;
 }
 };
 dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_618,_619){
-if(_619){
+dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_61c,_61d){
+if(_61d){
 clearTimeout(this._timer);
 this._active=false;
 this._paused=false;
@@ -24370,10 +18463,10 @@
 }
 this.fire("handler",["beforeBegin"]);
 this.fire("beforeBegin");
-if(_618>0){
+if(_61c>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_619);
-}),_618);
+this.play(null,_61d);
+}),_61c);
 return this;
 }
 this._startTime=new Date().valueOf();
@@ -24384,16 +18477,16 @@
 this._active=true;
 this._paused=false;
 var step=this._percent/100;
-var _61b=this.curve.getValue(step);
+var _61f=this.curve.getValue(step);
 if(this._percent==0){
 if(!this._startRepeatCount){
 this._startRepeatCount=this.repeatCount;
 }
-this.fire("handler",["begin",_61b]);
-this.fire("onBegin",[_61b]);
+this.fire("handler",["begin",_61f]);
+this.fire("onBegin",[_61f]);
 }
-this.fire("handler",["play",_61b]);
-this.fire("onPlay",[_61b]);
+this.fire("handler",["play",_61f]);
+this.fire("onPlay",[_61f]);
 this._cycle();
 return this;
 },pause:function(){
@@ -24402,28 +18495,28 @@
 return this;
 }
 this._paused=true;
-var _61c=this.curve.getValue(this._percent/100);
-this.fire("handler",["pause",_61c]);
-this.fire("onPause",[_61c]);
+var _620=this.curve.getValue(this._percent/100);
+this.fire("handler",["pause",_620]);
+this.fire("onPause",[_620]);
 return this;
-},gotoPercent:function(pct,_61e){
+},gotoPercent:function(pct,_622){
 clearTimeout(this._timer);
 this._active=true;
 this._paused=true;
 this._percent=pct;
-if(_61e){
+if(_622){
 this.play();
 }
 return this;
-},stop:function(_61f){
+},stop:function(_623){
 clearTimeout(this._timer);
 var step=this._percent/100;
-if(_61f){
+if(_623){
 step=1;
 }
-var _621=this.curve.getValue(step);
-this.fire("handler",["stop",_621]);
-this.fire("onStop",[_621]);
+var _625=this.curve.getValue(step);
+this.fire("handler",["stop",_625]);
+this.fire("onStop",[_625]);
 this._active=false;
 this._paused=false;
 return this;
@@ -24448,9 +18541,9 @@
 if((this.easing)&&(dojo.lang.isFunction(this.easing))){
 step=this.easing(step);
 }
-var _624=this.curve.getValue(step);
-this.fire("handler",["animate",_624]);
-this.fire("onAnimate",[_624]);
+var _628=this.curve.getValue(step);
+this.fire("handler",["animate",_628]);
+this.fire("onAnimate",[_628]);
 if(step<1){
 this._timer=setTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
 }else{
@@ -24474,44 +18567,44 @@
 }
 return this;
 }});
-dojo.lfx.Combine=function(_625){
+dojo.lfx.Combine=function(_629){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._animsEnded=0;
-var _626=arguments;
-if(_626.length==1&&(dojo.lang.isArray(_626[0])||dojo.lang.isArrayLike(_626[0]))){
-_626=_626[0];
+var _62a=arguments;
+if(_62a.length==1&&(dojo.lang.isArray(_62a[0])||dojo.lang.isArrayLike(_62a[0]))){
+_62a=_62a[0];
 }
-dojo.lang.forEach(_626,function(anim){
+dojo.lang.forEach(_62a,function(anim){
 this._anims.push(anim);
 anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
 },this);
 };
 dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_628,_629){
+dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_62c,_62d){
 if(!this._anims.length){
 return this;
 }
 this.fire("beforeBegin");
-if(_628>0){
+if(_62c>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_629);
-}),_628);
+this.play(null,_62d);
+}),_62c);
 return this;
 }
-if(_629||this._anims[0].percent==0){
+if(_62d||this._anims[0].percent==0){
 this.fire("onBegin");
 }
 this.fire("onPlay");
-this._animsCall("play",null,_629);
+this._animsCall("play",null,_62d);
 return this;
 },pause:function(){
 this.fire("onPause");
 this._animsCall("pause");
 return this;
-},stop:function(_62a){
+},stop:function(_62e){
 this.fire("onStop");
-this._animsCall("stop",_62a);
+this._animsCall("stop",_62e);
 return this;
 },_onAnimsEnded:function(){
 this._animsEnded++;
@@ -24519,31 +18612,31 @@
 this.fire("onEnd");
 }
 return this;
-},_animsCall:function(_62b){
+},_animsCall:function(_62f){
 var args=[];
 if(arguments.length>1){
 for(var i=1;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 }
-var _62e=this;
+var _632=this;
 dojo.lang.forEach(this._anims,function(anim){
-anim[_62b](args);
-},_62e);
+anim[_62f](args);
+},_632);
 return this;
 }});
-dojo.lfx.Chain=function(_630){
+dojo.lfx.Chain=function(_634){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._currAnim=-1;
-var _631=arguments;
-if(_631.length==1&&(dojo.lang.isArray(_631[0])||dojo.lang.isArrayLike(_631[0]))){
-_631=_631[0];
+var _635=arguments;
+if(_635.length==1&&(dojo.lang.isArray(_635[0])||dojo.lang.isArrayLike(_635[0]))){
+_635=_635[0];
 }
-var _632=this;
-dojo.lang.forEach(_631,function(anim,i,_635){
+var _636=this;
+dojo.lang.forEach(_635,function(anim,i,_639){
 this._anims.push(anim);
-if(i<_635.length-1){
+if(i<_639.length-1){
 anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
 }else{
 anim.connect("onEnd",dojo.lang.hitch(this,function(){
@@ -24553,28 +18646,28 @@
 },this);
 };
 dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_636,_637){
+dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_63a,_63b){
 if(!this._anims.length){
 return this;
 }
-if(_637||!this._anims[this._currAnim]){
+if(_63b||!this._anims[this._currAnim]){
 this._currAnim=0;
 }
-var _638=this._anims[this._currAnim];
+var _63c=this._anims[this._currAnim];
 this.fire("beforeBegin");
-if(_636>0){
+if(_63a>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_637);
-}),_636);
+this.play(null,_63b);
+}),_63a);
 return this;
 }
-if(_638){
+if(_63c){
 if(this._currAnim==0){
 this.fire("handler",["begin",this._currAnim]);
 this.fire("onBegin",[this._currAnim]);
 }
 this.fire("onPlay",[this._currAnim]);
-_638.play(null,_637);
+_63c.play(null,_63b);
 }
 return this;
 },pause:function(){
@@ -24590,9 +18683,9 @@
 if(this._currAnim==-1){
 this._currAnim=0;
 }
-var _639=this._anims[this._currAnim];
-if(_639){
-if(!_639._active||_639._paused){
+var _63d=this._anims[this._currAnim];
+if(_63d){
+if(!_63d._active||_63d._paused){
 this.play();
 }else{
 this.pause();
@@ -24600,12 +18693,12 @@
 }
 return this;
 },stop:function(){
-var _63a=this._anims[this._currAnim];
-if(_63a){
-_63a.stop();
+var _63e=this._anims[this._currAnim];
+if(_63e){
+_63e.stop();
 this.fire("onStop",[this._currAnim]);
 }
-return _63a;
+return _63e;
 },_playNext:function(){
 if(this._currAnim==-1||this._anims.length==0){
 return this;
@@ -24616,82 +18709,82 @@
 }
 return this;
 }});
-dojo.lfx.combine=function(_63b){
-var _63c=arguments;
+dojo.lfx.combine=function(_63f){
+var _640=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_63c=arguments[0];
+_640=arguments[0];
 }
-if(_63c.length==1){
-return _63c[0];
+if(_640.length==1){
+return _640[0];
 }
-return new dojo.lfx.Combine(_63c);
+return new dojo.lfx.Combine(_640);
 };
-dojo.lfx.chain=function(_63d){
-var _63e=arguments;
+dojo.lfx.chain=function(_641){
+var _642=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_63e=arguments[0];
+_642=arguments[0];
 }
-if(_63e.length==1){
-return _63e[0];
+if(_642.length==1){
+return _642[0];
 }
-return new dojo.lfx.Chain(_63e);
+return new dojo.lfx.Chain(_642);
 };
 dojo.provide("dojo.html.color");
 dojo.html.getBackgroundColor=function(node){
 node=dojo.byId(node);
-var _640;
+var _644;
 do{
-_640=dojo.html.getStyle(node,"background-color");
-if(_640.toLowerCase()=="rgba(0, 0, 0, 0)"){
-_640="transparent";
+_644=dojo.html.getStyle(node,"background-color");
+if(_644.toLowerCase()=="rgba(0, 0, 0, 0)"){
+_644="transparent";
 }
 if(node==document.getElementsByTagName("body")[0]){
 node=null;
 break;
 }
 node=node.parentNode;
-}while(node&&dojo.lang.inArray(["transparent",""],_640));
-if(_640=="transparent"){
-_640=[255,255,255,0];
+}while(node&&dojo.lang.inArray(["transparent",""],_644));
+if(_644=="transparent"){
+_644=[255,255,255,0];
 }else{
-_640=dojo.gfx.color.extractRGB(_640);
+_644=dojo.gfx.color.extractRGB(_644);
 }
-return _640;
+return _644;
 };
 dojo.provide("dojo.lfx.html");
-dojo.lfx.html._byId=function(_641){
-if(!_641){
+dojo.lfx.html._byId=function(_645){
+if(!_645){
 return [];
 }
-if(dojo.lang.isArrayLike(_641)){
-if(!_641.alreadyChecked){
+if(dojo.lang.isArrayLike(_645)){
+if(!_645.alreadyChecked){
 var n=[];
-dojo.lang.forEach(_641,function(node){
+dojo.lang.forEach(_645,function(node){
 n.push(dojo.byId(node));
 });
 n.alreadyChecked=true;
 return n;
 }else{
-return _641;
+return _645;
 }
 }else{
 var n=[];
-n.push(dojo.byId(_641));
+n.push(dojo.byId(_645));
 n.alreadyChecked=true;
 return n;
 }
 };
-dojo.lfx.html.propertyAnimation=function(_644,_645,_646,_647,_648){
-_644=dojo.lfx.html._byId(_644);
-var _649={"propertyMap":_645,"nodes":_644,"duration":_646,"easing":_647||dojo.lfx.easeDefault};
-var _64a=function(args){
+dojo.lfx.html.propertyAnimation=function(_648,_649,_64a,_64b,_64c){
+_648=dojo.lfx.html._byId(_648);
+var _64d={"propertyMap":_649,"nodes":_648,"duration":_64a,"easing":_64b||dojo.lfx.easeDefault};
+var _64e=function(args){
 if(args.nodes.length==1){
 var pm=args.propertyMap;
 if(!dojo.lang.isArray(args.propertyMap)){
 var parr=[];
-for(var _64e in pm){
-pm[_64e].property=_64e;
-parr.push(pm[_64e]);
+for(var _652 in pm){
+pm[_652].property=_652;
+parr.push(pm[_652]);
 }
 pm=args.propertyMap=parr;
 }
@@ -24706,24 +18799,24 @@
 });
 }
 };
-var _650=function(_651){
-var _652=[];
-dojo.lang.forEach(_651,function(c){
-_652.push(Math.round(c));
+var _654=function(_655){
+var _656=[];
+dojo.lang.forEach(_655,function(c){
+_656.push(Math.round(c));
 });
-return _652;
+return _656;
 };
-var _654=function(n,_656){
+var _658=function(n,_65a){
 n=dojo.byId(n);
 if(!n||!n.style){
 return;
 }
-for(var s in _656){
+for(var s in _65a){
 try{
 if(s=="opacity"){
-dojo.html.setOpacity(n,_656[s]);
+dojo.html.setOpacity(n,_65a[s]);
 }else{
-n.style[s]=_656[s];
+n.style[s]=_65a[s];
 }
 }
 catch(e){
@@ -24731,10 +18824,10 @@
 }
 }
 };
-var _658=function(_659){
-this._properties=_659;
-this.diffs=new Array(_659.length);
-dojo.lang.forEach(_659,function(prop,i){
+var _65c=function(_65d){
+this._properties=_65d;
+this.diffs=new Array(_65d.length);
+dojo.lang.forEach(_65d,function(prop,i){
 if(dojo.lang.isFunction(prop.start)){
 prop.start=prop.start(prop,i);
 }
@@ -24755,43 +18848,43 @@
 this.getValue=function(n){
 var ret={};
 dojo.lang.forEach(this._properties,function(prop,i){
-var _660=null;
+var _664=null;
 if(dojo.lang.isArray(prop.start)){
 }else{
 if(prop.start instanceof dojo.gfx.color.Color){
-_660=(prop.units||"rgb")+"(";
+_664=(prop.units||"rgb")+"(";
 for(var j=0;j<prop.startRgb.length;j++){
-_660+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
+_664+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
 }
-_660+=")";
+_664+=")";
 }else{
-_660=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
+_664=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
 }
 }
-ret[dojo.html.toCamelCase(prop.property)]=_660;
+ret[dojo.html.toCamelCase(prop.property)]=_664;
 },this);
 return ret;
 };
 };
 var anim=new dojo.lfx.Animation({beforeBegin:function(){
-_64a(_649);
-anim.curve=new _658(_649.propertyMap);
-},onAnimate:function(_663){
-dojo.lang.forEach(_649.nodes,function(node){
-_654(node,_663);
+_64e(_64d);
+anim.curve=new _65c(_64d.propertyMap);
+},onAnimate:function(_667){
+dojo.lang.forEach(_64d.nodes,function(node){
+_658(node,_667);
 });
-}},_649.duration,null,_649.easing);
-if(_648){
-for(var x in _648){
-if(dojo.lang.isFunction(_648[x])){
-anim.connect(x,anim,_648[x]);
+}},_64d.duration,null,_64d.easing);
+if(_64c){
+for(var x in _64c){
+if(dojo.lang.isFunction(_64c[x])){
+anim.connect(x,anim,_64c[x]);
 }
 }
 }
 return anim;
 };
-dojo.lfx.html._makeFadeable=function(_666){
-var _667=function(node){
+dojo.lfx.html._makeFadeable=function(_66a){
+var _66b=function(node){
 if(dojo.render.html.ie){
 if((node.style.zoom.length==0)&&(dojo.html.getStyle(node,"zoom")=="normal")){
 node.style.zoom="1";
@@ -24801,100 +18894,100 @@
 }
 }
 };
-if(dojo.lang.isArrayLike(_666)){
-dojo.lang.forEach(_666,_667);
+if(dojo.lang.isArrayLike(_66a)){
+dojo.lang.forEach(_66a,_66b);
 }else{
-_667(_666);
+_66b(_66a);
 }
 };
-dojo.lfx.html.fade=function(_669,_66a,_66b,_66c,_66d){
-_669=dojo.lfx.html._byId(_669);
-var _66e={property:"opacity"};
-if(!dj_undef("start",_66a)){
-_66e.start=_66a.start;
+dojo.lfx.html.fade=function(_66d,_66e,_66f,_670,_671){
+_66d=dojo.lfx.html._byId(_66d);
+var _672={property:"opacity"};
+if(!dj_undef("start",_66e)){
+_672.start=_66e.start;
 }else{
-_66e.start=function(){
-return dojo.html.getOpacity(_669[0]);
+_672.start=function(){
+return dojo.html.getOpacity(_66d[0]);
 };
 }
-if(!dj_undef("end",_66a)){
-_66e.end=_66a.end;
+if(!dj_undef("end",_66e)){
+_672.end=_66e.end;
 }else{
 dojo.raise("dojo.lfx.html.fade needs an end value");
 }
-var anim=dojo.lfx.propertyAnimation(_669,[_66e],_66b,_66c);
+var anim=dojo.lfx.propertyAnimation(_66d,[_672],_66f,_670);
 anim.connect("beforeBegin",function(){
-dojo.lfx.html._makeFadeable(_669);
+dojo.lfx.html._makeFadeable(_66d);
 });
-if(_66d){
+if(_671){
 anim.connect("onEnd",function(){
-_66d(_669,anim);
+_671(_66d,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.fadeIn=function(_670,_671,_672,_673){
-return dojo.lfx.html.fade(_670,{end:1},_671,_672,_673);
+dojo.lfx.html.fadeIn=function(_674,_675,_676,_677){
+return dojo.lfx.html.fade(_674,{end:1},_675,_676,_677);
 };
-dojo.lfx.html.fadeOut=function(_674,_675,_676,_677){
-return dojo.lfx.html.fade(_674,{end:0},_675,_676,_677);
+dojo.lfx.html.fadeOut=function(_678,_679,_67a,_67b){
+return dojo.lfx.html.fade(_678,{end:0},_679,_67a,_67b);
 };
-dojo.lfx.html.fadeShow=function(_678,_679,_67a,_67b){
-_678=dojo.lfx.html._byId(_678);
-dojo.lang.forEach(_678,function(node){
+dojo.lfx.html.fadeShow=function(_67c,_67d,_67e,_67f){
+_67c=dojo.lfx.html._byId(_67c);
+dojo.lang.forEach(_67c,function(node){
 dojo.html.setOpacity(node,0);
 });
-var anim=dojo.lfx.html.fadeIn(_678,_679,_67a,_67b);
+var anim=dojo.lfx.html.fadeIn(_67c,_67d,_67e,_67f);
 anim.connect("beforeBegin",function(){
-if(dojo.lang.isArrayLike(_678)){
-dojo.lang.forEach(_678,dojo.html.show);
+if(dojo.lang.isArrayLike(_67c)){
+dojo.lang.forEach(_67c,dojo.html.show);
 }else{
-dojo.html.show(_678);
+dojo.html.show(_67c);
 }
 });
 return anim;
 };
-dojo.lfx.html.fadeHide=function(_67e,_67f,_680,_681){
-var anim=dojo.lfx.html.fadeOut(_67e,_67f,_680,function(){
-if(dojo.lang.isArrayLike(_67e)){
-dojo.lang.forEach(_67e,dojo.html.hide);
+dojo.lfx.html.fadeHide=function(_682,_683,_684,_685){
+var anim=dojo.lfx.html.fadeOut(_682,_683,_684,function(){
+if(dojo.lang.isArrayLike(_682)){
+dojo.lang.forEach(_682,dojo.html.hide);
 }else{
-dojo.html.hide(_67e);
+dojo.html.hide(_682);
 }
-if(_681){
-_681(_67e,anim);
+if(_685){
+_685(_682,anim);
 }
 });
 return anim;
 };
-dojo.lfx.html.wipeIn=function(_683,_684,_685,_686){
-_683=dojo.lfx.html._byId(_683);
-var _687=[];
-dojo.lang.forEach(_683,function(node){
-var _689={};
-var _68a,_68b,_68c;
+dojo.lfx.html.wipeIn=function(_687,_688,_689,_68a){
+_687=dojo.lfx.html._byId(_687);
+var _68b=[];
+dojo.lang.forEach(_687,function(node){
+var _68d={};
+var _68e,_68f,_690;
 with(node.style){
-_68a=top;
-_68b=left;
-_68c=position;
+_68e=top;
+_68f=left;
+_690=position;
 top="-9999px";
 left="-9999px";
 position="absolute";
 display="";
 }
-var _68d=dojo.html.getBorderBox(node).height;
+var _691=dojo.html.getBorderBox(node).height;
 with(node.style){
-top=_68a;
-left=_68b;
-position=_68c;
+top=_68e;
+left=_68f;
+position=_690;
 display="none";
 }
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){
-return _68d;
-}}},_684,_685);
+return _691;
+}}},_688,_689);
 anim.connect("beforeBegin",function(){
-_689.overflow=node.style.overflow;
-_689.height=node.style.height;
+_68d.overflow=node.style.overflow;
+_68d.height=node.style.height;
 with(node.style){
 overflow="hidden";
 height="1px";
@@ -24903,27 +18996,27 @@
 });
 anim.connect("onEnd",function(){
 with(node.style){
-overflow=_689.overflow;
-height=_689.height;
+overflow=_68d.overflow;
+height=_68d.height;
 }
-if(_686){
-_686(node,anim);
+if(_68a){
+_68a(node,anim);
 }
 });
-_687.push(anim);
+_68b.push(anim);
 });
-return dojo.lfx.combine(_687);
+return dojo.lfx.combine(_68b);
 };
-dojo.lfx.html.wipeOut=function(_68f,_690,_691,_692){
-_68f=dojo.lfx.html._byId(_68f);
-var _693=[];
-dojo.lang.forEach(_68f,function(node){
-var _695={};
+dojo.lfx.html.wipeOut=function(_693,_694,_695,_696){
+_693=dojo.lfx.html._byId(_693);
+var _697=[];
+dojo.lang.forEach(_693,function(node){
+var _699={};
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:function(){
 return dojo.html.getContentBox(node).height;
-},end:1}},_690,_691,{"beforeBegin":function(){
-_695.overflow=node.style.overflow;
-_695.height=node.style.height;
+},end:1}},_694,_695,{"beforeBegin":function(){
+_699.overflow=node.style.overflow;
+_699.height=node.style.height;
 with(node.style){
 overflow="hidden";
 }
@@ -24931,251 +19024,251 @@
 },"onEnd":function(){
 dojo.html.hide(node);
 with(node.style){
-overflow=_695.overflow;
-height=_695.height;
+overflow=_699.overflow;
+height=_699.height;
 }
-if(_692){
-_692(node,anim);
+if(_696){
+_696(node,anim);
 }
 }});
-_693.push(anim);
+_697.push(anim);
 });
-return dojo.lfx.combine(_693);
+return dojo.lfx.combine(_697);
 };
-dojo.lfx.html.slideTo=function(_697,_698,_699,_69a,_69b){
-_697=dojo.lfx.html._byId(_697);
-var _69c=[];
-var _69d=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_698)){
+dojo.lfx.html.slideTo=function(_69b,_69c,_69d,_69e,_69f){
+_69b=dojo.lfx.html._byId(_69b);
+var _6a0=[];
+var _6a1=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_69c)){
 dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
-_698={top:_698[0],left:_698[1]};
+_69c={top:_69c[0],left:_69c[1]};
 }
-dojo.lang.forEach(_697,function(node){
+dojo.lang.forEach(_69b,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _6a2=node;
+var _6a6=node;
 return function(){
-var pos=_69d(_6a2,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_69d(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_69d(node,"left"))||0);
+var pos=_6a1(_6a6,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_6a1(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_6a1(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_6a2,true);
-dojo.html.setStyleAttributes(_6a2,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_6a6,true);
+dojo.html.setStyleAttributes(_6a6,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_698.top||0)},"left":{start:left,end:(_698.left||0)}},_699,_69a,{"beforeBegin":init});
-if(_69b){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_69c.top||0)},"left":{start:left,end:(_69c.left||0)}},_69d,_69e,{"beforeBegin":init});
+if(_69f){
 anim.connect("onEnd",function(){
-_69b(_697,anim);
+_69f(_69b,anim);
 });
 }
-_69c.push(anim);
+_6a0.push(anim);
 });
-return dojo.lfx.combine(_69c);
+return dojo.lfx.combine(_6a0);
 };
-dojo.lfx.html.slideBy=function(_6a6,_6a7,_6a8,_6a9,_6aa){
-_6a6=dojo.lfx.html._byId(_6a6);
-var _6ab=[];
-var _6ac=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_6a7)){
+dojo.lfx.html.slideBy=function(_6aa,_6ab,_6ac,_6ad,_6ae){
+_6aa=dojo.lfx.html._byId(_6aa);
+var _6af=[];
+var _6b0=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_6ab)){
 dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
-_6a7={top:_6a7[0],left:_6a7[1]};
+_6ab={top:_6ab[0],left:_6ab[1]};
 }
-dojo.lang.forEach(_6a6,function(node){
+dojo.lang.forEach(_6aa,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _6b1=node;
+var _6b5=node;
 return function(){
-var pos=_6ac(_6b1,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_6ac(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_6ac(node,"left"))||0);
+var pos=_6b0(_6b5,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_6b0(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_6b0(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_6b1,true);
-dojo.html.setStyleAttributes(_6b1,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_6b5,true);
+dojo.html.setStyleAttributes(_6b5,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_6a7.top||0)},"left":{start:left,end:left+(_6a7.left||0)}},_6a8,_6a9).connect("beforeBegin",init);
-if(_6aa){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_6ab.top||0)},"left":{start:left,end:left+(_6ab.left||0)}},_6ac,_6ad).connect("beforeBegin",init);
+if(_6ae){
 anim.connect("onEnd",function(){
-_6aa(_6a6,anim);
+_6ae(_6aa,anim);
 });
 }
-_6ab.push(anim);
+_6af.push(anim);
 });
-return dojo.lfx.combine(_6ab);
+return dojo.lfx.combine(_6af);
 };
-dojo.lfx.html.explode=function(_6b5,_6b6,_6b7,_6b8,_6b9){
+dojo.lfx.html.explode=function(_6b9,_6ba,_6bb,_6bc,_6bd){
 var h=dojo.html;
-_6b5=dojo.byId(_6b5);
-_6b6=dojo.byId(_6b6);
-var _6bb=h.toCoordinateObject(_6b5,true);
-var _6bc=document.createElement("div");
-h.copyStyle(_6bc,_6b6);
-if(_6b6.explodeClassName){
-_6bc.className=_6b6.explodeClassName;
+_6b9=dojo.byId(_6b9);
+_6ba=dojo.byId(_6ba);
+var _6bf=h.toCoordinateObject(_6b9,true);
+var _6c0=document.createElement("div");
+h.copyStyle(_6c0,_6ba);
+if(_6ba.explodeClassName){
+_6c0.className=_6ba.explodeClassName;
 }
-with(_6bc.style){
+with(_6c0.style){
 position="absolute";
 display="none";
-var _6bd=h.getStyle(_6b5,"background-color");
-backgroundColor=_6bd?_6bd.toLowerCase():"transparent";
+var _6c1=h.getStyle(_6b9,"background-color");
+backgroundColor=_6c1?_6c1.toLowerCase():"transparent";
 backgroundColor=(backgroundColor=="transparent")?"rgb(221, 221, 221)":backgroundColor;
 }
-dojo.body().appendChild(_6bc);
-with(_6b6.style){
+dojo.body().appendChild(_6c0);
+with(_6ba.style){
 visibility="hidden";
 display="block";
 }
-var _6be=h.toCoordinateObject(_6b6,true);
-with(_6b6.style){
+var _6c2=h.toCoordinateObject(_6ba,true);
+with(_6ba.style){
 display="none";
 visibility="visible";
 }
-var _6bf={opacity:{start:0.5,end:1}};
+var _6c3={opacity:{start:0.5,end:1}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_6bf[type]={start:_6bb[type],end:_6be[type]};
+_6c3[type]={start:_6bf[type],end:_6c2[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_6bc,_6bf,_6b7,_6b8,{"beforeBegin":function(){
-h.setDisplay(_6bc,"block");
+var anim=new dojo.lfx.propertyAnimation(_6c0,_6c3,_6bb,_6bc,{"beforeBegin":function(){
+h.setDisplay(_6c0,"block");
 },"onEnd":function(){
-h.setDisplay(_6b6,"block");
-_6bc.parentNode.removeChild(_6bc);
+h.setDisplay(_6ba,"block");
+_6c0.parentNode.removeChild(_6c0);
 }});
-if(_6b9){
+if(_6bd){
 anim.connect("onEnd",function(){
-_6b9(_6b6,anim);
+_6bd(_6ba,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.implode=function(_6c2,end,_6c4,_6c5,_6c6){
+dojo.lfx.html.implode=function(_6c6,end,_6c8,_6c9,_6ca){
 var h=dojo.html;
-_6c2=dojo.byId(_6c2);
+_6c6=dojo.byId(_6c6);
 end=dojo.byId(end);
-var _6c8=dojo.html.toCoordinateObject(_6c2,true);
-var _6c9=dojo.html.toCoordinateObject(end,true);
-var _6ca=document.createElement("div");
-dojo.html.copyStyle(_6ca,_6c2);
-if(_6c2.explodeClassName){
-_6ca.className=_6c2.explodeClassName;
+var _6cc=dojo.html.toCoordinateObject(_6c6,true);
+var _6cd=dojo.html.toCoordinateObject(end,true);
+var _6ce=document.createElement("div");
+dojo.html.copyStyle(_6ce,_6c6);
+if(_6c6.explodeClassName){
+_6ce.className=_6c6.explodeClassName;
 }
-dojo.html.setOpacity(_6ca,0.3);
-with(_6ca.style){
+dojo.html.setOpacity(_6ce,0.3);
+with(_6ce.style){
 position="absolute";
 display="none";
-backgroundColor=h.getStyle(_6c2,"background-color").toLowerCase();
+backgroundColor=h.getStyle(_6c6,"background-color").toLowerCase();
 }
-dojo.body().appendChild(_6ca);
-var _6cb={opacity:{start:1,end:0.5}};
+dojo.body().appendChild(_6ce);
+var _6cf={opacity:{start:1,end:0.5}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_6cb[type]={start:_6c8[type],end:_6c9[type]};
+_6cf[type]={start:_6cc[type],end:_6cd[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_6ca,_6cb,_6c4,_6c5,{"beforeBegin":function(){
-dojo.html.hide(_6c2);
-dojo.html.show(_6ca);
+var anim=new dojo.lfx.propertyAnimation(_6ce,_6cf,_6c8,_6c9,{"beforeBegin":function(){
+dojo.html.hide(_6c6);
+dojo.html.show(_6ce);
 },"onEnd":function(){
-_6ca.parentNode.removeChild(_6ca);
+_6ce.parentNode.removeChild(_6ce);
 }});
-if(_6c6){
+if(_6ca){
 anim.connect("onEnd",function(){
-_6c6(_6c2,anim);
+_6ca(_6c6,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.highlight=function(_6ce,_6cf,_6d0,_6d1,_6d2){
-_6ce=dojo.lfx.html._byId(_6ce);
-var _6d3=[];
-dojo.lang.forEach(_6ce,function(node){
-var _6d5=dojo.html.getBackgroundColor(node);
+dojo.lfx.html.highlight=function(_6d2,_6d3,_6d4,_6d5,_6d6){
+_6d2=dojo.lfx.html._byId(_6d2);
+var _6d7=[];
+dojo.lang.forEach(_6d2,function(node){
+var _6d9=dojo.html.getBackgroundColor(node);
 var bg=dojo.html.getStyle(node,"background-color").toLowerCase();
-var _6d7=dojo.html.getStyle(node,"background-image");
-var _6d8=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
-while(_6d5.length>3){
-_6d5.pop();
+var _6db=dojo.html.getStyle(node,"background-image");
+var _6dc=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
+while(_6d9.length>3){
+_6d9.pop();
 }
-var rgb=new dojo.gfx.color.Color(_6cf);
-var _6da=new dojo.gfx.color.Color(_6d5);
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_6da}},_6d0,_6d1,{"beforeBegin":function(){
-if(_6d7){
+var rgb=new dojo.gfx.color.Color(_6d3);
+var _6de=new dojo.gfx.color.Color(_6d9);
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_6de}},_6d4,_6d5,{"beforeBegin":function(){
+if(_6db){
 node.style.backgroundImage="none";
 }
 node.style.backgroundColor="rgb("+rgb.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_6d7){
-node.style.backgroundImage=_6d7;
+if(_6db){
+node.style.backgroundImage=_6db;
 }
-if(_6d8){
+if(_6dc){
 node.style.backgroundColor="transparent";
 }
-if(_6d2){
-_6d2(node,anim);
+if(_6d6){
+_6d6(node,anim);
 }
 }});
-_6d3.push(anim);
+_6d7.push(anim);
 });
-return dojo.lfx.combine(_6d3);
+return dojo.lfx.combine(_6d7);
 };
-dojo.lfx.html.unhighlight=function(_6dc,_6dd,_6de,_6df,_6e0){
-_6dc=dojo.lfx.html._byId(_6dc);
-var _6e1=[];
-dojo.lang.forEach(_6dc,function(node){
-var _6e3=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
-var rgb=new dojo.gfx.color.Color(_6dd);
-var _6e5=dojo.html.getStyle(node,"background-image");
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_6e3,end:rgb}},_6de,_6df,{"beforeBegin":function(){
-if(_6e5){
+dojo.lfx.html.unhighlight=function(_6e0,_6e1,_6e2,_6e3,_6e4){
+_6e0=dojo.lfx.html._byId(_6e0);
+var _6e5=[];
+dojo.lang.forEach(_6e0,function(node){
+var _6e7=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
+var rgb=new dojo.gfx.color.Color(_6e1);
+var _6e9=dojo.html.getStyle(node,"background-image");
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_6e7,end:rgb}},_6e2,_6e3,{"beforeBegin":function(){
+if(_6e9){
 node.style.backgroundImage="none";
 }
-node.style.backgroundColor="rgb("+_6e3.toRgb().join(",")+")";
+node.style.backgroundColor="rgb("+_6e7.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_6e0){
-_6e0(node,anim);
+if(_6e4){
+_6e4(node,anim);
 }
 }});
-_6e1.push(anim);
+_6e5.push(anim);
 });
-return dojo.lfx.combine(_6e1);
+return dojo.lfx.combine(_6e5);
 };
 dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
 dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.html"]});
 dojo.provide("dojo.lfx.*");
 dojo.provide("dojo.lfx.toggle");
-dojo.lfx.toggle.plain={show:function(node,_6e8,_6e9,_6ea){
+dojo.lfx.toggle.plain={show:function(node,_6ec,_6ed,_6ee){
 dojo.html.show(node);
-if(dojo.lang.isFunction(_6ea)){
-_6ea();
-}
-},hide:function(node,_6ec,_6ed,_6ee){
-dojo.html.hide(node);
 if(dojo.lang.isFunction(_6ee)){
 _6ee();
 }
+},hide:function(node,_6f0,_6f1,_6f2){
+dojo.html.hide(node);
+if(dojo.lang.isFunction(_6f2)){
+_6f2();
+}
 }};
-dojo.lfx.toggle.fade={show:function(node,_6f0,_6f1,_6f2){
-dojo.lfx.fadeShow(node,_6f0,_6f1,_6f2).play();
-},hide:function(node,_6f4,_6f5,_6f6){
-dojo.lfx.fadeHide(node,_6f4,_6f5,_6f6).play();
+dojo.lfx.toggle.fade={show:function(node,_6f4,_6f5,_6f6){
+dojo.lfx.fadeShow(node,_6f4,_6f5,_6f6).play();
+},hide:function(node,_6f8,_6f9,_6fa){
+dojo.lfx.fadeHide(node,_6f8,_6f9,_6fa).play();
 }};
-dojo.lfx.toggle.wipe={show:function(node,_6f8,_6f9,_6fa){
-dojo.lfx.wipeIn(node,_6f8,_6f9,_6fa).play();
-},hide:function(node,_6fc,_6fd,_6fe){
-dojo.lfx.wipeOut(node,_6fc,_6fd,_6fe).play();
+dojo.lfx.toggle.wipe={show:function(node,_6fc,_6fd,_6fe){
+dojo.lfx.wipeIn(node,_6fc,_6fd,_6fe).play();
+},hide:function(node,_700,_701,_702){
+dojo.lfx.wipeOut(node,_700,_701,_702).play();
 }};
-dojo.lfx.toggle.explode={show:function(node,_700,_701,_702,_703){
-dojo.lfx.explode(_703||{x:0,y:0,width:0,height:0},node,_700,_701,_702).play();
-},hide:function(node,_705,_706,_707,_708){
-dojo.lfx.implode(node,_708||{x:0,y:0,width:0,height:0},_705,_706,_707).play();
+dojo.lfx.toggle.explode={show:function(node,_704,_705,_706,_707){
+dojo.lfx.explode(_707||{x:0,y:0,width:0,height:0},node,_704,_705,_706).play();
+},hide:function(node,_709,_70a,_70b,_70c){
+dojo.lfx.implode(node,_70c||{x:0,y:0,width:0,height:0},_709,_70a,_70b).play();
 }};
 dojo.provide("dojo.widget.HtmlWidget");
 dojo.declare("dojo.widget.HtmlWidget",dojo.widget.DomWidget,{templateCssPath:null,templatePath:null,lang:"",toggle:"plain",toggleDuration:150,initialize:function(args,frag){
@@ -25186,13 +19279,13 @@
 this.toggleObj=dojo.lfx.toggle[this.toggle.toLowerCase()]||dojo.lfx.toggle.plain;
 },createNodesFromText:function(txt,wrap){
 return dojo.html.createNodesFromText(txt,wrap);
-},destroyRendering:function(_70f){
+},destroyRendering:function(_713){
 try{
 if(this.bgIframe){
 this.bgIframe.remove();
 delete this.bgIframe;
 }
-if(!_70f&&this.domNode){
+if(!_713&&this.domNode){
 dojo.event.browser.clean(this.domNode);
 }
 dojo.widget.HtmlWidget.superclass.destroyRendering.call(this);
@@ -25229,13 +19322,13 @@
 return false;
 }
 var wh=dojo.html.getMarginBox(this.domNode);
-var _713=w||wh.width;
-var _714=h||wh.height;
-if(this.width==_713&&this.height==_714){
+var _717=w||wh.width;
+var _718=h||wh.height;
+if(this.width==_717&&this.height==_718){
 return false;
 }
-this.width=_713;
-this.height=_714;
+this.width=_717;
+this.height=_718;
 return true;
 },checkSize:function(){
 if(!this._isResized()){
@@ -25252,9 +19345,9 @@
 dojo.lang.setTimeout(this,this.onResized,0);
 }
 },onResized:function(){
-dojo.lang.forEach(this.children,function(_717){
-if(_717.checkSize){
-_717.checkSize();
+dojo.lang.forEach(this.children,function(_71b){
+if(_71b.checkSize){
+_71b.checkSize();
 }
 });
 }});
@@ -25277,12 +19370,12 @@
 dojo.string.trimEnd=function(str){
 return dojo.string.trim(str,-1);
 };
-dojo.string.repeat=function(str,_71e,_71f){
+dojo.string.repeat=function(str,_722,_723){
 var out="";
-for(var i=0;i<_71e;i++){
+for(var i=0;i<_722;i++){
 out+=str;
-if(_71f&&i<_71e-1){
-out+=_71f;
+if(_723&&i<_722-1){
+out+=_723;
 }
 }
 return out;
@@ -25314,59 +19407,71 @@
 dojo.provide("dojo.io.common");
 dojo.io.transports=[];
 dojo.io.hdlrFuncNames=["load","error","timeout"];
-dojo.io.Request=function(url,_72e,_72f,_730){
+dojo.io.Request=function(url,_732,_733,_734){
 if((arguments.length==1)&&(arguments[0].constructor==Object)){
 this.fromKwArgs(arguments[0]);
 }else{
 this.url=url;
-if(_72e){
-this.mimetype=_72e;
+if(_732){
+this.mimetype=_732;
 }
-if(_72f){
-this.transport=_72f;
+if(_733){
+this.transport=_733;
 }
 if(arguments.length>=4){
-this.changeUrl=_730;
+this.changeUrl=_734;
 }
 }
 };
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_733,_734){
-},error:function(type,_736,_737,_738){
-},timeout:function(type,_73a,_73b,_73c){
-},handle:function(type,data,_73f,_740){
+dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jsonFilter:function(_735){
+if((this.mimetype=="text/json-comment-filtered")||(this.mimetype=="application/json-comment-filtered")){
+var _736=_735.indexOf("/*");
+var _737=_735.lastIndexOf("*/");
+if((_736==-1)||(_737==-1)){
+dojo.debug("your JSON wasn't comment filtered!");
+return "";
+}
+return _735.substring(_736+2,_737);
+}
+dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+return _735;
+},load:function(type,data,_73a,_73b){
+},error:function(type,_73d,_73e,_73f){
+},timeout:function(type,_741,_742,_743){
+},handle:function(type,data,_746,_747){
 },timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_741){
-if(_741["url"]){
-_741.url=_741.url.toString();
+},fromKwArgs:function(_748){
+if(_748["url"]){
+_748.url=_748.url.toString();
 }
-if(_741["formNode"]){
-_741.formNode=dojo.byId(_741.formNode);
+if(_748["formNode"]){
+_748.formNode=dojo.byId(_748.formNode);
 }
-if(!_741["method"]&&_741["formNode"]&&_741["formNode"].method){
-_741.method=_741["formNode"].method;
+if(!_748["method"]&&_748["formNode"]&&_748["formNode"].method){
+_748.method=_748["formNode"].method;
 }
-if(!_741["handle"]&&_741["handler"]){
-_741.handle=_741.handler;
+if(!_748["handle"]&&_748["handler"]){
+_748.handle=_748.handler;
 }
-if(!_741["load"]&&_741["loaded"]){
-_741.load=_741.loaded;
+if(!_748["load"]&&_748["loaded"]){
+_748.load=_748.loaded;
 }
-if(!_741["changeUrl"]&&_741["changeURL"]){
-_741.changeUrl=_741.changeURL;
+if(!_748["changeUrl"]&&_748["changeURL"]){
+_748.changeUrl=_748.changeURL;
 }
-_741.encoding=dojo.lang.firstValued(_741["encoding"],djConfig["bindEncoding"],"");
-_741.sendTransport=dojo.lang.firstValued(_741["sendTransport"],djConfig["ioSendTransport"],false);
-var _742=dojo.lang.isFunction;
+_748.encoding=dojo.lang.firstValued(_748["encoding"],djConfig["bindEncoding"],"");
+_748.sendTransport=dojo.lang.firstValued(_748["sendTransport"],djConfig["ioSendTransport"],false);
+var _749=dojo.lang.isFunction;
 for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
 var fn=dojo.io.hdlrFuncNames[x];
-if(_741[fn]&&_742(_741[fn])){
+if(_748[fn]&&_749(_748[fn])){
 continue;
 }
-if(_741["handle"]&&_742(_741["handle"])){
-_741[fn]=_741.handle;
+if(_748["handle"]&&_749(_748["handle"])){
+_748[fn]=_748.handle;
 }
 }
-dojo.lang.mixin(this,_741);
+dojo.lang.mixin(this,_748);
 }});
 dojo.io.Error=function(msg,type,num){
 this.message=msg;
@@ -25377,79 +19482,79 @@
 this.push(name);
 this[name]=dojo.io[name];
 };
-dojo.io.bind=function(_749){
-if(!(_749 instanceof dojo.io.Request)){
+dojo.io.bind=function(_750){
+if(!(_750 instanceof dojo.io.Request)){
 try{
-_749=new dojo.io.Request(_749);
+_750=new dojo.io.Request(_750);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _74a="";
-if(_749["transport"]){
-_74a=_749["transport"];
-if(!this[_74a]){
-dojo.io.sendBindError(_749,"No dojo.io.bind() transport with name '"+_749["transport"]+"'.");
-return _749;
+var _751="";
+if(_750["transport"]){
+_751=_750["transport"];
+if(!this[_751]){
+dojo.io.sendBindError(_750,"No dojo.io.bind() transport with name '"+_750["transport"]+"'.");
+return _750;
 }
-if(!this[_74a].canHandle(_749)){
-dojo.io.sendBindError(_749,"dojo.io.bind() transport with name '"+_749["transport"]+"' cannot handle this type of request.");
-return _749;
+if(!this[_751].canHandle(_750)){
+dojo.io.sendBindError(_750,"dojo.io.bind() transport with name '"+_750["transport"]+"' cannot handle this type of request.");
+return _750;
 }
 }else{
 for(var x=0;x<dojo.io.transports.length;x++){
 var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_749))){
-_74a=tmp;
+if((this[tmp])&&(this[tmp].canHandle(_750))){
+_751=tmp;
 break;
 }
 }
-if(_74a==""){
-dojo.io.sendBindError(_749,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _749;
+if(_751==""){
+dojo.io.sendBindError(_750,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
+return _750;
 }
 }
-this[_74a].bind(_749);
-_749.bindSuccess=true;
-return _749;
+this[_751].bind(_750);
+_750.bindSuccess=true;
+return _750;
 };
-dojo.io.sendBindError=function(_74d,_74e){
-if((typeof _74d.error=="function"||typeof _74d.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _74f=new dojo.io.Error(_74e);
+dojo.io.sendBindError=function(_754,_755){
+if((typeof _754.error=="function"||typeof _754.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
+var _756=new dojo.io.Error(_755);
 setTimeout(function(){
-_74d[(typeof _74d.error=="function")?"error":"handle"]("error",_74f,null,_74d);
+_754[(typeof _754.error=="function")?"error":"handle"]("error",_756,null,_754);
 },50);
 }else{
-dojo.raise(_74e);
+dojo.raise(_755);
 }
 };
-dojo.io.queueBind=function(_750){
-if(!(_750 instanceof dojo.io.Request)){
+dojo.io.queueBind=function(_757){
+if(!(_757 instanceof dojo.io.Request)){
 try{
-_750=new dojo.io.Request(_750);
+_757=new dojo.io.Request(_757);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _751=_750.load;
-_750.load=function(){
+var _758=_757.load;
+_757.load=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_751.apply(this,arguments);
+var ret=_758.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-var _753=_750.error;
-_750.error=function(){
+var _75a=_757.error;
+_757.error=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_753.apply(this,arguments);
+var ret=_75a.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-dojo.io._bindQueue.push(_750);
+dojo.io._bindQueue.push(_757);
 dojo.io._dispatchNextQueueBind();
-return _750;
+return _757;
 };
 dojo.io._dispatchNextQueueBind=function(){
 if(!dojo.io._queueBindInFlight){
@@ -25463,48 +19568,48 @@
 };
 dojo.io._bindQueue=[];
 dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_756,last){
-var enc=/utf/i.test(_756||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _759=[];
-var _75a=new Object();
+dojo.io.argsFromMap=function(map,_75d,last){
+var enc=/utf/i.test(_75d||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _760=[];
+var _761=new Object();
 for(var name in map){
-var _75c=function(elt){
+var _763=function(elt){
 var val=enc(name)+"="+enc(elt);
-_759[(last==name)?"push":"unshift"](val);
+_760[(last==name)?"push":"unshift"](val);
 };
-if(!_75a[name]){
-var _75f=map[name];
-if(dojo.lang.isArray(_75f)){
-dojo.lang.forEach(_75f,_75c);
+if(!_761[name]){
+var _766=map[name];
+if(dojo.lang.isArray(_766)){
+dojo.lang.forEach(_766,_763);
 }else{
-_75c(_75f);
+_763(_766);
 }
 }
 }
-return _759.join("&");
+return _760.join("&");
 };
-dojo.io.setIFrameSrc=function(_760,src,_762){
+dojo.io.setIFrameSrc=function(_767,src,_769){
 try{
 var r=dojo.render.html;
-if(!_762){
+if(!_769){
 if(r.safari){
-_760.location=src;
+_767.location=src;
 }else{
-frames[_760.name].location=src;
+frames[_767.name].location=src;
 }
 }else{
 var idoc;
 if(r.ie){
-idoc=_760.contentWindow.document;
+idoc=_767.contentWindow.document;
 }else{
 if(r.safari){
-idoc=_760.document;
+idoc=_767.document;
 }else{
-idoc=_760.contentWindow;
+idoc=_767.contentWindow;
 }
 }
 if(!idoc){
-_760.location=src;
+_767.location=src;
 return;
 }else{
 idoc.location.replace(src);
@@ -25517,9 +19622,9 @@
 }
 };
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_765,hash){
+dojo.string.substituteParams=function(_76c,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _765.replace(/\%\{(\w+)\}/g,function(_768,key){
+return _76c.replace(/\%\{(\w+)\}/g,function(_76f,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -25533,11 +19638,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _76b=str.split(" ");
-for(var i=0;i<_76b.length;i++){
-_76b[i]=_76b[i].charAt(0).toUpperCase()+_76b[i].substring(1);
+var _772=str.split(" ");
+for(var i=0;i<_772.length;i++){
+_772[i]=_772[i].charAt(0).toUpperCase()+_772[i].substring(1);
 }
-return _76b.join(" ");
+return _772.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -25550,15 +19655,15 @@
 return str;
 }
 var ret="";
-var _770=escape(str);
-var _771,re=/%u([0-9A-F]{4})/i;
-while((_771=_770.match(re))){
-var num=Number("0x"+_771[1]);
-var _774=escape("&#"+num+";");
-ret+=_770.substring(0,_771.index)+_774;
-_770=_770.substring(_771.index+_771[0].length);
+var _777=escape(str);
+var _778,re=/%u([0-9A-F]{4})/i;
+while((_778=_777.match(re))){
+var num=Number("0x"+_778[1]);
+var _77b=escape("&#"+num+";");
+ret+=_777.substring(0,_778.index)+_77b;
+_777=_777.substring(_778.index+_778[0].length);
 }
-ret+=_770.replace(/\+/g,"%2B");
+ret+=_777.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -25583,9 +19688,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_779){
+dojo.string.escapeXml=function(str,_780){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_779){
+if(!_780){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -25608,8 +19713,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_782){
-if(_782){
+dojo.string.endsWith=function(str,end,_789){
+if(_789){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -25626,12 +19731,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_786,_787){
-if(_787){
+dojo.string.startsWith=function(str,_78d,_78e){
+if(_78e){
 str=str.toLowerCase();
-_786=_786.toLowerCase();
+_78d=_78d.toLowerCase();
 }
-return str.indexOf(_786)==0;
+return str.indexOf(_78d)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -25649,12 +19754,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_78d){
-if(_78d=="\n"){
+dojo.string.normalizeNewlines=function(text,_794){
+if(_794=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_78d=="\r"){
+if(_794=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -25663,20 +19768,20 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_78f){
-var _790=[];
-for(var i=0,_792=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_796){
+var _797=[];
+for(var i=0,_799=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_78f){
-_790.push(str.substring(_792,i));
-_792=i+1;
+if(str.charAt(i)==_796){
+_797.push(str.substring(_799,i));
+_799=i+1;
 }
 }
-_790.push(str.substr(_792));
-return _790;
+_797.push(str.substr(_799));
+return _797;
 };
 dojo.provide("dojo.undo.browser");
 try{
@@ -25722,12 +19827,12 @@
 this.bookmarkAnchor.href=hash;
 if(dojo.render.html.ie){
 url=this._loadIframeHistory();
-var _797=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_799){
+var _79e=args["back"]||args["backButton"]||args["handle"];
+var tcb=function(_7a0){
 if(window.location.hash!=""){
 setTimeout("window.location.href = '"+hash+"';",1);
 }
-_797.apply(this,[_799]);
+_79e.apply(this,[_7a0]);
 };
 if(args["back"]){
 args.back=tcb;
@@ -25740,13 +19845,13 @@
 }
 }
 }
-var _79a=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_79c){
+var _7a1=args["forward"]||args["forwardButton"]||args["handle"];
+var tfw=function(_7a3){
 if(window.location.hash!=""){
 window.location.href=hash;
 }
-if(_79a){
-_79a.apply(this,[_79c]);
+if(_7a1){
+_7a1.apply(this,[_7a3]);
 }
 };
 if(args["forward"]){
@@ -25791,10 +19896,10 @@
 }
 }
 }
-},iframeLoaded:function(evt,_79f){
+},iframeLoaded:function(evt,_7a6){
 if(!dojo.render.html.opera){
-var _7a0=this._getUrlQuery(_79f.href);
-if(_7a0==null){
+var _7a7=this._getUrlQuery(_7a6.href);
+if(_7a7==null){
 if(this.historyStack.length==1){
 this.handleBackButton();
 }
@@ -25804,17 +19909,17 @@
 this.moveForward=false;
 return;
 }
-if(this.historyStack.length>=2&&_7a0==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
+if(this.historyStack.length>=2&&_7a7==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
 this.handleBackButton();
 }else{
-if(this.forwardStack.length>0&&_7a0==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
+if(this.forwardStack.length>0&&_7a7==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
 this.handleForwardButton();
 }
 }
 }
 },handleBackButton:function(){
-var _7a1=this.historyStack.pop();
-if(!_7a1){
+var _7a8=this.historyStack.pop();
+if(!_7a8){
 return;
 }
 var last=this.historyStack[this.historyStack.length-1];
@@ -25834,7 +19939,7 @@
 }
 }
 }
-this.forwardStack.push(_7a1);
+this.forwardStack.push(_7a8);
 },handleForwardButton:function(){
 var last=this.forwardStack.pop();
 if(!last){
@@ -25855,11 +19960,11 @@
 },_createState:function(url,args,hash){
 return {"url":url,"kwArgs":args,"urlHash":hash};
 },_getUrlQuery:function(url){
-var _7a8=url.split("?");
-if(_7a8.length<2){
+var _7af=url.split("?");
+if(_7af.length<2){
 return null;
 }else{
-return _7a8[1];
+return _7af[1];
 }
 },_loadIframeHistory:function(){
 var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
@@ -25870,26 +19975,26 @@
 dojo.provide("dojo.io.BrowserIO");
 if(!dj_undef("window")){
 dojo.io.checkChildrenForFile=function(node){
-var _7ab=false;
-var _7ac=node.getElementsByTagName("input");
-dojo.lang.forEach(_7ac,function(_7ad){
-if(_7ab){
+var _7b2=false;
+var _7b3=node.getElementsByTagName("input");
+dojo.lang.forEach(_7b3,function(_7b4){
+if(_7b2){
 return;
 }
-if(_7ad.getAttribute("type")=="file"){
-_7ab=true;
+if(_7b4.getAttribute("type")=="file"){
+_7b2=true;
 }
 });
-return _7ab;
+return _7b2;
 };
-dojo.io.formHasFile=function(_7ae){
-return dojo.io.checkChildrenForFile(_7ae);
+dojo.io.formHasFile=function(_7b5){
+return dojo.io.checkChildrenForFile(_7b5);
 };
-dojo.io.updateNode=function(node,_7b0){
+dojo.io.updateNode=function(node,_7b7){
 node=dojo.byId(node);
-var args=_7b0;
-if(dojo.lang.isString(_7b0)){
-args={url:_7b0};
+var args=_7b7;
+if(dojo.lang.isString(_7b7)){
+args={url:_7b7};
 }
 args.mimetype="text/html";
 args.load=function(t,d,e){
@@ -25904,18 +20009,18 @@
 var type=(node.type||"").toLowerCase();
 return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
 };
-dojo.io.encodeForm=function(_7b7,_7b8,_7b9){
-if((!_7b7)||(!_7b7.tagName)||(!_7b7.tagName.toLowerCase()=="form")){
+dojo.io.encodeForm=function(_7be,_7bf,_7c0){
+if((!_7be)||(!_7be.tagName)||(!_7be.tagName.toLowerCase()=="form")){
 dojo.raise("Attempted to encode a non-form element.");
 }
-if(!_7b9){
-_7b9=dojo.io.formFilter;
+if(!_7c0){
+_7c0=dojo.io.formFilter;
 }
-var enc=/utf/i.test(_7b8||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _7bb=[];
-for(var i=0;i<_7b7.elements.length;i++){
-var elm=_7b7.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_7b9(elm)){
+var enc=/utf/i.test(_7bf||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _7c2=[];
+for(var i=0;i<_7be.elements.length;i++){
+var elm=_7be.elements[i];
+if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_7c0(elm)){
 continue;
 }
 var name=enc(elm.name);
@@ -25923,30 +20028,30 @@
 if(type=="select-multiple"){
 for(var j=0;j<elm.options.length;j++){
 if(elm.options[j].selected){
-_7bb.push(name+"="+enc(elm.options[j].value));
+_7c2.push(name+"="+enc(elm.options[j].value));
 }
 }
 }else{
 if(dojo.lang.inArray(["radio","checkbox"],type)){
 if(elm.checked){
-_7bb.push(name+"="+enc(elm.value));
+_7c2.push(name+"="+enc(elm.value));
 }
 }else{
-_7bb.push(name+"="+enc(elm.value));
+_7c2.push(name+"="+enc(elm.value));
 }
 }
 }
-var _7c1=_7b7.getElementsByTagName("input");
-for(var i=0;i<_7c1.length;i++){
-var _7c2=_7c1[i];
-if(_7c2.type.toLowerCase()=="image"&&_7c2.form==_7b7&&_7b9(_7c2)){
-var name=enc(_7c2.name);
-_7bb.push(name+"="+enc(_7c2.value));
-_7bb.push(name+".x=0");
-_7bb.push(name+".y=0");
+var _7c8=_7be.getElementsByTagName("input");
+for(var i=0;i<_7c8.length;i++){
+var _7c9=_7c8[i];
+if(_7c9.type.toLowerCase()=="image"&&_7c9.form==_7be&&_7c0(_7c9)){
+var name=enc(_7c9.name);
+_7c2.push(name+"="+enc(_7c9.value));
+_7c2.push(name+".x=0");
+_7c2.push(name+".y=0");
 }
 }
-return _7bb.join("&")+"&";
+return _7c2.join("&")+"&";
 };
 dojo.io.FormBind=function(args){
 this.bindArgs={};
@@ -25980,11 +20085,11 @@
 this.connect(node,"onclick","click");
 }
 }
-var _7c8=form.getElementsByTagName("input");
-for(var i=0;i<_7c8.length;i++){
-var _7c9=_7c8[i];
-if(_7c9.type.toLowerCase()=="image"&&_7c9.form==form){
-this.connect(_7c9,"onclick","click");
+var _7cf=form.getElementsByTagName("input");
+for(var i=0;i<_7cf.length;i++){
+var _7d0=_7cf[i];
+if(_7d0.type.toLowerCase()=="image"&&_7d0.form==form){
+this.connect(_7d0,"onclick","click");
 }
 }
 },onSubmit:function(form){
@@ -26002,26 +20107,26 @@
 this.clickedButton=node;
 },formFilter:function(node){
 var type=(node.type||"").toLowerCase();
-var _7d0=false;
+var _7d7=false;
 if(node.disabled||!node.name){
-_7d0=false;
+_7d7=false;
 }else{
 if(dojo.lang.inArray(["submit","button","image"],type)){
 if(!this.clickedButton){
 this.clickedButton=node;
 }
-_7d0=node==this.clickedButton;
+_7d7=node==this.clickedButton;
 }else{
-_7d0=!dojo.lang.inArray(["file","submit","reset","button"],type);
+_7d7=!dojo.lang.inArray(["file","submit","reset","button"],type);
 }
 }
-return _7d0;
-},connect:function(_7d1,_7d2,_7d3){
+return _7d7;
+},connect:function(_7d8,_7d9,_7da){
 if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_7d1,_7d2,this,_7d3);
+dojo.event.connect(_7d8,_7d9,this,_7da);
 }else{
-var fcn=dojo.lang.hitch(this,_7d3);
-_7d1[_7d2]=function(e){
+var fcn=dojo.lang.hitch(this,_7da);
+_7d8[_7d9]=function(e){
 if(!e){
 e=window.event;
 }
@@ -26038,40 +20143,40 @@
 }
 }});
 dojo.io.XMLHTTPTransport=new function(){
-var _7d6=this;
-var _7d7={};
+var _7dd=this;
+var _7de={};
 this.useCache=false;
 this.preventCache=false;
-function getCacheKey(url,_7d9,_7da){
-return url+"|"+_7d9+"|"+_7da.toLowerCase();
+function getCacheKey(url,_7e0,_7e1){
+return url+"|"+_7e0+"|"+_7e1.toLowerCase();
 }
-function addToCache(url,_7dc,_7dd,http){
-_7d7[getCacheKey(url,_7dc,_7dd)]=http;
+function addToCache(url,_7e3,_7e4,http){
+_7de[getCacheKey(url,_7e3,_7e4)]=http;
 }
-function getFromCache(url,_7e0,_7e1){
-return _7d7[getCacheKey(url,_7e0,_7e1)];
+function getFromCache(url,_7e7,_7e8){
+return _7de[getCacheKey(url,_7e7,_7e8)];
 }
 this.clearCache=function(){
-_7d7={};
+_7de={};
 };
-function doLoad(_7e2,http,url,_7e5,_7e6){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
+function doLoad(_7e9,http,url,_7ec,_7ed){
+if(((http.status>=200)&&(http.status<300))||(http.status==304)||(http.status==1223)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
 var ret;
-if(_7e2.method.toLowerCase()=="head"){
-var _7e8=http.getAllResponseHeaders();
+if(_7e9.method.toLowerCase()=="head"){
+var _7ef=http.getAllResponseHeaders();
 ret={};
 ret.toString=function(){
-return _7e8;
+return _7ef;
 };
-var _7e9=_7e8.split(/[\r\n]+/g);
-for(var i=0;i<_7e9.length;i++){
-var pair=_7e9[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+var _7f0=_7ef.split(/[\r\n]+/g);
+for(var i=0;i<_7f0.length;i++){
+var pair=_7f0[i].match(/^([^:]+)\s*:\s*(.+)$/i);
 if(pair){
 ret[pair[1]]=pair[2];
 }
 }
 }else{
-if(_7e2.mimetype=="text/javascript"){
+if(_7e9.mimetype=="text/javascript"){
 try{
 ret=dj_eval(http.responseText);
 }
@@ -26081,9 +20186,9 @@
 ret=null;
 }
 }else{
-if(_7e2.mimetype=="text/json"||_7e2.mimetype=="application/json"){
+if(_7e9.mimetype.substr(0,9)=="text/json"||_7e9.mimetype.substr(0,16)=="application/json"){
 try{
-ret=dj_eval("("+http.responseText+")");
+ret=dj_eval("("+_7e9.jsonFilter(http.responseText)+")");
 }
 catch(e){
 dojo.debug(e);
@@ -26091,7 +20196,7 @@
 ret=false;
 }
 }else{
-if((_7e2.mimetype=="application/xml")||(_7e2.mimetype=="text/xml")){
+if((_7e9.mimetype=="application/xml")||(_7e9.mimetype=="text/xml")){
 ret=http.responseXML;
 if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
 ret=dojo.dom.createDocumentFromText(http.responseText);
@@ -26102,22 +20207,22 @@
 }
 }
 }
-if(_7e6){
-addToCache(url,_7e5,_7e2.method,http);
+if(_7ed){
+addToCache(url,_7ec,_7e9.method,http);
 }
-_7e2[(typeof _7e2.load=="function")?"load":"handle"]("load",ret,http,_7e2);
+_7e9[(typeof _7e9.load=="function")?"load":"handle"]("load",ret,http,_7e9);
 }else{
-var _7ec=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_7e2[(typeof _7e2.error=="function")?"error":"handle"]("error",_7ec,http,_7e2);
+var _7f3=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
+_7e9[(typeof _7e9.error=="function")?"error":"handle"]("error",_7f3,http,_7e9);
 }
 }
-function setHeaders(http,_7ee){
-if(_7ee["headers"]){
-for(var _7ef in _7ee["headers"]){
-if(_7ef.toLowerCase()=="content-type"&&!_7ee["contentType"]){
-_7ee["contentType"]=_7ee["headers"][_7ef];
+function setHeaders(http,_7f5){
+if(_7f5["headers"]){
+for(var _7f6 in _7f5["headers"]){
+if(_7f6.toLowerCase()=="content-type"&&!_7f5["contentType"]){
+_7f5["contentType"]=_7f5["headers"][_7f6];
 }else{
-http.setRequestHeader(_7ef,_7ee["headers"][_7ef]);
+http.setRequestHeader(_7f6,_7f5["headers"][_7f6]);
 }
 }
 }
@@ -26131,7 +20236,7 @@
 };
 this.watchInFlight=function(){
 var now=null;
-if(!dojo.hostenv._blockAsync&&!_7d6._blockAsync){
+if(!dojo.hostenv._blockAsync&&!_7dd._blockAsync){
 for(var x=this.inFlight.length-1;x>=0;x--){
 try{
 var tif=this.inFlight[x];
@@ -26159,8 +20264,8 @@
 }
 catch(e){
 try{
-var _7f3=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_7f3,tif.http,tif.req);
+var _7fa=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
+tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_7fa,tif.http,tif.req);
 }
 catch(e2){
 dojo.debug("XMLHttpTransport error callback failed: "+e2);
@@ -26175,74 +20280,75 @@
 }
 this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
 };
-var _7f4=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_7f5){
-return _7f4&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_7f5["mimetype"].toLowerCase()||""))&&!(_7f5["formNode"]&&dojo.io.formHasFile(_7f5["formNode"]));
+var _7fb=dojo.hostenv.getXmlhttpObject()?true:false;
+this.canHandle=function(_7fc){
+var mlc=_7fc["mimetype"].toLowerCase()||"";
+return _7fb&&((dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript"],mlc))||(mlc.substr(0,9)=="text/json"||mlc.substr(0,16)=="application/json"))&&!(_7fc["formNode"]&&dojo.io.formHasFile(_7fc["formNode"]));
 };
 this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_7f6){
-if(!_7f6["url"]){
-if(!_7f6["formNode"]&&(_7f6["backButton"]||_7f6["back"]||_7f6["changeUrl"]||_7f6["watchForURL"])&&(!djConfig.preventBackButtonFix)){
+this.bind=function(_7fe){
+if(!_7fe["url"]){
+if(!_7fe["formNode"]&&(_7fe["backButton"]||_7fe["back"]||_7fe["changeUrl"]||_7fe["watchForURL"])&&(!djConfig.preventBackButtonFix)){
 dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_7f6);
+dojo.undo.browser.addToHistory(_7fe);
 return true;
 }
 }
-var url=_7f6.url;
-var _7f8="";
-if(_7f6["formNode"]){
-var ta=_7f6.formNode.getAttribute("action");
-if((ta)&&(!_7f6["url"])){
+var url=_7fe.url;
+var _800="";
+if(_7fe["formNode"]){
+var ta=_7fe.formNode.getAttribute("action");
+if((ta)&&(!_7fe["url"])){
 url=ta;
 }
-var tp=_7f6.formNode.getAttribute("method");
-if((tp)&&(!_7f6["method"])){
-_7f6.method=tp;
+var tp=_7fe.formNode.getAttribute("method");
+if((tp)&&(!_7fe["method"])){
+_7fe.method=tp;
 }
-_7f8+=dojo.io.encodeForm(_7f6.formNode,_7f6.encoding,_7f6["formFilter"]);
+_800+=dojo.io.encodeForm(_7fe.formNode,_7fe.encoding,_7fe["formFilter"]);
 }
 if(url.indexOf("#")>-1){
 dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
 url=url.split("#")[0];
 }
-if(_7f6["file"]){
-_7f6.method="post";
+if(_7fe["file"]){
+_7fe.method="post";
 }
-if(!_7f6["method"]){
-_7f6.method="get";
+if(!_7fe["method"]){
+_7fe.method="get";
 }
-if(_7f6.method.toLowerCase()=="get"){
-_7f6.multipart=false;
+if(_7fe.method.toLowerCase()=="get"){
+_7fe.multipart=false;
 }else{
-if(_7f6["file"]){
-_7f6.multipart=true;
+if(_7fe["file"]){
+_7fe.multipart=true;
 }else{
-if(!_7f6["multipart"]){
-_7f6.multipart=false;
+if(!_7fe["multipart"]){
+_7fe.multipart=false;
 }
 }
 }
-if(_7f6["backButton"]||_7f6["back"]||_7f6["changeUrl"]){
-dojo.undo.browser.addToHistory(_7f6);
+if(_7fe["backButton"]||_7fe["back"]||_7fe["changeUrl"]){
+dojo.undo.browser.addToHistory(_7fe);
 }
-var _7fb=_7f6["content"]||{};
-if(_7f6.sendTransport){
-_7fb["dojo.transport"]="xmlhttp";
+var _803=_7fe["content"]||{};
+if(_7fe.sendTransport){
+_803["dojo.transport"]="xmlhttp";
 }
 do{
-if(_7f6.postContent){
-_7f8=_7f6.postContent;
+if(_7fe.postContent){
+_800=_7fe.postContent;
 break;
 }
-if(_7fb){
-_7f8+=dojo.io.argsFromMap(_7fb,_7f6.encoding);
+if(_803){
+_800+=dojo.io.argsFromMap(_803,_7fe.encoding);
 }
-if(_7f6.method.toLowerCase()=="get"||!_7f6.multipart){
+if(_7fe.method.toLowerCase()=="get"||!_7fe.multipart){
 break;
 }
 var t=[];
-if(_7f8.length){
-var q=_7f8.split("&");
+if(_800.length){
+var q=_800.split("&");
 for(var i=0;i<q.length;++i){
 if(q[i].length){
 var p=q[i].split("=");
@@ -26250,71 +20356,71 @@
 }
 }
 }
-if(_7f6.file){
-if(dojo.lang.isArray(_7f6.file)){
-for(var i=0;i<_7f6.file.length;++i){
-var o=_7f6.file[i];
+if(_7fe.file){
+if(dojo.lang.isArray(_7fe.file)){
+for(var i=0;i<_7fe.file.length;++i){
+var o=_7fe.file[i];
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }else{
-var o=_7f6.file;
+var o=_7fe.file;
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }
 if(t.length){
 t.push("--"+this.multipartBoundary+"--","");
-_7f8=t.join("\r\n");
+_800=t.join("\r\n");
 }
 }while(false);
-var _801=_7f6["sync"]?false:true;
-var _802=_7f6["preventCache"]||(this.preventCache==true&&_7f6["preventCache"]!=false);
-var _803=_7f6["useCache"]==true||(this.useCache==true&&_7f6["useCache"]!=false);
-if(!_802&&_803){
-var _804=getFromCache(url,_7f8,_7f6.method);
-if(_804){
-doLoad(_7f6,_804,url,_7f8,false);
+var _809=_7fe["sync"]?false:true;
+var _80a=_7fe["preventCache"]||(this.preventCache==true&&_7fe["preventCache"]!=false);
+var _80b=_7fe["useCache"]==true||(this.useCache==true&&_7fe["useCache"]!=false);
+if(!_80a&&_80b){
+var _80c=getFromCache(url,_800,_7fe.method);
+if(_80c){
+doLoad(_7fe,_80c,url,_800,false);
 return;
 }
 }
-var http=dojo.hostenv.getXmlhttpObject(_7f6);
-var _806=false;
-if(_801){
-var _807=this.inFlight.push({"req":_7f6,"http":http,"url":url,"query":_7f8,"useCache":_803,"startTime":_7f6.timeoutSeconds?(new Date()).getTime():0});
+var http=dojo.hostenv.getXmlhttpObject(_7fe);
+var _80e=false;
+if(_809){
+var _80f=this.inFlight.push({"req":_7fe,"http":http,"url":url,"query":_800,"useCache":_80b,"startTime":_7fe.timeoutSeconds?(new Date()).getTime():0});
 this.startWatchingInFlight();
 }else{
-_7d6._blockAsync=true;
+_7dd._blockAsync=true;
 }
-if(_7f6.method.toLowerCase()=="post"){
-if(!_7f6.user){
-http.open("POST",url,_801);
+if(_7fe.method.toLowerCase()=="post"){
+if(!_7fe.user){
+http.open("POST",url,_809);
 }else{
-http.open("POST",url,_801,_7f6.user,_7f6.password);
+http.open("POST",url,_809,_7fe.user,_7fe.password);
 }
-setHeaders(http,_7f6);
-http.setRequestHeader("Content-Type",_7f6.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_7f6.contentType||"application/x-www-form-urlencoded"));
+setHeaders(http,_7fe);
+http.setRequestHeader("Content-Type",_7fe.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_7fe.contentType||"application/x-www-form-urlencoded"));
 try{
-http.send(_7f8);
+http.send(_800);
 }
 catch(e){
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_7f6,{status:404},url,_7f8,_803);
+doLoad(_7fe,{status:404},url,_800,_80b);
 }
 }else{
-var _808=url;
-if(_7f8!=""){
-_808+=(_808.indexOf("?")>-1?"&":"?")+_7f8;
+var _810=url;
+if(_800!=""){
+_810+=(_810.indexOf("?")>-1?"&":"?")+_800;
 }
-if(_802){
-_808+=(dojo.string.endsWithAny(_808,"?","&")?"":(_808.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
+if(_80a){
+_810+=(dojo.string.endsWithAny(_810,"?","&")?"":(_810.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
 }
-if(!_7f6.user){
-http.open(_7f6.method.toUpperCase(),_808,_801);
+if(!_7fe.user){
+http.open(_7fe.method.toUpperCase(),_810,_809);
 }else{
-http.open(_7f6.method.toUpperCase(),_808,_801,_7f6.user,_7f6.password);
+http.open(_7fe.method.toUpperCase(),_810,_809,_7fe.user,_7fe.password);
 }
-setHeaders(http,_7f6);
+setHeaders(http,_7fe);
 try{
 http.send(null);
 }
@@ -26322,14 +20428,14 @@
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_7f6,{status:404},url,_7f8,_803);
+doLoad(_7fe,{status:404},url,_800,_80b);
 }
 }
-if(!_801){
-doLoad(_7f6,http,url,_7f8,_803);
-_7d6._blockAsync=false;
+if(!_809){
+doLoad(_7fe,http,url,_800,_80b);
+_7dd._blockAsync=false;
 }
-_7f6.abort=function(){
+_7fe.abort=function(){
 try{
 http._aborted=true;
 }
@@ -26343,15 +20449,15 @@
 };
 }
 dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_80a,days,path,_80d,_80e){
-var _80f=-1;
+dojo.io.cookie.setCookie=function(name,_812,days,path,_815,_816){
+var _817=-1;
 if((typeof days=="number")&&(days>=0)){
 var d=new Date();
 d.setTime(d.getTime()+(days*24*60*60*1000));
-_80f=d.toGMTString();
+_817=d.toGMTString();
 }
-_80a=escape(_80a);
-document.cookie=name+"="+_80a+";"+(_80f!=-1?" expires="+_80f+";":"")+(path?"path="+path:"")+(_80d?"; domain="+_80d:"")+(_80e?"; secure":"");
+_812=escape(_812);
+document.cookie=name+"="+_812+";"+(_817!=-1?" expires="+_817+";":"")+(path?"path="+path:"")+(_815?"; domain="+_815:"")+(_816?"; secure":"");
 };
 dojo.io.cookie.set=dojo.io.cookie.setCookie;
 dojo.io.cookie.getCookie=function(name){
@@ -26359,71 +20465,71 @@
 if(idx==-1){
 return null;
 }
-var _813=document.cookie.substring(idx+name.length+1);
-var end=_813.indexOf(";");
+var _81b=document.cookie.substring(idx+name.length+1);
+var end=_81b.indexOf(";");
 if(end==-1){
-end=_813.length;
+end=_81b.length;
 }
-_813=_813.substring(0,end);
-_813=unescape(_813);
-return _813;
+_81b=_81b.substring(0,end);
+_81b=unescape(_81b);
+return _81b;
 };
 dojo.io.cookie.get=dojo.io.cookie.getCookie;
 dojo.io.cookie.deleteCookie=function(name){
 dojo.io.cookie.setCookie(name,"-",0);
 };
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_81a,_81b,_81c){
+dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_822,_823,_824){
 if(arguments.length==5){
-_81c=_81a;
-_81a=null;
-_81b=null;
+_824=_822;
+_822=null;
+_823=null;
 }
-var _81d=[],_81e,_81f="";
-if(!_81c){
-_81e=dojo.io.cookie.getObjectCookie(name);
+var _825=[],_826,_827="";
+if(!_824){
+_826=dojo.io.cookie.getObjectCookie(name);
 }
 if(days>=0){
-if(!_81e){
-_81e={};
+if(!_826){
+_826={};
 }
 for(var prop in obj){
 if(obj[prop]==null){
-delete _81e[prop];
+delete _826[prop];
 }else{
 if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_81e[prop]=obj[prop];
+_826[prop]=obj[prop];
 }
 }
 }
 prop=null;
-for(var prop in _81e){
-_81d.push(escape(prop)+"="+escape(_81e[prop]));
+for(var prop in _826){
+_825.push(escape(prop)+"="+escape(_826[prop]));
 }
-_81f=_81d.join("&");
+_827=_825.join("&");
 }
-dojo.io.cookie.setCookie(name,_81f,days,path,_81a,_81b);
+dojo.io.cookie.setCookie(name,_827,days,path,_822,_823);
 };
 dojo.io.cookie.getObjectCookie=function(name){
-var _822=null,_823=dojo.io.cookie.getCookie(name);
-if(_823){
-_822={};
-var _824=_823.split("&");
-for(var i=0;i<_824.length;i++){
-var pair=_824[i].split("=");
-var _827=pair[1];
-if(isNaN(_827)){
-_827=unescape(pair[1]);
+var _82a=null,_82b=dojo.io.cookie.getCookie(name);
+if(_82b){
+_82a={};
+var _82c=_82b.split("&");
+for(var i=0;i<_82c.length;i++){
+var pair=_82c[i].split("=");
+var _82f=pair[1];
+if(isNaN(_82f)){
+_82f=unescape(pair[1]);
 }
-_822[unescape(pair[0])]=_827;
+_82a[unescape(pair[0])]=_82f;
 }
 }
-return _822;
+return _82a;
 };
 dojo.io.cookie.isSupported=function(){
 if(typeof navigator.cookieEnabled!="boolean"){
 dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _828=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_828=="CookiesAllowed");
+var _830=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+navigator.cookieEnabled=(_830=="CookiesAllowed");
 if(navigator.cookieEnabled){
 this.deleteCookie("__TestingYourBrowserForCookieSupport__");
 }
@@ -26440,22 +20546,22 @@
 dojo.provide("dojo.html.selection");
 dojo.html.selectionType={NONE:0,TEXT:1,CONTROL:2};
 dojo.html.clearSelection=function(){
-var _829=dojo.global();
-var _82a=dojo.doc();
+var _831=dojo.global();
+var _832=dojo.doc();
 try{
-if(_829["getSelection"]){
+if(_831["getSelection"]){
 if(dojo.render.html.safari){
-_829.getSelection().collapse();
+_831.getSelection().collapse();
 }else{
-_829.getSelection().removeAllRanges();
+_831.getSelection().removeAllRanges();
 }
 }else{
-if(_82a.selection){
-if(_82a.selection.empty){
-_82a.selection.empty();
+if(_832.selection){
+if(_832.selection.empty){
+_832.selection.empty();
 }else{
-if(_82a.selection.clear){
-_82a.selection.clear();
+if(_832.selection.clear){
+_832.selection.clear();
 }
 }
 }
@@ -26467,17 +20573,17 @@
 return false;
 }
 };
-dojo.html.disableSelection=function(_82b){
-_82b=dojo.byId(_82b)||dojo.body();
+dojo.html.disableSelection=function(_833){
+_833=dojo.byId(_833)||dojo.body();
 var h=dojo.render.html;
 if(h.mozilla){
-_82b.style.MozUserSelect="none";
+_833.style.MozUserSelect="none";
 }else{
 if(h.safari){
-_82b.style.KhtmlUserSelect="none";
+_833.style.KhtmlUserSelect="none";
 }else{
 if(h.ie){
-_82b.unselectable="on";
+_833.unselectable="on";
 }else{
 return false;
 }
@@ -26485,17 +20591,17 @@
 }
 return true;
 };
-dojo.html.enableSelection=function(_82d){
-_82d=dojo.byId(_82d)||dojo.body();
+dojo.html.enableSelection=function(_835){
+_835=dojo.byId(_835)||dojo.body();
 var h=dojo.render.html;
 if(h.mozilla){
-_82d.style.MozUserSelect="";
+_835.style.MozUserSelect="";
 }else{
 if(h.safari){
-_82d.style.KhtmlUserSelect="";
+_835.style.KhtmlUserSelect="";
 }else{
 if(h.ie){
-_82d.unselectable="off";
+_835.unselectable="off";
 }else{
 return false;
 }
@@ -26503,25 +20609,25 @@
 }
 return true;
 };
-dojo.html.selectElement=function(_82f){
+dojo.html.selectElement=function(_837){
 dojo.deprecated("dojo.html.selectElement","replaced by dojo.html.selection.selectElementChildren",0.5);
 };
-dojo.html.selectInputText=function(_830){
-var _831=dojo.global();
-var _832=dojo.doc();
-_830=dojo.byId(_830);
-if(_832["selection"]&&dojo.body()["createTextRange"]){
-var _833=_830.createTextRange();
-_833.moveStart("character",0);
-_833.moveEnd("character",_830.value.length);
-_833.select();
+dojo.html.selectInputText=function(_838){
+var _839=dojo.global();
+var _83a=dojo.doc();
+_838=dojo.byId(_838);
+if(_83a["selection"]&&dojo.body()["createTextRange"]){
+var _83b=_838.createTextRange();
+_83b.moveStart("character",0);
+_83b.moveEnd("character",_838.value.length);
+_83b.select();
 }else{
-if(_831["getSelection"]){
-var _834=_831.getSelection();
-_830.setSelectionRange(0,_830.value.length);
+if(_839["getSelection"]){
+var _83c=_839.getSelection();
+_838.setSelectionRange(0,_838.value.length);
 }
 }
-_830.focus();
+_838.focus();
 };
 dojo.html.isSelectionCollapsed=function(){
 dojo.deprecated("dojo.html.isSelectionCollapsed","replaced by dojo.html.selection.isCollapsed",0.5);
@@ -26531,7 +20637,7 @@
 if(dojo.doc()["selection"]){
 return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()];
 }else{
-var _835=dojo.html.selectionType.TEXT;
+var _83d=dojo.html.selectionType.TEXT;
 var oSel;
 try{
 oSel=dojo.global().getSelection();
@@ -26539,38 +20645,38 @@
 catch(e){
 }
 if(oSel&&oSel.rangeCount==1){
-var _837=oSel.getRangeAt(0);
-if(_837.startContainer==_837.endContainer&&(_837.endOffset-_837.startOffset)==1&&_837.startContainer.nodeType!=dojo.dom.TEXT_NODE){
-_835=dojo.html.selectionType.CONTROL;
+var _83f=oSel.getRangeAt(0);
+if(_83f.startContainer==_83f.endContainer&&(_83f.endOffset-_83f.startOffset)==1&&_83f.startContainer.nodeType!=dojo.dom.TEXT_NODE){
+_83d=dojo.html.selectionType.CONTROL;
 }
 }
-return _835;
+return _83d;
 }
 },isCollapsed:function(){
-var _838=dojo.global();
-var _839=dojo.doc();
-if(_839["selection"]){
-return _839.selection.createRange().text=="";
+var _840=dojo.global();
+var _841=dojo.doc();
+if(_841["selection"]){
+return _841.selection.createRange().text=="";
 }else{
-if(_838["getSelection"]){
-var _83a=_838.getSelection();
-if(dojo.lang.isString(_83a)){
-return _83a=="";
+if(_840["getSelection"]){
+var _842=_840.getSelection();
+if(dojo.lang.isString(_842)){
+return _842=="";
 }else{
-return _83a.isCollapsed||_83a.toString()=="";
+return _842.isCollapsed||_842.toString()=="";
 }
 }
 }
 },getSelectedElement:function(){
 if(dojo.html.selection.getType()==dojo.html.selectionType.CONTROL){
 if(dojo.doc()["selection"]){
-var _83b=dojo.doc().selection.createRange();
-if(_83b&&_83b.item){
+var _843=dojo.doc().selection.createRange();
+if(_843&&_843.item){
 return dojo.doc().selection.createRange().item(0);
 }
 }else{
-var _83c=dojo.global().getSelection();
-return _83c.anchorNode.childNodes[_83c.anchorOffset];
+var _844=dojo.global().getSelection();
+return _844.anchorNode.childNodes[_844.anchorOffset];
 }
 }
 },getParentElement:function(){
@@ -26583,9 +20689,9 @@
 if(dojo.doc()["selection"]){
 return dojo.doc().selection.createRange().parentElement();
 }else{
-var _83e=dojo.global().getSelection();
-if(_83e){
-var node=_83e.anchorNode;
+var _846=dojo.global().getSelection();
+if(_846){
+var node=_846.anchorNode;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.parentNode;
 }
@@ -26600,9 +20706,9 @@
 }
 return dojo.doc().selection.createRange().text;
 }else{
-var _840=dojo.global().getSelection();
-if(_840){
-return _840.toString();
+var _848=dojo.global().getSelection();
+if(_848){
+return _848.toString();
 }
 }
 },getSelectedHtml:function(){
@@ -26612,18 +20718,18 @@
 }
 return dojo.doc().selection.createRange().htmlText;
 }else{
-var _841=dojo.global().getSelection();
-if(_841&&_841.rangeCount){
-var frag=_841.getRangeAt(0).cloneContents();
+var _849=dojo.global().getSelection();
+if(_849&&_849.rangeCount){
+var frag=_849.getRangeAt(0).cloneContents();
 var div=document.createElement("div");
 div.appendChild(frag);
 return div.innerHTML;
 }
 return null;
 }
-},hasAncestorElement:function(_844){
+},hasAncestorElement:function(_84c){
 return (dojo.html.selection.getAncestorElement.apply(this,arguments)!=null);
-},getAncestorElement:function(_845){
+},getAncestorElement:function(_84d){
 var node=dojo.html.selection.getSelectedElement()||dojo.html.selection.getParentElement();
 while(node){
 if(dojo.html.selection.isTag(node,arguments).length>0){
@@ -26641,133 +20747,133 @@
 }
 }
 return "";
-},selectElement:function(_84a){
-var _84b=dojo.global();
-var _84c=dojo.doc();
-_84a=dojo.byId(_84a);
-if(_84c.selection&&dojo.body().createTextRange){
+},selectElement:function(_852){
+var _853=dojo.global();
+var _854=dojo.doc();
+_852=dojo.byId(_852);
+if(_854.selection&&dojo.body().createTextRange){
 try{
-var _84d=dojo.body().createControlRange();
-_84d.addElement(_84a);
-_84d.select();
+var _855=dojo.body().createControlRange();
+_855.addElement(_852);
+_855.select();
 }
 catch(e){
-dojo.html.selection.selectElementChildren(_84a);
+dojo.html.selection.selectElementChildren(_852);
 }
 }else{
-if(_84b["getSelection"]){
-var _84e=_84b.getSelection();
-if(_84e["removeAllRanges"]){
-var _84d=_84c.createRange();
-_84d.selectNode(_84a);
-_84e.removeAllRanges();
-_84e.addRange(_84d);
+if(_853["getSelection"]){
+var _856=_853.getSelection();
+if(_856["removeAllRanges"]){
+var _855=_854.createRange();
+_855.selectNode(_852);
+_856.removeAllRanges();
+_856.addRange(_855);
 }
 }
 }
-},selectElementChildren:function(_84f){
-var _850=dojo.global();
-var _851=dojo.doc();
-_84f=dojo.byId(_84f);
-if(_851.selection&&dojo.body().createTextRange){
-var _852=dojo.body().createTextRange();
-_852.moveToElementText(_84f);
-_852.select();
+},selectElementChildren:function(_857){
+var _858=dojo.global();
+var _859=dojo.doc();
+_857=dojo.byId(_857);
+if(_859.selection&&dojo.body().createTextRange){
+var _85a=dojo.body().createTextRange();
+_85a.moveToElementText(_857);
+_85a.select();
 }else{
-if(_850["getSelection"]){
-var _853=_850.getSelection();
-if(_853["setBaseAndExtent"]){
-_853.setBaseAndExtent(_84f,0,_84f,_84f.innerText.length-1);
+if(_858["getSelection"]){
+var _85b=_858.getSelection();
+if(_85b["setBaseAndExtent"]){
+_85b.setBaseAndExtent(_857,0,_857,_857.innerText.length-1);
 }else{
-if(_853["selectAllChildren"]){
-_853.selectAllChildren(_84f);
+if(_85b["selectAllChildren"]){
+_85b.selectAllChildren(_857);
 }
 }
 }
 }
 },getBookmark:function(){
-var _854;
-var _855=dojo.doc();
-if(_855["selection"]){
-var _856=_855.selection.createRange();
-_854=_856.getBookmark();
+var _85c;
+var _85d=dojo.doc();
+if(_85d["selection"]){
+var _85e=_85d.selection.createRange();
+_85c=_85e.getBookmark();
 }else{
-var _857;
+var _85f;
 try{
-_857=dojo.global().getSelection();
+_85f=dojo.global().getSelection();
 }
 catch(e){
 }
-if(_857){
-var _856=_857.getRangeAt(0);
-_854=_856.cloneRange();
+if(_85f){
+var _85e=_85f.getRangeAt(0);
+_85c=_85e.cloneRange();
 }else{
 dojo.debug("No idea how to store the current selection for this browser!");
 }
 }
-return _854;
-},moveToBookmark:function(_858){
-var _859=dojo.doc();
-if(_859["selection"]){
-var _85a=_859.selection.createRange();
-_85a.moveToBookmark(_858);
-_85a.select();
+return _85c;
+},moveToBookmark:function(_860){
+var _861=dojo.doc();
+if(_861["selection"]){
+var _862=_861.selection.createRange();
+_862.moveToBookmark(_860);
+_862.select();
 }else{
-var _85b;
+var _863;
 try{
-_85b=dojo.global().getSelection();
+_863=dojo.global().getSelection();
 }
 catch(e){
 }
-if(_85b&&_85b["removeAllRanges"]){
-_85b.removeAllRanges();
-_85b.addRange(_858);
+if(_863&&_863["removeAllRanges"]){
+_863.removeAllRanges();
+_863.addRange(_860);
 }else{
 dojo.debug("No idea how to restore selection for this browser!");
 }
 }
-},collapse:function(_85c){
+},collapse:function(_864){
 if(dojo.global()["getSelection"]){
-var _85d=dojo.global().getSelection();
-if(_85d.removeAllRanges){
-if(_85c){
-_85d.collapseToStart();
+var _865=dojo.global().getSelection();
+if(_865.removeAllRanges){
+if(_864){
+_865.collapseToStart();
 }else{
-_85d.collapseToEnd();
+_865.collapseToEnd();
 }
 }else{
-dojo.global().getSelection().collapse(_85c);
+dojo.global().getSelection().collapse(_864);
 }
 }else{
 if(dojo.doc().selection){
-var _85e=dojo.doc().selection.createRange();
-_85e.collapse(_85c);
-_85e.select();
+var _866=dojo.doc().selection.createRange();
+_866.collapse(_864);
+_866.select();
 }
 }
 },remove:function(){
 if(dojo.doc().selection){
-var _85f=dojo.doc().selection;
-if(_85f.type.toUpperCase()!="NONE"){
-_85f.clear();
+var _867=dojo.doc().selection;
+if(_867.type.toUpperCase()!="NONE"){
+_867.clear();
 }
-return _85f;
+return _867;
 }else{
-var _85f=dojo.global().getSelection();
-for(var i=0;i<_85f.rangeCount;i++){
-_85f.getRangeAt(i).deleteContents();
+var _867=dojo.global().getSelection();
+for(var i=0;i<_867.rangeCount;i++){
+_867.getRangeAt(i).deleteContents();
 }
-return _85f;
+return _867;
 }
 }});
 dojo.provide("dojo.Deferred");
-dojo.Deferred=function(_861){
+dojo.Deferred=function(_869){
 this.chain=[];
 this.id=this._nextId();
 this.fired=-1;
 this.paused=0;
 this.results=[null,null];
-this.canceller=_861;
+this.canceller=_869;
 this.silentlyCancelled=false;
 };
 dojo.lang.extend(dojo.Deferred,{getFunctionFromArgs:function(){
@@ -26787,21 +20893,21 @@
 }
 return null;
 },makeCalled:function(){
-var _863=new dojo.Deferred();
-_863.callback();
-return _863;
+var _86b=new dojo.Deferred();
+_86b.callback();
+return _86b;
 },repr:function(){
-var _864;
+var _86c;
 if(this.fired==-1){
-_864="unfired";
+_86c="unfired";
 }else{
 if(this.fired==0){
-_864="success";
+_86c="success";
 }else{
-_864="error";
+_86c="error";
 }
 }
-return "Deferred("+this.id+", "+_864+")";
+return "Deferred("+this.id+", "+_86c+")";
 },toString:dojo.lang.forward("repr"),_nextId:(function(){
 var n=1;
 return function(){
@@ -26854,23 +20960,23 @@
 }
 this._resback(res);
 },addBoth:function(cb,cbfn){
-var _86c=this.getFunctionFromArgs(cb,cbfn);
+var _874=this.getFunctionFromArgs(cb,cbfn);
 if(arguments.length>2){
-_86c=dojo.lang.curryArguments(null,_86c,arguments,2);
+_874=dojo.lang.curryArguments(null,_874,arguments,2);
 }
-return this.addCallbacks(_86c,_86c);
+return this.addCallbacks(_874,_874);
 },addCallback:function(cb,cbfn){
-var _86f=this.getFunctionFromArgs(cb,cbfn);
+var _877=this.getFunctionFromArgs(cb,cbfn);
 if(arguments.length>2){
-_86f=dojo.lang.curryArguments(null,_86f,arguments,2);
+_877=dojo.lang.curryArguments(null,_877,arguments,2);
 }
-return this.addCallbacks(_86f,null);
+return this.addCallbacks(_877,null);
 },addErrback:function(cb,cbfn){
-var _872=this.getFunctionFromArgs(cb,cbfn);
+var _87a=this.getFunctionFromArgs(cb,cbfn);
 if(arguments.length>2){
-_872=dojo.lang.curryArguments(null,_872,arguments,2);
+_87a=dojo.lang.curryArguments(null,_87a,arguments,2);
 }
-return this.addCallbacks(null,_872);
+return this.addCallbacks(null,_87a);
 return this.addCallbacks(null,cbfn);
 },addCallbacks:function(cb,eb){
 this.chain.push([cb,eb]);
@@ -26879,20 +20985,20 @@
 }
 return this;
 },_fire:function(){
-var _875=this.chain;
-var _876=this.fired;
-var res=this.results[_876];
+var _87d=this.chain;
+var _87e=this.fired;
+var res=this.results[_87e];
 var self=this;
 var cb=null;
-while(_875.length>0&&this.paused==0){
-var pair=_875.shift();
-var f=pair[_876];
+while(_87d.length>0&&this.paused==0){
+var pair=_87d.shift();
+var f=pair[_87e];
 if(f==null){
 continue;
 }
 try{
 res=f(res);
-_876=((res instanceof Error)?1:0);
+_87e=((res instanceof Error)?1:0);
 if(res instanceof dojo.Deferred){
 cb=function(res){
 self._continue(res);
@@ -26901,12 +21007,12 @@
 }
 }
 catch(err){
-_876=1;
+_87e=1;
 res=err;
 }
 }
-this.fired=_876;
-this.results[_876]=res;
+this.fired=_87e;
+this.results[_87e]=res;
 if((cb)&&(this.paused)){
 res.addBoth(cb);
 }
@@ -26915,10 +21021,10 @@
 if(!djConfig["useXDomain"]||djConfig["allowXdRichTextSave"]){
 if(dojo.hostenv.post_load_){
 (function(){
-var _87d=dojo.doc().createElement("textarea");
-_87d.id="dojo.widget.RichText.savedContent";
-_87d.style="display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;";
-dojo.body().appendChild(_87d);
+var _885=dojo.doc().createElement("textarea");
+_885.id="dojo.widget.RichText.savedContent";
+_885.style="display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;";
+dojo.body().appendChild(_885);
 })();
 }else{
 try{
@@ -26973,7 +21079,7 @@
 if(!dojo.render.html.ie){
 this.addKeyHandler("Z",ctrl,exec("redo"));
 }
-},events:["onBlur","onFocus","onKeyPress","onKeyDown","onKeyUp","onClick"],open:function(_882){
+},events:["onBlur","onFocus","onKeyPress","onKeyDown","onKeyUp","onClick"],open:function(_88a){
 if(this.onLoadDeferred.fired>=0){
 this.onLoadDeferred=new dojo.Deferred();
 }
@@ -26983,15 +21089,15 @@
 }
 dojo.event.topic.publish("dojo.widget.RichText::open",this);
 this._content="";
-if((arguments.length==1)&&(_882["nodeName"])){
-this.domNode=_882;
+if((arguments.length==1)&&(_88a["nodeName"])){
+this.domNode=_88a;
 }
 if((this.domNode["nodeName"])&&(this.domNode.nodeName.toLowerCase()=="textarea")){
 this.textarea=this.domNode;
 var html=this._preFilterContent(this.textarea.value);
 this.domNode=dojo.doc().createElement("div");
 dojo.html.copyStyle(this.domNode,this.textarea);
-var _885=dojo.lang.hitch(this,function(){
+var _88d=dojo.lang.hitch(this,function(){
 with(this.textarea.style){
 display="block";
 position="absolute";
@@ -27003,9 +21109,9 @@
 }
 });
 if(h.ie){
-setTimeout(_885,10);
+setTimeout(_88d,10);
 }else{
-_885();
+_88d();
 }
 if(!h.safari){
 dojo.html.insertBefore(this.domNode,this.textarea);
@@ -27015,9 +21121,9 @@
 this.textarea.value=this.getEditorContent();
 }));
 }
-var _886=this;
+var _88e=this;
 dojo.event.connect(this,"postCreate",function(){
-dojo.html.insertAfter(_886.textarea,_886.domNode);
+dojo.html.insertAfter(_88e.textarea,_88e.domNode);
 });
 }else{
 var html=this._preFilterContent(dojo.string.trim(this.domNode.innerHTML));
@@ -27025,9 +21131,9 @@
 if(html==""){
 html="&nbsp;";
 }
-var _887=dojo.html.getContentBox(this.domNode);
-this._oldHeight=_887.height;
-this._oldWidth=_887.width;
+var _88f=dojo.html.getContentBox(this.domNode);
+this._oldHeight=_88f.height;
+this._oldWidth=_88f.width;
 this._firstChildContributingMargin=this._getContributingMargin(this.domNode,"top");
 this._lastChildContributingMargin=this._getContributingMargin(this.domNode,"bottom");
 this.savedContent=html;
@@ -27038,14 +21144,14 @@
 this.domNode.innerHTML=" <br>";
 }
 if(this.saveName!=""&&(!djConfig["useXDomain"]||djConfig["allowXdRichTextSave"])){
-var _888=dojo.doc().getElementById("dojo.widget.RichText.savedContent");
-if(_888.value!=""){
-var _889=_888.value.split(this._SEPARATOR);
-for(var i=0;i<_889.length;i++){
-var data=_889[i].split(":");
+var _890=dojo.doc().getElementById("dojo.widget.RichText.savedContent");
+if(_890.value!=""){
+var _891=_890.value.split(this._SEPARATOR);
+for(var i=0;i<_891.length;i++){
+var data=_891[i].split(":");
 if(data[0]==this.saveName){
 html=data[1];
-_889.splice(i,1);
+_891.splice(i,1);
 break;
 }
 }
@@ -27091,13 +21197,13 @@
 height=this.height?this.height:this.minHeight;
 }
 }
-var _88d=["p","pre","address","h1","h2","h3","h4","h5","h6","ol","div","ul"];
-var _88e="";
-for(var i in _88d){
-if(_88d[i].charAt(1)!="l"){
-_88e+="<"+_88d[i]+"><span>content</span></"+_88d[i]+">";
+var _895=["p","pre","address","h1","h2","h3","h4","h5","h6","ol","div","ul"];
+var _896="";
+for(var i in _895){
+if(_895[i].charAt(1)!="l"){
+_896+="<"+_895[i]+"><span>content</span></"+_895[i]+">";
 }else{
-_88e+="<"+_88d[i]+"><li>content</li></"+_88d[i]+">";
+_896+="<"+_895[i]+"><li>content</li></"+_895[i]+">";
 }
 }
 with(this.editNode.style){
@@ -27105,13 +21211,13 @@
 left="-2000px";
 top="-2000px";
 }
-this.editNode.innerHTML=_88e;
+this.editNode.innerHTML=_896;
 var node=this.editNode.firstChild;
 while(node){
 dojo.withGlobal(this.window,"selectElement",dojo.html.selection,[node.firstChild]);
-var _890=node.tagName.toLowerCase();
-this._local2NativeFormatNames[_890]=this.queryCommandValue("formatblock");
-this._native2LocalFormatNames[this._local2NativeFormatNames[_890]]=_890;
+var _898=node.tagName.toLowerCase();
+this._local2NativeFormatNames[_898]=this.queryCommandValue("formatblock");
+this._native2LocalFormatNames[this._local2NativeFormatNames[_898]]=_898;
 node=node.nextSibling;
 }
 with(this.editNode.style){
@@ -27137,70 +21243,70 @@
 }
 dojo.html.addClass(this.domNode,"RichTextEditable");
 this.isClosed=false;
-},_hasCollapseableMargin:function(_892,side){
-if(dojo.html.getPixelValue(_892,"border-"+side+"-width",false)){
+},_hasCollapseableMargin:function(_89a,side){
+if(dojo.html.getPixelValue(_89a,"border-"+side+"-width",false)){
 return false;
 }else{
-if(dojo.html.getPixelValue(_892,"padding-"+side,false)){
+if(dojo.html.getPixelValue(_89a,"padding-"+side,false)){
 return false;
 }else{
 return true;
 }
 }
-},_getContributingMargin:function(_894,_895){
-if(_895=="top"){
-var _896="previousSibling";
-var _897="nextSibling";
-var _898="firstChild";
-var _899="margin-top";
-var _89a="margin-bottom";
+},_getContributingMargin:function(_89c,_89d){
+if(_89d=="top"){
+var _89e="previousSibling";
+var _89f="nextSibling";
+var _8a0="firstChild";
+var _8a1="margin-top";
+var _8a2="margin-bottom";
 }else{
-var _896="nextSibling";
-var _897="previousSibling";
-var _898="lastChild";
-var _899="margin-bottom";
-var _89a="margin-top";
+var _89e="nextSibling";
+var _89f="previousSibling";
+var _8a0="lastChild";
+var _8a1="margin-bottom";
+var _8a2="margin-top";
 }
-var _89b=dojo.html.getPixelValue(_894,_899,false);
-function isSignificantNode(_89c){
-return !(_89c.nodeType==3&&dojo.string.isBlank(_89c.data))&&dojo.html.getStyle(_89c,"display")!="none"&&!dojo.html.isPositionAbsolute(_89c);
+var _8a3=dojo.html.getPixelValue(_89c,_8a1,false);
+function isSignificantNode(_8a4){
+return !(_8a4.nodeType==3&&dojo.string.isBlank(_8a4.data))&&dojo.html.getStyle(_8a4,"display")!="none"&&!dojo.html.isPositionAbsolute(_8a4);
 }
-var _89d=0;
-var _89e=_894[_898];
-while(_89e){
-while((!isSignificantNode(_89e))&&_89e[_897]){
-_89e=_89e[_897];
+var _8a5=0;
+var _8a6=_89c[_8a0];
+while(_8a6){
+while((!isSignificantNode(_8a6))&&_8a6[_89f]){
+_8a6=_8a6[_89f];
 }
-_89d=Math.max(_89d,dojo.html.getPixelValue(_89e,_899,false));
-if(!this._hasCollapseableMargin(_89e,_895)){
+_8a5=Math.max(_8a5,dojo.html.getPixelValue(_8a6,_8a1,false));
+if(!this._hasCollapseableMargin(_8a6,_89d)){
 break;
 }
-_89e=_89e[_898];
+_8a6=_8a6[_8a0];
 }
-if(!this._hasCollapseableMargin(_894,_895)){
-return parseInt(_89d);
+if(!this._hasCollapseableMargin(_89c,_89d)){
+return parseInt(_8a5);
 }
-var _89f=0;
-var _8a0=_894[_896];
-while(_8a0){
-if(isSignificantNode(_8a0)){
-_89f=dojo.html.getPixelValue(_8a0,_89a,false);
+var _8a7=0;
+var _8a8=_89c[_89e];
+while(_8a8){
+if(isSignificantNode(_8a8)){
+_8a7=dojo.html.getPixelValue(_8a8,_8a2,false);
 break;
 }
-_8a0=_8a0[_896];
+_8a8=_8a8[_89e];
 }
-if(!_8a0){
-_89f=dojo.html.getPixelValue(_894.parentNode,_899,false);
+if(!_8a8){
+_8a7=dojo.html.getPixelValue(_89c.parentNode,_8a1,false);
 }
-if(_89d>_89b){
-return parseInt(Math.max((_89d-_89b)-_89f,0));
+if(_8a5>_8a3){
+return parseInt(Math.max((_8a5-_8a3)-_8a7,0));
 }else{
 return 0;
 }
 },_drawIframe:function(html){
-var _8a2=Boolean(dojo.render.html.moz&&(typeof window.XML=="undefined"));
+var _8aa=Boolean(dojo.render.html.moz&&(typeof window.XML=="undefined"));
 if(!this.iframe){
-var _8a3=(new dojo.uri.Uri(dojo.doc().location)).host;
+var _8ab=(new dojo.uri.Uri(dojo.doc().location)).host;
 this.iframe=dojo.doc().createElement("iframe");
 with(this.iframe){
 style.border="none";
@@ -27212,46 +21318,46 @@
 if(djConfig["useXDomain"]&&!djConfig["dojoRichTextFrameUrl"]){
 dojo.debug("dojo.widget.RichText: When using cross-domain Dojo builds,"+" please save src/widget/templates/richtextframe.html to your domain and set djConfig.dojoRichTextFrameUrl"+" to the path on your domain to richtextframe.html");
 }
-this.iframe.src=(djConfig["dojoRichTextFrameUrl"]||dojo.uri.moduleUri("dojo.widget","templates/richtextframe.html"))+((dojo.doc().domain!=_8a3)?("#"+dojo.doc().domain):"");
+this.iframe.src=(djConfig["dojoRichTextFrameUrl"]||dojo.uri.moduleUri("dojo.widget","templates/richtextframe.html"))+((dojo.doc().domain!=_8ab)?("#"+dojo.doc().domain):"");
 this.iframe.width=this.inheritWidth?this._oldWidth:"100%";
 if(this.height){
 this.iframe.style.height=this.height;
 }else{
-var _8a4=this._oldHeight;
+var _8ac=this._oldHeight;
 if(this._hasCollapseableMargin(this.domNode,"top")){
-_8a4+=this._firstChildContributingMargin;
+_8ac+=this._firstChildContributingMargin;
 }
 if(this._hasCollapseableMargin(this.domNode,"bottom")){
-_8a4+=this._lastChildContributingMargin;
+_8ac+=this._lastChildContributingMargin;
 }
-this.iframe.height=_8a4;
+this.iframe.height=_8ac;
 }
-var _8a5=dojo.doc().createElement("div");
-_8a5.innerHTML=html;
-this.editingArea.appendChild(_8a5);
+var _8ad=dojo.doc().createElement("div");
+_8ad.innerHTML=html;
+this.editingArea.appendChild(_8ad);
 if(this.relativeImageUrls){
-var imgs=_8a5.getElementsByTagName("img");
+var imgs=_8ad.getElementsByTagName("img");
 for(var i=0;i<imgs.length;i++){
 imgs[i].src=(new dojo.uri.Uri(dojo.global().location,imgs[i].src)).toString();
 }
-html=_8a5.innerHTML;
+html=_8ad.innerHTML;
 }
-var _8a8=dojo.html.firstElement(_8a5);
-var _8a9=dojo.html.lastElement(_8a5);
-if(_8a8){
-_8a8.style.marginTop=this._firstChildContributingMargin+"px";
+var _8b0=dojo.html.firstElement(_8ad);
+var _8b1=dojo.html.lastElement(_8ad);
+if(_8b0){
+_8b0.style.marginTop=this._firstChildContributingMargin+"px";
 }
-if(_8a9){
-_8a9.style.marginBottom=this._lastChildContributingMargin+"px";
+if(_8b1){
+_8b1.style.marginBottom=this._lastChildContributingMargin+"px";
 }
 this.editingArea.appendChild(this.iframe);
 if(dojo.render.html.safari){
 this.iframe.src=this.iframe.src;
 }
-var _8aa=false;
-var _8ab=dojo.lang.hitch(this,function(){
-if(!_8aa){
-_8aa=true;
+var _8b2=false;
+var _8b3=dojo.lang.hitch(this,function(){
+if(!_8b2){
+_8b2=true;
 }else{
 return;
 }
@@ -27265,52 +21371,52 @@
 this.document=this.iframe.contentDocument;
 }
 }
-var _8ac=(function(_8ad){
-return function(_8ae){
-return dojo.html.getStyle(_8ad,_8ae);
+var _8b4=(function(_8b5){
+return function(_8b6){
+return dojo.html.getStyle(_8b5,_8b6);
 };
 })(this.domNode);
-var font=_8ac("font-weight")+" "+_8ac("font-size")+" "+_8ac("font-family");
-var _8b0="1.0";
-var _8b1=dojo.html.getUnitValue(this.domNode,"line-height");
-if(_8b1.value&&_8b1.units==""){
-_8b0=_8b1.value;
+var font=_8b4("font-weight")+" "+_8b4("font-size")+" "+_8b4("font-family");
+var _8b8="1.0";
+var _8b9=dojo.html.getUnitValue(this.domNode,"line-height");
+if(_8b9.value&&_8b9.units==""){
+_8b8=_8b9.value;
 }
-dojo.html.insertCssText("body,html{background:transparent;padding:0;margin:0;}"+"body{top:0;left:0;right:0;"+(((this.height)||(dojo.render.html.opera))?"":"position:fixed;")+"font:"+font+";"+"min-height:"+this.minHeight+";"+"line-height:"+_8b0+"}"+"p{margin: 1em 0 !important;}"+"body > *:first-child{padding-top:0 !important;margin-top:"+this._firstChildContributingMargin+"px !important;}"+"body > *:last-child{padding-bottom:0 !important;margin-bottom:"+this._lastChildContributingMargin+"px !important;}"+"li > ul:-moz-first-node, li > ol:-moz-first-node{padding-top:1.2em;}\n"+"li{min-height:1.2em;}"+"",this.document);
-dojo.html.removeNode(_8a5);
+dojo.html.insertCssText("body,html{background:transparent;padding:0;margin:0;}"+"body{top:0;left:0;right:0;"+(((this.height)||(dojo.render.html.opera))?"":"position:fixed;")+"font:"+font+";"+"min-height:"+this.minHeight+";"+"line-height:"+_8b8+"}"+"p{margin: 1em 0 !important;}"+"body > *:first-child{padding-top:0 !important;margin-top:"+this._firstChildContributingMargin+"px !important;}"+"body > *:last-child{padding-bottom:0 !important;margin-bottom:"+this._lastChildContributingMargin+"px !important;}"+"li > ul:-moz-first-node, li > ol:-moz-first-node{padding-top:1.2em;}\n"+"li{min-height:1.2em;}"+"",this.document);
+dojo.html.removeNode(_8ad);
 this.document.body.innerHTML=html;
-if(_8a2||dojo.render.html.safari){
+if(_8aa||dojo.render.html.safari){
 this.document.designMode="on";
 }
 this.onLoad();
 }else{
-dojo.html.removeNode(_8a5);
+dojo.html.removeNode(_8ad);
 this.editNode.innerHTML=html;
 this.onDisplayChanged();
 }
 });
 if(this.editNode){
-_8ab();
+_8b3();
 }else{
 if(dojo.render.html.moz){
 this.iframe.onload=function(){
-setTimeout(_8ab,250);
+setTimeout(_8b3,250);
 };
 }else{
-this.iframe.onload=_8ab;
+this.iframe.onload=_8b3;
 }
 }
 },_applyEditingAreaStyleSheets:function(){
-var _8b2=[];
+var _8ba=[];
 if(this.styleSheets){
-_8b2=this.styleSheets.split(";");
+_8ba=this.styleSheets.split(";");
 this.styleSheets="";
 }
-_8b2=_8b2.concat(this.editingAreaStyleSheets);
+_8ba=_8ba.concat(this.editingAreaStyleSheets);
 this.editingAreaStyleSheets=[];
-if(_8b2.length>0){
-for(var i=0;i<_8b2.length;i++){
-var url=_8b2[i];
+if(_8ba.length>0){
+for(var i=0;i<_8ba.length;i++){
+var url=_8ba[i];
 if(url){
 this.addStyleSheet(dojo.uri.dojoUri(url));
 }
@@ -27330,32 +21436,32 @@
 this.document.createStyleSheet(url);
 }else{
 var head=this.document.getElementsByTagName("head")[0];
-var _8b8=this.document.createElement("link");
-with(_8b8){
+var _8c0=this.document.createElement("link");
+with(_8c0){
 rel="stylesheet";
 type="text/css";
 href=url;
 }
-head.appendChild(_8b8);
+head.appendChild(_8c0);
 }
 },removeStyleSheet:function(uri){
 var url=uri.toString();
 if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){
 url=(new dojo.uri.Uri(dojo.global().location,url)).toString();
 }
-var _8bb=dojo.lang.find(this.editingAreaStyleSheets,url);
-if(_8bb==-1){
+var _8c3=dojo.lang.find(this.editingAreaStyleSheets,url);
+if(_8c3==-1){
 dojo.debug("dojo.widget.RichText.removeStyleSheet: Style sheet "+url+" is not applied to the editing area so it can not be removed!");
 return;
 }
-delete this.editingAreaStyleSheets[_8bb];
-var _8bc=this.document.getElementsByTagName("link");
-for(var i=0;i<_8bc.length;i++){
-if(_8bc[i].href==url){
+delete this.editingAreaStyleSheets[_8c3];
+var _8c4=this.document.getElementsByTagName("link");
+for(var i=0;i<_8c4.length;i++){
+if(_8c4[i].href==url){
 if(dojo.render.html.ie){
-_8bc[i].href="";
+_8c4[i].href="";
 }
-dojo.html.removeNode(_8bc[i]);
+dojo.html.removeNode(_8c4[i]);
 break;
 }
 }
@@ -27379,7 +21485,7 @@
 },_local2NativeFormatNames:{},_native2LocalFormatNames:{},_cacheLocalBlockFormatNames:function(){
 if(!this._native2LocalFormatNames["p"]){
 var obj=this.object;
-var _8c1=false;
+var _8c9=false;
 if(!obj){
 try{
 obj=dojo.html.createExternalElement(dojo.doc(),"object");
@@ -27388,30 +21494,30 @@
 obj.DocumentHTML="<html><head></head><body></body></html>";
 }
 catch(e){
-_8c1=true;
+_8c9=true;
 }
 }
 try{
-var _8c2=new ActiveXObject("DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam");
-obj.ExecCommand(this._activeX.command["getblockformatnames"],0,_8c2);
-var _8c3=new VBArray(_8c2.Names);
-var _8c4=_8c3.toArray();
-var _8c5=["p","pre","address","h1","h2","h3","h4","h5","h6","ol","ul","","","","","div"];
-for(var i=0;i<_8c5.length;++i){
-if(_8c5[i].length>0){
-this._local2NativeFormatNames[_8c4[i]]=_8c5[i];
-this._native2LocalFormatNames[_8c5[i]]=_8c4[i];
+var _8ca=new ActiveXObject("DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam");
+obj.ExecCommand(this._activeX.command["getblockformatnames"],0,_8ca);
+var _8cb=new VBArray(_8ca.Names);
+var _8cc=_8cb.toArray();
+var _8cd=["p","pre","address","h1","h2","h3","h4","h5","h6","ol","ul","","","","","div"];
+for(var i=0;i<_8cd.length;++i){
+if(_8cd[i].length>0){
+this._local2NativeFormatNames[_8cc[i]]=_8cd[i];
+this._native2LocalFormatNames[_8cd[i]]=_8cc[i];
 }
 }
 }
 catch(e){
-_8c1=true;
+_8c9=true;
 }
 if(obj&&!this.object){
 dojo.body().removeChild(obj);
 }
 }
-return !_8c1;
+return !_8c9;
 },_isResized:function(){
 return false;
 },onLoad:function(e){
@@ -27445,15 +21551,15 @@
 }else{
 if(dojo.render.html.mozilla||dojo.render.html.opera){
 var doc=this.document;
-var _8c9=dojo.event.browser.addListener;
+var _8d1=dojo.event.browser.addListener;
 var self=this;
 dojo.lang.forEach(this.events,function(e){
-var l=_8c9(self.document,e.substr(2).toLowerCase(),dojo.lang.hitch(self,e));
+var l=_8d1(self.document,e.substr(2).toLowerCase(),dojo.lang.hitch(self,e));
 if(e=="onBlur"){
-var _8cd={unBlur:function(e){
+var _8d5={unBlur:function(e){
 dojo.event.browser.removeListener(doc,"blur",l);
 }};
-dojo.event.connect("before",self,"close",_8cd,"unBlur");
+dojo.event.connect("before",self,"close",_8d5,"unBlur");
 }
 });
 }
@@ -27497,23 +21603,23 @@
 if((!e)&&(this.object)){
 e=dojo.event.browser.fixEvent(this.window.event);
 }
-var _8d2=e.ctrlKey?this.KEY_CTRL:0;
+var _8da=e.ctrlKey?this.KEY_CTRL:0;
 if(this._keyHandlers[e.key]){
-var _8d3=this._keyHandlers[e.key],i=0,_8d5;
-while(_8d5=_8d3[i++]){
-if(_8d2==_8d5.modifiers){
+var _8db=this._keyHandlers[e.key],i=0,_8dd;
+while(_8dd=_8db[i++]){
+if(_8da==_8dd.modifiers){
 e.preventDefault();
-_8d5.handler.call(this);
+_8dd.handler.call(this);
 break;
 }
 }
 }
 dojo.lang.setTimeout(this,this.onKeyPressed,1,e);
-},addKeyHandler:function(key,_8d7,_8d8){
+},addKeyHandler:function(key,_8df,_8e0){
 if(!(this._keyHandlers[key] instanceof Array)){
 this._keyHandlers[key]=[];
 }
-this._keyHandlers[key].push({modifiers:_8d7||0,handler:_8d8});
+this._keyHandlers[key].push({modifiers:_8df||0,handler:_8e0});
 },onKeyPressed:function(e){
 this.onDisplayChanged();
 },onClick:function(e){
@@ -27555,50 +21661,50 @@
 },onDisplayChanged:function(e){
 },_activeX:{command:{bold:5000,italic:5023,underline:5048,justifycenter:5024,justifyleft:5025,justifyright:5026,cut:5003,copy:5002,paste:5032,"delete":5004,undo:5049,redo:5033,removeformat:5034,selectall:5035,unlink:5050,indent:5018,outdent:5031,insertorderedlist:5030,insertunorderedlist:5051,inserttable:5022,insertcell:5019,insertcol:5020,insertrow:5021,deletecells:5005,deletecols:5006,deleterows:5007,mergecells:5029,splitcell:5047,setblockformat:5043,getblockformat:5011,getblockformatnames:5012,setfontname:5044,getfontname:5013,setfontsize:5045,getfontsize:5014,setbackcolor:5042,getbackcolor:5010,setforecolor:5046,getforecolor:5015,findtext:5008,font:5009,hyperlink:5016,image:5017,lockelement:5027,makeabsolute:5028,sendbackward:5036,bringforward:5037,sendbelowtext:5038,bringabovetext:5039,sendtoback:5040,bringtofront:5041,properties:5052},ui:{"default":0,prompt:1,noprompt:2},status:{notsupported:0,disabled:1,enabled:3,latched:7,ninched:11},appearance:{flat:0,inset:1},state:{unchecked:0,checked:1,gray:2}},_normalizeCommand:function(cmd){
 var drh=dojo.render.html;
-var _8e0=cmd.toLowerCase();
-if(_8e0=="formatblock"){
+var _8e8=cmd.toLowerCase();
+if(_8e8=="formatblock"){
 if(drh.safari){
-_8e0="heading";
+_8e8="heading";
 }
 }else{
 if(this.object){
-switch(_8e0){
+switch(_8e8){
 case "createlink":
-_8e0="hyperlink";
+_8e8="hyperlink";
 break;
 case "insertimage":
-_8e0="image";
+_8e8="image";
 break;
 }
 }else{
-if(_8e0=="hilitecolor"&&!drh.mozilla){
-_8e0="backcolor";
+if(_8e8=="hilitecolor"&&!drh.mozilla){
+_8e8="backcolor";
 }
 }
 }
-return _8e0;
+return _8e8;
 },_safariIsLeopard:function(){
-var _8e1=false;
+var _8e9=false;
 if(dojo.render.html.safari){
 var tmp=dojo.render.html.UA.split("AppleWebKit/")[1];
 var ver=parseFloat(tmp.split(" ")[0]);
 if(ver>=420){
-_8e1=true;
+_8e9=true;
 }
 }
-return _8e1;
-},queryCommandAvailable:function(_8e4){
+return _8e9;
+},queryCommandAvailable:function(_8ec){
 var ie=1;
-var _8e6=1<<1;
-var _8e7=1<<2;
-var _8e8=1<<3;
-var _8e9=1<<4;
-var _8ea=this._safariIsLeopard();
-function isSupportedBy(_8eb){
-return {ie:Boolean(_8eb&ie),mozilla:Boolean(_8eb&_8e6),safari:Boolean(_8eb&_8e7),safari420:Boolean(_8eb&_8e9),opera:Boolean(_8eb&_8e8)};
+var _8ee=1<<1;
+var _8ef=1<<2;
+var _8f0=1<<3;
+var _8f1=1<<4;
+var _8f2=this._safariIsLeopard();
+function isSupportedBy(_8f3){
+return {ie:Boolean(_8f3&ie),mozilla:Boolean(_8f3&_8ee),safari:Boolean(_8f3&_8ef),safari420:Boolean(_8f3&_8f1),opera:Boolean(_8f3&_8f0)};
 }
-var _8ec=null;
-switch(_8e4.toLowerCase()){
+var _8f4=null;
+switch(_8ec.toLowerCase()){
 case "bold":
 case "italic":
 case "underline":
@@ -27614,7 +21720,7 @@
 case "justifyright":
 case "delete":
 case "selectall":
-_8ec=isSupportedBy(_8e6|ie|_8e7|_8e8);
+_8f4=isSupportedBy(_8ee|ie|_8ef|_8f0);
 break;
 case "createlink":
 case "unlink":
@@ -27630,7 +21736,7 @@
 case "undo":
 case "redo":
 case "strikethrough":
-_8ec=isSupportedBy(_8e6|ie|_8e8|_8e9);
+_8f4=isSupportedBy(_8ee|ie|_8f0|_8f1);
 break;
 case "blockdirltr":
 case "blockdirrtl":
@@ -27638,15 +21744,15 @@
 case "dirrtl":
 case "inlinedirltr":
 case "inlinedirrtl":
-_8ec=isSupportedBy(ie);
+_8f4=isSupportedBy(ie);
 break;
 case "cut":
 case "copy":
 case "paste":
-_8ec=isSupportedBy(ie|_8e6|_8e9);
+_8f4=isSupportedBy(ie|_8ee|_8f1);
 break;
 case "inserttable":
-_8ec=isSupportedBy(_8e6|(this.object?ie:0));
+_8f4=isSupportedBy(_8ee|(this.object?ie:0));
 break;
 case "insertcell":
 case "insertcol":
@@ -27656,116 +21762,116 @@
 case "deleterows":
 case "mergecells":
 case "splitcell":
-_8ec=isSupportedBy(this.object?ie:0);
+_8f4=isSupportedBy(this.object?ie:0);
 break;
 default:
 return false;
 }
-return (dojo.render.html.ie&&_8ec.ie)||(dojo.render.html.mozilla&&_8ec.mozilla)||(dojo.render.html.safari&&_8ec.safari)||(_8ea&&_8ec.safari420)||(dojo.render.html.opera&&_8ec.opera);
-},execCommand:function(_8ed,_8ee){
-var _8ef;
+return (dojo.render.html.ie&&_8f4.ie)||(dojo.render.html.mozilla&&_8f4.mozilla)||(dojo.render.html.safari&&_8f4.safari)||(_8f2&&_8f4.safari420)||(dojo.render.html.opera&&_8f4.opera);
+},execCommand:function(_8f5,_8f6){
+var _8f7;
 this.focus();
-_8ed=this._normalizeCommand(_8ed);
-if(_8ee!=undefined){
-if(_8ed=="heading"){
+_8f5=this._normalizeCommand(_8f5);
+if(_8f6!=undefined){
+if(_8f5=="heading"){
 throw new Error("unimplemented");
 }else{
-if(_8ed=="formatblock"){
+if(_8f5=="formatblock"){
 if(this.object){
-_8ee=this._native2LocalFormatNames[_8ee];
+_8f6=this._native2LocalFormatNames[_8f6];
 }else{
 if(dojo.render.html.ie){
-_8ee="<"+_8ee+">";
+_8f6="<"+_8f6+">";
 }
 }
 }
 }
 }
 if(this.object){
-switch(_8ed){
+switch(_8f5){
 case "hilitecolor":
-_8ed="setbackcolor";
+_8f5="setbackcolor";
 break;
 case "forecolor":
 case "backcolor":
 case "fontsize":
 case "fontname":
-_8ed="set"+_8ed;
+_8f5="set"+_8f5;
 break;
 case "formatblock":
-_8ed="setblockformat";
+_8f5="setblockformat";
 }
-if(_8ed=="strikethrough"){
-_8ed="inserthtml";
-var _8f0=this.document.selection.createRange();
-if(!_8f0.htmlText){
+if(_8f5=="strikethrough"){
+_8f5="inserthtml";
+var _8f8=this.document.selection.createRange();
+if(!_8f8.htmlText){
 return;
 }
-_8ee=_8f0.htmlText.strike();
+_8f6=_8f8.htmlText.strike();
 }else{
-if(_8ed=="inserthorizontalrule"){
-_8ed="inserthtml";
-_8ee="<hr>";
+if(_8f5=="inserthorizontalrule"){
+_8f5="inserthtml";
+_8f6="<hr>";
 }
 }
-if(_8ed=="inserthtml"){
-var _8f0=this.document.selection.createRange();
+if(_8f5=="inserthtml"){
+var _8f8=this.document.selection.createRange();
 if(this.document.selection.type.toUpperCase()=="CONTROL"){
-for(var i=0;i<_8f0.length;i++){
-_8f0.item(i).outerHTML=_8ee;
+for(var i=0;i<_8f8.length;i++){
+_8f8.item(i).outerHTML=_8f6;
 }
 }else{
-_8f0.pasteHTML(_8ee);
-_8f0.select();
+_8f8.pasteHTML(_8f6);
+_8f8.select();
 }
-_8ef=true;
+_8f7=true;
 }else{
 if(arguments.length==1){
-_8ef=this.object.ExecCommand(this._activeX.command[_8ed],this._activeX.ui.noprompt);
+_8f7=this.object.ExecCommand(this._activeX.command[_8f5],this._activeX.ui.noprompt);
 }else{
-_8ef=this.object.ExecCommand(this._activeX.command[_8ed],this._activeX.ui.noprompt,_8ee);
+_8f7=this.object.ExecCommand(this._activeX.command[_8f5],this._activeX.ui.noprompt,_8f6);
 }
 }
 }else{
-if(_8ed=="inserthtml"){
+if(_8f5=="inserthtml"){
 if(dojo.render.html.ie){
-var _8f2=this.document.selection.createRange();
-_8f2.pasteHTML(_8ee);
-_8f2.select();
+var _8fa=this.document.selection.createRange();
+_8fa.pasteHTML(_8f6);
+_8fa.select();
 return true;
 }else{
-return this.document.execCommand(_8ed,false,_8ee);
+return this.document.execCommand(_8f5,false,_8f6);
 }
 }else{
-if((_8ed=="unlink")&&(this.queryCommandEnabled("unlink"))&&(dojo.render.html.mozilla)){
-var _8f3=this.window.getSelection();
-var _8f4=_8f3.getRangeAt(0);
-var _8f5=_8f4.startContainer;
-var _8f6=_8f4.startOffset;
-var _8f7=_8f4.endContainer;
-var _8f8=_8f4.endOffset;
+if((_8f5=="unlink")&&(this.queryCommandEnabled("unlink"))&&(dojo.render.html.mozilla)){
+var _8fb=this.window.getSelection();
+var _8fc=_8fb.getRangeAt(0);
+var _8fd=_8fc.startContainer;
+var _8fe=_8fc.startOffset;
+var _8ff=_8fc.endContainer;
+var _900=_8fc.endOffset;
 var a=dojo.withGlobal(this.window,"getAncestorElement",dojo.html.selection,["a"]);
 dojo.withGlobal(this.window,"selectElement",dojo.html.selection,[a]);
-_8ef=this.document.execCommand("unlink",false,null);
-var _8f4=this.document.createRange();
-_8f4.setStart(_8f5,_8f6);
-_8f4.setEnd(_8f7,_8f8);
-_8f3.removeAllRanges();
-_8f3.addRange(_8f4);
-return _8ef;
+_8f7=this.document.execCommand("unlink",false,null);
+var _8fc=this.document.createRange();
+_8fc.setStart(_8fd,_8fe);
+_8fc.setEnd(_8ff,_900);
+_8fb.removeAllRanges();
+_8fb.addRange(_8fc);
+return _8f7;
 }else{
-if((_8ed=="hilitecolor")&&(dojo.render.html.mozilla)){
+if((_8f5=="hilitecolor")&&(dojo.render.html.mozilla)){
 this.document.execCommand("useCSS",false,false);
-_8ef=this.document.execCommand(_8ed,false,_8ee);
+_8f7=this.document.execCommand(_8f5,false,_8f6);
 this.document.execCommand("useCSS",false,true);
 }else{
-if((dojo.render.html.ie)&&((_8ed=="backcolor")||(_8ed=="forecolor"))){
-_8ee=arguments.length>1?_8ee:null;
-_8ef=this.document.execCommand(_8ed,false,_8ee);
+if((dojo.render.html.ie)&&((_8f5=="backcolor")||(_8f5=="forecolor"))){
+_8f6=arguments.length>1?_8f6:null;
+_8f7=this.document.execCommand(_8f5,false,_8f6);
 }else{
-_8ee=arguments.length>1?_8ee:null;
-if(_8ee||_8ed!="createlink"){
-_8ef=this.document.execCommand(_8ed,false,_8ee);
+_8f6=arguments.length>1?_8f6:null;
+if(_8f6||_8f5!="createlink"){
+_8f7=this.document.execCommand(_8f5,false,_8f6);
 }
 }
 }
@@ -27773,94 +21879,94 @@
 }
 }
 this.onDisplayChanged();
-return _8ef;
-},queryCommandEnabled:function(_8fa){
-_8fa=this._normalizeCommand(_8fa);
+return _8f7;
+},queryCommandEnabled:function(_902){
+_902=this._normalizeCommand(_902);
 if(this.object){
-switch(_8fa){
+switch(_902){
 case "hilitecolor":
-_8fa="setbackcolor";
+_902="setbackcolor";
 break;
 case "forecolor":
 case "backcolor":
 case "fontsize":
 case "fontname":
-_8fa="set"+_8fa;
+_902="set"+_902;
 break;
 case "formatblock":
-_8fa="setblockformat";
+_902="setblockformat";
 break;
 case "strikethrough":
-_8fa="bold";
+_902="bold";
 break;
 case "inserthorizontalrule":
 return true;
 }
-if(typeof this._activeX.command[_8fa]=="undefined"){
+if(typeof this._activeX.command[_902]=="undefined"){
 return false;
 }
-var _8fb=this.object.QueryStatus(this._activeX.command[_8fa]);
-return ((_8fb!=this._activeX.status.notsupported)&&(_8fb!=this._activeX.status.disabled));
+var _903=this.object.QueryStatus(this._activeX.command[_902]);
+return ((_903!=this._activeX.status.notsupported)&&(_903!=this._activeX.status.disabled));
 }else{
 if(dojo.render.html.mozilla){
-if(_8fa=="unlink"){
+if(_902=="unlink"){
 return dojo.withGlobal(this.window,"hasAncestorElement",dojo.html.selection,["a"]);
 }else{
-if(_8fa=="inserttable"){
+if(_902=="inserttable"){
 return true;
 }
 }
 }
 var elem=(dojo.render.html.ie)?this.document.selection.createRange():this.document;
-return elem.queryCommandEnabled(_8fa);
+return elem.queryCommandEnabled(_902);
 }
-},queryCommandState:function(_8fd){
-_8fd=this._normalizeCommand(_8fd);
+},queryCommandState:function(_905){
+_905=this._normalizeCommand(_905);
 if(this.object){
-if(_8fd=="forecolor"){
-_8fd="setforecolor";
+if(_905=="forecolor"){
+_905="setforecolor";
 }else{
-if(_8fd=="backcolor"){
-_8fd="setbackcolor";
+if(_905=="backcolor"){
+_905="setbackcolor";
 }else{
-if(_8fd=="strikethrough"){
+if(_905=="strikethrough"){
 return dojo.withGlobal(this.window,"hasAncestorElement",dojo.html.selection,["strike"]);
 }else{
-if(_8fd=="inserthorizontalrule"){
+if(_905=="inserthorizontalrule"){
 return false;
 }
 }
 }
 }
-if(typeof this._activeX.command[_8fd]=="undefined"){
+if(typeof this._activeX.command[_905]=="undefined"){
 return null;
 }
-var _8fe=this.object.QueryStatus(this._activeX.command[_8fd]);
-return ((_8fe==this._activeX.status.latched)||(_8fe==this._activeX.status.ninched));
+var _906=this.object.QueryStatus(this._activeX.command[_905]);
+return ((_906==this._activeX.status.latched)||(_906==this._activeX.status.ninched));
 }else{
-return this.document.queryCommandState(_8fd);
+return this.document.queryCommandState(_905);
 }
-},queryCommandValue:function(_8ff){
-_8ff=this._normalizeCommand(_8ff);
+},queryCommandValue:function(_907){
+_907=this._normalizeCommand(_907);
 if(this.object){
-switch(_8ff){
+switch(_907){
 case "forecolor":
 case "backcolor":
 case "fontsize":
 case "fontname":
-_8ff="get"+_8ff;
-return this.object.execCommand(this._activeX.command[_8ff],this._activeX.ui.noprompt);
+_907="get"+_907;
+return this.object.execCommand(this._activeX.command[_907],this._activeX.ui.noprompt);
 case "formatblock":
-var _900=this.object.execCommand(this._activeX.command["getblockformat"],this._activeX.ui.noprompt);
-if(_900){
-return this._local2NativeFormatNames[_900];
+var _908=this.object.execCommand(this._activeX.command["getblockformat"],this._activeX.ui.noprompt);
+if(_908){
+return this._local2NativeFormatNames[_908];
 }
 }
 }else{
-if(dojo.render.html.ie&&_8ff=="formatblock"){
-return this._local2NativeFormatNames[this.document.queryCommandValue(_8ff)]||this.document.queryCommandValue(_8ff);
+if(dojo.render.html.ie&&_907=="formatblock"){
+return this._local2NativeFormatNames[this.document.queryCommandValue(_907)]||this.document.queryCommandValue(_907);
 }
-return this.document.queryCommandValue(_8ff);
+return this.document.queryCommandValue(_907);
 }
 },placeCursorAtStart:function(){
 this.focus();
@@ -27933,20 +22039,20 @@
 if(this.height){
 return;
 }
-var _90c=dojo.html.getBorderBox(this.editNode).height;
-if(!_90c){
-_90c=dojo.html.getBorderBox(this.document.body).height;
+var _914=dojo.html.getBorderBox(this.editNode).height;
+if(!_914){
+_914=dojo.html.getBorderBox(this.document.body).height;
 }
-if(_90c==0){
+if(_914==0){
 dojo.debug("Can not figure out the height of the editing area!");
 return;
 }
-this._lastHeight=_90c;
+this._lastHeight=_914;
 this.editorObject.style.height=this._lastHeight+"px";
 this.window.scrollTo(0,0);
 },_saveContent:function(e){
-var _90e=dojo.doc().getElementById("dojo.widget.RichText.savedContent");
-_90e.value+=this._SEPARATOR+this.saveName+":"+this.getEditorContent();
+var _916=dojo.doc().getElementById("dojo.widget.RichText.savedContent");
+_916.value+=this._SEPARATOR+this.saveName+":"+this.getEditorContent();
 },getEditorContent:function(){
 var ec="";
 try{
@@ -27963,21 +22069,21 @@
 }
 ec=this._postFilterContent(ec);
 if(this.relativeImageUrls){
-var _911=dojo.global().location.protocol+"//"+dojo.global().location.host;
-var _912=dojo.global().location.pathname;
-if(_912.match(/\/$/)){
+var _919=dojo.global().location.protocol+"//"+dojo.global().location.host;
+var _91a=dojo.global().location.pathname;
+if(_91a.match(/\/$/)){
 }else{
-var _913=_912.split("/");
-if(_913.length){
-_913.pop();
+var _91b=_91a.split("/");
+if(_91b.length){
+_91b.pop();
 }
-_912=_913.join("/")+"/";
+_91a=_91b.join("/")+"/";
 }
-var _914=new RegExp("(<img[^>]* src=[\"'])("+_911+"("+_912+")?)","ig");
-ec=ec.replace(_914,"$1");
+var _91c=new RegExp("(<img[^>]* src=[\"'])("+_919+"("+_91a+")?)","ig");
+ec=ec.replace(_91c,"$1");
 }
 return ec;
-},close:function(save,_916){
+},close:function(save,_91e){
 if(this.isClosed){
 return false;
 }
@@ -27985,7 +22091,7 @@
 save=true;
 }
 this._content=this._postFilterContent(this.editNode.innerHTML);
-var _917=(this.savedContent!=this._content);
+var _91f=(this.savedContent!=this._content);
 if(this.interval){
 clearInterval(this.interval);
 }
@@ -28036,7 +22142,7 @@
 this.object=null;
 this.editingArea=null;
 this.editorObject=null;
-return _917;
+return _91f;
 },destroyRendering:function(){
 },destroy:function(){
 this.destroyRendering();
@@ -28044,11 +22150,11 @@
 this.close(false);
 }
 dojo.widget.RichText.superclass.destroy.call(this);
-},connect:function(_919,_91a,_91b){
-dojo.event.connect(_919,_91a,this,_91b);
-},disconnect:function(_91c,_91d,_91e){
-dojo.event.disconnect(_91c,_91d,this,_91e);
-},disconnectAllWithRoot:function(_91f){
+},connect:function(_921,_922,_923){
+dojo.event.connect(_921,_922,this,_923);
+},disconnect:function(_924,_925,_926){
+dojo.event.disconnect(_924,_925,this,_926);
+},disconnectAllWithRoot:function(_927){
 dojo.deprecated("disconnectAllWithRoot","is deprecated. No need to disconnect manually","0.5");
 },_fixContentForMoz:function(html){
 html=html.replace(/<strong([ \>])/gi,"<b$1");
@@ -28058,40 +22164,40 @@
 return html;
 }});
 dojo.provide("dojo.lang.type");
-dojo.lang.whatAmI=function(_921){
+dojo.lang.whatAmI=function(_929){
 dojo.deprecated("dojo.lang.whatAmI","use dojo.lang.getType instead","0.5");
-return dojo.lang.getType(_921);
+return dojo.lang.getType(_929);
 };
 dojo.lang.whatAmI.custom={};
-dojo.lang.getType=function(_922){
+dojo.lang.getType=function(_92a){
 try{
-if(dojo.lang.isArray(_922)){
+if(dojo.lang.isArray(_92a)){
 return "array";
 }
-if(dojo.lang.isFunction(_922)){
+if(dojo.lang.isFunction(_92a)){
 return "function";
 }
-if(dojo.lang.isString(_922)){
+if(dojo.lang.isString(_92a)){
 return "string";
 }
-if(dojo.lang.isNumber(_922)){
+if(dojo.lang.isNumber(_92a)){
 return "number";
 }
-if(dojo.lang.isBoolean(_922)){
+if(dojo.lang.isBoolean(_92a)){
 return "boolean";
 }
-if(dojo.lang.isAlien(_922)){
+if(dojo.lang.isAlien(_92a)){
 return "alien";
 }
-if(dojo.lang.isUndefined(_922)){
+if(dojo.lang.isUndefined(_92a)){
 return "undefined";
 }
 for(var name in dojo.lang.whatAmI.custom){
-if(dojo.lang.whatAmI.custom[name](_922)){
+if(dojo.lang.whatAmI.custom[name](_92a)){
 return name;
 }
 }
-if(dojo.lang.isObject(_922)){
+if(dojo.lang.isObject(_92a)){
 return "object";
 }
 }
@@ -28099,28 +22205,28 @@
 }
 return "unknown";
 };
-dojo.lang.isNumeric=function(_924){
-return (!isNaN(_924)&&isFinite(_924)&&(_924!=null)&&!dojo.lang.isBoolean(_924)&&!dojo.lang.isArray(_924)&&!/^\s*$/.test(_924));
+dojo.lang.isNumeric=function(_92c){
+return (!isNaN(_92c)&&isFinite(_92c)&&(_92c!=null)&&!dojo.lang.isBoolean(_92c)&&!dojo.lang.isArray(_92c)&&!/^\s*$/.test(_92c));
 };
-dojo.lang.isBuiltIn=function(_925){
-return (dojo.lang.isArray(_925)||dojo.lang.isFunction(_925)||dojo.lang.isString(_925)||dojo.lang.isNumber(_925)||dojo.lang.isBoolean(_925)||(_925==null)||(_925 instanceof Error)||(typeof _925=="error"));
+dojo.lang.isBuiltIn=function(_92d){
+return (dojo.lang.isArray(_92d)||dojo.lang.isFunction(_92d)||dojo.lang.isString(_92d)||dojo.lang.isNumber(_92d)||dojo.lang.isBoolean(_92d)||(_92d==null)||(_92d instanceof Error)||(typeof _92d=="error"));
 };
-dojo.lang.isPureObject=function(_926){
-return ((_926!=null)&&dojo.lang.isObject(_926)&&_926.constructor==Object);
+dojo.lang.isPureObject=function(_92e){
+return ((_92e!=null)&&dojo.lang.isObject(_92e)&&_92e.constructor==Object);
 };
-dojo.lang.isOfType=function(_927,type,_929){
-var _92a=false;
-if(_929){
-_92a=_929["optional"];
+dojo.lang.isOfType=function(_92f,type,_931){
+var _932=false;
+if(_931){
+_932=_931["optional"];
 }
-if(_92a&&((_927===null)||dojo.lang.isUndefined(_927))){
+if(_932&&((_92f===null)||dojo.lang.isUndefined(_92f))){
 return true;
 }
 if(dojo.lang.isArray(type)){
-var _92b=type;
-for(var i in _92b){
-var _92d=_92b[i];
-if(dojo.lang.isOfType(_927,_92d)){
+var _933=type;
+for(var i in _933){
+var _935=_933[i];
+if(dojo.lang.isOfType(_92f,_935)){
 return true;
 }
 }
@@ -28132,41 +22238,41 @@
 switch(type){
 case Array:
 case "array":
-return dojo.lang.isArray(_927);
+return dojo.lang.isArray(_92f);
 case Function:
 case "function":
-return dojo.lang.isFunction(_927);
+return dojo.lang.isFunction(_92f);
 case String:
 case "string":
-return dojo.lang.isString(_927);
+return dojo.lang.isString(_92f);
 case Number:
 case "number":
-return dojo.lang.isNumber(_927);
+return dojo.lang.isNumber(_92f);
 case "numeric":
-return dojo.lang.isNumeric(_927);
+return dojo.lang.isNumeric(_92f);
 case Boolean:
 case "boolean":
-return dojo.lang.isBoolean(_927);
+return dojo.lang.isBoolean(_92f);
 case Object:
 case "object":
-return dojo.lang.isObject(_927);
+return dojo.lang.isObject(_92f);
 case "pureobject":
-return dojo.lang.isPureObject(_927);
+return dojo.lang.isPureObject(_92f);
 case "builtin":
-return dojo.lang.isBuiltIn(_927);
+return dojo.lang.isBuiltIn(_92f);
 case "alien":
-return dojo.lang.isAlien(_927);
+return dojo.lang.isAlien(_92f);
 case "undefined":
-return dojo.lang.isUndefined(_927);
+return dojo.lang.isUndefined(_92f);
 case null:
 case "null":
-return (_927===null);
+return (_92f===null);
 case "optional":
 dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])","use dojo.lang.isOfType(value, type, {optional: true} ) instead","0.5");
-return ((_927===null)||dojo.lang.isUndefined(_927));
+return ((_92f===null)||dojo.lang.isUndefined(_92f));
 default:
 if(dojo.lang.isFunction(type)){
-return (_927 instanceof type);
+return (_92f instanceof type);
 }else{
 dojo.raise("dojo.lang.isOfType() was passed an invalid type");
 }
@@ -28175,70 +22281,70 @@
 dojo.raise("If we get here, it means a bug was introduced above.");
 };
 dojo.lang.getObject=function(str){
-var _92f=str.split("."),i=0,obj=dj_global;
+var _937=str.split("."),i=0,obj=dj_global;
 do{
-obj=obj[_92f[i++]];
-}while(i<_92f.length&&obj);
+obj=obj[_937[i++]];
+}while(i<_937.length&&obj);
 return (obj!=dj_global)?obj:null;
 };
 dojo.lang.doesObjectExist=function(str){
-var _933=str.split("."),i=0,obj=dj_global;
+var _93b=str.split("."),i=0,obj=dj_global;
 do{
-obj=obj[_933[i++]];
-}while(i<_933.length&&obj);
+obj=obj[_93b[i++]];
+}while(i<_93b.length&&obj);
 return (obj&&obj!=dj_global);
 };
 dojo.provide("dojo.lang.assert");
-dojo.lang.assert=function(_936,_937){
-if(!_936){
-var _938="An assert statement failed.\n"+"The method dojo.lang.assert() was called with a 'false' value.\n";
-if(_937){
-_938+="Here's the assert message:\n"+_937+"\n";
+dojo.lang.assert=function(_93e,_93f){
+if(!_93e){
+var _940="An assert statement failed.\n"+"The method dojo.lang.assert() was called with a 'false' value.\n";
+if(_93f){
+_940+="Here's the assert message:\n"+_93f+"\n";
 }
-throw new Error(_938);
+throw new Error(_940);
 }
 };
-dojo.lang.assertType=function(_939,type,_93b){
-if(dojo.lang.isString(_93b)){
+dojo.lang.assertType=function(_941,type,_943){
+if(dojo.lang.isString(_943)){
 dojo.deprecated("dojo.lang.assertType(value, type, \"message\")","use dojo.lang.assertType(value, type) instead","0.5");
 }
-if(!dojo.lang.isOfType(_939,type,_93b)){
+if(!dojo.lang.isOfType(_941,type,_943)){
 if(!dojo.lang.assertType._errorMessage){
 dojo.lang.assertType._errorMessage="Type mismatch: dojo.lang.assertType() failed.";
 }
 dojo.lang.assert(false,dojo.lang.assertType._errorMessage);
 }
 };
-dojo.lang.assertValidKeywords=function(_93c,_93d,_93e){
+dojo.lang.assertValidKeywords=function(_944,_945,_946){
 var key;
-if(!_93e){
+if(!_946){
 if(!dojo.lang.assertValidKeywords._errorMessage){
 dojo.lang.assertValidKeywords._errorMessage="In dojo.lang.assertValidKeywords(), found invalid keyword:";
 }
-_93e=dojo.lang.assertValidKeywords._errorMessage;
+_946=dojo.lang.assertValidKeywords._errorMessage;
 }
-if(dojo.lang.isArray(_93d)){
-for(key in _93c){
-if(!dojo.lang.inArray(_93d,key)){
-dojo.lang.assert(false,_93e+" "+key);
+if(dojo.lang.isArray(_945)){
+for(key in _944){
+if(!dojo.lang.inArray(_945,key)){
+dojo.lang.assert(false,_946+" "+key);
 }
 }
 }else{
-for(key in _93c){
-if(!(key in _93d)){
-dojo.lang.assert(false,_93e+" "+key);
+for(key in _944){
+if(!(key in _945)){
+dojo.lang.assert(false,_946+" "+key);
 }
 }
 }
 };
 dojo.provide("dojo.AdapterRegistry");
-dojo.AdapterRegistry=function(_940){
+dojo.AdapterRegistry=function(_948){
 this.pairs=[];
-this.returnWrappers=_940||false;
+this.returnWrappers=_948||false;
 };
-dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_942,wrap,_944,_945){
-var type=(_945)?"unshift":"push";
-this.pairs[type]([name,_942,wrap,_944]);
+dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_94a,wrap,_94c,_94d){
+var type=(_94d)?"unshift":"push";
+this.pairs[type]([name,_94a,wrap,_94c]);
 },match:function(){
 for(var i=0;i<this.pairs.length;i++){
 var pair=this.pairs[i];
@@ -28263,8 +22369,8 @@
 }});
 dojo.provide("dojo.lang.repr");
 dojo.lang.reprRegistry=new dojo.AdapterRegistry();
-dojo.lang.registerRepr=function(name,_94d,wrap,_94f){
-dojo.lang.reprRegistry.register(name,_94d,wrap,_94f);
+dojo.lang.registerRepr=function(name,_955,wrap,_957){
+dojo.lang.reprRegistry.register(name,_955,wrap,_957);
 };
 dojo.lang.repr=function(obj){
 if(typeof (obj)=="undefined"){
@@ -28316,12 +22422,12 @@
 dojo.kwCompoundRequire({common:["dojo.lang.common","dojo.lang.assert","dojo.lang.array","dojo.lang.type","dojo.lang.func","dojo.lang.extras","dojo.lang.repr","dojo.lang.declare"]});
 dojo.provide("dojo.lang.*");
 dojo.provide("dojo.html.iframe");
-dojo.html.iframeContentWindow=function(_955){
-var win=dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(_955))||dojo.html.iframeContentDocument(_955).__parent__||(_955.name&&document.frames[_955.name])||null;
+dojo.html.iframeContentWindow=function(_95d){
+var win=dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(_95d))||dojo.html.iframeContentDocument(_95d).__parent__||(_95d.name&&document.frames[_95d.name])||null;
 return win;
 };
-dojo.html.iframeContentDocument=function(_957){
-var doc=_957.contentDocument||((_957.contentWindow)&&(_957.contentWindow.document))||((_957.name)&&(document.frames[_957.name])&&(document.frames[_957.name].document))||null;
+dojo.html.iframeContentDocument=function(_95f){
+var doc=_95f.contentDocument||((_95f.contentWindow)&&(_95f.contentWindow.document))||((_95f.name)&&(document.frames[_95f.name])&&(document.frames[_95f.name].document))||null;
 return doc;
 };
 dojo.html.BackgroundIframe=function(node){
@@ -28340,24 +22446,24 @@
 };
 dojo.lang.extend(dojo.html.BackgroundIframe,{iframe:null,onResized:function(){
 if(this.iframe&&this.domNode&&this.domNode.parentNode){
-var _95b=dojo.html.getMarginBox(this.domNode);
-if(_95b.width==0||_95b.height==0){
+var _963=dojo.html.getMarginBox(this.domNode);
+if(_963.width==0||_963.height==0){
 dojo.lang.setTimeout(this,this.onResized,100);
 return;
 }
-this.iframe.style.width=_95b.width+"px";
-this.iframe.style.height=_95b.height+"px";
+this.iframe.style.width=_963.width+"px";
+this.iframe.style.height=_963.height+"px";
 }
 },size:function(node){
 if(!this.iframe){
 return;
 }
-var _95d=dojo.html.toCoordinateObject(node,true,dojo.html.boxSizing.BORDER_BOX);
+var _965=dojo.html.toCoordinateObject(node,true,dojo.html.boxSizing.BORDER_BOX);
 with(this.iframe.style){
-width=_95d.width+"px";
-height=_95d.height+"px";
-left=_95d.left+"px";
-top=_95d.top+"px";
+width=_965.width+"px";
+height=_965.height+"px";
+left=_965.left+"px";
+top=_965.top+"px";
 }
 },setZIndex:function(node){
 if(!this.iframe){
@@ -28396,7 +22502,7 @@
 position="absolute";
 }
 },aboutToShow:function(){
-},open:function(x,y,_962,_963,_964,_965){
+},open:function(x,y,_96a,_96b,_96c,_96d){
 if(this.isShowingNow){
 return;
 }
@@ -28405,80 +22511,80 @@
 return;
 }
 this.aboutToShow();
-var _966=false,node,_968;
+var _96e=false,node,_970;
 if(typeof x=="object"){
 node=x;
-_968=_963;
-_963=_962;
-_962=y;
-_966=true;
+_970=_96b;
+_96b=_96a;
+_96a=y;
+_96e=true;
 }
-this.parent=_962;
+this.parent=_96a;
 dojo.body().appendChild(this.domNode);
-_963=_963||_962["domNode"]||[];
-var _969=null;
+_96b=_96b||_96a["domNode"]||[];
+var _971=null;
 this.isTopLevel=true;
-while(_962){
-if(_962!==this&&(_962.setOpenedSubpopup!=undefined&&_962.applyPopupBasicStyle!=undefined)){
-_969=_962;
+while(_96a){
+if(_96a!==this&&(_96a.setOpenedSubpopup!=undefined&&_96a.applyPopupBasicStyle!=undefined)){
+_971=_96a;
 this.isTopLevel=false;
-_969.setOpenedSubpopup(this);
+_971.setOpenedSubpopup(this);
 break;
 }
-_962=_962.parent;
+_96a=_96a.parent;
 }
-this.parentPopup=_969;
-this.popupIndex=_969?_969.popupIndex+1:1;
+this.parentPopup=_971;
+this.popupIndex=_971?_971.popupIndex+1:1;
 if(this.isTopLevel){
-var _96a=dojo.html.isNode(_963)?_963:null;
-dojo.widget.PopupManager.opened(this,_96a);
+var _972=dojo.html.isNode(_96b)?_96b:null;
+dojo.widget.PopupManager.opened(this,_972);
 }
 if(this.isTopLevel&&!dojo.withGlobal(this.openedForWindow||dojo.global(),dojo.html.selection.isCollapsed)){
 this._bookmark=dojo.withGlobal(this.openedForWindow||dojo.global(),dojo.html.selection.getBookmark);
 }else{
 this._bookmark=null;
 }
-if(_963 instanceof Array){
-_963={left:_963[0],top:_963[1],width:0,height:0};
+if(_96b instanceof Array){
+_96b={left:_96b[0],top:_96b[1],width:0,height:0};
 }
 with(this.domNode.style){
 display="";
 zIndex=this.beginZIndex+this.popupIndex;
 }
-if(_966){
-this.move(node,_965,_968);
+if(_96e){
+this.move(node,_96d,_970);
 }else{
-this.move(x,y,_965,_964);
+this.move(x,y,_96d,_96c);
 }
 this.domNode.style.display="none";
-this.explodeSrc=_963;
+this.explodeSrc=_96b;
 this.show();
 this.isShowingNow=true;
-},move:function(x,y,_96d,_96e){
-var _96f=(typeof x=="object");
-if(_96f){
-var _970=_96d;
+},move:function(x,y,_975,_976){
+var _977=(typeof x=="object");
+if(_977){
+var _978=_975;
 var node=x;
-_96d=y;
-if(!_970){
-_970={"BL":"TL","TL":"BL"};
+_975=y;
+if(!_978){
+_978={"BL":"TL","TL":"BL"};
 }
-dojo.html.placeOnScreenAroundElement(this.domNode,node,_96d,this.aroundBox,_970);
+dojo.html.placeOnScreenAroundElement(this.domNode,node,_975,this.aroundBox,_978);
 }else{
-if(!_96e){
-_96e="TL,TR,BL,BR";
+if(!_976){
+_976="TL,TR,BL,BR";
 }
-dojo.html.placeOnScreen(this.domNode,x,y,_96d,true,_96e);
+dojo.html.placeOnScreen(this.domNode,x,y,_975,true,_976);
 }
-},close:function(_972){
-if(_972){
+},close:function(_97a){
+if(_97a){
 this.domNode.style.display="none";
 }
 if(this.animationInProgress){
 this.queueOnAnimationFinish.push(this.close,[]);
 return;
 }
-this.closeSubpopup(_972);
+this.closeSubpopup(_97a);
 this.hide();
 if(this.bgIframe){
 this.bgIframe.hide();
@@ -28513,19 +22619,19 @@
 }
 }
 this._bookmark=null;
-},closeAll:function(_973){
+},closeAll:function(_97b){
 if(this.parentPopup){
-this.parentPopup.closeAll(_973);
+this.parentPopup.closeAll(_97b);
 }else{
-this.close(_973);
+this.close(_97b);
 }
-},setOpenedSubpopup:function(_974){
-this.currentSubpopup=_974;
-},closeSubpopup:function(_975){
+},setOpenedSubpopup:function(_97c){
+this.currentSubpopup=_97c;
+},closeSubpopup:function(_97d){
 if(this.currentSubpopup==null){
 return;
 }
-this.currentSubpopup.close(_975);
+this.currentSubpopup.close(_97d);
 this.currentSubpopup=null;
 },onShow:function(){
 dojo.widget.PopupContainer.superclass.onShow.apply(this,arguments);
@@ -28575,14 +22681,14 @@
 this.registeredWindows.push(win);
 }
 };
-this.registerAllWindows=function(_979){
-if(!_979){
-_979=dojo.html.getDocumentWindow(window.top&&window.top.document||window.document);
+this.registerAllWindows=function(_981){
+if(!_981){
+_981=dojo.html.getDocumentWindow(window.top&&window.top.document||window.document);
 }
-this.registerWin(_979);
-for(var i=0;i<_979.frames.length;i++){
+this.registerWin(_981);
+for(var i=0;i<_981.frames.length;i++){
 try{
-var win=dojo.html.getDocumentWindow(_979.frames[i].document);
+var win=dojo.html.getDocumentWindow(_981.frames[i].document);
 if(win){
 this.registerAllWindows(win);
 }
@@ -28614,7 +22720,7 @@
 this.currentFocusMenu=null;
 }
 };
-this.opened=function(menu,_980){
+this.opened=function(menu,_988){
 if(menu==this.currentMenu){
 return;
 }
@@ -28623,7 +22729,7 @@
 }
 this.currentMenu=menu;
 this.currentFocusMenu=menu;
-this.currentButton=_980;
+this.currentButton=_988;
 };
 this.setFocusedMenu=function(menu){
 this.currentFocusMenu=menu;
@@ -28648,7 +22754,7 @@
 if(!this.currentMenu){
 return;
 }
-var _985=dojo.html.getScroll().offset;
+var _98d=dojo.html.getScroll().offset;
 var m=this.currentMenu;
 while(m){
 if(dojo.html.overElement(m.domNode,e)||dojo.html.isDescendantOf(e.target,m.domNode)){
@@ -28675,21 +22781,21 @@
 border="1";
 style.backgroundColor="white";
 }
-var _988=this._palettes[this.palette];
-for(var i=0;i<_988.length;i++){
+var _990=this._palettes[this.palette];
+for(var i=0;i<_990.length;i++){
 var tr=this.domNode.insertRow(-1);
-for(var j=0;j<_988[i].length;j++){
-if(_988[i][j].length==3){
-_988[i][j]=_988[i][j].replace(/(.)(.)(.)/,"$1$1$2$2$3$3");
+for(var j=0;j<_990[i].length;j++){
+if(_990[i][j].length==3){
+_990[i][j]=_990[i][j].replace(/(.)(.)(.)/,"$1$1$2$2$3$3");
 }
 var td=tr.insertCell(-1);
 with(td.style){
-backgroundColor="#"+_988[i][j];
+backgroundColor="#"+_990[i][j];
 border="1px solid gray";
 width=height="15px";
 fontSize="1px";
 }
-td.color="#"+_988[i][j];
+td.color="#"+_990[i][j];
 td.onmouseover=function(e){
 this.style.borderColor="white";
 };
@@ -28703,7 +22809,7 @@
 },onClick:function(e){
 this.onColorSelect(e.currentTarget.color);
 e.currentTarget.style.borderColor="gray";
-},onColorSelect:function(_990){
+},onColorSelect:function(_998){
 }});
 dojo.provide("dojo.widget.ContentPane");
 dojo.widget.defineWidget("dojo.widget.ContentPane",dojo.widget.HtmlWidget,function(){
@@ -28714,7 +22820,7 @@
 this._ioBindObj;
 this.scriptScope;
 this.bindArgs={};
-},{isContainer:true,adjustPaths:true,href:"",extractContent:true,parseContent:true,cacheContent:true,preload:false,refreshOnShow:false,handler:"",executeScripts:false,scriptSeparation:true,loadingMessage:"Loading...",isLoaded:false,postCreate:function(args,frag,_993){
+},{isContainer:true,adjustPaths:true,href:"",extractContent:true,parseContent:true,cacheContent:true,preload:false,refreshOnShow:false,handler:"",executeScripts:false,scriptSeparation:true,loadingMessage:"Loading...",isLoaded:false,postCreate:function(args,frag,_99b){
 if(this.handler!==""){
 this.setHandler(this.handler);
 }
@@ -28755,7 +22861,7 @@
 }
 bind.abort();
 delete this._ioBindObj;
-},_downloadExternalContent:function(url,_997){
+},_downloadExternalContent:function(url,_99f){
 this.abort();
 this._handleDefaults(this.loadingMessage,"onDownloadStart");
 var self=this;
@@ -28768,23 +22874,23 @@
 self._handleDefaults.call(self,e,"onDownloadError");
 self.onLoad();
 }
-}},_997));
-},_cacheSetting:function(_99d,_99e){
+}},_99f));
+},_cacheSetting:function(_9a5,_9a6){
 for(var x in this.bindArgs){
-if(dojo.lang.isUndefined(_99d[x])){
-_99d[x]=this.bindArgs[x];
+if(dojo.lang.isUndefined(_9a5[x])){
+_9a5[x]=this.bindArgs[x];
 }
 }
-if(dojo.lang.isUndefined(_99d.useCache)){
-_99d.useCache=_99e;
+if(dojo.lang.isUndefined(_9a5.useCache)){
+_9a5.useCache=_9a6;
 }
-if(dojo.lang.isUndefined(_99d.preventCache)){
-_99d.preventCache=!_99e;
+if(dojo.lang.isUndefined(_9a5.preventCache)){
+_9a5.preventCache=!_9a6;
 }
-if(dojo.lang.isUndefined(_99d.mimetype)){
-_99d.mimetype="text/html";
+if(dojo.lang.isUndefined(_9a5.mimetype)){
+_9a5.mimetype="text/html";
 }
-return _99d;
+return _9a5;
 },onLoad:function(e){
 this._runStack("_onLoadStack");
 this.isLoaded=true;
@@ -28796,21 +22902,21 @@
 if(this.onUnLoad!==dojo.widget.ContentPane.prototype.onUnLoad){
 this.onUnLoad.apply(this,arguments);
 }
-},_runStack:function(_9a3){
-var st=this[_9a3];
+},_runStack:function(_9ab){
+var st=this[_9ab];
 var err="";
-var _9a6=this.scriptScope||window;
+var _9ae=this.scriptScope||window;
 for(var i=0;i<st.length;i++){
 try{
-st[i].call(_9a6);
+st[i].call(_9ae);
 }
 catch(e){
 err+="\n"+st[i]+" failed: "+e.description;
 }
 }
-this[_9a3]=[];
+this[_9ab]=[];
 if(err.length){
-var name=(_9a3=="_onLoadStack")?"addOnLoad":"addOnUnLoad";
+var name=(_9ab=="_onLoadStack")?"addOnLoad":"addOnUnLoad";
 this._handleDefaults(name+" failure\n "+err,"onExecError","debug");
 }
 },addOnLoad:function(obj,func){
@@ -28820,11 +22926,11 @@
 },addOnUnLoad:function(){
 dojo.deprecated(this.widgetType+".addOnUnLoad, use addOnUnload instead. (lowercased Load)",0.5);
 this.addOnUnload.apply(this,arguments);
-},_pushOnStack:function(_9ad,obj,func){
+},_pushOnStack:function(_9b5,obj,func){
 if(typeof func=="undefined"){
-_9ad.push(obj);
+_9b5.push(obj);
 }else{
-_9ad.push(function(){
+_9b5.push(function(){
 obj[func]();
 });
 }
@@ -28838,9 +22944,9 @@
 },onDownloadEnd:function(url,data){
 data=this.splitAndFixPaths(data,url);
 this.setContent(data);
-},_handleDefaults:function(e,_9b7,_9b8){
-if(!_9b7){
-_9b7="onContentError";
+},_handleDefaults:function(e,_9bf,_9c0){
+if(!_9bf){
+_9bf="onContentError";
 }
 if(dojo.lang.isString(e)){
 e={text:e};
@@ -28859,9 +22965,9 @@
 this.returnValue=false;
 };
 }
-this[_9b7](e);
+this[_9bf](e);
 if(e.returnValue){
-switch(_9b8){
+switch(_9c0){
 case true:
 case "alert":
 alert(e.toString());
@@ -28884,109 +22990,109 @@
 }
 arguments.callee._loopStop=false;
 },splitAndFixPaths:function(s,url){
-var _9bb=[],_9bc=[],tmp=[];
-var _9be=[],_9bf=[],attr=[],_9c1=[];
-var str="",path="",fix="",_9c5="",tag="",_9c7="";
+var _9c3=[],_9c4=[],tmp=[];
+var _9c6=[],_9c7=[],attr=[],_9c9=[];
+var str="",path="",fix="",_9cd="",tag="",_9cf="";
 if(!url){
 url="./";
 }
 if(s){
-var _9c8=/<title[^>]*>([\s\S]*?)<\/title>/i;
-while(_9be=_9c8.exec(s)){
-_9bb.push(_9be[1]);
-s=s.substring(0,_9be.index)+s.substr(_9be.index+_9be[0].length);
+var _9d0=/<title[^>]*>([\s\S]*?)<\/title>/i;
+while(_9c6=_9d0.exec(s)){
+_9c3.push(_9c6[1]);
+s=s.substring(0,_9c6.index)+s.substr(_9c6.index+_9c6[0].length);
 }
 if(this.adjustPaths){
-var _9c9=/<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i;
-var _9ca=/\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i;
-var _9cb=/^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/;
-while(tag=_9c9.exec(s)){
+var _9d1=/<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i;
+var _9d2=/\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i;
+var _9d3=/^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/;
+while(tag=_9d1.exec(s)){
 str+=s.substring(0,tag.index);
 s=s.substring((tag.index+tag[0].length),s.length);
 tag=tag[0];
-_9c5="";
-while(attr=_9ca.exec(tag)){
+_9cd="";
+while(attr=_9d2.exec(tag)){
 path="";
-_9c7=attr[3];
+_9cf=attr[3];
 switch(attr[1].toLowerCase()){
 case "src":
 case "href":
-if(_9cb.exec(_9c7)){
-path=_9c7;
+if(_9d3.exec(_9cf)){
+path=_9cf;
 }else{
-path=(new dojo.uri.Uri(url,_9c7).toString());
+path=(new dojo.uri.Uri(url,_9cf).toString());
 }
 break;
 case "style":
-path=dojo.html.fixPathsInCssText(_9c7,url);
+path=dojo.html.fixPathsInCssText(_9cf,url);
 break;
 default:
-path=_9c7;
+path=_9cf;
 }
 fix=" "+attr[1]+"="+attr[2]+path+attr[2];
-_9c5+=tag.substring(0,attr.index)+fix;
+_9cd+=tag.substring(0,attr.index)+fix;
 tag=tag.substring((attr.index+attr[0].length),tag.length);
 }
-str+=_9c5+tag;
+str+=_9cd+tag;
 }
 s=str+s;
 }
-_9c8=/(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i;
-while(_9be=_9c8.exec(s)){
-if(_9be[1]&&_9be[1].toLowerCase()=="style"){
-_9c1.push(dojo.html.fixPathsInCssText(_9be[2],url));
+_9d0=/(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i;
+while(_9c6=_9d0.exec(s)){
+if(_9c6[1]&&_9c6[1].toLowerCase()=="style"){
+_9c9.push(dojo.html.fixPathsInCssText(_9c6[2],url));
 }else{
-if(attr=_9be[3].match(/href=(['"]?)([^'">]*)\1/i)){
-_9c1.push({path:attr[2]});
+if(attr=_9c6[3].match(/href=(['"]?)([^'">]*)\1/i)){
+_9c9.push({path:attr[2]});
 }
 }
-s=s.substring(0,_9be.index)+s.substr(_9be.index+_9be[0].length);
+s=s.substring(0,_9c6.index)+s.substr(_9c6.index+_9c6[0].length);
 }
-var _9c8=/<script([^>]*)>([\s\S]*?)<\/script>/i;
-var _9cc=/src=(['"]?)([^"']*)\1/i;
-var _9cd=/.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/;
-var _9ce=/(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g;
-var _9cf=/dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix|registerModulePath)|defineNamespace)\((['"]).*?\1\)\s*;?/;
-while(_9be=_9c8.exec(s)){
-if(this.executeScripts&&_9be[1]){
-if(attr=_9cc.exec(_9be[1])){
-if(_9cd.exec(attr[2])){
+var _9d0=/<script([^>]*)>([\s\S]*?)<\/script>/i;
+var _9d4=/src=(['"]?)([^"']*)\1/i;
+var _9d5=/.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/;
+var _9d6=/(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g;
+var _9d7=/dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix|registerModulePath)|defineNamespace)\((['"]).*?\1\)\s*;?/;
+while(_9c6=_9d0.exec(s)){
+if(this.executeScripts&&_9c6[1]){
+if(attr=_9d4.exec(_9c6[1])){
+if(_9d5.exec(attr[2])){
 dojo.debug("Security note! inhibit:"+attr[2]+" from  being loaded again.");
 }else{
-_9bc.push({path:attr[2]});
+_9c4.push({path:attr[2]});
 }
 }
 }
-if(_9be[2]){
-var sc=_9be[2].replace(_9ce,"");
+if(_9c6[2]){
+var sc=_9c6[2].replace(_9d6,"");
 if(!sc){
 continue;
 }
-while(tmp=_9cf.exec(sc)){
-_9bf.push(tmp[0]);
+while(tmp=_9d7.exec(sc)){
+_9c7.push(tmp[0]);
 sc=sc.substring(0,tmp.index)+sc.substr(tmp.index+tmp[0].length);
 }
 if(this.executeScripts){
-_9bc.push(sc);
+_9c4.push(sc);
 }
 }
-s=s.substr(0,_9be.index)+s.substr(_9be.index+_9be[0].length);
+s=s.substr(0,_9c6.index)+s.substr(_9c6.index+_9c6[0].length);
 }
 if(this.extractContent){
-_9be=s.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
-if(_9be){
-s=_9be[1];
+_9c6=s.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+if(_9c6){
+s=_9c6[1];
 }
 }
 if(this.executeScripts&&this.scriptSeparation){
-var _9c8=/(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*?\S=)((['"])[^>]*scriptScope[^>]*>)/;
-var _9d1=/([\s'";:\(])scriptScope(.*)/;
+var _9d0=/(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*?\S=)((['"])[^>]*scriptScope[^>]*>)/;
+var _9d9=/([\s'";:\(])scriptScope(.*)/;
 str="";
-while(tag=_9c8.exec(s)){
+while(tag=_9d0.exec(s)){
 tmp=((tag[3]=="'")?"\"":"'");
 fix="";
 str+=s.substring(0,tag.index)+tag[1];
-while(attr=_9d1.exec(tag[2])){
+while(attr=_9d9.exec(tag[2])){
 tag[2]=tag[2].substring(0,attr.index)+attr[1]+"dojo.widget.byId("+tmp+this.widgetId+tmp+").scriptScope"+attr[2];
 }
 str+=tag[2];
@@ -28995,7 +23101,7 @@
 s=str+s;
 }
 }
-return {"xml":s,"styles":_9c1,"titles":_9bb,"requires":_9bf,"scripts":_9bc,"url":url};
+return {"xml":s,"styles":_9c9,"titles":_9c3,"requires":_9c7,"scripts":_9c4,"url":url};
 },_setContent:function(cont){
 this.destroyChildren();
 for(var i=0;i<this._styleNodes.length;i++){
@@ -29053,19 +23159,19 @@
 }
 }
 }
-var _9d7=this;
+var _9df=this;
 function asyncParse(){
-if(_9d7.executeScripts){
-_9d7._executeScripts(data.scripts);
+if(_9df.executeScripts){
+_9df._executeScripts(data.scripts);
 }
-if(_9d7.parseContent){
-var node=_9d7.containerNode||_9d7.domNode;
-var _9d9=new dojo.xml.Parse();
-var frag=_9d9.parseElement(node,null,true);
-dojo.widget.getParser().createSubComponents(frag,_9d7);
+if(_9df.parseContent){
+var node=_9df.containerNode||_9df.domNode;
+var _9e1=new dojo.xml.Parse();
+var frag=_9e1.parseElement(node,null,true);
+dojo.widget.getParser().createSubComponents(frag,_9df);
 }
-_9d7.onResized();
-_9d7.onLoad();
+_9df.onResized();
+_9df.onLoad();
 }
 if(dojo.hostenv.isXDomain&&data.requires.length){
 dojo.addOnLoad(asyncParse);
@@ -29073,10 +23179,10 @@
 asyncParse();
 }
 }
-},setHandler:function(_9db){
-var fcn=dojo.lang.isFunction(_9db)?_9db:window[_9db];
+},setHandler:function(_9e3){
+var fcn=dojo.lang.isFunction(_9e3)?_9e3:window[_9e3];
 if(!dojo.lang.isFunction(fcn)){
-this._handleDefaults("Unable to set handler, '"+_9db+"' not a function.","onExecError",true);
+this._handleDefaults("Unable to set handler, '"+_9e3+"' not a function.","onExecError",true);
 return;
 }
 this.handler=function(){
@@ -29090,20 +23196,20 @@
 }
 this.onLoad();
 return ret;
-},_executeScripts:function(_9de){
+},_executeScripts:function(_9e6){
 var self=this;
 var tmp="",code="";
-for(var i=0;i<_9de.length;i++){
-if(_9de[i].path){
-dojo.io.bind(this._cacheSetting({"url":_9de[i].path,"load":function(type,_9e4){
-dojo.lang.hitch(self,tmp=";"+_9e4);
-},"error":function(type,_9e6){
-_9e6.text=type+" downloading remote script";
-self._handleDefaults.call(self,_9e6,"onExecError","debug");
+for(var i=0;i<_9e6.length;i++){
+if(_9e6[i].path){
+dojo.io.bind(this._cacheSetting({"url":_9e6[i].path,"load":function(type,_9ec){
+dojo.lang.hitch(self,tmp=";"+_9ec);
+},"error":function(type,_9ee){
+_9ee.text=type+" downloading remote script";
+self._handleDefaults.call(self,_9ee,"onExecError","debug");
 },"mimetype":"text/plain","sync":true},this.cacheContent));
 code+=tmp;
 }else{
-code+=_9de[i];
+code+=_9e6[i];
 }
 }
 try{
@@ -29235,30 +23341,30 @@
 dojo.addOnUnload(dojo.widget.Editor2ToolbarItemManager,"destroy");
 dojo.declare("dojo.widget.Editor2ToolbarButton",null,function(name){
 this._name=name;
-},{create:function(node,_9f4,_9f5){
+},{create:function(node,_9fc,_9fd){
 this._domNode=node;
-var cmd=_9f4.parent.getCommand(this._name);
+var cmd=_9fc.parent.getCommand(this._name);
 if(cmd){
 this._domNode.title=cmd.getText();
 }
 this.disableSelection(this._domNode);
-this._parentToolbar=_9f4;
+this._parentToolbar=_9fc;
 dojo.event.connect(this._domNode,"onclick",this,"onClick");
-if(!_9f5){
+if(!_9fd){
 dojo.event.connect(this._domNode,"onmouseover",this,"onMouseOver");
 dojo.event.connect(this._domNode,"onmouseout",this,"onMouseOut");
 }
-},disableSelection:function(_9f7){
-dojo.html.disableSelection(_9f7);
-var _9f8=_9f7.all||_9f7.getElementsByTagName("*");
-for(var x=0;x<_9f8.length;x++){
-dojo.html.disableSelection(_9f8[x]);
+},disableSelection:function(_9ff){
+dojo.html.disableSelection(_9ff);
+var _a00=_9ff.all||_9ff.getElementsByTagName("*");
+for(var x=0;x<_a00.length;x++){
+dojo.html.disableSelection(_a00[x]);
 }
 },onMouseOver:function(){
-var _9fa=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_9fa){
-var _9fb=_9fa.getCommand(this._name);
-if(_9fb&&_9fb.getState()!=dojo.widget.Editor2Manager.commandState.Disabled){
+var _a02=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a02){
+var _a03=_a02.getCommand(this._name);
+if(_a03&&_a03.getState()!=dojo.widget.Editor2Manager.commandState.Disabled){
 this.highlightToolbarItem();
 }
 }
@@ -29271,23 +23377,23 @@
 if(this._domNode&&!this._domNode.disabled&&this._parentToolbar.checkAvailability()){
 e.preventDefault();
 e.stopPropagation();
-var _9fd=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_9fd){
-var _9fe=_9fd.getCommand(this._name);
-if(_9fe){
-_9fe.execute();
+var _a05=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a05){
+var _a06=_a05.getCommand(this._name);
+if(_a06){
+_a06.execute();
 }
 }
 }
 },refreshState:function(){
-var _9ff=dojo.widget.Editor2Manager.getCurrentInstance();
+var _a07=dojo.widget.Editor2Manager.getCurrentInstance();
 var em=dojo.widget.Editor2Manager;
-if(_9ff){
-var _a01=_9ff.getCommand(this._name);
-if(_a01){
-var _a02=_a01.getState();
-if(_a02!=this._lastState){
-switch(_a02){
+if(_a07){
+var _a09=_a07.getCommand(this._name);
+if(_a09){
+var _a0a=_a09.getState();
+if(_a0a!=this._lastState){
+switch(_a0a){
 case em.commandState.Latched:
 this.latchToolbarItem();
 break;
@@ -29298,7 +23404,7 @@
 default:
 this.disableToolbarItem();
 }
-this._lastState=_a02;
+this._lastState=_a0a;
 }
 }
 }
@@ -29357,19 +23463,19 @@
 dojo.event.connect(this._dropdown,"open",this,"latchToolbarItem");
 dojo.event.connect(this._dropdown,"close",this,"enableToolbarItem");
 }
-},setColor:function(_a03){
+},setColor:function(_a0b){
 this._dropdown.close();
-var _a04=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_a04){
-var _a05=_a04.getCommand(this._name);
-if(_a05){
-_a05.execute(_a03);
+var _a0c=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a0c){
+var _a0d=_a0c.getCommand(this._name);
+if(_a0d){
+_a0d.execute(_a0b);
 }
 }
 }});
-dojo.declare("dojo.widget.Editor2ToolbarFormatBlockPlainSelect",dojo.widget.Editor2ToolbarButton,{create:function(node,_a07){
+dojo.declare("dojo.widget.Editor2ToolbarFormatBlockPlainSelect",dojo.widget.Editor2ToolbarButton,{create:function(node,_a0f){
 this._domNode=node;
-this._parentToolbar=_a07;
+this._parentToolbar=_a0f;
 this._domNode=node;
 this.disableSelection(this._domNode);
 dojo.event.connect(this._domNode,"onchange",this,"onChange");
@@ -29378,27 +23484,27 @@
 },onChange:function(){
 if(this._parentToolbar.checkAvailability()){
 var sv=this._domNode.value.toLowerCase();
-var _a09=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_a09){
-var _a0a=_a09.getCommand(this._name);
-if(_a0a){
-_a0a.execute(sv);
+var _a11=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a11){
+var _a12=_a11.getCommand(this._name);
+if(_a12){
+_a12.execute(sv);
 }
 }
 }
 },refreshState:function(){
 if(this._domNode){
 dojo.widget.Editor2ToolbarFormatBlockPlainSelect.superclass.refreshState.call(this);
-var _a0b=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_a0b){
-var _a0c=_a0b.getCommand(this._name);
-if(_a0c){
-var _a0d=_a0c.getValue();
-if(!_a0d){
-_a0d="";
+var _a13=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a13){
+var _a14=_a13.getCommand(this._name);
+if(_a14){
+var _a15=_a14.getValue();
+if(!_a15){
+_a15="";
 }
 dojo.lang.forEach(this._domNode.options,function(item){
-if(item.value.toLowerCase()==_a0d.toLowerCase()){
+if(item.value.toLowerCase()==_a15.toLowerCase()){
 item.selected=true;
 }
 });
@@ -29406,7 +23512,7 @@
 }
 }
 }});
-dojo.declare("dojo.widget.Editor2ToolbarComboItem",dojo.widget.Editor2ToolbarDropDownButton,{href:null,create:function(node,_a10){
+dojo.declare("dojo.widget.Editor2ToolbarComboItem",dojo.widget.Editor2ToolbarDropDownButton,{href:null,create:function(node,_a18){
 dojo.widget.Editor2ToolbarComboItem.superclass.create.apply(this,arguments);
 if(!this._contentPane){
 this._contentPane=dojo.widget.createWidget("ContentPane",{preload:"true"});
@@ -29428,11 +23534,11 @@
 },onChange:function(e){
 if(this._parentToolbar.checkAvailability()){
 var name=e.currentTarget.getAttribute("dropDownItemName");
-var _a15=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_a15){
-var _a16=_a15.getCommand(this._name);
-if(_a16){
-_a16.execute(name);
+var _a1d=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a1d){
+var _a1e=_a1d.getCommand(this._name);
+if(_a1e){
+_a1e.execute(name);
 }
 }
 }
@@ -29444,17 +23550,17 @@
 }});
 dojo.declare("dojo.widget.Editor2ToolbarFormatBlockSelect",dojo.widget.Editor2ToolbarComboItem,{href:dojo.uri.moduleUri("dojo.widget","templates/Editor2/EditorToolbar_FormatBlock.html"),setup:function(){
 dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);
-var _a19=this._contentPane.domNode.all||this._contentPane.domNode.getElementsByTagName("*");
+var _a21=this._contentPane.domNode.all||this._contentPane.domNode.getElementsByTagName("*");
 this._blockNames={};
 this._blockDisplayNames={};
-for(var x=0;x<_a19.length;x++){
-var node=_a19[x];
+for(var x=0;x<_a21.length;x++){
+var node=_a21[x];
 dojo.html.disableSelection(node);
 var name=node.getAttribute("dropDownItemName");
 if(name){
 this._blockNames[name]=node;
-var _a1d=node.getElementsByTagName(name);
-this._blockDisplayNames[name]=_a1d[_a1d.length-1].innerHTML;
+var _a25=node.getElementsByTagName(name);
+this._blockDisplayNames[name]=_a25[_a25.length-1].innerHTML;
 }
 }
 for(var name in this._blockNames){
@@ -29472,27 +23578,27 @@
 },refreshState:function(){
 dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.refreshState.call(this);
 if(this._lastState!=dojo.widget.Editor2Manager.commandState.Disabled){
-var _a1f=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_a1f){
-var _a20=_a1f.getCommand(this._name);
-if(_a20){
-var _a21=_a20.getValue();
-if(_a21==this._lastSelectedFormat&&this._blockDisplayNames){
+var _a27=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a27){
+var _a28=_a27.getCommand(this._name);
+if(_a28){
+var _a29=_a28.getValue();
+if(_a29==this._lastSelectedFormat&&this._blockDisplayNames){
 return this._lastState;
 }
-this._lastSelectedFormat=_a21;
-var _a22=this._domNode.getElementsByTagName("label")[0];
-var _a23=false;
+this._lastSelectedFormat=_a29;
+var _a2a=this._domNode.getElementsByTagName("label")[0];
+var _a2b=false;
 if(this._blockDisplayNames){
 for(var name in this._blockDisplayNames){
-if(name==_a21){
-_a22.innerHTML=this._blockDisplayNames[name];
-_a23=true;
+if(name==_a29){
+_a2a.innerHTML=this._blockDisplayNames[name];
+_a2b=true;
 break;
 }
 }
-if(!_a23){
-_a22.innerHTML="&nbsp;";
+if(!_a2b){
+_a2a.innerHTML="&nbsp;";
 }
 }
 }
@@ -29502,11 +23608,11 @@
 }});
 dojo.declare("dojo.widget.Editor2ToolbarFontSizeSelect",dojo.widget.Editor2ToolbarComboItem,{href:dojo.uri.moduleUri("dojo.widget","templates/Editor2/EditorToolbar_FontSize.html"),setup:function(){
 dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);
-var _a25=this._contentPane.domNode.all||this._contentPane.domNode.getElementsByTagName("*");
+var _a2d=this._contentPane.domNode.all||this._contentPane.domNode.getElementsByTagName("*");
 this._fontsizes={};
 this._fontSizeDisplayNames={};
-for(var x=0;x<_a25.length;x++){
-var node=_a25[x];
+for(var x=0;x<_a2d.length;x++){
+var node=_a2d[x];
 dojo.html.disableSelection(node);
 var name=node.getAttribute("dropDownItemName");
 if(name){
@@ -29529,27 +23635,27 @@
 },refreshState:function(){
 dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.refreshState.call(this);
 if(this._lastState!=dojo.widget.Editor2Manager.commandState.Disabled){
-var _a2a=dojo.widget.Editor2Manager.getCurrentInstance();
-if(_a2a){
-var _a2b=_a2a.getCommand(this._name);
-if(_a2b){
-var size=_a2b.getValue();
+var _a32=dojo.widget.Editor2Manager.getCurrentInstance();
+if(_a32){
+var _a33=_a32.getCommand(this._name);
+if(_a33){
+var size=_a33.getValue();
 if(size==this._lastSelectedSize&&this._fontSizeDisplayNames){
 return this._lastState;
 }
 this._lastSelectedSize=size;
-var _a2d=this._domNode.getElementsByTagName("label")[0];
-var _a2e=false;
+var _a35=this._domNode.getElementsByTagName("label")[0];
+var _a36=false;
 if(this._fontSizeDisplayNames){
 for(var name in this._fontSizeDisplayNames){
 if(name==size){
-_a2d.innerHTML=this._fontSizeDisplayNames[name];
-_a2e=true;
+_a35.innerHTML=this._fontSizeDisplayNames[name];
+_a36=true;
 break;
 }
 }
-if(!_a2e){
-_a2d.innerHTML="&nbsp;";
+if(!_a36){
+_a35.innerHTML="&nbsp;";
 }
 }
 }
@@ -29565,16 +23671,16 @@
 }
 }));
 },{templateString:"<div dojoAttachPoint=\"domNode\" class=\"EditorToolbarDomNode\" unselectable=\"on\">\n\t<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">\n\t\t<!--\n\t\t\tour toolbar should look something like:\n\n\t\t\t+=======+=======+=======+=============================================+\n\t\t\t| w   w | style | copy  | bo | it | un | le | ce | ri |\n\t\t\t| w w w | style |=======|==============|==============|\n\t\t\t|  w w  | style | paste |  undo | redo | change style |\n\t\t\t+=======+=======+=======+=============================================+\n\t\t-->\n\t\t<tbody>\n\t\t\t<tr valign=\"top\">\n\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t<div class=\"bigIcon\" dojoAttachPoint=\"wikiWordButton\"\n\t\t\t\t\t\tdojoOnClick=\"wikiWordClick; buttonClick;\">\n\t\t\t\t\t\t<span style=\"font-size: 30px; margin-left: 5px;\">\n\t\t\t\t\t\t\tW\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t<div class=\"bigIcon\" dojoAttachPoint=\"styleDropdownButton\"\n\t\t\t\t\t\tdojoOnClick=\"styleDropdownClick; buttonClick;\">\n\t\t\t\t\t\t<span unselectable=\"on\"\n\t\t\t\t\t\t\tstyle=\"font-size: 30px; margin-left: 5px;\">\n\t\t\t\t\t\t\tS\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"StyleDropdownContainer\" style=\"display: none;\"\n\t\t\t\t\t\tdojoAttachPoint=\"styleDropdownContainer\">\n\t\t\t\t\t\t<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"\n\t\t\t\t\t\t\theight=\"100%\" width=\"100%\">\n\t\t\t\t\t\t\t<tr valign=\"top\">\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<div style=\"height: 245px; overflow: auto;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"normalTextClick\">normal</div>\n\t\t\t\t\t\t\t\t\t\t<h1 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h1TextClick\">Heading 1</h1>\n\t\t\t\t\t\t\t\t\t\t<h2 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h2TextClick\">Heading 2</h2>\n\t\t\t\t\t\t\t\t\t\t<h3 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h3TextClick\">Heading 3</h3>\n\t\t\t\t\t\t\t\t\t\t<h4 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h4TextClick\">Heading 4</h4>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<!--\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyleft\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifycenter\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyright\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyfull\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t-->\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr valign=\"top\">\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\tthud\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<!-- copy -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"copyButton\"\n\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\tdojoOnClick=\"copyClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon copy\" \n\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span> copy\n\t\t\t\t\t</span>\n\t\t\t\t\t<!-- \"droppable\" options -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"boldButton\"\n\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\tdojoOnClick=\"boldClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon bold\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"italicButton\"\n\t\t\t\t\t\tdojoOnClick=\"italicClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon italic\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"underlineButton\"\n\t\t\t\t\t\tdojoOnClick=\"underlineClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon underline\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"leftButton\"\n\t\t\t\t\t\tdojoOnClick=\"leftClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyleft\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"fullButton\"\n\t\t\t\t\t\tdojoOnClick=\"fullClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyfull\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"rightButton\"\n\t\t\t\t\t\tdojoOnClick=\"rightClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyright\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<!-- paste -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"pasteButton\"\n\t\t\t\t\t\tdojoOnClick=\"pasteClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon paste\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> paste\n\t\t\t\t\t</span>\n\t\t\t\t\t<!-- \"droppable\" options -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"undoButton\"\n\t\t\t\t\t\tdojoOnClick=\"undoClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon undo\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> undo\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"redoButton\"\n\t\t\t\t\t\tdojoOnClick=\"redoClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon redo\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> redo\n\t\t\t\t\t</span>\n\t\t\t\t</td>\t\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n",templateCssString:".StyleDropdownContainer {\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n\twidth: 250px;\n\theight: 250px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n}\n\n.ColorDropdownContainer {\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n\twidth: 250px;\n\theight: 150px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n}\n\n.EditorToolbarDomNode {\n\tbackground-image: url(buttons/bg-fade.png);\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0px -50px;\n}\n\n.EditorToolbarSmallBg {\n\tbackground-image: url(images/toolbar-bg.gif);\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0px 0px;\n}\n\n/*\nbody {\n\tbackground:url(images/blank.gif) fixed;\n}*/\n\n.IEFixedToolbar {\n\tposition:absolute;\n\t/* top:0; */\n\ttop: expression(eval((document.documentElement||document.body).scrollTop));\n}\n\ndiv.bigIcon {\n\twidth: 40px;\n\theight: 40px; \n\t/* background-color: white; */\n\t/* border: 1px solid #a6a7a3; */\n\tfont-family: Verdana, Trebuchet, Tahoma, Arial;\n}\n\n.iconContainer {\n\tfont-family: Verdana, Trebuchet, Tahoma, Arial;\n\tfont-size: 13px;\n\tfloat: left;\n\theight: 18px;\n\tdisplay: block;\n\t/* background-color: white; */\n\tcursor: pointer;\n\tpadding: 1px 4px 1px 1px; /* almost the same as a transparent border */\n\tborder: 0px;\n}\n\n.dojoE2TBIcon {\n\tdisplay: block;\n\ttext-align: center;\n\tmin-width: 18px;\n\twidth: 18px;\n\theight: 18px;\n\t/* background-color: #a6a7a3; */\n\tbackground-repeat: no-repeat;\n\tbackground-image: url(buttons/aggregate.gif);\n}\n\n\n.dojoE2TBIcon[class~=dojoE2TBIcon] {\n}\n\n.ToolbarButtonLatched {\n    border: #316ac5 1px solid; !important;\n    padding: 0px 3px 0px 0px; !important; /* make room for border */\n    background-color: #c1d2ee;\n}\n\n.ToolbarButtonHighlighted {\n    border: #316ac5 1px solid; !important;\n    padding: 0px 3px 0px 0px; !important; /* make room for border */\n    background-color: #dff1ff;\n}\n\n.ToolbarButtonDisabled{\n    filter: gray() alpha(opacity=30); /* IE */\n    opacity: 0.30; /* Safari, Opera and Mozilla */\n}\n\n.headingContainer {\n\twidth: 150px;\n\theight: 30px;\n\tmargin: 0px;\n\t/* padding-left: 5px; */\n\toverflow: hidden;\n\tline-height: 25px;\n\tborder-bottom: 1px solid black;\n\tborder-top: 1px solid white;\n}\n\n.EditorToolbarDomNode select {\n\tfont-size: 14px;\n}\n \n.dojoE2TBIcon_Sep { width: 5px; min-width: 5px; max-width: 5px; background-position: 0px 0px}\n.dojoE2TBIcon_Backcolor { background-position: -18px 0px}\n.dojoE2TBIcon_Bold { background-position: -36px 0px}\n.dojoE2TBIcon_Cancel { background-position: -54px 0px}\n.dojoE2TBIcon_Copy { background-position: -72px 0px}\n.dojoE2TBIcon_Link { background-position: -90px 0px}\n.dojoE2TBIcon_Cut { background-position: -108px 0px}\n.dojoE2TBIcon_Delete { background-position: -126px 0px}\n.dojoE2TBIcon_TextColor { background-position: -144px 0px}\n.dojoE2TBIcon_BackgroundColor { background-position: -162px 0px}\n.dojoE2TBIcon_Indent { background-position: -180px 0px}\n.dojoE2TBIcon_HorizontalLine { background-position: -198px 0px}\n.dojoE2TBIcon_Image { background-position: -216px 0px}\n.dojoE2TBIcon_NumberedList { background-position: -234px 0px}\n.dojoE2TBIcon_Table { background-position: -252px 0px}\n.dojoE2TBIcon_BulletedList { background-position: -270px 0px}\n.dojoE2TBIcon_Italic { background-position: -288px 0px}\n.dojoE2TBIcon_CenterJustify { background-position: -306px 0px}\n.dojoE2TBIcon_BlockJustify { background-position: -324px 0px}\n.dojoE2TBIcon_LeftJustify { background-position: -342px 0px}\n.dojoE2TBIcon_RightJustify { background-position: -360px 0px}\n.dojoE2TBIcon_left_to_right { background-position: -378px 0px}\n.dojoE2TBIcon_list_bullet_indent { background-position: -396px 0px}\n.dojoE2TBIcon_list_bullet_outdent { background-position: -414px 0px}\n.dojoE2TBIcon_list_num_indent { background-position: -432px 0px}\n.dojoE2TBIcon_list_num_outdent { background-position: -450px 0px}\n.dojoE2TBIcon_Outdent { background-position: -468px 0px}\n.dojoE2TBIcon_Paste { background-position: -486px 0px}\n.dojoE2TBIcon_Redo { background-position: -504px 0px}\ndojoE2TBIcon_RemoveFormat { background-position: -522px 0px}\n.dojoE2TBIcon_right_to_left { background-position: -540px 0px}\n.dojoE2TBIcon_Save { background-position: -558px 0px}\n.dojoE2TBIcon_Space { background-position: -576px 0px}\n.dojoE2TBIcon_StrikeThrough { background-position: -594px 0px}\n.dojoE2TBIcon_Subscript { background-position: -612px 0px}\n.dojoE2TBIcon_Superscript { background-position: -630px 0px}\n.dojoE2TBIcon_Underline { background-position: -648px 0px}\n.dojoE2TBIcon_Undo { background-position: -666px 0px}\n.dojoE2TBIcon_WikiWord { background-position: -684px 0px}\n\n",templateCssPath:dojo.uri.moduleUri("dojo.widget","templates/EditorToolbar.css"),ToolbarLatchedItemStyle:"ToolbarButtonLatched",ToolbarEnabledItemStyle:"ToolbarButtonEnabled",ToolbarDisabledItemStyle:"ToolbarButtonDisabled",ToolbarHighlightedItemStyle:"ToolbarButtonHighlighted",ToolbarHighlightedSelectStyle:"ToolbarSelectHighlighted",ToolbarHighlightedSelectItemStyle:"ToolbarSelectHighlightedItem",postCreate:function(){
-var _a30=dojo.html.getElementsByClass("dojoEditorToolbarItem",this.domNode);
+var _a38=dojo.html.getElementsByClass("dojoEditorToolbarItem",this.domNode);
 this.items={};
-for(var x=0;x<_a30.length;x++){
-var node=_a30[x];
-var _a33=node.getAttribute("dojoETItemName");
-if(_a33){
-var item=dojo.widget.Editor2ToolbarItemManager.getToolbarItem(_a33);
+for(var x=0;x<_a38.length;x++){
+var node=_a38[x];
+var _a3b=node.getAttribute("dojoETItemName");
+if(_a3b){
+var item=dojo.widget.Editor2ToolbarItemManager.getToolbarItem(_a3b);
 if(item){
 item.create(node,this);
-this.items[_a33.toLowerCase()]=item;
+this.items[_a3b.toLowerCase()]=item;
 }else{
 node.style.display="none";
 }
@@ -29589,8 +23695,8 @@
 this.parent.focus();
 return true;
 }
-var _a36=dojo.widget.Editor2Manager.getCurrentInstance();
-if(this.shareGroup==_a36.toolbarGroup){
+var _a3e=dojo.widget.Editor2Manager.getCurrentInstance();
+if(this.shareGroup==_a3e.toolbarGroup){
 return true;
 }
 return false;
@@ -29602,21 +23708,21 @@
 dojo.widget.Editor2Toolbar.superclass.destroy.call(this);
 }});
 dojo.provide("dojo.uri.cache");
-dojo.uri.cache={_cache:{},set:function(uri,_a39){
-this._cache[uri.toString()]=_a39;
+dojo.uri.cache={_cache:{},set:function(uri,_a41){
+this._cache[uri.toString()]=_a41;
 return uri;
 },remove:function(uri){
 delete this._cache[uri.toString()];
 },get:function(uri){
 var key=uri.toString();
-var _a3d=this._cache[key];
-if(!_a3d){
-_a3d=dojo.hostenv.getText(key);
-if(_a3d){
-this._cache[key]=_a3d;
+var _a45=this._cache[key];
+if(!_a45){
+_a45=dojo.hostenv.getText(key);
+if(_a45){
+this._cache[key]=_a45;
 }
 }
-return _a3d;
+return _a45;
 },allow:function(uri){
 return uri;
 }};
@@ -29640,77 +23746,77 @@
 this._makePiece("bl","top",0,"left",x1);
 this._makePiece("b","top",0,"left",0,"crop");
 this._makePiece("br","top",0,"left",0);
-},_makePiece:function(name,_a45,_a46,_a47,_a48,_a49){
+},_makePiece:function(name,_a4d,_a4e,_a4f,_a50,_a51){
 var img;
 var url=this.shadowPng+name.toUpperCase()+".png";
 if(dojo.render.html.ie55||dojo.render.html.ie60){
 img=dojo.doc().createElement("div");
-img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+url+"'"+(_a49?", sizingMethod='"+_a49+"'":"")+")";
+img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+url+"'"+(_a51?", sizingMethod='"+_a51+"'":"")+")";
 }else{
 img=dojo.doc().createElement("img");
 img.src=url;
 }
 img.style.position="absolute";
-img.style[_a45]=_a46+"px";
-img.style[_a47]=_a48+"px";
+img.style[_a4d]=_a4e+"px";
+img.style[_a4f]=_a50+"px";
 img.style.width=this.shadowThickness+"px";
 img.style.height=this.shadowThickness+"px";
 this.pieces[name]=img;
 this.node.appendChild(img);
-},size:function(_a4c,_a4d){
-var _a4e=_a4d-(this.shadowOffset+this.shadowThickness+1);
-if(_a4e<0){
-_a4e=0;
+},size:function(_a54,_a55){
+var _a56=_a55-(this.shadowOffset+this.shadowThickness+1);
+if(_a56<0){
+_a56=0;
 }
-if(_a4d<1){
-_a4d=1;
+if(_a55<1){
+_a55=1;
 }
-if(_a4c<1){
-_a4c=1;
+if(_a54<1){
+_a54=1;
 }
 with(this.pieces){
-l.style.height=_a4e+"px";
-r.style.height=_a4e+"px";
-b.style.width=(_a4c-1)+"px";
-bl.style.top=(_a4d-1)+"px";
-b.style.top=(_a4d-1)+"px";
-br.style.top=(_a4d-1)+"px";
-tr.style.left=(_a4c-1)+"px";
-r.style.left=(_a4c-1)+"px";
-br.style.left=(_a4c-1)+"px";
+l.style.height=_a56+"px";
+r.style.height=_a56+"px";
+b.style.width=(_a54-1)+"px";
+bl.style.top=(_a55-1)+"px";
+b.style.top=(_a55-1)+"px";
+br.style.top=(_a55-1)+"px";
+tr.style.left=(_a54-1)+"px";
+r.style.left=(_a54-1)+"px";
+br.style.left=(_a54-1)+"px";
 }
 }});
 dojo.provide("dojo.widget.html.layout");
-dojo.widget.html.layout=function(_a4f,_a50,_a51){
-dojo.html.addClass(_a4f,"dojoLayoutContainer");
-_a50=dojo.lang.filter(_a50,function(_a52,idx){
-_a52.idx=idx;
-return dojo.lang.inArray(["top","bottom","left","right","client","flood"],_a52.layoutAlign);
+dojo.widget.html.layout=function(_a57,_a58,_a59){
+dojo.html.addClass(_a57,"dojoLayoutContainer");
+_a58=dojo.lang.filter(_a58,function(_a5a,idx){
+_a5a.idx=idx;
+return dojo.lang.inArray(["top","bottom","left","right","client","flood"],_a5a.layoutAlign);
 });
-if(_a51&&_a51!="none"){
-var rank=function(_a55){
-switch(_a55.layoutAlign){
+if(_a59&&_a59!="none"){
+var rank=function(_a5d){
+switch(_a5d.layoutAlign){
 case "flood":
 return 1;
 case "left":
 case "right":
-return (_a51=="left-right")?2:3;
+return (_a59=="left-right")?2:3;
 case "top":
 case "bottom":
-return (_a51=="left-right")?3:2;
+return (_a59=="left-right")?3:2;
 default:
 return 4;
 }
 };
-_a50.sort(function(a,b){
+_a58.sort(function(a,b){
 return (rank(a)-rank(b))||(a.idx-b.idx);
 });
 }
-var f={top:dojo.html.getPixelValue(_a4f,"padding-top",true),left:dojo.html.getPixelValue(_a4f,"padding-left",true)};
-dojo.lang.mixin(f,dojo.html.getContentBox(_a4f));
-dojo.lang.forEach(_a50,function(_a59){
-var elm=_a59.domNode;
-var pos=_a59.layoutAlign;
+var f={top:dojo.html.getPixelValue(_a57,"padding-top",true),left:dojo.html.getPixelValue(_a57,"padding-left",true)};
+dojo.lang.mixin(f,dojo.html.getContentBox(_a57));
+dojo.lang.forEach(_a58,function(_a61){
+var elm=_a61.domNode;
+var pos=_a61.layoutAlign;
 with(elm.style){
 left=f.left+"px";
 top=f.top+"px";
@@ -29727,14 +23833,14 @@
 }else{
 elm.style.top=f.top+f.height+"px";
 }
-if(_a59.onResized){
-_a59.onResized();
+if(_a61.onResized){
+_a61.onResized();
 }
 }else{
 if(pos=="left"||pos=="right"){
 var w=dojo.html.getMarginBox(elm).width;
-if(_a59.resizeTo){
-_a59.resizeTo(w,f.height);
+if(_a61.resizeTo){
+_a61.resizeTo(w,f.height);
 }else{
 dojo.html.setMarginBox(elm,{width:w,height:f.height});
 }
@@ -29746,8 +23852,8 @@
 }
 }else{
 if(pos=="flood"||pos=="client"){
-if(_a59.resizeTo){
-_a59.resizeTo(f.width,f.height);
+if(_a61.resizeTo){
+_a61.resizeTo(f.width,f.height);
 }else{
 dojo.html.setMarginBox(elm,{width:f.width,height:f.height});
 }
@@ -29784,10 +23890,10 @@
 }
 }
 return true;
-},accepts:function(_a68){
+},accepts:function(_a70){
 if(!dojo.lang.inArray(this.acceptedTypes,"*")){
-for(var i=0;i<_a68.length;i++){
-if(!dojo.lang.inArray(this.acceptedTypes,_a68[i].type)){
+for(var i=0;i<_a70.length;i++){
+if(!dojo.lang.inArray(this.acceptedTypes,_a70[i].type)){
 return false;
 }
 }
@@ -29810,8 +23916,8 @@
 this.target=null;
 this.eventStatus="success";
 };
-dojo.declare("dojo.dnd.DragManager",null,{selectedSources:[],dragObjects:[],dragSources:[],registerDragSource:function(_a6f){
-},dropTargets:[],registerDropTarget:function(_a70){
+dojo.declare("dojo.dnd.DragManager",null,{selectedSources:[],dragObjects:[],dragSources:[],registerDragSource:function(_a77){
+},dropTargets:[],registerDropTarget:function(_a78){
 },lastDragTarget:null,currentDragTarget:null,onKeyDown:function(){
 },onMouseOut:function(){
 },onMouseMove:function(){
@@ -29824,10 +23930,10 @@
 },registerDragSource:function(ds){
 if(ds["domNode"]){
 var dp=this.dsPrefix;
-var _a74=dp+"Idx_"+(this.dsCounter++);
-ds.dragSourceId=_a74;
-this.dragSources[_a74]=ds;
-ds.domNode.setAttribute(dp,_a74);
+var _a7c=dp+"Idx_"+(this.dsCounter++);
+ds.dragSourceId=_a7c;
+this.dragSources[_a7c]=ds;
+ds.domNode.setAttribute(dp,_a7c);
 if(dojo.render.html.ie){
 dojo.event.browser.addListener(ds.domNode,"ondragstart",this.cancelEvent);
 }
@@ -29835,9 +23941,9 @@
 },unregisterDragSource:function(ds){
 if(ds["domNode"]){
 var dp=this.dsPrefix;
-var _a77=ds.dragSourceId;
+var _a7f=ds.dragSourceId;
 delete ds.dragSourceId;
-delete this.dragSources[_a77];
+delete this.dragSources[_a7f];
 ds.domNode.setAttribute(dp,null);
 if(dojo.render.html.ie){
 dojo.event.browser.removeListener(ds.domNode,"ondragstart",this.cancelEvent);
@@ -29846,9 +23952,9 @@
 },registerDropTarget:function(dt){
 this.dropTargets.push(dt);
 },unregisterDropTarget:function(dt){
-var _a7a=dojo.lang.find(this.dropTargets,dt,true);
-if(_a7a>=0){
-this.dropTargets.splice(_a7a,1);
+var _a82=dojo.lang.find(this.dropTargets,dt,true);
+if(_a82>=0){
+this.dropTargets.splice(_a82,1);
 }
 },getDragSource:function(e){
 var tn=e.target;
@@ -29878,8 +23984,8 @@
 return;
 }
 }
-var _a80=e.target.nodeType==dojo.html.TEXT_NODE?e.target.parentNode:e.target;
-if(dojo.html.isTag(_a80,"button","textarea","input","select","option")){
+var _a88=e.target.nodeType==dojo.html.TEXT_NODE?e.target.parentNode:e.target;
+if(dojo.html.isTag(_a88,"button","textarea","input","select","option")){
 return;
 }
 var ds=this.getDragSource(e);
@@ -29894,7 +24000,7 @@
 this.mouseDownY=e.pageY;
 e.preventDefault();
 dojo.event.connect(document,"onmousemove",this,"onMouseMove");
-},onMouseUp:function(e,_a83){
+},onMouseUp:function(e,_a8b){
 if(this.selectedSources.length==0){
 return;
 }
@@ -29906,17 +24012,17 @@
 if(this.currentDropTarget){
 this.currentDropTarget.onDropStart();
 }
-dojo.lang.forEach(this.dragObjects,function(_a84){
+dojo.lang.forEach(this.dragObjects,function(_a8c){
 var ret=null;
-if(!_a84){
+if(!_a8c){
 return;
 }
 if(this.currentDropTarget){
-e.dragObject=_a84;
+e.dragObject=_a8c;
 var ce=this.currentDropTarget.domNode.childNodes;
 if(ce.length>0){
 e.dropTarget=ce[0];
-while(e.dropTarget==_a84.domNode){
+while(e.dropTarget==_a8c.domNode){
 e.dropTarget=e.dropTarget.nextSibling;
 }
 }else{
@@ -29931,21 +24037,21 @@
 e.dragStatus=this.dropAcceptable&&ret?"dropSuccess":"dropFailure";
 dojo.lang.delayThese([function(){
 try{
-_a84.dragSource.onDragEnd(e);
+_a8c.dragSource.onDragEnd(e);
 }
 catch(err){
-var _a87={};
+var _a8f={};
 for(var i in e){
 if(i=="type"){
-_a87.type="mouseup";
+_a8f.type="mouseup";
 continue;
 }
-_a87[i]=e[i];
+_a8f[i]=e[i];
 }
-_a84.dragSource.onDragEnd(_a87);
+_a8c.dragSource.onDragEnd(_a8f);
 }
 },function(){
-_a84.onDragEnd(e);
+_a8c.onDragEnd(e);
 }]);
 },this);
 this.selectedSources=[];
@@ -29979,14 +24085,14 @@
 },cacheTargetLocations:function(){
 dojo.profile.start("cacheTargetLocations");
 this.dropTargetDimensions=[];
-dojo.lang.forEach(this.dropTargets,function(_a90){
-var tn=_a90.domNode;
-if(!tn||!_a90.accepts([this.dragSource])){
+dojo.lang.forEach(this.dropTargets,function(_a98){
+var tn=_a98.domNode;
+if(!tn||!_a98.accepts([this.dragSource])){
 return;
 }
 var abs=dojo.html.getAbsolutePosition(tn,true);
 var bb=dojo.html.getBorderBox(tn);
-this.dropTargetDimensions.push([[abs.x,abs.y],[abs.x+bb.width,abs.y+bb.height],_a90]);
+this.dropTargetDimensions.push([[abs.x,abs.y],[abs.x+bb.width,abs.y+bb.height],_a98]);
 },this);
 dojo.profile.end("cacheTargetLocations");
 },onMouseMove:function(e){
@@ -30007,25 +24113,25 @@
 dy=e.pageY-this.mouseDownY;
 }
 this.dragSource=this.selectedSources[0];
-dojo.lang.forEach(this.selectedSources,function(_a97){
-if(!_a97){
+dojo.lang.forEach(this.selectedSources,function(_a9f){
+if(!_a9f){
 return;
 }
-var tdo=_a97.onDragStart(e);
+var tdo=_a9f.onDragStart(e);
 if(tdo){
 tdo.onDragStart(e);
 tdo.dragOffset.y+=dy;
 tdo.dragOffset.x+=dx;
-tdo.dragSource=_a97;
+tdo.dragSource=_a9f;
 this.dragObjects.push(tdo);
 }
 },this);
 this.previousDropTarget=null;
 this.cacheTargetLocations();
 }
-dojo.lang.forEach(this.dragObjects,function(_a99){
-if(_a99){
-_a99.onDragMove(e);
+dojo.lang.forEach(this.dragObjects,function(_aa1){
+if(_aa1){
+_aa1.onDragMove(e);
 }
 });
 if(this.currentDropTarget){
@@ -30037,8 +24143,8 @@
 this.currentDropTarget.onDragMove(e,this.dragObjects);
 }
 }else{
-var _a9c=this.findBestTarget(e);
-if(_a9c.target===null){
+var _aa4=this.findBestTarget(e);
+if(_aa4.target===null){
 if(this.currentDropTarget){
 this.currentDropTarget.onDragOut(e);
 this.previousDropTarget=this.currentDropTarget;
@@ -30047,12 +24153,12 @@
 this.dropAcceptable=false;
 return;
 }
-if(this.currentDropTarget!==_a9c.target){
+if(this.currentDropTarget!==_aa4.target){
 if(this.currentDropTarget){
 this.previousDropTarget=this.currentDropTarget;
 this.currentDropTarget.onDragOut(e);
 }
-this.currentDropTarget=_a9c.target;
+this.currentDropTarget=_aa4.target;
 e.dragObjects=this.dragObjects;
 this.dropAcceptable=this.currentDropTarget.onDragOver(e);
 }else{
@@ -30062,21 +24168,21 @@
 }
 }
 },findBestTarget:function(e){
-var _a9e=this;
-var _a9f=new Object();
-_a9f.target=null;
-_a9f.points=null;
-dojo.lang.every(this.dropTargetDimensions,function(_aa0){
-if(!_a9e.isInsideBox(e,_aa0)){
+var _aa6=this;
+var _aa7=new Object();
+_aa7.target=null;
+_aa7.points=null;
+dojo.lang.every(this.dropTargetDimensions,function(_aa8){
+if(!_aa6.isInsideBox(e,_aa8)){
 return true;
 }
-_a9f.target=_aa0[2];
-_a9f.points=_aa0;
-return Boolean(_a9e.nestedTargets);
+_aa7.target=_aa8[2];
+_aa7.points=_aa8;
+return Boolean(_aa6.nestedTargets);
 });
-return _a9f;
-},isInsideBox:function(e,_aa2){
-if((e.pageX>_aa2[0][0])&&(e.pageX<_aa2[1][0])&&(e.pageY>_aa2[0][1])&&(e.pageY<_aa2[1][1])){
+return _aa7;
+},isInsideBox:function(e,_aaa){
+if((e.pageX>_aaa[0][0])&&(e.pageX<_aaa[1][0])&&(e.pageY>_aaa[0][1])&&(e.pageY<_aaa[1][1])){
 return true;
 }
 return false;
@@ -30096,14 +24202,14 @@
 })();
 dojo.provide("dojo.dnd.HtmlDragAndDrop");
 dojo.declare("dojo.dnd.HtmlDragSource",dojo.dnd.DragSource,{dragClass:"",onDragStart:function(){
-var _aa7=new dojo.dnd.HtmlDragObject(this.dragObject,this.type);
+var _aaf=new dojo.dnd.HtmlDragObject(this.dragObject,this.type);
 if(this.dragClass){
-_aa7.dragClass=this.dragClass;
+_aaf.dragClass=this.dragClass;
 }
 if(this.constrainToContainer){
-_aa7.constrainTo(this.constrainingContainer||this.domNode.parentNode);
+_aaf.constrainTo(this.constrainingContainer||this.domNode.parentNode);
 }
-return _aa7;
+return _aaf;
 },setDragHandle:function(node){
 node=dojo.byId(node);
 dojo.dnd.dragManager.unregisterDragSource(this);
@@ -30111,10 +24217,10 @@
 dojo.dnd.dragManager.registerDragSource(this);
 },setDragTarget:function(node){
 this.dragObject=node;
-},constrainTo:function(_aaa){
+},constrainTo:function(_ab2){
 this.constrainToContainer=true;
-if(_aaa){
-this.constrainingContainer=_aaa;
+if(_ab2){
+this.constrainingContainer=_ab2;
 }
 },onSelected:function(){
 for(var i=0;i<this.dragObjects.length;i++){
@@ -30147,35 +24253,35 @@
 var isTr=(ltn=="tr");
 if((isTr)||(ltn=="tbody")){
 var doc=this.domNode.ownerDocument;
-var _ab4=doc.createElement("table");
+var _abc=doc.createElement("table");
 if(isTr){
-var _ab5=doc.createElement("tbody");
-_ab4.appendChild(_ab5);
-_ab5.appendChild(node);
+var _abd=doc.createElement("tbody");
+_abc.appendChild(_abd);
+_abd.appendChild(node);
 }else{
-_ab4.appendChild(node);
+_abc.appendChild(node);
 }
-var _ab6=((isTr)?this.domNode:this.domNode.firstChild);
-var _ab7=((isTr)?node:node.firstChild);
-var _ab8=_ab6.childNodes;
-var _ab9=_ab7.childNodes;
-for(var i=0;i<_ab8.length;i++){
-if((_ab9[i])&&(_ab9[i].style)){
-_ab9[i].style.width=dojo.html.getContentBox(_ab8[i]).width+"px";
+var _abe=((isTr)?this.domNode:this.domNode.firstChild);
+var _abf=((isTr)?node:node.firstChild);
+var _ac0=_abe.childNodes;
+var _ac1=_abf.childNodes;
+for(var i=0;i<_ac0.length;i++){
+if((_ac1[i])&&(_ac1[i].style)){
+_ac1[i].style.width=dojo.html.getContentBox(_ac0[i]).width+"px";
 }
 }
-node=_ab4;
+node=_abc;
 }
 if((dojo.render.html.ie55||dojo.render.html.ie60)&&this.createIframe){
 with(node.style){
 top="0px";
 left="0px";
 }
-var _abb=document.createElement("div");
-_abb.appendChild(node);
-this.bgIframe=new dojo.html.BackgroundIframe(_abb);
-_abb.appendChild(this.bgIframe.iframe);
-node=_abb;
+var _ac3=document.createElement("div");
+_ac3.appendChild(node);
+this.bgIframe=new dojo.html.BackgroundIframe(_ac3);
+_ac3.appendChild(this.bgIframe.iframe);
+node=_ac3;
 }
 node.style.zIndex=999;
 return node;
@@ -30198,32 +24304,32 @@
 dojo.event.topic.publish("dragStart",{source:this});
 },getConstraints:function(){
 if(this.constrainingContainer.nodeName.toLowerCase()=="body"){
-var _abd=dojo.html.getViewport();
-var _abe=_abd.width;
-var _abf=_abd.height;
-var _ac0=dojo.html.getScroll().offset;
-var x=_ac0.x;
-var y=_ac0.y;
+var _ac5=dojo.html.getViewport();
+var _ac6=_ac5.width;
+var _ac7=_ac5.height;
+var _ac8=dojo.html.getScroll().offset;
+var x=_ac8.x;
+var y=_ac8.y;
 }else{
-var _ac3=dojo.html.getContentBox(this.constrainingContainer);
-_abe=_ac3.width;
-_abf=_ac3.height;
+var _acb=dojo.html.getContentBox(this.constrainingContainer);
+_ac6=_acb.width;
+_ac7=_acb.height;
 x=this.containingBlockPosition.x+dojo.html.getPixelValue(this.constrainingContainer,"padding-left",true)+dojo.html.getBorderExtent(this.constrainingContainer,"left");
 y=this.containingBlockPosition.y+dojo.html.getPixelValue(this.constrainingContainer,"padding-top",true)+dojo.html.getBorderExtent(this.constrainingContainer,"top");
 }
 var mb=dojo.html.getMarginBox(this.domNode);
-return {minX:x,minY:y,maxX:x+_abe-mb.width,maxY:y+_abf-mb.height};
+return {minX:x,minY:y,maxX:x+_ac6-mb.width,maxY:y+_ac7-mb.height};
 },updateDragOffset:function(){
-var _ac5=dojo.html.getScroll().offset;
-if(_ac5.y!=this.scrollOffset.y){
-var diff=_ac5.y-this.scrollOffset.y;
+var _acd=dojo.html.getScroll().offset;
+if(_acd.y!=this.scrollOffset.y){
+var diff=_acd.y-this.scrollOffset.y;
 this.dragOffset.y+=diff;
-this.scrollOffset.y=_ac5.y;
+this.scrollOffset.y=_acd.y;
 }
-if(_ac5.x!=this.scrollOffset.x){
-var diff=_ac5.x-this.scrollOffset.x;
+if(_acd.x!=this.scrollOffset.x){
+var diff=_acd.x-this.scrollOffset.x;
 this.dragOffset.x+=diff;
-this.scrollOffset.x=_ac5.x;
+this.scrollOffset.x=_acd.x;
 }
 },onDragMove:function(e){
 this.updateDragOffset();
@@ -30259,22 +24365,22 @@
 this.dragClone=null;
 break;
 case "dropFailure":
-var _acd=dojo.html.getAbsolutePosition(this.dragClone,true);
-var _ace={left:this.dragStartPosition.x+1,top:this.dragStartPosition.y+1};
-var anim=dojo.lfx.slideTo(this.dragClone,_ace,300);
-var _ad0=this;
+var _ad5=dojo.html.getAbsolutePosition(this.dragClone,true);
+var _ad6={left:this.dragStartPosition.x+1,top:this.dragStartPosition.y+1};
+var anim=dojo.lfx.slideTo(this.dragClone,_ad6,300);
+var _ad8=this;
 dojo.event.connect(anim,"onEnd",function(e){
-dojo.html.removeNode(_ad0.dragClone);
-_ad0.dragClone=null;
+dojo.html.removeNode(_ad8.dragClone);
+_ad8.dragClone=null;
 });
 anim.play();
 break;
 }
 dojo.event.topic.publish("dragEnd",{source:this});
-},constrainTo:function(_ad2){
+},constrainTo:function(_ada){
 this.constrainToContainer=true;
-if(_ad2){
-this.constrainingContainer=_ad2;
+if(_ada){
+this.constrainingContainer=_ada;
 }else{
 this.constrainingContainer=this.domNode.parentNode;
 }
@@ -30290,18 +24396,18 @@
 return false;
 }
 this.childBoxes=[];
-for(var i=0,_ad7;i<this.domNode.childNodes.length;i++){
-_ad7=this.domNode.childNodes[i];
-if(_ad7.nodeType!=dojo.html.ELEMENT_NODE){
+for(var i=0,_adf;i<this.domNode.childNodes.length;i++){
+_adf=this.domNode.childNodes[i];
+if(_adf.nodeType!=dojo.html.ELEMENT_NODE){
 continue;
 }
-var pos=dojo.html.getAbsolutePosition(_ad7,true);
-var _ad9=dojo.html.getBorderBox(_ad7);
-this.childBoxes.push({top:pos.y,bottom:pos.y+_ad9.height,left:pos.x,right:pos.x+_ad9.width,height:_ad9.height,width:_ad9.width,node:_ad7});
+var pos=dojo.html.getAbsolutePosition(_adf,true);
+var _ae1=dojo.html.getBorderBox(_adf);
+this.childBoxes.push({top:pos.y,bottom:pos.y+_ae1.height,left:pos.x,right:pos.x+_ae1.width,height:_ae1.height,width:_ae1.width,node:_adf});
 }
 return true;
 },_getNodeUnderMouse:function(e){
-for(var i=0,_adc;i<this.childBoxes.length;i++){
+for(var i=0,_ae4;i<this.childBoxes.length;i++){
 with(this.childBoxes[i]){
 if(e.pageX>=left&&e.pageX<=right&&e.pageY>=top&&e.pageY<=bottom){
 return i;
@@ -30328,30 +24434,30 @@
 left=dojo.html.getAbsolutePosition(this.domNode,true).x+"px";
 }
 }
-},onDragMove:function(e,_ade){
+},onDragMove:function(e,_ae6){
 var i=this._getNodeUnderMouse(e);
 if(!this.dropIndicator){
 this.createDropIndicator();
 }
-var _ae0=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
+var _ae8=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
 var hide=false;
 if(i<0){
 if(this.childBoxes.length){
-var _ae2=(dojo.html.gravity(this.childBoxes[0].node,e)&_ae0);
-if(_ae2){
+var _aea=(dojo.html.gravity(this.childBoxes[0].node,e)&_ae8);
+if(_aea){
 hide=true;
 }
 }else{
-var _ae2=true;
+var _aea=true;
 }
 }else{
-var _ae3=this.childBoxes[i];
-var _ae2=(dojo.html.gravity(_ae3.node,e)&_ae0);
-if(_ae3.node===_ade[0].dragSource.domNode){
+var _aeb=this.childBoxes[i];
+var _aea=(dojo.html.gravity(_aeb.node,e)&_ae8);
+if(_aeb.node===_ae6[0].dragSource.domNode){
 hide=true;
 }else{
-var _ae4=_ae2?(i>0?this.childBoxes[i-1]:_ae3):(i<this.childBoxes.length-1?this.childBoxes[i+1]:_ae3);
-if(_ae4.node===_ade[0].dragSource.domNode){
+var _aec=_aea?(i>0?this.childBoxes[i-1]:_aeb):(i<this.childBoxes.length-1?this.childBoxes[i+1]:_aeb);
+if(_aec.node===_ae6[0].dragSource.domNode){
 hide=true;
 }
 }
@@ -30362,30 +24468,30 @@
 }else{
 this.dropIndicator.style.display="";
 }
-this.placeIndicator(e,_ade,i,_ae2);
+this.placeIndicator(e,_ae6,i,_aea);
 if(!dojo.html.hasParent(this.dropIndicator)){
 dojo.body().appendChild(this.dropIndicator);
 }
-},placeIndicator:function(e,_ae6,_ae7,_ae8){
-var _ae9=this.vertical?"left":"top";
-var _aea;
-if(_ae7<0){
+},placeIndicator:function(e,_aee,_aef,_af0){
+var _af1=this.vertical?"left":"top";
+var _af2;
+if(_aef<0){
 if(this.childBoxes.length){
-_aea=_ae8?this.childBoxes[0]:this.childBoxes[this.childBoxes.length-1];
+_af2=_af0?this.childBoxes[0]:this.childBoxes[this.childBoxes.length-1];
 }else{
-this.dropIndicator.style[_ae9]=dojo.html.getAbsolutePosition(this.domNode,true)[this.vertical?"x":"y"]+"px";
+this.dropIndicator.style[_af1]=dojo.html.getAbsolutePosition(this.domNode,true)[this.vertical?"x":"y"]+"px";
 }
 }else{
-_aea=this.childBoxes[_ae7];
+_af2=this.childBoxes[_aef];
 }
-if(_aea){
-this.dropIndicator.style[_ae9]=(_ae8?_aea[_ae9]:_aea[this.vertical?"right":"bottom"])+"px";
+if(_af2){
+this.dropIndicator.style[_af1]=(_af0?_af2[_af1]:_af2[this.vertical?"right":"bottom"])+"px";
 if(this.vertical){
-this.dropIndicator.style.height=_aea.height+"px";
-this.dropIndicator.style.top=_aea.top+"px";
+this.dropIndicator.style.height=_af2.height+"px";
+this.dropIndicator.style.top=_af2.top+"px";
 }else{
-this.dropIndicator.style.width=_aea.width+"px";
-this.dropIndicator.style.left=_aea.left+"px";
+this.dropIndicator.style.width=_af2.width+"px";
+this.dropIndicator.style.left=_af2.left+"px";
 }
 }
 },onDragOut:function(e){
@@ -30396,10 +24502,10 @@
 },onDrop:function(e){
 this.onDragOut(e);
 var i=this._getNodeUnderMouse(e);
-var _aee=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
+var _af6=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
 if(i<0){
 if(this.childBoxes.length){
-if(dojo.html.gravity(this.childBoxes[0].node,e)&_aee){
+if(dojo.html.gravity(this.childBoxes[0].node,e)&_af6){
 return this.insert(e,this.childBoxes[0].node,"before");
 }else{
 return this.insert(e,this.childBoxes[this.childBoxes.length-1].node,"after");
@@ -30407,48 +24513,48 @@
 }
 return this.insert(e,this.domNode,"append");
 }
-var _aef=this.childBoxes[i];
-if(dojo.html.gravity(_aef.node,e)&_aee){
-return this.insert(e,_aef.node,"before");
+var _af7=this.childBoxes[i];
+if(dojo.html.gravity(_af7.node,e)&_af6){
+return this.insert(e,_af7.node,"before");
 }else{
-return this.insert(e,_aef.node,"after");
+return this.insert(e,_af7.node,"after");
 }
-},insert:function(e,_af1,_af2){
+},insert:function(e,_af9,_afa){
 var node=e.dragObject.domNode;
-if(_af2=="before"){
-return dojo.html.insertBefore(node,_af1);
+if(_afa=="before"){
+return dojo.html.insertBefore(node,_af9);
 }else{
-if(_af2=="after"){
-return dojo.html.insertAfter(node,_af1);
+if(_afa=="after"){
+return dojo.html.insertAfter(node,_af9);
 }else{
-if(_af2=="append"){
-_af1.appendChild(node);
+if(_afa=="append"){
+_af9.appendChild(node);
 return true;
 }
 }
 }
 return false;
-}},function(node,_af5){
+}},function(node,_afd){
 if(arguments.length==0){
 return;
 }
 this.domNode=dojo.byId(node);
 dojo.dnd.DropTarget.call(this);
-if(_af5&&dojo.lang.isString(_af5)){
-_af5=[_af5];
+if(_afd&&dojo.lang.isString(_afd)){
+_afd=[_afd];
 }
-this.acceptedTypes=_af5||[];
+this.acceptedTypes=_afd||[];
 dojo.dnd.dragManager.registerDropTarget(this);
 });
 dojo.kwCompoundRequire({common:["dojo.dnd.DragAndDrop"],browser:["dojo.dnd.HtmlDragAndDrop"],dashboard:["dojo.dnd.HtmlDragAndDrop"]});
 dojo.provide("dojo.dnd.*");
 dojo.provide("dojo.dnd.HtmlDragMove");
 dojo.declare("dojo.dnd.HtmlDragMoveSource",dojo.dnd.HtmlDragSource,{onDragStart:function(){
-var _af6=new dojo.dnd.HtmlDragMoveObject(this.dragObject,this.type);
+var _afe=new dojo.dnd.HtmlDragMoveObject(this.dragObject,this.type);
 if(this.constrainToContainer){
-_af6.constrainTo(this.constrainingContainer);
+_afe.constrainTo(this.constrainingContainer);
 }
-return _af6;
+return _afe;
 },onSelected:function(){
 for(var i=0;i<this.dragObjects.length;i++){
 dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragMoveSource(this.dragObjects[i]));
@@ -30522,9 +24628,9 @@
 }
 }
 },clearTrap:function(e){
-var _b01=this;
+var _b09=this;
 setTimeout(function(){
-_b01._fromTrap=false;
+_b09._fromTrap=false;
 },100);
 },postCreate:function(){
 with(this.domNode.style){
@@ -30560,14 +24666,14 @@
 },uninitialize:function(){
 this.bgIframe.remove();
 dojo.html.removeNode(this.bg,true);
-},setBackgroundColor:function(_b03){
+},setBackgroundColor:function(_b0b){
 if(arguments.length>=3){
-_b03=new dojo.gfx.color.Color(arguments[0],arguments[1],arguments[2]);
+_b0b=new dojo.gfx.color.Color(arguments[0],arguments[1],arguments[2]);
 }else{
-_b03=new dojo.gfx.color.Color(_b03);
+_b0b=new dojo.gfx.color.Color(_b0b);
 }
-this.bg.style.backgroundColor=_b03.toString();
-return this.bgColor=_b03;
+this.bg.style.backgroundColor=_b0b.toString();
+return this.bgColor=_b0b;
 },setBackgroundOpacity:function(op){
 if(arguments.length==0){
 op=this.bgOpacity;
@@ -30582,22 +24688,22 @@
 return this.bgOpacity;
 },_sizeBackground:function(){
 if(this.bgOpacity>0){
-var _b05=dojo.html.getViewport();
-var h=_b05.height;
-var w=_b05.width;
+var _b0d=dojo.html.getViewport();
+var h=_b0d.height;
+var w=_b0d.width;
 with(this.bg.style){
 width=w+"px";
 height=h+"px";
 }
-var _b08=dojo.html.getScroll().offset;
-this.bg.style.top=_b08.y+"px";
-this.bg.style.left=_b08.x+"px";
-var _b05=dojo.html.getViewport();
-if(_b05.width!=w){
-this.bg.style.width=_b05.width+"px";
+var _b10=dojo.html.getScroll().offset;
+this.bg.style.top=_b10.y+"px";
+this.bg.style.left=_b10.x+"px";
+var _b0d=dojo.html.getViewport();
+if(_b0d.width!=w){
+this.bg.style.width=_b0d.width+"px";
 }
-if(_b05.height!=h){
-this.bg.style.height=_b05.height+"px";
+if(_b0d.height!=h){
+this.bg.style.height=_b0d.height+"px";
 }
 }
 this.bgIframe.size(this.bg);
@@ -30609,8 +24715,8 @@
 this.bgIframe.iframe.style.display="block";
 }
 },placeModalDialog:function(){
-var _b09=dojo.html.getScroll().offset;
-var _b0a=dojo.html.getViewport();
+var _b11=dojo.html.getScroll().offset;
+var _b12=dojo.html.getViewport();
 var mb;
 if(this.isShowing()){
 mb=dojo.html.getMarginBox(this.domNode);
@@ -30621,8 +24727,8 @@
 dojo.html.hide(this.domNode);
 dojo.html.setVisibility(this.domNode,true);
 }
-var x=_b09.x+(_b0a.width-mb.width)/2;
-var y=_b09.y+(_b0a.height-mb.height)/2;
+var x=_b11.x+(_b12.width-mb.width)/2;
+var y=_b11.y+(_b12.height-mb.height)/2;
 with(this.domNode.style){
 left=x+"px";
 top=y+"px";
@@ -30682,9 +24788,9 @@
 dojo.event.disconnect(window,"onscroll",this,"_onScroll");
 }
 },_onScroll:function(){
-var _b10=dojo.html.getScroll().offset;
-this.bg.style.top=_b10.y+"px";
-this.bg.style.left=_b10.x+"px";
+var _b18=dojo.html.getScroll().offset;
+this.bg.style.top=_b18.y+"px";
+this.bg.style.left=_b18.x+"px";
 this.placeModalDialog();
 },checkSize:function(){
 if(this.isShowing()){
@@ -30816,8 +24922,8 @@
 }});
 dojo.provide("dojo.widget.FloatingPane");
 dojo.declare("dojo.widget.FloatingPaneBase",null,{title:"",iconSrc:"",hasShadow:false,constrainToContainer:false,taskBarId:"",resizable:true,titleBarDisplay:true,windowState:"normal",displayCloseAction:false,displayMinimizeAction:false,displayMaximizeAction:false,_max_taskBarConnectAttempts:5,_taskBarConnectAttempts:0,templateString:"<div id=\"${this.widgetId}\" dojoAttachEvent=\"onMouseDown\" class=\"dojoFloatingPane\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dojoFloatingPaneTitleBar\"  style=\"display:none\">\n\t  \t<img dojoAttachPoint=\"titleBarIcon\"  class=\"dojoFloatingPaneTitleBarIcon\">\n\t\t<div dojoAttachPoint=\"closeAction\" dojoAttachEvent=\"onClick:closeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneCloseIcon\"></div>\n\t\t<div dojoAttachPoint=\"restoreAction\" dojoAttachEvent=\"onClick:restoreWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneRestoreIcon\"></div>\n\t\t<div dojoAttachPoint=\"maximizeAction\" dojoAttachEvent=\"onClick:maximizeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneMaximizeIcon\"></div>\n\t\t<div dojoAttachPoint=\"minimizeAction\" dojoAttachEvent=\"onClick:minimizeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneMinimizeIcon\"></div>\n\t  \t<div dojoAttachPoint=\"titleBarText\" class=\"dojoFloatingPaneTitleText\">${this.title}</div>\n\t</div>\n\n\t<div id=\"${this.widgetId}_container\" dojoAttachPoint=\"containerNode\" class=\"dojoFloatingPaneClient\"></div>\n\n\t<div dojoAttachPoint=\"resizeBar\" class=\"dojoFloatingPaneResizebar\" style=\"display:none\"></div>\n</div>\n",templateCssString:"\n/********** Outer Window ***************/\n\n.dojoFloatingPane {\n\t/* essential css */\n\tposition: absolute;\n\toverflow: visible;\t\t/* so drop shadow is displayed */\n\tz-index: 10;\n\n\t/* styling css */\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tbackground-color: ThreeDFace;\n}\n\n\n/********** Title Bar ****************/\n\n.dojoFloatingPaneTitleBar {\n\tvertical-align: top;\n\tmargin: 2px 2px 2px 2px;\n\tz-index: 10;\n\tbackground-color: #7596c6;\n\tcursor: default;\n\toverflow: hidden;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tvertical-align: middle;\n}\n\n.dojoFloatingPaneTitleText {\n\tfloat: left;\n\tpadding: 2px 4px 2px 2px;\n\twhite-space: nowrap;\n\tcolor: CaptionText;\n\tfont: small-caption;\n}\n\n.dojoTitleBarIcon {\n\tfloat: left;\n\theight: 22px;\n\twidth: 22px;\n\tvertical-align: middle;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\n}\n\n.dojoFloatingPaneActions{\n\tfloat: right;\n\tposition: absolute;\n\tright: 2px;\n\ttop: 2px;\n\tvertical-align: middle;\n}\n\n\n.dojoFloatingPaneActionItem {\n\tvertical-align: middle;\n\tmargin-right: 1px;\n\theight: 22px;\n\twidth: 22px;\n}\n\n\n.dojoFloatingPaneTitleBarIcon {\n\t/* essential css */\n\tfloat: left;\n\n\t/* styling css */\n\tmargin-left: 2px;\n\tmargin-right: 4px;\n\theight: 22px;\n}\n\n/* minimize/maximize icons are specified by CSS only */\n.dojoFloatingPaneMinimizeIcon,\n.dojoFloatingPaneMaximizeIcon,\n.dojoFloatingPaneRestoreIcon,\n.dojoFloatingPaneCloseIcon {\n\tvertical-align: middle;\n\theight: 22px;\n\twidth: 22px;\n\tfloat: right;\n}\n.dojoFloatingPaneMinimizeIcon {\n\tbackground-image: url(images/floatingPaneMinimize.gif);\n}\n.dojoFloatingPaneMaximizeIcon {\n\tbackground-image: url(images/floatingPaneMaximize.gif);\n}\n.dojoFloatingPaneRestoreIcon {\n\tbackground-image: url(images/floatingPaneRestore.gif);\n}\n.dojoFloatingPaneCloseIcon {\n\tbackground-image: url(images/floatingPaneClose.gif);\n}\n\n/* bar at bottom of window that holds resize handle */\n.dojoFloatingPaneResizebar {\n\tz-index: 10;\n\theight: 13px;\n\tbackground-color: ThreeDFace;\n}\n\n/************* Client Area ***************/\n\n.dojoFloatingPaneClient {\n\tposition: relative;\n\tz-index: 10;\n\tborder: 1px solid;\n\tborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n\tmargin: 2px;\n\tbackground-color: ThreeDFace;\n\tpadding: 8px;\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\tfont-size: 12px;\n\toverflow: auto;\n}\n\n",templateCssPath:dojo.uri.moduleUri("dojo.widget","templates/FloatingPane.css"),fillInFloatingPaneTemplate:function(args,frag){
-var _b1f=this.getFragNodeRef(frag);
-dojo.html.copyStyle(this.domNode,_b1f);
+var _b27=this.getFragNodeRef(frag);
+dojo.html.copyStyle(this.domNode,_b27);
 dojo.body().appendChild(this.domNode);
 if(!this.isShowing()){
 this.windowState="minimized";
@@ -30877,12 +24983,12 @@
 this.domNode.style.left=dojo.html.getPixelValue(this.domNode.parentNode,"padding-left",true)+"px";
 this.domNode.style.top=dojo.html.getPixelValue(this.domNode.parentNode,"padding-top",true)+"px";
 if((this.domNode.parentNode.nodeName.toLowerCase()=="body")){
-var _b24=dojo.html.getViewport();
-var _b25=dojo.html.getPadding(dojo.body());
-this.resizeTo(_b24.width-_b25.width,_b24.height-_b25.height);
+var _b2c=dojo.html.getViewport();
+var _b2d=dojo.html.getPadding(dojo.body());
+this.resizeTo(_b2c.width-_b2d.width,_b2c.height-_b2d.height);
 }else{
-var _b26=dojo.html.getContentBox(this.domNode.parentNode);
-this.resizeTo(_b26.width,_b26.height);
+var _b2e=dojo.html.getContentBox(this.domNode.parentNode);
+this.resizeTo(_b2e.width,_b2e.height);
 }
 this.maximizeAction.style.display="none";
 this.restoreAction.style.display="";
@@ -30940,20 +25046,20 @@
 },onMouseDown:function(evt){
 this.bringToTop();
 },bringToTop:function(){
-var _b2d=dojo.widget.manager.getWidgetsByType(this.widgetType);
-var _b2e=[];
-for(var x=0;x<_b2d.length;x++){
-if(this.widgetId!=_b2d[x].widgetId){
-_b2e.push(_b2d[x]);
+var _b35=dojo.widget.manager.getWidgetsByType(this.widgetType);
+var _b36=[];
+for(var x=0;x<_b35.length;x++){
+if(this.widgetId!=_b35[x].widgetId){
+_b36.push(_b35[x]);
 }
 }
-_b2e.sort(function(a,b){
+_b36.sort(function(a,b){
 return a.domNode.style.zIndex-b.domNode.style.zIndex;
 });
-_b2e.push(this);
-var _b32=100;
-for(x=0;x<_b2e.length;x++){
-_b2e[x].domNode.style.zIndex=_b32+x*2;
+_b36.push(this);
+var _b3a=100;
+for(x=0;x<_b36.length;x++){
+_b36[x].domNode.style.zIndex=_b3a+x*2;
 }
 },_setInitialWindowState:function(){
 if(this.isShowing()){
@@ -30976,8 +25082,8 @@
 }
 this.windowState="minimized";
 },_taskBarSetup:function(){
-var _b34=dojo.widget.getWidgetById(this.taskBarId);
-if(!_b34){
+var _b3c=dojo.widget.getWidgetById(this.taskBarId);
+if(!_b3c){
 if(this._taskBarConnectAttempts<this._max_taskBarConnectAttempts){
 dojo.lang.setTimeout(this,this._taskBarSetup,50);
 this._taskBarConnectAttempts++;
@@ -30986,19 +25092,19 @@
 }
 return;
 }
-_b34.addChild(this);
+_b3c.addChild(this);
 },showFloatingPane:function(){
 this.bringToTop();
 },onFloatingPaneShow:function(){
 var mb=dojo.html.getMarginBox(this.domNode);
 this.resizeTo(mb.width,mb.height);
-},resizeTo:function(_b36,_b37){
-dojo.html.setMarginBox(this.domNode,{width:_b36,height:_b37});
+},resizeTo:function(_b3e,_b3f){
+dojo.html.setMarginBox(this.domNode,{width:_b3e,height:_b3f});
 dojo.widget.html.layout(this.domNode,[{domNode:this.titleBar,layoutAlign:"top"},{domNode:this.resizeBar,layoutAlign:"bottom"},{domNode:this.containerNode,layoutAlign:"client"}]);
 dojo.widget.html.layout(this.containerNode,this.children,"top-bottom");
 this.bgIframe.onResized();
 if(this.shadow){
-this.shadow.size(_b36,_b37);
+this.shadow.size(_b3e,_b3f);
 }
 this.onResized();
 },checkSize:function(){
@@ -31039,13 +25145,13 @@
 dojo.widget.ModalFloatingPane.superclass.closeWindow.apply(this,arguments);
 }});
 dojo.provide("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
-dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad",function(_b3a){
-if(_b3a.toolbarAlwaysVisible){
-var p=new dojo.widget.Editor2Plugin.AlwaysShowToolbar(_b3a);
+dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad",function(_b42){
+if(_b42.toolbarAlwaysVisible){
+var p=new dojo.widget.Editor2Plugin.AlwaysShowToolbar(_b42);
 }
 });
-dojo.declare("dojo.widget.Editor2Plugin.AlwaysShowToolbar",null,function(_b3c){
-this.editor=_b3c;
+dojo.declare("dojo.widget.Editor2Plugin.AlwaysShowToolbar",null,function(_b44){
+this.editor=_b44;
 this.editor.registerLoadedPlugin(this);
 this.setup();
 },{_scrollSetUp:false,_fixEnabled:false,_scrollThreshold:false,_handleScroll:true,setup:function(){
@@ -31066,7 +25172,7 @@
 var db=dojo.body();
 if(!this._scrollSetUp){
 this._scrollSetUp=true;
-var _b42=dh.getMarginBox(this.editor.domNode).width;
+var _b4a=dh.getMarginBox(this.editor.domNode).width;
 this._scrollThreshold=dh.abs(tdn,true).y;
 if((isIE)&&(db)&&(dh.getStyle(db,"background-image")=="none")){
 with(db.style){
@@ -31075,11 +25181,11 @@
 }
 }
 }
-var _b43=(window["pageYOffset"])?window["pageYOffset"]:(document["documentElement"]||document["body"]).scrollTop;
-if(_b43>this._scrollThreshold){
+var _b4b=(window["pageYOffset"])?window["pageYOffset"]:(document["documentElement"]||document["body"]).scrollTop;
+if(_b4b>this._scrollThreshold){
 if(!this._fixEnabled){
-var _b44=dojo.html.getMarginBox(tdn);
-this.editor.editorObject.style.marginTop=_b44.height+"px";
+var _b4c=dojo.html.getMarginBox(tdn);
+this.editor.editorObject.style.marginTop=_b4c.height+"px";
 if(isIE){
 tdn.style.left=dojo.html.abs(tdn,dojo.html.boxSizing.MARGIN_BOX).x;
 if(tdn.previousSibling){
@@ -31099,13 +25205,13 @@
 top="0px";
 }
 }
-tdn.style.width=_b44.width+"px";
+tdn.style.width=_b4c.width+"px";
 tdn.style.zIndex=1000;
 this._fixEnabled=true;
 }
 if(!dojo.render.html.safari){
-var _b45=(this.height)?parseInt(this.editor.height):this.editor._lastHeight;
-if(_b43>(this._scrollThreshold+_b45)){
+var _b4d=(this.height)?parseInt(this.editor.height):this.editor._lastHeight;
+if(_b4b>(this._scrollThreshold+_b4d)){
 tdn.style.display="none";
 }else{
 tdn.style.display="";
@@ -31149,48 +25255,48 @@
 return this._currentInstance;
 },setCurrentInstance:function(inst){
 this._currentInstance=inst;
-},getCommand:function(_b47,name){
-var _b49;
+},getCommand:function(_b4f,name){
+var _b51;
 name=name.toLowerCase();
 for(var i=0;i<this._registeredHandlers.length;i++){
-_b49=this._registeredHandlers[i](_b47,name);
-if(_b49){
-return _b49;
+_b51=this._registeredHandlers[i](_b4f,name);
+if(_b51){
+return _b51;
 }
 }
 switch(name){
 case "htmltoggle":
-_b49=new dojo.widget.Editor2BrowserCommand(_b47,name);
+_b51=new dojo.widget.Editor2BrowserCommand(_b4f,name);
 break;
 case "formatblock":
-_b49=new dojo.widget.Editor2FormatBlockCommand(_b47,name);
+_b51=new dojo.widget.Editor2FormatBlockCommand(_b4f,name);
 break;
 case "anchor":
-_b49=new dojo.widget.Editor2Command(_b47,name);
+_b51=new dojo.widget.Editor2Command(_b4f,name);
 break;
 case "createlink":
-_b49=new dojo.widget.Editor2DialogCommand(_b47,name,{contentFile:"dojo.widget.Editor2Plugin.CreateLinkDialog",contentClass:"Editor2CreateLinkDialog",title:"Insert/Edit Link",width:"300px",height:"200px"});
+_b51=new dojo.widget.Editor2DialogCommand(_b4f,name,{contentFile:"dojo.widget.Editor2Plugin.CreateLinkDialog",contentClass:"Editor2CreateLinkDialog",title:"Insert/Edit Link",width:"300px",height:"200px"});
 break;
 case "insertimage":
-_b49=new dojo.widget.Editor2DialogCommand(_b47,name,{contentFile:"dojo.widget.Editor2Plugin.InsertImageDialog",contentClass:"Editor2InsertImageDialog",title:"Insert/Edit Image",width:"400px",height:"270px"});
+_b51=new dojo.widget.Editor2DialogCommand(_b4f,name,{contentFile:"dojo.widget.Editor2Plugin.InsertImageDialog",contentClass:"Editor2InsertImageDialog",title:"Insert/Edit Image",width:"400px",height:"270px"});
 break;
 default:
-var _b4b=this.getCurrentInstance();
-if((_b4b&&_b4b.queryCommandAvailable(name))||(!_b4b&&dojo.widget.Editor2.prototype.queryCommandAvailable(name))){
-_b49=new dojo.widget.Editor2BrowserCommand(_b47,name);
+var _b53=this.getCurrentInstance();
+if((_b53&&_b53.queryCommandAvailable(name))||(!_b53&&dojo.widget.Editor2.prototype.queryCommandAvailable(name))){
+_b51=new dojo.widget.Editor2BrowserCommand(_b4f,name);
 }else{
 dojo.debug("dojo.widget.Editor2Manager.getCommand: Unknown command "+name);
 return;
 }
 }
-return _b49;
+return _b51;
 },destroy:function(){
 this._currentInstance=null;
 dojo.widget.HandlerManager.prototype.destroy.call(this);
 }});
 dojo.addOnUnload(dojo.widget.Editor2Manager,"destroy");
-dojo.lang.declare("dojo.widget.Editor2Command",null,function(_b4c,name){
-this._editor=_b4c;
+dojo.lang.declare("dojo.widget.Editor2Command",null,function(_b54,name){
+this._editor=_b54;
 this._updateTime=0;
 this._name=name;
 },{_text:"Unknown",execute:function(para){
@@ -31202,7 +25308,7 @@
 },destroy:function(){
 }});
 dojo.widget.Editor2BrowserCommandNames={"bold":"Bold","copy":"Copy","cut":"Cut","Delete":"Delete","indent":"Indent","inserthorizontalrule":"Horizental Rule","insertorderedlist":"Numbered List","insertunorderedlist":"Bullet List","italic":"Italic","justifycenter":"Align Center","justifyfull":"Justify","justifyleft":"Align Left","justifyright":"Align Right","outdent":"Outdent","paste":"Paste","redo":"Redo","removeformat":"Remove Format","selectall":"Select All","strikethrough":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline","undo":"Undo","unlink":"Remove Link","createlink":"Create Link","insertimage":"Insert Image","htmltoggle":"HTML Source","forecolor":"Foreground Color","hilitecolor":"Background Color","plainformatblock":"Paragraph Style","formatblock":"Paragraph Style","fontsize":"Font Size","fontname":"Font Name"};
-dojo.lang.declare("dojo.widget.Editor2BrowserCommand",dojo.widget.Editor2Command,function(_b4f,name){
+dojo.lang.declare("dojo.widget.Editor2BrowserCommand",dojo.widget.Editor2Command,function(_b57,name){
 var text=dojo.widget.Editor2BrowserCommandNames[name.toLowerCase()];
 if(text){
 this._text=text;
@@ -31306,8 +25412,8 @@
 },cancel:function(){
 this.parent.hide();
 }});
-dojo.lang.declare("dojo.widget.Editor2DialogCommand",dojo.widget.Editor2BrowserCommand,function(_b55,name,_b57){
-this.dialogParas=_b57;
+dojo.lang.declare("dojo.widget.Editor2DialogCommand",dojo.widget.Editor2BrowserCommand,function(_b5d,name,_b5f){
+this.dialogParas=_b5f;
 },{execute:function(){
 if(!this.dialog){
 if(!this.dialogParas.contentFile||!this.dialogParas.contentClass){
@@ -31343,16 +25449,16 @@
 }
 }
 if(!this.toolbarWidget){
-var _b58={shareGroup:this.toolbarGroup,parent:this};
-_b58.templateString=dojo.uri.cache.get(this.toolbarTemplatePath);
+var _b60={shareGroup:this.toolbarGroup,parent:this};
+_b60.templateString=dojo.uri.cache.get(this.toolbarTemplatePath);
 if(this.toolbarTemplateCssPath){
-_b58.templateCssPath=this.toolbarTemplateCssPath;
-_b58.templateCssString=dojo.uri.cache.get(this.toolbarTemplateCssPath);
+_b60.templateCssPath=this.toolbarTemplateCssPath;
+_b60.templateCssString=dojo.uri.cache.get(this.toolbarTemplateCssPath);
 }
 if(this.toolbarPlaceHolder){
-this.toolbarWidget=dojo.widget.createWidget("Editor2Toolbar",_b58,dojo.byId(this.toolbarPlaceHolder),"after");
+this.toolbarWidget=dojo.widget.createWidget("Editor2Toolbar",_b60,dojo.byId(this.toolbarPlaceHolder),"after");
 }else{
-this.toolbarWidget=dojo.widget.createWidget("Editor2Toolbar",_b58,this.domNode.firstChild,"before");
+this.toolbarWidget=dojo.widget.createWidget("Editor2Toolbar",_b60,this.domNode.firstChild,"before");
 }
 if(this.toolbarGroup){
 dojo.widget.Editor2ToolbarGroups[this.toolbarGroup]=this.toolbarWidget;
@@ -31378,16 +25484,16 @@
 }
 }
 dojo.debug("dojo.widget.Editor2.unregisterLoadedPlugin: unknow plugin object: "+obj);
-},execCommand:function(_b5c,_b5d){
-switch(_b5c.toLowerCase()){
+},execCommand:function(_b64,_b65){
+switch(_b64.toLowerCase()){
 case "htmltoggle":
 this.toggleHtmlEditing();
 break;
 default:
 dojo.widget.Editor2.superclass.execCommand.apply(this,arguments);
 }
-},queryCommandEnabled:function(_b5e,_b5f){
-switch(_b5e.toLowerCase()){
+},queryCommandEnabled:function(_b66,_b67){
+switch(_b66.toLowerCase()){
 case "htmltoggle":
 return true;
 default:
@@ -31396,8 +25502,8 @@
 }
 return dojo.widget.Editor2.superclass.queryCommandEnabled.apply(this,arguments);
 }
-},queryCommandState:function(_b60,_b61){
-switch(_b60.toLowerCase()){
+},queryCommandState:function(_b68,_b69){
+switch(_b68.toLowerCase()){
 case "htmltoggle":
 return this._inSourceMode;
 default:
@@ -31463,16 +25569,16 @@
 }else{
 dojo.debug("restoreSelection: no saved selection is found!");
 }
-},_updateToolbarLastRan:null,_updateToolbarTimer:null,_updateToolbarFrequency:500,updateToolbar:function(_b64){
+},_updateToolbarLastRan:null,_updateToolbarTimer:null,_updateToolbarFrequency:500,updateToolbar:function(_b6c){
 if((!this.isLoaded)||(!this.toolbarWidget)){
 return;
 }
 var diff=new Date()-this._updateToolbarLastRan;
-if((!_b64)&&(this._updateToolbarLastRan)&&((diff<this._updateToolbarFrequency))){
+if((!_b6c)&&(this._updateToolbarLastRan)&&((diff<this._updateToolbarFrequency))){
 clearTimeout(this._updateToolbarTimer);
-var _b66=this;
+var _b6e=this;
 this._updateToolbarTimer=setTimeout(function(){
-_b66.updateToolbar();
+_b6e.updateToolbar();
 },this._updateToolbarFrequency/2);
 return;
 }else{
@@ -31482,17 +25588,17 @@
 return;
 }
 this.toolbarWidget.update();
-},destroy:function(_b67){
+},destroy:function(_b6f){
 this._htmlEditNode=null;
 dojo.event.disconnect(this,"close",this.toolbarWidget,"hide");
-if(!_b67){
+if(!_b6f){
 this.toolbarWidget.destroy();
 }
 dojo.widget.Editor2.superclass.destroy.call(this);
-},_lastStateTimestamp:0,onDisplayChanged:function(e,_b69){
+},_lastStateTimestamp:0,onDisplayChanged:function(e,_b71){
 this._lastStateTimestamp=(new Date()).getTime();
 dojo.widget.Editor2.superclass.onDisplayChanged.call(this,e);
-this.updateToolbar(_b69);
+this.updateToolbar(_b71);
 },onLoad:function(){
 try{
 dojo.widget.Editor2.superclass.onLoad.call(this);
@@ -31540,6 +25646,8 @@
 
 __CPAN_EDITION__ editor build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -31612,2610 +25720,7 @@
 ../src/widget/FloatingPane.js
 ../src/widget/Editor2Plugin/AlwaysShowToolbar.js
 ../src/widget/Editor2.js
-__CPAN_EDITION__ event dojo.js
-/*
-	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
-*/
-
-/*
-	This is a compiled version of Dojo, built for deployment and not for
-	development. To get an editable version, please visit:
-
-		http://dojotoolkit.org
-
-	for documentation and information on getting the source.
-*/
-
-if(typeof dojo=="undefined"){
-var dj_global=this;
-var dj_currentContext=this;
-function dj_undef(_1,_2){
-return (typeof (_2||dj_currentContext)[_1]=="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:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
-with(dojo.version){
-return major+"."+minor+"."+patch+flag+" ("+revision+")";
-}
-}};
-dojo.evalProp=function(_3,_4,_5){
-if((!_4)||(!_3)){
-return undefined;
-}
-if(!dj_undef(_3,_4)){
-return _4[_3];
-}
-return (_5?(_4[_3]={}):undefined);
-};
-dojo.parseObjPath=function(_6,_7,_8){
-var _9=(_7||dojo.global());
-var _a=_6.split(".");
-var _b=_a.pop();
-for(var i=0,l=_a.length;i<l&&_9;i++){
-_9=dojo.evalProp(_a[i],_9,_8);
-}
-return {obj:_9,prop:_b};
-};
-dojo.evalObjPath=function(_e,_f){
-if(typeof _e!="string"){
-return dojo.global();
-}
-if(_e.indexOf(".")==-1){
-return dojo.evalProp(_e,dojo.global(),_f);
-}
-var ref=dojo.parseObjPath(_e,dojo.global(),_f);
-if(ref){
-return dojo.evalProp(ref.prop,ref.obj,_f);
-}
-return null;
-};
-dojo.errorToString=function(_11){
-if(!dj_undef("message",_11)){
-return _11.message;
-}else{
-if(!dj_undef("description",_11)){
-return _11.description;
-}else{
-return _11;
-}
-}
-};
-dojo.raise=function(_12,_13){
-if(_13){
-_12=_12+": "+dojo.errorToString(_13);
-}else{
-_12=dojo.errorToString(_12);
-}
-try{
-if(djConfig.isDebug){
-dojo.hostenv.println("FATAL exception raised: "+_12);
-}
-}
-catch(e){
-}
-throw _13||Error(_12);
-};
-dojo.debug=function(){
-};
-dojo.debugShallow=function(obj){
-};
-dojo.profile={start:function(){
-},end:function(){
-},stop:function(){
-},dump:function(){
-}};
-function dj_eval(_15){
-return dj_global.eval?dj_global.eval(_15):eval(_15);
-}
-dojo.unimplemented=function(_16,_17){
-var _18="'"+_16+"' not implemented";
-if(_17!=null){
-_18+=" "+_17;
-}
-dojo.raise(_18);
-};
-dojo.deprecated=function(_19,_1a,_1b){
-var _1c="DEPRECATED: "+_19;
-if(_1a){
-_1c+=" "+_1a;
-}
-if(_1b){
-_1c+=" -- will be removed in version: "+_1b;
-}
-dojo.debug(_1c);
-};
-dojo.render=(function(){
-function vscaffold(_1d,_1e){
-var tmp={capable:false,support:{builtin:false,plugin:false},prefixes:_1d};
-for(var i=0;i<_1e.length;i++){
-tmp[_1e[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 _21={isDebug:false,allowQueryConfig:false,baseScriptUri:"",baseRelativePath:"",libraryScriptUri:"",iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,delayMozLoadingFix:false,searchIds:[],parseWidgets:true};
-if(typeof djConfig=="undefined"){
-djConfig=_21;
-}else{
-for(var _22 in _21){
-if(typeof djConfig[_22]=="undefined"){
-djConfig[_22]=_21[_22];
-}
-}
-}
-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 _25=uri.lastIndexOf("/");
-djConfig.baseScriptUri=djConfig.baseRelativePath;
-return djConfig.baseScriptUri;
-};
-(function(){
-var _26={pkgFileName:"__package__",loading_modules_:{},loaded_modules_:{},addedToLoadingCount:[],removedFromLoadingCount:[],inFlightCount:0,modulePrefixes_:{dojo:{name:"dojo",value:"src"}},setModulePrefix:function(_27,_28){
-this.modulePrefixes_[_27]={name:_27,value:_28};
-},moduleHasPrefix:function(_29){
-var mp=this.modulePrefixes_;
-return Boolean(mp[_29]&&mp[_29].value);
-},getModulePrefix:function(_2b){
-if(this.moduleHasPrefix(_2b)){
-return this.modulePrefixes_[_2b].value;
-}
-return _2b;
-},getTextStack:[],loadUriStack:[],loadedUris:[],post_load_:false,modulesLoadedListeners:[],unloadListeners:[],loadNotifying:false};
-for(var _2c in _26){
-dojo.hostenv[_2c]=_26[_2c];
-}
-})();
-dojo.hostenv.loadPath=function(_2d,_2e,cb){
-var uri;
-if(_2d.charAt(0)=="/"||_2d.match(/^\w+:/)){
-uri=_2d;
-}else{
-uri=this.getBaseScriptUri()+_2d;
-}
-if(djConfig.cacheBust&&dojo.render.html.capable){
-uri+="?"+String(djConfig.cacheBust).replace(/\W+/g,"");
-}
-try{
-return !_2e?this.loadUri(uri,cb):this.loadUriAndCheck(uri,_2e,cb);
-}
-catch(e){
-dojo.debug(e);
-return false;
-}
-};
-dojo.hostenv.loadUri=function(uri,cb){
-if(this.loadedUris[uri]){
-return true;
-}
-var _33=this.getText(uri,null,true);
-if(!_33){
-return false;
-}
-this.loadedUris[uri]=true;
-if(cb){
-_33="("+_33+")";
-}
-var _34=dj_eval(_33);
-if(cb){
-cb(_34);
-}
-return true;
-};
-dojo.hostenv.loadUriAndCheck=function(uri,_36,cb){
-var ok=true;
-try{
-ok=this.loadUri(uri,cb);
-}
-catch(e){
-dojo.debug("failed loading ",uri," with error: ",e);
-}
-return Boolean(ok&&this.findModule(_36,false));
-};
-dojo.loaded=function(){
-};
-dojo.unloaded=function(){
-};
-dojo.hostenv.loaded=function(){
-this.loadNotifying=true;
-this.post_load_=true;
-var mll=this.modulesLoadedListeners;
-for(var x=0;x<mll.length;x++){
-mll[x]();
-}
-this.modulesLoadedListeners=[];
-this.loadNotifying=false;
-dojo.loaded();
-};
-dojo.hostenv.unloaded=function(){
-var mll=this.unloadListeners;
-while(mll.length){
-(mll.pop())();
-}
-dojo.unloaded();
-};
-dojo.addOnLoad=function(obj,_3d){
-var dh=dojo.hostenv;
-if(arguments.length==1){
-dh.modulesLoadedListeners.push(obj);
-}else{
-if(arguments.length>1){
-dh.modulesLoadedListeners.push(function(){
-obj[_3d]();
-});
-}
-}
-if(dh.post_load_&&dh.inFlightCount==0&&!dh.loadNotifying){
-dh.callLoaded();
-}
-};
-dojo.addOnUnload=function(obj,_40){
-var dh=dojo.hostenv;
-if(arguments.length==1){
-dh.unloadListeners.push(obj);
-}else{
-if(arguments.length>1){
-dh.unloadListeners.push(function(){
-obj[_40]();
-});
-}
-}
-};
-dojo.hostenv.modulesLoaded=function(){
-if(this.post_load_){
-return;
-}
-if(this.loadUriStack.length==0&&this.getTextStack.length==0){
-if(this.inFlightCount>0){
-dojo.debug("files still in flight!");
-return;
-}
-dojo.hostenv.callLoaded();
-}
-};
-dojo.hostenv.callLoaded=function(){
-if(typeof setTimeout=="object"||(djConfig["useXDomain"]&&dojo.render.html.opera)){
-setTimeout("dojo.hostenv.loaded();",0);
-}else{
-dojo.hostenv.loaded();
-}
-};
-dojo.hostenv.getModuleSymbols=function(_42){
-var _43=_42.split(".");
-for(var i=_43.length;i>0;i--){
-var _45=_43.slice(0,i).join(".");
-if((i==1)&&!this.moduleHasPrefix(_45)){
-_43[0]="../"+_43[0];
-}else{
-var _46=this.getModulePrefix(_45);
-if(_46!=_45){
-_43.splice(0,i,_46);
-break;
-}
-}
-}
-return _43;
-};
-dojo.hostenv._global_omit_module_check=false;
-dojo.hostenv.loadModule=function(_47,_48,_49){
-if(!_47){
-return;
-}
-_49=this._global_omit_module_check||_49;
-var _4a=this.findModule(_47,false);
-if(_4a){
-return _4a;
-}
-if(dj_undef(_47,this.loading_modules_)){
-this.addedToLoadingCount.push(_47);
-}
-this.loading_modules_[_47]=1;
-var _4b=_47.replace(/\./g,"/")+".js";
-var _4c=_47.split(".");
-var _4d=this.getModuleSymbols(_47);
-var _4e=((_4d[0].charAt(0)!="/")&&!_4d[0].match(/^\w+:/));
-var _4f=_4d[_4d.length-1];
-var ok;
-if(_4f=="*"){
-_47=_4c.slice(0,-1).join(".");
-while(_4d.length){
-_4d.pop();
-_4d.push(this.pkgFileName);
-_4b=_4d.join("/")+".js";
-if(_4e&&_4b.charAt(0)=="/"){
-_4b=_4b.slice(1);
-}
-ok=this.loadPath(_4b,!_49?_47:null);
-if(ok){
-break;
-}
-_4d.pop();
-}
-}else{
-_4b=_4d.join("/")+".js";
-_47=_4c.join(".");
-var _51=!_49?_47:null;
-ok=this.loadPath(_4b,_51);
-if(!ok&&!_48){
-_4d.pop();
-while(_4d.length){
-_4b=_4d.join("/")+".js";
-ok=this.loadPath(_4b,_51);
-if(ok){
-break;
-}
-_4d.pop();
-_4b=_4d.join("/")+"/"+this.pkgFileName+".js";
-if(_4e&&_4b.charAt(0)=="/"){
-_4b=_4b.slice(1);
-}
-ok=this.loadPath(_4b,_51);
-if(ok){
-break;
-}
-}
-}
-if(!ok&&!_49){
-dojo.raise("Could not load '"+_47+"'; last tried '"+_4b+"'");
-}
-}
-if(!_49&&!this["isXDomain"]){
-_4a=this.findModule(_47,false);
-if(!_4a){
-dojo.raise("symbol '"+_47+"' is not defined after loading '"+_4b+"'");
-}
-}
-return _4a;
-};
-dojo.hostenv.startPackage=function(_52){
-var _53=String(_52);
-var _54=_53;
-var _55=_52.split(/\./);
-if(_55[_55.length-1]=="*"){
-_55.pop();
-_54=_55.join(".");
-}
-var _56=dojo.evalObjPath(_54,true);
-this.loaded_modules_[_53]=_56;
-this.loaded_modules_[_54]=_56;
-return _56;
-};
-dojo.hostenv.findModule=function(_57,_58){
-var lmn=String(_57);
-if(this.loaded_modules_[lmn]){
-return this.loaded_modules_[lmn];
-}
-if(_58){
-dojo.raise("no loaded module named '"+_57+"'");
-}
-return null;
-};
-dojo.kwCompoundRequire=function(_5a){
-var _5b=_5a["common"]||[];
-var _5c=_5a[dojo.hostenv.name_]?_5b.concat(_5a[dojo.hostenv.name_]||[]):_5b.concat(_5a["default"]||[]);
-for(var x=0;x<_5c.length;x++){
-var _5e=_5c[x];
-if(_5e.constructor==Array){
-dojo.hostenv.loadModule.apply(dojo.hostenv,_5e);
-}else{
-dojo.hostenv.loadModule(_5e);
-}
-}
-};
-dojo.require=function(_5f){
-dojo.hostenv.loadModule.apply(dojo.hostenv,arguments);
-};
-dojo.requireIf=function(_60,_61){
-var _62=arguments[0];
-if((_62===true)||(_62=="common")||(_62&&dojo.render[_62].capable)){
-var _63=[];
-for(var i=1;i<arguments.length;i++){
-_63.push(arguments[i]);
-}
-dojo.require.apply(dojo,_63);
-}
-};
-dojo.requireAfterIf=dojo.requireIf;
-dojo.provide=function(_65){
-return dojo.hostenv.startPackage.apply(dojo.hostenv,arguments);
-};
-dojo.registerModulePath=function(_66,_67){
-return dojo.hostenv.setModulePrefix(_66,_67);
-};
-if(djConfig["modulePaths"]){
-for(var param in djConfig["modulePaths"]){
-dojo.registerModulePath(param,djConfig["modulePaths"][param]);
-}
-}
-dojo.setModulePrefix=function(_68,_69){
-dojo.deprecated("dojo.setModulePrefix(\""+_68+"\", \""+_69+"\")","replaced by dojo.registerModulePath","0.5");
-return dojo.registerModulePath(_68,_69);
-};
-dojo.exists=function(obj,_6b){
-var p=_6b.split(".");
-for(var i=0;i<p.length;i++){
-if(!obj[p[i]]){
-return false;
-}
-obj=obj[p[i]];
-}
-return true;
-};
-dojo.hostenv.normalizeLocale=function(_6e){
-var _6f=_6e?_6e.toLowerCase():dojo.locale;
-if(_6f=="root"){
-_6f="ROOT";
-}
-return _6f;
-};
-dojo.hostenv.searchLocalePath=function(_70,_71,_72){
-_70=dojo.hostenv.normalizeLocale(_70);
-var _73=_70.split("-");
-var _74=[];
-for(var i=_73.length;i>0;i--){
-_74.push(_73.slice(0,i).join("-"));
-}
-_74.push(false);
-if(_71){
-_74.reverse();
-}
-for(var j=_74.length-1;j>=0;j--){
-var loc=_74[j]||"ROOT";
-var _78=_72(loc);
-if(_78){
-break;
-}
-}
-};
-dojo.hostenv.localesGenerated;
-dojo.hostenv.registerNlsPrefix=function(){
-dojo.registerModulePath("nls","nls");
-};
-dojo.hostenv.preloadLocalizations=function(){
-if(dojo.hostenv.localesGenerated){
-dojo.hostenv.registerNlsPrefix();
-function preload(_79){
-_79=dojo.hostenv.normalizeLocale(_79);
-dojo.hostenv.searchLocalePath(_79,true,function(loc){
-for(var i=0;i<dojo.hostenv.localesGenerated.length;i++){
-if(dojo.hostenv.localesGenerated[i]==loc){
-dojo["require"]("nls.dojo_"+loc);
-return true;
-}
-}
-return false;
-});
-}
-preload();
-var _7c=djConfig.extraLocale||[];
-for(var i=0;i<_7c.length;i++){
-preload(_7c[i]);
-}
-}
-dojo.hostenv.preloadLocalizations=function(){
-};
-};
-dojo.requireLocalization=function(_7e,_7f,_80,_81){
-dojo.hostenv.preloadLocalizations();
-var _82=dojo.hostenv.normalizeLocale(_80);
-var _83=[_7e,"nls",_7f].join(".");
-var _84="";
-if(_81){
-var _85=_81.split(",");
-for(var i=0;i<_85.length;i++){
-if(_82.indexOf(_85[i])==0){
-if(_85[i].length>_84.length){
-_84=_85[i];
-}
-}
-}
-if(!_84){
-_84="ROOT";
-}
-}
-var _87=_81?_84:_82;
-var _88=dojo.hostenv.findModule(_83);
-var _89=null;
-if(_88){
-if(djConfig.localizationComplete&&_88._built){
-return;
-}
-var _8a=_87.replace("-","_");
-var _8b=_83+"."+_8a;
-_89=dojo.hostenv.findModule(_8b);
-}
-if(!_89){
-_88=dojo.hostenv.startPackage(_83);
-var _8c=dojo.hostenv.getModuleSymbols(_7e);
-var _8d=_8c.concat("nls").join("/");
-var _8e;
-dojo.hostenv.searchLocalePath(_87,_81,function(loc){
-var _90=loc.replace("-","_");
-var _91=_83+"."+_90;
-var _92=false;
-if(!dojo.hostenv.findModule(_91)){
-dojo.hostenv.startPackage(_91);
-var _93=[_8d];
-if(loc!="ROOT"){
-_93.push(loc);
-}
-_93.push(_7f);
-var _94=_93.join("/")+".js";
-_92=dojo.hostenv.loadPath(_94,null,function(_95){
-var _96=function(){
-};
-_96.prototype=_8e;
-_88[_90]=new _96();
-for(var j in _95){
-_88[_90][j]=_95[j];
-}
-});
-}else{
-_92=true;
-}
-if(_92&&_88[_90]){
-_8e=_88[_90];
-}else{
-_88[_90]=_8e;
-}
-if(_81){
-return true;
-}
-});
-}
-if(_81&&_82!=_84){
-_88[_82.replace("-","_")]=_88[_84.replace("-","_")];
-}
-};
-(function(){
-var _98=djConfig.extraLocale;
-if(_98){
-if(!_98 instanceof Array){
-_98=[_98];
-}
-var req=dojo.requireLocalization;
-dojo.requireLocalization=function(m,b,_9c,_9d){
-req(m,b,_9c,_9d);
-if(_9c){
-return;
-}
-for(var i=0;i<_98.length;i++){
-req(m,b,_98[i],_9d);
-}
-};
-}
-})();
-}
-if(typeof window!="undefined"){
-(function(){
-if(djConfig.allowQueryConfig){
-var _9f=document.location.toString();
-var _a0=_9f.split("?",2);
-if(_a0.length>1){
-var _a1=_a0[1];
-var _a2=_a1.split("&");
-for(var x in _a2){
-var sp=_a2[x].split("=");
-if((sp[0].length>9)&&(sp[0].substr(0,9)=="djConfig.")){
-var opt=sp[0].substr(9);
-try{
-djConfig[opt]=eval(sp[1]);
-}
-catch(e){
-djConfig[opt]=sp[1];
-}
-}
-}
-}
-}
-if(((djConfig["baseScriptUri"]=="")||(djConfig["baseRelativePath"]==""))&&(document&&document.getElementsByTagName)){
-var _a6=document.getElementsByTagName("script");
-var _a7=/(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
-for(var i=0;i<_a6.length;i++){
-var src=_a6[i].getAttribute("src");
-if(!src){
-continue;
-}
-var m=src.match(_a7);
-if(m){
-var _ab=src.substring(0,m.index);
-if(src.indexOf("bootstrap1")>-1){
-_ab+="../";
-}
-if(!this["djConfig"]){
-djConfig={};
-}
-if(djConfig["baseScriptUri"]==""){
-djConfig["baseScriptUri"]=_ab;
-}
-if(djConfig["baseRelativePath"]==""){
-djConfig["baseRelativePath"]=_ab;
-}
-break;
-}
-}
-}
-var dr=dojo.render;
-var drh=dojo.render.html;
-var drs=dojo.render.svg;
-var dua=(drh.UA=navigator.userAgent);
-var dav=(drh.AV=navigator.appVersion);
-var t=true;
-var f=false;
-drh.capable=t;
-drh.support.builtin=t;
-dr.ver=parseFloat(drh.AV);
-dr.os.mac=dav.indexOf("Macintosh")>=0;
-dr.os.win=dav.indexOf("Windows")>=0;
-dr.os.linux=dav.indexOf("X11")>=0;
-drh.opera=dua.indexOf("Opera")>=0;
-drh.khtml=(dav.indexOf("Konqueror")>=0)||(dav.indexOf("Safari")>=0);
-drh.safari=dav.indexOf("Safari")>=0;
-var _b3=dua.indexOf("Gecko");
-drh.mozilla=drh.moz=(_b3>=0)&&(!drh.khtml);
-if(drh.mozilla){
-drh.geckoVersion=dua.substring(_b3+6,_b3+14);
-}
-drh.ie=(document.all)&&(!drh.opera);
-drh.ie50=drh.ie&&dav.indexOf("MSIE 5.0")>=0;
-drh.ie55=drh.ie&&dav.indexOf("MSIE 5.5")>=0;
-drh.ie60=drh.ie&&dav.indexOf("MSIE 6.0")>=0;
-drh.ie70=drh.ie&&dav.indexOf("MSIE 7.0")>=0;
-var cm=document["compatMode"];
-drh.quirks=(cm=="BackCompat")||(cm=="QuirksMode")||drh.ie55||drh.ie50;
-dojo.locale=dojo.locale||(drh.ie?navigator.userLanguage:navigator.language).toLowerCase();
-dr.vml.capable=drh.ie;
-drs.capable=f;
-drs.support.plugin=f;
-drs.support.builtin=f;
-var _b5=window["document"];
-var tdi=_b5["implementation"];
-if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg","1.0"))){
-drs.capable=t;
-drs.support.builtin=t;
-drs.support.plugin=f;
-}
-if(drh.safari){
-var tmp=dua.split("AppleWebKit/")[1];
-var ver=parseFloat(tmp.split(" ")[0]);
-if(ver>=420){
-drs.capable=t;
-drs.support.builtin=t;
-drs.support.plugin=f;
-}
-}else{
-}
-})();
-dojo.hostenv.startPackage("dojo.hostenv");
-dojo.render.name=dojo.hostenv.name_="browser";
-dojo.hostenv.searchIds=[];
-dojo.hostenv._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
-dojo.hostenv.getXmlhttpObject=function(){
-var _b9=null;
-var _ba=null;
-try{
-_b9=new XMLHttpRequest();
-}
-catch(e){
-}
-if(!_b9){
-for(var i=0;i<3;++i){
-var _bc=dojo.hostenv._XMLHTTP_PROGIDS[i];
-try{
-_b9=new ActiveXObject(_bc);
-}
-catch(e){
-_ba=e;
-}
-if(_b9){
-dojo.hostenv._XMLHTTP_PROGIDS=[_bc];
-break;
-}
-}
-}
-if(!_b9){
-return dojo.raise("XMLHTTP not available",_ba);
-}
-return _b9;
-};
-dojo.hostenv._blockAsync=false;
-dojo.hostenv.getText=function(uri,_be,_bf){
-if(!_be){
-this._blockAsync=true;
-}
-var _c0=this.getXmlhttpObject();
-function isDocumentOk(_c1){
-var _c2=_c1["status"];
-return Boolean((!_c2)||((200<=_c2)&&(300>_c2))||(_c2==304));
-}
-if(_be){
-var _c3=this,_c4=null,gbl=dojo.global();
-var xhr=dojo.evalObjPath("dojo.io.XMLHTTPTransport");
-_c0.onreadystatechange=function(){
-if(_c4){
-gbl.clearTimeout(_c4);
-_c4=null;
-}
-if(_c3._blockAsync||(xhr&&xhr._blockAsync)){
-_c4=gbl.setTimeout(function(){
-_c0.onreadystatechange.apply(this);
-},10);
-}else{
-if(4==_c0.readyState){
-if(isDocumentOk(_c0)){
-_be(_c0.responseText);
-}
-}
-}
-};
-}
-_c0.open("GET",uri,_be?true:false);
-try{
-_c0.send(null);
-if(_be){
-return null;
-}
-if(!isDocumentOk(_c0)){
-var err=Error("Unable to load "+uri+" status:"+_c0.status);
-err.status=_c0.status;
-err.responseText=_c0.responseText;
-throw err;
-}
-}
-catch(e){
-this._blockAsync=false;
-if((_bf)&&(!_be)){
-return null;
-}else{
-throw e;
-}
-}
-this._blockAsync=false;
-return _c0.responseText;
-};
-dojo.hostenv.defaultDebugContainerId="dojoDebug";
-dojo.hostenv._println_buffer=[];
-dojo.hostenv._println_safe=false;
-dojo.hostenv.println=function(_c8){
-if(!dojo.hostenv._println_safe){
-dojo.hostenv._println_buffer.push(_c8);
-}else{
-try{
-var _c9=document.getElementById(djConfig.debugContainerId?djConfig.debugContainerId:dojo.hostenv.defaultDebugContainerId);
-if(!_c9){
-_c9=dojo.body();
-}
-var div=document.createElement("div");
-div.appendChild(document.createTextNode(_c8));
-_c9.appendChild(div);
-}
-catch(e){
-try{
-document.write("<div>"+_c8+"</div>");
-}
-catch(e2){
-window.status=_c8;
-}
-}
-}
-};
-dojo.addOnLoad(function(){
-dojo.hostenv._println_safe=true;
-while(dojo.hostenv._println_buffer.length>0){
-dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
-}
-});
-function dj_addNodeEvtHdlr(_cb,_cc,fp){
-var _ce=_cb["on"+_cc]||function(){
-};
-_cb["on"+_cc]=function(){
-fp.apply(_cb,arguments);
-_ce.apply(_cb,arguments);
-};
-return true;
-}
-function dj_load_init(e){
-var _d0=(e&&e.type)?e.type.toLowerCase():"load";
-if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
-return;
-}
-arguments.callee.initialized=true;
-if(typeof (_timer)!="undefined"){
-clearInterval(_timer);
-delete _timer;
-}
-var _d1=function(){
-if(dojo.render.html.ie){
-dojo.hostenv.makeWidgets();
-}
-};
-if(dojo.hostenv.inFlightCount==0){
-_d1();
-dojo.hostenv.modulesLoaded();
-}else{
-dojo.hostenv.modulesLoadedListeners.unshift(_d1);
-}
-}
-if(document.addEventListener){
-if(dojo.render.html.opera||(dojo.render.html.moz&&(djConfig["enableMozDomContentLoaded"]===true))){
-document.addEventListener("DOMContentLoaded",dj_load_init,null);
-}
-window.addEventListener("load",dj_load_init,null);
-}
-if(dojo.render.html.ie&&dojo.render.os.win){
-document.attachEvent("onreadystatechange",function(e){
-if(document.readyState=="complete"){
-dj_load_init();
-}
-});
-}
-if(/(WebKit|khtml)/i.test(navigator.userAgent)){
-var _timer=setInterval(function(){
-if(/loaded|complete/.test(document.readyState)){
-dj_load_init();
-}
-},10);
-}
-if(dojo.render.html.ie){
-dj_addNodeEvtHdlr(window,"beforeunload",function(){
-dojo.hostenv._unloading=true;
-window.setTimeout(function(){
-dojo.hostenv._unloading=false;
-},0);
-});
-}
-dj_addNodeEvtHdlr(window,"unload",function(){
-dojo.hostenv.unloaded();
-if((!dojo.render.html.ie)||(dojo.render.html.ie&&dojo.hostenv._unloading)){
-dojo.hostenv.unloaded();
-}
-});
-dojo.hostenv.makeWidgets=function(){
-var _d3=[];
-if(djConfig.searchIds&&djConfig.searchIds.length>0){
-_d3=_d3.concat(djConfig.searchIds);
-}
-if(dojo.hostenv.searchIds&&dojo.hostenv.searchIds.length>0){
-_d3=_d3.concat(dojo.hostenv.searchIds);
-}
-if((djConfig.parseWidgets)||(_d3.length>0)){
-if(dojo.evalObjPath("dojo.widget.Parse")){
-var _d4=new dojo.xml.Parse();
-if(_d3.length>0){
-for(var x=0;x<_d3.length;x++){
-var _d6=document.getElementById(_d3[x]);
-if(!_d6){
-continue;
-}
-var _d7=_d4.parseElement(_d6,null,true);
-dojo.widget.getParser().createComponents(_d7);
-}
-}else{
-if(djConfig.parseWidgets){
-var _d7=_d4.parseElement(dojo.body(),null,true);
-dojo.widget.getParser().createComponents(_d7);
-}
-}
-}
-}
-};
-dojo.addOnLoad(function(){
-if(!dojo.render.html.ie){
-dojo.hostenv.makeWidgets();
-}
-});
-try{
-if(dojo.render.html.ie){
-document.namespaces.add("v","urn:schemas-microsoft-com:vml");
-document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");
-}
-}
-catch(e){
-}
-dojo.hostenv.writeIncludes=function(){
-};
-if(!dj_undef("document",this)){
-dj_currentDocument=this.document;
-}
-dojo.doc=function(){
-return dj_currentDocument;
-};
-dojo.body=function(){
-return dojo.doc().body||dojo.doc().getElementsByTagName("body")[0];
-};
-dojo.byId=function(id,doc){
-if((id)&&((typeof id=="string")||(id instanceof String))){
-if(!doc){
-doc=dj_currentDocument;
-}
-var ele=doc.getElementById(id);
-if(ele&&(ele.id!=id)&&doc.all){
-ele=null;
-eles=doc.all[id];
-if(eles){
-if(eles.length){
-for(var i=0;i<eles.length;i++){
-if(eles[i].id==id){
-ele=eles[i];
-break;
-}
-}
-}else{
-ele=eles;
-}
-}
-}
-return ele;
-}
-return id;
-};
-dojo.setContext=function(_dc,_dd){
-dj_currentContext=_dc;
-dj_currentDocument=_dd;
-};
-dojo._fireCallback=function(_de,_df,_e0){
-if((_df)&&((typeof _de=="string")||(_de instanceof String))){
-_de=_df[_de];
-}
-return (_df?_de.apply(_df,_e0||[]):_de());
-};
-dojo.withGlobal=function(_e1,_e2,_e3,_e4){
-var _e5;
-var _e6=dj_currentContext;
-var _e7=dj_currentDocument;
-try{
-dojo.setContext(_e1,_e1.document);
-_e5=dojo._fireCallback(_e2,_e3,_e4);
-}
-finally{
-dojo.setContext(_e6,_e7);
-}
-return _e5;
-};
-dojo.withDoc=function(_e8,_e9,_ea,_eb){
-var _ec;
-var _ed=dj_currentDocument;
-try{
-dj_currentDocument=_e8;
-_ec=dojo._fireCallback(_e9,_ea,_eb);
-}
-finally{
-dj_currentDocument=_ed;
-}
-return _ec;
-};
-}
-dojo.requireIf((djConfig["isDebug"]||djConfig["debugAtAllCosts"]),"dojo.debug");
-dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&!djConfig["useXDomain"],"dojo.browser_debug");
-dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&djConfig["useXDomain"],"dojo.browser_debug_xd");
-dojo.provide("dojo.lang.common");
-dojo.lang.inherits=function(_ee,_ef){
-if(!dojo.lang.isFunction(_ef)){
-dojo.raise("dojo.inherits: superclass argument ["+_ef+"] must be a function (subclass: ["+_ee+"']");
-}
-_ee.prototype=new _ef();
-_ee.prototype.constructor=_ee;
-_ee.superclass=_ef.prototype;
-_ee["super"]=_ef.prototype;
-};
-dojo.lang._mixin=function(obj,_f1){
-var _f2={};
-for(var x in _f1){
-if((typeof _f2[x]=="undefined")||(_f2[x]!=_f1[x])){
-obj[x]=_f1[x];
-}
-}
-if(dojo.render.html.ie&&(typeof (_f1["toString"])=="function")&&(_f1["toString"]!=obj["toString"])&&(_f1["toString"]!=_f2["toString"])){
-obj.toString=_f1.toString;
-}
-return obj;
-};
-dojo.lang.mixin=function(obj,_f5){
-for(var i=1,l=arguments.length;i<l;i++){
-dojo.lang._mixin(obj,arguments[i]);
-}
-return obj;
-};
-dojo.lang.extend=function(_f8,_f9){
-for(var i=1,l=arguments.length;i<l;i++){
-dojo.lang._mixin(_f8.prototype,arguments[i]);
-}
-return _f8;
-};
-dojo.inherits=dojo.lang.inherits;
-dojo.mixin=dojo.lang.mixin;
-dojo.extend=dojo.lang.extend;
-dojo.lang.find=function(_fc,_fd,_fe,_ff){
-if(!dojo.lang.isArrayLike(_fc)&&dojo.lang.isArrayLike(_fd)){
-dojo.deprecated("dojo.lang.find(value, array)","use dojo.lang.find(array, value) instead","0.5");
-var temp=_fc;
-_fc=_fd;
-_fd=temp;
-}
-var _101=dojo.lang.isString(_fc);
-if(_101){
-_fc=_fc.split("");
-}
-if(_ff){
-var step=-1;
-var i=_fc.length-1;
-var end=-1;
-}else{
-var step=1;
-var i=0;
-var end=_fc.length;
-}
-if(_fe){
-while(i!=end){
-if(_fc[i]===_fd){
-return i;
-}
-i+=step;
-}
-}else{
-while(i!=end){
-if(_fc[i]==_fd){
-return i;
-}
-i+=step;
-}
-}
-return -1;
-};
-dojo.lang.indexOf=dojo.lang.find;
-dojo.lang.findLast=function(_105,_106,_107){
-return dojo.lang.find(_105,_106,_107,true);
-};
-dojo.lang.lastIndexOf=dojo.lang.findLast;
-dojo.lang.inArray=function(_108,_109){
-return dojo.lang.find(_108,_109)>-1;
-};
-dojo.lang.isObject=function(it){
-if(typeof it=="undefined"){
-return false;
-}
-return (typeof it=="object"||it===null||dojo.lang.isArray(it)||dojo.lang.isFunction(it));
-};
-dojo.lang.isArray=function(it){
-return (it&&it instanceof Array||typeof it=="array");
-};
-dojo.lang.isArrayLike=function(it){
-if((!it)||(dojo.lang.isUndefined(it))){
-return false;
-}
-if(dojo.lang.isString(it)){
-return false;
-}
-if(dojo.lang.isFunction(it)){
-return false;
-}
-if(dojo.lang.isArray(it)){
-return true;
-}
-if((it.tagName)&&(it.tagName.toLowerCase()=="form")){
-return false;
-}
-if(dojo.lang.isNumber(it.length)&&isFinite(it.length)){
-return true;
-}
-return false;
-};
-dojo.lang.isFunction=function(it){
-return (it instanceof Function||typeof it=="function");
-};
-(function(){
-if((dojo.render.html.capable)&&(dojo.render.html["safari"])){
-dojo.lang.isFunction=function(it){
-if((typeof (it)=="function")&&(it=="[object NodeList]")){
-return false;
-}
-return (it instanceof Function||typeof it=="function");
-};
-}
-})();
-dojo.lang.isString=function(it){
-return (typeof it=="string"||it instanceof String);
-};
-dojo.lang.isAlien=function(it){
-if(!it){
-return false;
-}
-return !dojo.lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));
-};
-dojo.lang.isBoolean=function(it){
-return (it instanceof Boolean||typeof it=="boolean");
-};
-dojo.lang.isNumber=function(it){
-return (it instanceof Number||typeof it=="number");
-};
-dojo.lang.isUndefined=function(it){
-return ((typeof (it)=="undefined")&&(it==undefined));
-};
-dojo.provide("dojo.lang.array");
-dojo.lang.mixin(dojo.lang,{has:function(obj,name){
-try{
-return typeof obj[name]!="undefined";
-}
-catch(e){
-return false;
-}
-},isEmpty:function(obj){
-if(dojo.lang.isObject(obj)){
-var tmp={};
-var _118=0;
-for(var x in obj){
-if(obj[x]&&(!tmp[x])){
-_118++;
-break;
-}
-}
-return _118==0;
-}else{
-if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
-return obj.length==0;
-}
-}
-},map:function(arr,obj,_11c){
-var _11d=dojo.lang.isString(arr);
-if(_11d){
-arr=arr.split("");
-}
-if(dojo.lang.isFunction(obj)&&(!_11c)){
-_11c=obj;
-obj=dj_global;
-}else{
-if(dojo.lang.isFunction(obj)&&_11c){
-var _11e=obj;
-obj=_11c;
-_11c=_11e;
-}
-}
-if(Array.map){
-var _11f=Array.map(arr,_11c,obj);
-}else{
-var _11f=[];
-for(var i=0;i<arr.length;++i){
-_11f.push(_11c.call(obj,arr[i]));
-}
-}
-if(_11d){
-return _11f.join("");
-}else{
-return _11f;
-}
-},reduce:function(arr,_122,obj,_124){
-var _125=_122;
-if(arguments.length==2){
-_124=_122;
-_125=arr[0];
-arr=arr.slice(1);
-}else{
-if(arguments.length==3){
-if(dojo.lang.isFunction(obj)){
-_124=obj;
-obj=null;
-}
-}else{
-if(dojo.lang.isFunction(obj)){
-var tmp=_124;
-_124=obj;
-obj=tmp;
-}
-}
-}
-var ob=obj||dj_global;
-dojo.lang.map(arr,function(val){
-_125=_124.call(ob,_125,val);
-});
-return _125;
-},forEach:function(_129,_12a,_12b){
-if(dojo.lang.isString(_129)){
-_129=_129.split("");
-}
-if(Array.forEach){
-Array.forEach(_129,_12a,_12b);
-}else{
-if(!_12b){
-_12b=dj_global;
-}
-for(var i=0,l=_129.length;i<l;i++){
-_12a.call(_12b,_129[i],i,_129);
-}
-}
-},_everyOrSome:function(_12e,arr,_130,_131){
-if(dojo.lang.isString(arr)){
-arr=arr.split("");
-}
-if(Array.every){
-return Array[_12e?"every":"some"](arr,_130,_131);
-}else{
-if(!_131){
-_131=dj_global;
-}
-for(var i=0,l=arr.length;i<l;i++){
-var _134=_130.call(_131,arr[i],i,arr);
-if(_12e&&!_134){
-return false;
-}else{
-if((!_12e)&&(_134)){
-return true;
-}
-}
-}
-return Boolean(_12e);
-}
-},every:function(arr,_136,_137){
-return this._everyOrSome(true,arr,_136,_137);
-},some:function(arr,_139,_13a){
-return this._everyOrSome(false,arr,_139,_13a);
-},filter:function(arr,_13c,_13d){
-var _13e=dojo.lang.isString(arr);
-if(_13e){
-arr=arr.split("");
-}
-var _13f;
-if(Array.filter){
-_13f=Array.filter(arr,_13c,_13d);
-}else{
-if(!_13d){
-if(arguments.length>=3){
-dojo.raise("thisObject doesn't exist!");
-}
-_13d=dj_global;
-}
-_13f=[];
-for(var i=0;i<arr.length;i++){
-if(_13c.call(_13d,arr[i],i,arr)){
-_13f.push(arr[i]);
-}
-}
-}
-if(_13e){
-return _13f.join("");
-}else{
-return _13f;
-}
-},unnest:function(){
-var out=[];
-for(var i=0;i<arguments.length;i++){
-if(dojo.lang.isArrayLike(arguments[i])){
-var add=dojo.lang.unnest.apply(this,arguments[i]);
-out=out.concat(add);
-}else{
-out.push(arguments[i]);
-}
-}
-return out;
-},toArray:function(_144,_145){
-var _146=[];
-for(var i=_145||0;i<_144.length;i++){
-_146.push(_144[i]);
-}
-return _146;
-}});
-dojo.provide("dojo.lang.extras");
-dojo.lang.setTimeout=function(func,_149){
-var _14a=window,_14b=2;
-if(!dojo.lang.isFunction(func)){
-_14a=func;
-func=_149;
-_149=arguments[2];
-_14b++;
-}
-if(dojo.lang.isString(func)){
-func=_14a[func];
-}
-var args=[];
-for(var i=_14b;i<arguments.length;i++){
-args.push(arguments[i]);
-}
-return dojo.global().setTimeout(function(){
-func.apply(_14a,args);
-},_149);
-};
-dojo.lang.clearTimeout=function(_14e){
-dojo.global().clearTimeout(_14e);
-};
-dojo.lang.getNameInObj=function(ns,item){
-if(!ns){
-ns=dj_global;
-}
-for(var x in ns){
-if(ns[x]===item){
-return new String(x);
-}
-}
-return null;
-};
-dojo.lang.shallowCopy=function(obj,deep){
-var i,ret;
-if(obj===null){
-return null;
-}
-if(dojo.lang.isObject(obj)){
-ret=new obj.constructor();
-for(i in obj){
-if(dojo.lang.isUndefined(ret[i])){
-ret[i]=deep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
-}
-}
-}else{
-if(dojo.lang.isArray(obj)){
-ret=[];
-for(i=0;i<obj.length;i++){
-ret[i]=deep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
-}
-}else{
-ret=obj;
-}
-}
-return ret;
-};
-dojo.lang.firstValued=function(){
-for(var i=0;i<arguments.length;i++){
-if(typeof arguments[i]!="undefined"){
-return arguments[i];
-}
-}
-return undefined;
-};
-dojo.lang.getObjPathValue=function(_157,_158,_159){
-with(dojo.parseObjPath(_157,_158,_159)){
-return dojo.evalProp(prop,obj,_159);
-}
-};
-dojo.lang.setObjPathValue=function(_15a,_15b,_15c,_15d){
-dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and the '=' operator","0.6");
-if(arguments.length<4){
-_15d=true;
-}
-with(dojo.parseObjPath(_15a,_15c,_15d)){
-if(obj&&(_15d||(prop in obj))){
-obj[prop]=_15b;
-}
-}
-};
-dojo.provide("dojo.lang.func");
-dojo.lang.hitch=function(_15e,_15f){
-var fcn=(dojo.lang.isString(_15f)?_15e[_15f]:_15f)||function(){
-};
-return function(){
-return fcn.apply(_15e,arguments);
-};
-};
-dojo.lang.anonCtr=0;
-dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_161,_162,_163){
-var nso=(_162||dojo.lang.anon);
-if((_163)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
-for(var x in nso){
-try{
-if(nso[x]===_161){
-return x;
-}
-}
-catch(e){
-}
-}
-}
-var ret="__"+dojo.lang.anonCtr++;
-while(typeof nso[ret]!="undefined"){
-ret="__"+dojo.lang.anonCtr++;
-}
-nso[ret]=_161;
-return ret;
-};
-dojo.lang.forward=function(_167){
-return function(){
-return this[_167].apply(this,arguments);
-};
-};
-dojo.lang.curry=function(_168,func){
-var _16a=[];
-_168=_168||dj_global;
-if(dojo.lang.isString(func)){
-func=_168[func];
-}
-for(var x=2;x<arguments.length;x++){
-_16a.push(arguments[x]);
-}
-var _16c=(func["__preJoinArity"]||func.length)-_16a.length;
-function gather(_16d,_16e,_16f){
-var _170=_16f;
-var _171=_16e.slice(0);
-for(var x=0;x<_16d.length;x++){
-_171.push(_16d[x]);
-}
-_16f=_16f-_16d.length;
-if(_16f<=0){
-var res=func.apply(_168,_171);
-_16f=_170;
-return res;
-}else{
-return function(){
-return gather(arguments,_171,_16f);
-};
-}
-}
-return gather([],_16a,_16c);
-};
-dojo.lang.curryArguments=function(_174,func,args,_177){
-var _178=[];
-var x=_177||0;
-for(x=_177;x<args.length;x++){
-_178.push(args[x]);
-}
-return dojo.lang.curry.apply(dojo.lang,[_174,func].concat(_178));
-};
-dojo.lang.tryThese=function(){
-for(var x=0;x<arguments.length;x++){
-try{
-if(typeof arguments[x]=="function"){
-var ret=(arguments[x]());
-if(ret){
-return ret;
-}
-}
-}
-catch(e){
-dojo.debug(e);
-}
-}
-};
-dojo.lang.delayThese=function(farr,cb,_17e,_17f){
-if(!farr.length){
-if(typeof _17f=="function"){
-_17f();
-}
-return;
-}
-if((typeof _17e=="undefined")&&(typeof cb=="number")){
-_17e=cb;
-cb=function(){
-};
-}else{
-if(!cb){
-cb=function(){
-};
-if(!_17e){
-_17e=0;
-}
-}
-}
-setTimeout(function(){
-(farr.shift())();
-cb();
-dojo.lang.delayThese(farr,cb,_17e,_17f);
-},_17e);
-};
-dojo.provide("dojo.event.common");
-dojo.event=new function(){
-this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_181){
-var dl=dojo.lang;
-var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
-switch(args.length){
-case 0:
-return;
-case 1:
-return;
-case 2:
-ao.srcFunc=args[0];
-ao.adviceFunc=args[1];
-break;
-case 3:
-if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isString(args[2]))){
-ao.adviceType="after";
-ao.srcObj=args[0];
-ao.srcFunc=args[1];
-ao.adviceFunc=args[2];
-}else{
-if((dl.isString(args[1]))&&(dl.isString(args[2]))){
-ao.srcFunc=args[1];
-ao.adviceFunc=args[2];
-}else{
-if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isFunction(args[2]))){
-ao.adviceType="after";
-ao.srcObj=args[0];
-ao.srcFunc=args[1];
-var _184=dl.nameAnonFunc(args[2],ao.adviceObj,_181);
-ao.adviceFunc=_184;
-}else{
-if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
-ao.adviceType="after";
-ao.srcObj=dj_global;
-var _184=dl.nameAnonFunc(args[0],ao.srcObj,_181);
-ao.srcFunc=_184;
-ao.adviceObj=args[1];
-ao.adviceFunc=args[2];
-}
-}
-}
-}
-break;
-case 4:
-if((dl.isObject(args[0]))&&(dl.isObject(args[2]))){
-ao.adviceType="after";
-ao.srcObj=args[0];
-ao.srcFunc=args[1];
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-if((dl.isString(args[0]))&&(dl.isString(args[1]))&&(dl.isObject(args[2]))){
-ao.adviceType=args[0];
-ao.srcObj=dj_global;
-ao.srcFunc=args[1];
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
-ao.adviceType=args[0];
-ao.srcObj=dj_global;
-var _184=dl.nameAnonFunc(args[1],dj_global,_181);
-ao.srcFunc=_184;
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-var _184=dl.nameAnonFunc(args[3],dj_global,_181);
-ao.adviceObj=dj_global;
-ao.adviceFunc=_184;
-}else{
-if(dl.isObject(args[1])){
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-ao.adviceObj=dj_global;
-ao.adviceFunc=args[3];
-}else{
-if(dl.isObject(args[2])){
-ao.srcObj=dj_global;
-ao.srcFunc=args[1];
-ao.adviceObj=args[2];
-ao.adviceFunc=args[3];
-}else{
-ao.srcObj=ao.adviceObj=ao.aroundObj=dj_global;
-ao.srcFunc=args[1];
-ao.adviceFunc=args[2];
-ao.aroundFunc=args[3];
-}
-}
-}
-}
-}
-}
-break;
-case 6:
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-ao.adviceObj=args[3];
-ao.adviceFunc=args[4];
-ao.aroundFunc=args[5];
-ao.aroundObj=dj_global;
-break;
-default:
-ao.srcObj=args[1];
-ao.srcFunc=args[2];
-ao.adviceObj=args[3];
-ao.adviceFunc=args[4];
-ao.aroundObj=args[5];
-ao.aroundFunc=args[6];
-ao.once=args[7];
-ao.delay=args[8];
-ao.rate=args[9];
-ao.adviceMsg=args[10];
-ao.maxCalls=(!isNaN(parseInt(args[11])))?args[11]:-1;
-break;
-}
-if(dl.isFunction(ao.aroundFunc)){
-var _184=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_181);
-ao.aroundFunc=_184;
-}
-if(dl.isFunction(ao.srcFunc)){
-ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
-}
-if(dl.isFunction(ao.adviceFunc)){
-ao.adviceFunc=dl.getNameInObj(ao.adviceObj,ao.adviceFunc);
-}
-if((ao.aroundObj)&&(dl.isFunction(ao.aroundFunc))){
-ao.aroundFunc=dl.getNameInObj(ao.aroundObj,ao.aroundFunc);
-}
-if(!ao.srcObj){
-dojo.raise("bad srcObj for srcFunc: "+ao.srcFunc);
-}
-if(!ao.adviceObj){
-dojo.raise("bad adviceObj for adviceFunc: "+ao.adviceFunc);
-}
-if(!ao.adviceFunc){
-dojo.debug("bad adviceFunc for srcFunc: "+ao.srcFunc);
-dojo.debugShallow(ao);
-}
-return ao;
-}
-this.connect=function(){
-if(arguments.length==1){
-var ao=arguments[0];
-}else{
-var ao=interpolateArgs(arguments,true);
-}
-if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _186={};
-for(var x in ao){
-_186[x]=ao[x];
-}
-var mjps=[];
-dojo.lang.forEach(ao.srcObj,function(src){
-if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
-src=dojo.byId(src);
-}
-_186.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_186));
-});
-return mjps;
-}
-var mjp=dojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc);
-if(ao.adviceFunc){
-var mjp2=dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj,ao.adviceFunc);
-}
-mjp.kwAddAdvice(ao);
-return mjp;
-};
-this.log=function(a1,a2){
-var _18e;
-if((arguments.length==1)&&(typeof a1=="object")){
-_18e=a1;
-}else{
-_18e={srcObj:a1,srcFunc:a2};
-}
-_18e.adviceFunc=function(){
-var _18f=[];
-for(var x=0;x<arguments.length;x++){
-_18f.push(arguments[x]);
-}
-dojo.debug("("+_18e.srcObj+")."+_18e.srcFunc,":",_18f.join(", "));
-};
-this.kwConnect(_18e);
-};
-this.connectBefore=function(){
-var args=["before"];
-for(var i=0;i<arguments.length;i++){
-args.push(arguments[i]);
-}
-return this.connect.apply(this,args);
-};
-this.connectAround=function(){
-var args=["around"];
-for(var i=0;i<arguments.length;i++){
-args.push(arguments[i]);
-}
-return this.connect.apply(this,args);
-};
-this.connectOnce=function(){
-var ao=interpolateArgs(arguments,true);
-ao.once=true;
-return this.connect(ao);
-};
-this.connectRunOnce=function(){
-var ao=interpolateArgs(arguments,true);
-ao.maxCalls=1;
-return this.connect(ao);
-};
-this._kwConnectImpl=function(_197,_198){
-var fn=(_198)?"disconnect":"connect";
-if(typeof _197["srcFunc"]=="function"){
-_197.srcObj=_197["srcObj"]||dj_global;
-var _19a=dojo.lang.nameAnonFunc(_197.srcFunc,_197.srcObj,true);
-_197.srcFunc=_19a;
-}
-if(typeof _197["adviceFunc"]=="function"){
-_197.adviceObj=_197["adviceObj"]||dj_global;
-var _19a=dojo.lang.nameAnonFunc(_197.adviceFunc,_197.adviceObj,true);
-_197.adviceFunc=_19a;
-}
-_197.srcObj=_197["srcObj"]||dj_global;
-_197.adviceObj=_197["adviceObj"]||_197["targetObj"]||dj_global;
-_197.adviceFunc=_197["adviceFunc"]||_197["targetFunc"];
-return dojo.event[fn](_197);
-};
-this.kwConnect=function(_19b){
-return this._kwConnectImpl(_19b,false);
-};
-this.disconnect=function(){
-if(arguments.length==1){
-var ao=arguments[0];
-}else{
-var ao=interpolateArgs(arguments,true);
-}
-if(!ao.adviceFunc){
-return;
-}
-if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
-if(dojo.render.html.ie){
-ao.srcFunc="onkeydown";
-this.disconnect(ao);
-}
-ao.srcFunc="onkeypress";
-}
-if(!ao.srcObj[ao.srcFunc]){
-return null;
-}
-var mjp=dojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc,true);
-mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
-return mjp;
-};
-this.kwDisconnect=function(_19e){
-return this._kwConnectImpl(_19e,true);
-};
-};
-dojo.event.MethodInvocation=function(_19f,obj,args){
-this.jp_=_19f;
-this.object=obj;
-this.args=[];
-for(var x=0;x<args.length;x++){
-this.args[x]=args[x];
-}
-this.around_index=-1;
-};
-dojo.event.MethodInvocation.prototype.proceed=function(){
-this.around_index++;
-if(this.around_index>=this.jp_.around.length){
-return this.jp_.object[this.jp_.methodname].apply(this.jp_.object,this.args);
-}else{
-var ti=this.jp_.around[this.around_index];
-var mobj=ti[0]||dj_global;
-var meth=ti[1];
-return mobj[meth].call(mobj,this);
-}
-};
-dojo.event.MethodJoinPoint=function(obj,_1a7){
-this.object=obj||dj_global;
-this.methodname=_1a7;
-this.methodfunc=this.object[_1a7];
-this.squelch=false;
-};
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_1a9){
-if(!obj){
-obj=dj_global;
-}
-var ofn=obj[_1a9];
-if(!ofn){
-ofn=obj[_1a9]=function(){
-};
-if(!obj[_1a9]){
-dojo.raise("Cannot set do-nothing method on that object "+_1a9);
-}
-}else{
-if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
-return null;
-}
-}
-var _1ab=_1a9+"$joinpoint";
-var _1ac=_1a9+"$joinpoint$method";
-var _1ad=obj[_1ab];
-if(!_1ad){
-var _1ae=false;
-if(dojo.event["browser"]){
-if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_1ae=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_1ab,_1ac,_1a9]);
-}
-}
-var _1af=ofn.length;
-obj[_1ac]=ofn;
-_1ad=obj[_1ab]=new dojo.event.MethodJoinPoint(obj,_1ac);
-if(!_1ae){
-obj[_1a9]=function(){
-return _1ad.run.apply(_1ad,arguments);
-};
-}else{
-obj[_1a9]=function(){
-var args=[];
-if(!arguments.length){
-var evt=null;
-try{
-if(obj.ownerDocument){
-evt=obj.ownerDocument.parentWindow.event;
-}else{
-if(obj.documentElement){
-evt=obj.documentElement.ownerDocument.parentWindow.event;
-}else{
-if(obj.event){
-evt=obj.event;
-}else{
-evt=window.event;
-}
-}
-}
-}
-catch(e){
-evt=window.event;
-}
-if(evt){
-args.push(dojo.event.browser.fixEvent(evt,this));
-}
-}else{
-for(var x=0;x<arguments.length;x++){
-if((x==0)&&(dojo.event.browser.isEvent(arguments[x]))){
-args.push(dojo.event.browser.fixEvent(arguments[x],this));
-}else{
-args.push(arguments[x]);
-}
-}
-}
-return _1ad.run.apply(_1ad,args);
-};
-}
-obj[_1a9].__preJoinArity=_1af;
-}
-return _1ad;
-};
-dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
-this.object[this.methodname]=this.methodfunc;
-this.before=[];
-this.after=[];
-this.around=[];
-},disconnect:dojo.lang.forward("unintercept"),run:function(){
-var obj=this.object||dj_global;
-var args=arguments;
-var _1b5=[];
-for(var x=0;x<args.length;x++){
-_1b5[x]=args[x];
-}
-var _1b7=function(marr){
-if(!marr){
-dojo.debug("Null argument to unrollAdvice()");
-return;
-}
-var _1b9=marr[0]||dj_global;
-var _1ba=marr[1];
-if(!_1b9[_1ba]){
-dojo.raise("function \""+_1ba+"\" does not exist on \""+_1b9+"\"");
-}
-var _1bb=marr[2]||dj_global;
-var _1bc=marr[3];
-var msg=marr[6];
-var _1be=marr[7];
-if(_1be>-1){
-if(_1be==0){
-return;
-}
-marr[7]--;
-}
-var _1bf;
-var to={args:[],jp_:this,object:obj,proceed:function(){
-return _1b9[_1ba].apply(_1b9,to.args);
-}};
-to.args=_1b5;
-var _1c1=parseInt(marr[4]);
-var _1c2=((!isNaN(_1c1))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
-if(marr[5]){
-var rate=parseInt(marr[5]);
-var cur=new Date();
-var _1c5=false;
-if((marr["last"])&&((cur-marr.last)<=rate)){
-if(dojo.event._canTimeout){
-if(marr["delayTimer"]){
-clearTimeout(marr.delayTimer);
-}
-var tod=parseInt(rate*2);
-var mcpy=dojo.lang.shallowCopy(marr);
-marr.delayTimer=setTimeout(function(){
-mcpy[5]=0;
-_1b7(mcpy);
-},tod);
-}
-return;
-}else{
-marr.last=cur;
-}
-}
-if(_1bc){
-_1bb[_1bc].call(_1bb,to);
-}else{
-if((_1c2)&&((dojo.render.html)||(dojo.render.svg))){
-dj_global["setTimeout"](function(){
-if(msg){
-_1b9[_1ba].call(_1b9,to);
-}else{
-_1b9[_1ba].apply(_1b9,args);
-}
-},_1c1);
-}else{
-if(msg){
-_1b9[_1ba].call(_1b9,to);
-}else{
-_1b9[_1ba].apply(_1b9,args);
-}
-}
-}
-};
-var _1c8=function(){
-if(this.squelch){
-try{
-return _1b7.apply(this,arguments);
-}
-catch(e){
-dojo.debug(e);
-}
-}else{
-return _1b7.apply(this,arguments);
-}
-};
-if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_1c8);
-}
-var _1c9;
-try{
-if((this["around"])&&(this.around.length>0)){
-var mi=new dojo.event.MethodInvocation(this,obj,args);
-_1c9=mi.proceed();
-}else{
-if(this.methodfunc){
-_1c9=this.object[this.methodname].apply(this.object,args);
-}
-}
-}
-catch(e){
-if(!this.squelch){
-dojo.debug(e,"when calling",this.methodname,"on",this.object,"with arguments",args);
-dojo.raise(e);
-}
-}
-if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_1c8);
-}
-return (this.methodfunc)?_1c9:null;
-},getArr:function(kind){
-var type="after";
-if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
-type="before";
-}else{
-if(kind=="around"){
-type="around";
-}
-}
-if(!this[type]){
-this[type]=[];
-}
-return this[type];
-},kwAddAdvice:function(args){
-this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_1ce,_1cf,_1d0,_1d1,_1d2,_1d3,once,_1d5,rate,_1d7,_1d8){
-var arr=this.getArr(_1d2);
-if(!arr){
-dojo.raise("bad this: "+this);
-}
-var ao=[_1ce,_1cf,_1d0,_1d1,_1d5,rate,_1d7,_1d8];
-if(once){
-if(this.hasAdvice(_1ce,_1cf,_1d2,arr)>=0){
-return;
-}
-}
-if(_1d3=="first"){
-arr.unshift(ao);
-}else{
-arr.push(ao);
-}
-},hasAdvice:function(_1db,_1dc,_1dd,arr){
-if(!arr){
-arr=this.getArr(_1dd);
-}
-var ind=-1;
-for(var x=0;x<arr.length;x++){
-var aao=(typeof _1dc=="object")?(new String(_1dc)).toString():_1dc;
-var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_1db)&&(a1o==aao)){
-ind=x;
-}
-}
-return ind;
-},removeAdvice:function(_1e3,_1e4,_1e5,once){
-var arr=this.getArr(_1e5);
-var ind=this.hasAdvice(_1e3,_1e4,_1e5,arr);
-if(ind==-1){
-return false;
-}
-while(ind!=-1){
-arr.splice(ind,1);
-if(once){
-break;
-}
-ind=this.hasAdvice(_1e3,_1e4,_1e5,arr);
-}
-return true;
-}});
-dojo.provide("dojo.event.topic");
-dojo.event.topic=new function(){
-this.topics={};
-this.getTopic=function(_1e9){
-if(!this.topics[_1e9]){
-this.topics[_1e9]=new this.TopicImpl(_1e9);
-}
-return this.topics[_1e9];
-};
-this.registerPublisher=function(_1ea,obj,_1ec){
-var _1ea=this.getTopic(_1ea);
-_1ea.registerPublisher(obj,_1ec);
-};
-this.subscribe=function(_1ed,obj,_1ef){
-var _1ed=this.getTopic(_1ed);
-_1ed.subscribe(obj,_1ef);
-};
-this.unsubscribe=function(_1f0,obj,_1f2){
-var _1f0=this.getTopic(_1f0);
-_1f0.unsubscribe(obj,_1f2);
-};
-this.destroy=function(_1f3){
-this.getTopic(_1f3).destroy();
-delete this.topics[_1f3];
-};
-this.publishApply=function(_1f4,args){
-var _1f4=this.getTopic(_1f4);
-_1f4.sendMessage.apply(_1f4,args);
-};
-this.publish=function(_1f6,_1f7){
-var _1f6=this.getTopic(_1f6);
-var args=[];
-for(var x=1;x<arguments.length;x++){
-args.push(arguments[x]);
-}
-_1f6.sendMessage.apply(_1f6,args);
-};
-};
-dojo.event.topic.TopicImpl=function(_1fa){
-this.topicName=_1fa;
-this.subscribe=function(_1fb,_1fc){
-var tf=_1fc||_1fb;
-var to=(!_1fc)?dj_global:_1fb;
-return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
-};
-this.unsubscribe=function(_1ff,_200){
-var tf=(!_200)?_1ff:_200;
-var to=(!_200)?null:_1ff;
-return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
-};
-this._getJoinPoint=function(){
-return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
-};
-this.setSquelch=function(_203){
-this._getJoinPoint().squelch=_203;
-};
-this.destroy=function(){
-this._getJoinPoint().disconnect();
-};
-this.registerPublisher=function(_204,_205){
-dojo.event.connect(_204,_205,this,"sendMessage");
-};
-this.sendMessage=function(_206){
-};
-};
-dojo.provide("dojo.event.browser");
-dojo._ie_clobber=new function(){
-this.clobberNodes=[];
-function nukeProp(node,prop){
-try{
-node[prop]=null;
-}
-catch(e){
-}
-try{
-delete node[prop];
-}
-catch(e){
-}
-try{
-node.removeAttribute(prop);
-}
-catch(e){
-}
-}
-this.clobber=function(_209){
-var na;
-var tna;
-if(_209){
-tna=_209.all||_209.getElementsByTagName("*");
-na=[_209];
-for(var x=0;x<tna.length;x++){
-if(tna[x]["__doClobber__"]){
-na.push(tna[x]);
-}
-}
-}else{
-try{
-window.onload=null;
-}
-catch(e){
-}
-na=(this.clobberNodes.length)?this.clobberNodes:document.all;
-}
-tna=null;
-var _20d={};
-for(var i=na.length-1;i>=0;i=i-1){
-var el=na[i];
-try{
-if(el&&el["__clobberAttrs__"]){
-for(var j=0;j<el.__clobberAttrs__.length;j++){
-nukeProp(el,el.__clobberAttrs__[j]);
-}
-nukeProp(el,"__clobberAttrs__");
-nukeProp(el,"__doClobber__");
-}
-}
-catch(e){
-}
-}
-na=null;
-};
-};
-if(dojo.render.html.ie){
-dojo.addOnUnload(function(){
-dojo._ie_clobber.clobber();
-try{
-if((dojo["widget"])&&(dojo.widget["manager"])){
-dojo.widget.manager.destroyAll();
-}
-}
-catch(e){
-}
-if(dojo.widget){
-for(var name in dojo.widget._templateCache){
-if(dojo.widget._templateCache[name].node){
-dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
-dojo.widget._templateCache[name].node=null;
-delete dojo.widget._templateCache[name].node;
-}
-}
-}
-try{
-window.onload=null;
-}
-catch(e){
-}
-try{
-window.onunload=null;
-}
-catch(e){
-}
-dojo._ie_clobber.clobberNodes=[];
-});
-}
-dojo.event.browser=new function(){
-var _212=0;
-this.normalizedEventName=function(_213){
-switch(_213){
-case "CheckboxStateChange":
-case "DOMAttrModified":
-case "DOMMenuItemActive":
-case "DOMMenuItemInactive":
-case "DOMMouseScroll":
-case "DOMNodeInserted":
-case "DOMNodeRemoved":
-case "RadioStateChange":
-return _213;
-break;
-default:
-var lcn=_213.toLowerCase();
-return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
-break;
-}
-};
-this.clean=function(node){
-if(dojo.render.html.ie){
-dojo._ie_clobber.clobber(node);
-}
-};
-this.addClobberNode=function(node){
-if(!dojo.render.html.ie){
-return;
-}
-if(!node["__doClobber__"]){
-node.__doClobber__=true;
-dojo._ie_clobber.clobberNodes.push(node);
-node.__clobberAttrs__=[];
-}
-};
-this.addClobberNodeAttrs=function(node,_218){
-if(!dojo.render.html.ie){
-return;
-}
-this.addClobberNode(node);
-for(var x=0;x<_218.length;x++){
-node.__clobberAttrs__.push(_218[x]);
-}
-};
-this.removeListener=function(node,_21b,fp,_21d){
-if(!_21d){
-var _21d=false;
-}
-_21b=dojo.event.browser.normalizedEventName(_21b);
-if(_21b=="key"){
-if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_21d);
-}
-_21b="keypress";
-}
-if(node.removeEventListener){
-node.removeEventListener(_21b,fp,_21d);
-}
-};
-this.addListener=function(node,_21f,fp,_221,_222){
-if(!node){
-return;
-}
-if(!_221){
-var _221=false;
-}
-_21f=dojo.event.browser.normalizedEventName(_21f);
-if(_21f=="key"){
-if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_221,_222);
-}
-_21f="keypress";
-}
-if(!_222){
-var _223=function(evt){
-if(!evt){
-evt=window.event;
-}
-var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_221){
-dojo.event.browser.stopEvent(evt);
-}
-return ret;
-};
-}else{
-_223=fp;
-}
-if(node.addEventListener){
-node.addEventListener(_21f,_223,_221);
-return _223;
-}else{
-_21f="on"+_21f;
-if(typeof node[_21f]=="function"){
-var _226=node[_21f];
-node[_21f]=function(e){
-_226(e);
-return _223(e);
-};
-}else{
-node[_21f]=_223;
-}
-if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_21f]);
-}
-return _223;
-}
-};
-this.isEvent=function(obj){
-return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
-};
-this.currentEvent=null;
-this.callListener=function(_229,_22a){
-if(typeof _229!="function"){
-dojo.raise("listener not a function: "+_229);
-}
-dojo.event.browser.currentEvent.currentTarget=_22a;
-return _229.call(_22a,dojo.event.browser.currentEvent);
-};
-this._stopPropagation=function(){
-dojo.event.browser.currentEvent.cancelBubble=true;
-};
-this._preventDefault=function(){
-dojo.event.browser.currentEvent.returnValue=false;
-};
-this.keys={KEY_BACKSPACE:8,KEY_TAB:9,KEY_CLEAR:12,KEY_ENTER:13,KEY_SHIFT:16,KEY_CTRL:17,KEY_ALT:18,KEY_PAUSE:19,KEY_CAPS_LOCK:20,KEY_ESCAPE:27,KEY_SPACE:32,KEY_PAGE_UP:33,KEY_PAGE_DOWN:34,KEY_END:35,KEY_HOME:36,KEY_LEFT_ARROW:37,KEY_UP_ARROW:38,KEY_RIGHT_ARROW:39,KEY_DOWN_ARROW:40,KEY_INSERT:45,KEY_DELETE:46,KEY_HELP:47,KEY_LEFT_WINDOW:91,KEY_RIGHT_WINDOW:92,KEY_SELECT:93,KEY_NUMPAD_0:96,KEY_NUMPAD_1:97,KEY_NUMPAD_2:98,KEY_NUMPAD_3:99,KEY_NUMPAD_4:100,KEY_NUMPAD_5:101,KEY_NUMPAD_6:102,KEY_NUMPAD_7:103,KEY_NUMPAD_8:104,KEY_NUMPAD_9:105,KEY_NUMPAD_MULTIPLY:106,KEY_NUMPAD_PLUS:107,KEY_NUMPAD_ENTER:108,KEY_NUMPAD_MINUS:109,KEY_NUMPAD_PERIOD:110,KEY_NUMPAD_DIVIDE:111,KEY_F1:112,KEY_F2:113,KEY_F3:114,KEY_F4:115,KEY_F5:116,KEY_F6:117,KEY_F7:118,KEY_F8:119,KEY_F9:120,KEY_F10:121,KEY_F11:122,KEY_F12:123,KEY_F13:124,KEY_F14:125,KEY_F15:126,KEY_NUM_LOCK:144,KEY_SCROLL_LOCK:145};
-this.revKeys=[];
-for(var key in this.keys){
-this.revKeys[this.keys[key]]=key;
-}
-this.fixEvent=function(evt,_22d){
-if(!evt){
-if(window["event"]){
-evt=window.event;
-}
-}
-if((evt["type"])&&(evt["type"].indexOf("key")==0)){
-evt.keys=this.revKeys;
-for(var key in this.keys){
-evt[key]=this.keys[key];
-}
-if(evt["type"]=="keydown"&&dojo.render.html.ie){
-switch(evt.keyCode){
-case evt.KEY_SHIFT:
-case evt.KEY_CTRL:
-case evt.KEY_ALT:
-case evt.KEY_CAPS_LOCK:
-case evt.KEY_LEFT_WINDOW:
-case evt.KEY_RIGHT_WINDOW:
-case evt.KEY_SELECT:
-case evt.KEY_NUM_LOCK:
-case evt.KEY_SCROLL_LOCK:
-case evt.KEY_NUMPAD_0:
-case evt.KEY_NUMPAD_1:
-case evt.KEY_NUMPAD_2:
-case evt.KEY_NUMPAD_3:
-case evt.KEY_NUMPAD_4:
-case evt.KEY_NUMPAD_5:
-case evt.KEY_NUMPAD_6:
-case evt.KEY_NUMPAD_7:
-case evt.KEY_NUMPAD_8:
-case evt.KEY_NUMPAD_9:
-case evt.KEY_NUMPAD_PERIOD:
-break;
-case evt.KEY_NUMPAD_MULTIPLY:
-case evt.KEY_NUMPAD_PLUS:
-case evt.KEY_NUMPAD_ENTER:
-case evt.KEY_NUMPAD_MINUS:
-case evt.KEY_NUMPAD_DIVIDE:
-break;
-case evt.KEY_PAUSE:
-case evt.KEY_TAB:
-case evt.KEY_BACKSPACE:
-case evt.KEY_ENTER:
-case evt.KEY_ESCAPE:
-case evt.KEY_PAGE_UP:
-case evt.KEY_PAGE_DOWN:
-case evt.KEY_END:
-case evt.KEY_HOME:
-case evt.KEY_LEFT_ARROW:
-case evt.KEY_UP_ARROW:
-case evt.KEY_RIGHT_ARROW:
-case evt.KEY_DOWN_ARROW:
-case evt.KEY_INSERT:
-case evt.KEY_DELETE:
-case evt.KEY_F1:
-case evt.KEY_F2:
-case evt.KEY_F3:
-case evt.KEY_F4:
-case evt.KEY_F5:
-case evt.KEY_F6:
-case evt.KEY_F7:
-case evt.KEY_F8:
-case evt.KEY_F9:
-case evt.KEY_F10:
-case evt.KEY_F11:
-case evt.KEY_F12:
-case evt.KEY_F12:
-case evt.KEY_F13:
-case evt.KEY_F14:
-case evt.KEY_F15:
-case evt.KEY_CLEAR:
-case evt.KEY_HELP:
-evt.key=evt.keyCode;
-break;
-default:
-if(evt.ctrlKey||evt.altKey){
-var _22f=evt.keyCode;
-if(_22f>=65&&_22f<=90&&evt.shiftKey==false){
-_22f+=32;
-}
-if(_22f>=1&&_22f<=26&&evt.ctrlKey){
-_22f+=96;
-}
-evt.key=String.fromCharCode(_22f);
-}
-}
-}else{
-if(evt["type"]=="keypress"){
-if(dojo.render.html.opera){
-if(evt.which==0){
-evt.key=evt.keyCode;
-}else{
-if(evt.which>0){
-switch(evt.which){
-case evt.KEY_SHIFT:
-case evt.KEY_CTRL:
-case evt.KEY_ALT:
-case evt.KEY_CAPS_LOCK:
-case evt.KEY_NUM_LOCK:
-case evt.KEY_SCROLL_LOCK:
-break;
-case evt.KEY_PAUSE:
-case evt.KEY_TAB:
-case evt.KEY_BACKSPACE:
-case evt.KEY_ENTER:
-case evt.KEY_ESCAPE:
-evt.key=evt.which;
-break;
-default:
-var _22f=evt.which;
-if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_22f+=32;
-}
-evt.key=String.fromCharCode(_22f);
-}
-}
-}
-}else{
-if(dojo.render.html.ie){
-if(!evt.ctrlKey&&!evt.altKey&&evt.keyCode>=evt.KEY_SPACE){
-evt.key=String.fromCharCode(evt.keyCode);
-}
-}else{
-if(dojo.render.html.safari){
-switch(evt.keyCode){
-case 25:
-evt.key=evt.KEY_TAB;
-evt.shift=true;
-break;
-case 63232:
-evt.key=evt.KEY_UP_ARROW;
-break;
-case 63233:
-evt.key=evt.KEY_DOWN_ARROW;
-break;
-case 63234:
-evt.key=evt.KEY_LEFT_ARROW;
-break;
-case 63235:
-evt.key=evt.KEY_RIGHT_ARROW;
-break;
-case 63236:
-evt.key=evt.KEY_F1;
-break;
-case 63237:
-evt.key=evt.KEY_F2;
-break;
-case 63238:
-evt.key=evt.KEY_F3;
-break;
-case 63239:
-evt.key=evt.KEY_F4;
-break;
-case 63240:
-evt.key=evt.KEY_F5;
-break;
-case 63241:
-evt.key=evt.KEY_F6;
-break;
-case 63242:
-evt.key=evt.KEY_F7;
-break;
-case 63243:
-evt.key=evt.KEY_F8;
-break;
-case 63244:
-evt.key=evt.KEY_F9;
-break;
-case 63245:
-evt.key=evt.KEY_F10;
-break;
-case 63246:
-evt.key=evt.KEY_F11;
-break;
-case 63247:
-evt.key=evt.KEY_F12;
-break;
-case 63250:
-evt.key=evt.KEY_PAUSE;
-break;
-case 63272:
-evt.key=evt.KEY_DELETE;
-break;
-case 63273:
-evt.key=evt.KEY_HOME;
-break;
-case 63275:
-evt.key=evt.KEY_END;
-break;
-case 63276:
-evt.key=evt.KEY_PAGE_UP;
-break;
-case 63277:
-evt.key=evt.KEY_PAGE_DOWN;
-break;
-case 63302:
-evt.key=evt.KEY_INSERT;
-break;
-case 63248:
-case 63249:
-case 63289:
-break;
-default:
-evt.key=evt.charCode>=evt.KEY_SPACE?String.fromCharCode(evt.charCode):evt.keyCode;
-}
-}else{
-evt.key=evt.charCode>0?String.fromCharCode(evt.charCode):evt.keyCode;
-}
-}
-}
-}
-}
-}
-if(dojo.render.html.ie){
-if(!evt.target){
-evt.target=evt.srcElement;
-}
-if(!evt.currentTarget){
-evt.currentTarget=(_22d?_22d:evt.srcElement);
-}
-if(!evt.layerX){
-evt.layerX=evt.offsetX;
-}
-if(!evt.layerY){
-evt.layerY=evt.offsetY;
-}
-var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _231=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
-if(!evt.pageX){
-evt.pageX=evt.clientX+(_231.scrollLeft||0);
-}
-if(!evt.pageY){
-evt.pageY=evt.clientY+(_231.scrollTop||0);
-}
-if(evt.type=="mouseover"){
-evt.relatedTarget=evt.fromElement;
-}
-if(evt.type=="mouseout"){
-evt.relatedTarget=evt.toElement;
-}
-this.currentEvent=evt;
-evt.callListener=this.callListener;
-evt.stopPropagation=this._stopPropagation;
-evt.preventDefault=this._preventDefault;
-}
-return evt;
-};
-this.stopEvent=function(evt){
-if(window.event){
-evt.cancelBubble=true;
-evt.returnValue=false;
-}else{
-evt.preventDefault();
-evt.stopPropagation();
-}
-};
-};
-dojo.kwCompoundRequire({common:["dojo.event.common","dojo.event.topic"],browser:["dojo.event.browser"],dashboard:["dojo.event.browser"]});
-dojo.provide("dojo.event.*");
-
-
-__CPAN_EDITION__ event build.txt
-Files baked into this build:
-dojoGuardStart.js
-../src/bootstrap1.js
-../src/loader.js
-dojoGuardEnd.js
-../src/hostenv_browser.js
-../src/lang/common.js
-../src/lang/array.js
-../src/lang/extras.js
-../src/lang/func.js
-../src/event/common.js
-../src/event/topic.js
-../src/event/browser.js
-../src/event/__package__.js
 __CPAN_EDITION__ event_and_io dojo.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -34252,7 +25757,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -35048,7 +26553,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -35517,43 +27024,55 @@
 }
 }
 };
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_145,_146){
-},error:function(type,_148,_149,_14a){
-},timeout:function(type,_14c,_14d,_14e){
-},handle:function(type,data,_151,_152){
+dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jsonFilter:function(_143){
+if((this.mimetype=="text/json-comment-filtered")||(this.mimetype=="application/json-comment-filtered")){
+var _144=_143.indexOf("/*");
+var _145=_143.lastIndexOf("*/");
+if((_144==-1)||(_145==-1)){
+dojo.debug("your JSON wasn't comment filtered!");
+return "";
+}
+return _143.substring(_144+2,_145);
+}
+dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+return _143;
+},load:function(type,data,_148,_149){
+},error:function(type,_14b,_14c,_14d){
+},timeout:function(type,_14f,_150,_151){
+},handle:function(type,data,_154,_155){
 },timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_153){
-if(_153["url"]){
-_153.url=_153.url.toString();
+},fromKwArgs:function(_156){
+if(_156["url"]){
+_156.url=_156.url.toString();
 }
-if(_153["formNode"]){
-_153.formNode=dojo.byId(_153.formNode);
+if(_156["formNode"]){
+_156.formNode=dojo.byId(_156.formNode);
 }
-if(!_153["method"]&&_153["formNode"]&&_153["formNode"].method){
-_153.method=_153["formNode"].method;
+if(!_156["method"]&&_156["formNode"]&&_156["formNode"].method){
+_156.method=_156["formNode"].method;
 }
-if(!_153["handle"]&&_153["handler"]){
-_153.handle=_153.handler;
+if(!_156["handle"]&&_156["handler"]){
+_156.handle=_156.handler;
 }
-if(!_153["load"]&&_153["loaded"]){
-_153.load=_153.loaded;
+if(!_156["load"]&&_156["loaded"]){
+_156.load=_156.loaded;
 }
-if(!_153["changeUrl"]&&_153["changeURL"]){
-_153.changeUrl=_153.changeURL;
+if(!_156["changeUrl"]&&_156["changeURL"]){
+_156.changeUrl=_156.changeURL;
 }
-_153.encoding=dojo.lang.firstValued(_153["encoding"],djConfig["bindEncoding"],"");
-_153.sendTransport=dojo.lang.firstValued(_153["sendTransport"],djConfig["ioSendTransport"],false);
-var _154=dojo.lang.isFunction;
+_156.encoding=dojo.lang.firstValued(_156["encoding"],djConfig["bindEncoding"],"");
+_156.sendTransport=dojo.lang.firstValued(_156["sendTransport"],djConfig["ioSendTransport"],false);
+var _157=dojo.lang.isFunction;
 for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
 var fn=dojo.io.hdlrFuncNames[x];
-if(_153[fn]&&_154(_153[fn])){
+if(_156[fn]&&_157(_156[fn])){
 continue;
 }
-if(_153["handle"]&&_154(_153["handle"])){
-_153[fn]=_153.handle;
+if(_156["handle"]&&_157(_156["handle"])){
+_156[fn]=_156.handle;
 }
 }
-dojo.lang.mixin(this,_153);
+dojo.lang.mixin(this,_156);
 }});
 dojo.io.Error=function(msg,type,num){
 this.message=msg;
@@ -35564,79 +27083,79 @@
 this.push(name);
 this[name]=dojo.io[name];
 };
-dojo.io.bind=function(_15b){
-if(!(_15b instanceof dojo.io.Request)){
+dojo.io.bind=function(_15e){
+if(!(_15e instanceof dojo.io.Request)){
 try{
-_15b=new dojo.io.Request(_15b);
+_15e=new dojo.io.Request(_15e);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _15c="";
-if(_15b["transport"]){
-_15c=_15b["transport"];
-if(!this[_15c]){
-dojo.io.sendBindError(_15b,"No dojo.io.bind() transport with name '"+_15b["transport"]+"'.");
-return _15b;
+var _15f="";
+if(_15e["transport"]){
+_15f=_15e["transport"];
+if(!this[_15f]){
+dojo.io.sendBindError(_15e,"No dojo.io.bind() transport with name '"+_15e["transport"]+"'.");
+return _15e;
 }
-if(!this[_15c].canHandle(_15b)){
-dojo.io.sendBindError(_15b,"dojo.io.bind() transport with name '"+_15b["transport"]+"' cannot handle this type of request.");
-return _15b;
+if(!this[_15f].canHandle(_15e)){
+dojo.io.sendBindError(_15e,"dojo.io.bind() transport with name '"+_15e["transport"]+"' cannot handle this type of request.");
+return _15e;
 }
 }else{
 for(var x=0;x<dojo.io.transports.length;x++){
 var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_15b))){
-_15c=tmp;
+if((this[tmp])&&(this[tmp].canHandle(_15e))){
+_15f=tmp;
 break;
 }
 }
-if(_15c==""){
-dojo.io.sendBindError(_15b,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _15b;
+if(_15f==""){
+dojo.io.sendBindError(_15e,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
+return _15e;
 }
 }
-this[_15c].bind(_15b);
-_15b.bindSuccess=true;
-return _15b;
+this[_15f].bind(_15e);
+_15e.bindSuccess=true;
+return _15e;
 };
-dojo.io.sendBindError=function(_15f,_160){
-if((typeof _15f.error=="function"||typeof _15f.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _161=new dojo.io.Error(_160);
+dojo.io.sendBindError=function(_162,_163){
+if((typeof _162.error=="function"||typeof _162.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
+var _164=new dojo.io.Error(_163);
 setTimeout(function(){
-_15f[(typeof _15f.error=="function")?"error":"handle"]("error",_161,null,_15f);
+_162[(typeof _162.error=="function")?"error":"handle"]("error",_164,null,_162);
 },50);
 }else{
-dojo.raise(_160);
+dojo.raise(_163);
 }
 };
-dojo.io.queueBind=function(_162){
-if(!(_162 instanceof dojo.io.Request)){
+dojo.io.queueBind=function(_165){
+if(!(_165 instanceof dojo.io.Request)){
 try{
-_162=new dojo.io.Request(_162);
+_165=new dojo.io.Request(_165);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _163=_162.load;
-_162.load=function(){
+var _166=_165.load;
+_165.load=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_163.apply(this,arguments);
+var ret=_166.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-var _165=_162.error;
-_162.error=function(){
+var _168=_165.error;
+_165.error=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_165.apply(this,arguments);
+var ret=_168.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-dojo.io._bindQueue.push(_162);
+dojo.io._bindQueue.push(_165);
 dojo.io._dispatchNextQueueBind();
-return _162;
+return _165;
 };
 dojo.io._dispatchNextQueueBind=function(){
 if(!dojo.io._queueBindInFlight){
@@ -35650,48 +27169,48 @@
 };
 dojo.io._bindQueue=[];
 dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_168,last){
-var enc=/utf/i.test(_168||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _16b=[];
-var _16c=new Object();
+dojo.io.argsFromMap=function(map,_16b,last){
+var enc=/utf/i.test(_16b||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _16e=[];
+var _16f=new Object();
 for(var name in map){
-var _16e=function(elt){
+var _171=function(elt){
 var val=enc(name)+"="+enc(elt);
-_16b[(last==name)?"push":"unshift"](val);
+_16e[(last==name)?"push":"unshift"](val);
 };
-if(!_16c[name]){
-var _171=map[name];
-if(dojo.lang.isArray(_171)){
-dojo.lang.forEach(_171,_16e);
+if(!_16f[name]){
+var _174=map[name];
+if(dojo.lang.isArray(_174)){
+dojo.lang.forEach(_174,_171);
 }else{
-_16e(_171);
+_171(_174);
 }
 }
 }
-return _16b.join("&");
+return _16e.join("&");
 };
-dojo.io.setIFrameSrc=function(_172,src,_174){
+dojo.io.setIFrameSrc=function(_175,src,_177){
 try{
 var r=dojo.render.html;
-if(!_174){
+if(!_177){
 if(r.safari){
-_172.location=src;
+_175.location=src;
 }else{
-frames[_172.name].location=src;
+frames[_175.name].location=src;
 }
 }else{
 var idoc;
 if(r.ie){
-idoc=_172.contentWindow.document;
+idoc=_175.contentWindow.document;
 }else{
 if(r.safari){
-idoc=_172.document;
+idoc=_175.document;
 }else{
-idoc=_172.contentWindow;
+idoc=_175.contentWindow;
 }
 }
 if(!idoc){
-_172.location=src;
+_175.location=src;
 return;
 }else{
 idoc.location.replace(src);
@@ -35714,138 +27233,138 @@
 },isEmpty:function(obj){
 if(dojo.lang.isObject(obj)){
 var tmp={};
-var _17b=0;
+var _17e=0;
 for(var x in obj){
 if(obj[x]&&(!tmp[x])){
-_17b++;
+_17e++;
 break;
 }
 }
-return _17b==0;
+return _17e==0;
 }else{
 if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
 return obj.length==0;
 }
 }
-},map:function(arr,obj,_17f){
-var _180=dojo.lang.isString(arr);
-if(_180){
+},map:function(arr,obj,_182){
+var _183=dojo.lang.isString(arr);
+if(_183){
 arr=arr.split("");
 }
-if(dojo.lang.isFunction(obj)&&(!_17f)){
-_17f=obj;
+if(dojo.lang.isFunction(obj)&&(!_182)){
+_182=obj;
 obj=dj_global;
 }else{
-if(dojo.lang.isFunction(obj)&&_17f){
-var _181=obj;
-obj=_17f;
-_17f=_181;
+if(dojo.lang.isFunction(obj)&&_182){
+var _184=obj;
+obj=_182;
+_182=_184;
 }
 }
 if(Array.map){
-var _182=Array.map(arr,_17f,obj);
+var _185=Array.map(arr,_182,obj);
 }else{
-var _182=[];
+var _185=[];
 for(var i=0;i<arr.length;++i){
-_182.push(_17f.call(obj,arr[i]));
+_185.push(_182.call(obj,arr[i]));
 }
 }
-if(_180){
-return _182.join("");
+if(_183){
+return _185.join("");
 }else{
-return _182;
+return _185;
 }
-},reduce:function(arr,_185,obj,_187){
-var _188=_185;
+},reduce:function(arr,_188,obj,_18a){
+var _18b=_188;
 if(arguments.length==2){
-_187=_185;
-_188=arr[0];
+_18a=_188;
+_18b=arr[0];
 arr=arr.slice(1);
 }else{
 if(arguments.length==3){
 if(dojo.lang.isFunction(obj)){
-_187=obj;
+_18a=obj;
 obj=null;
 }
 }else{
 if(dojo.lang.isFunction(obj)){
-var tmp=_187;
-_187=obj;
+var tmp=_18a;
+_18a=obj;
 obj=tmp;
 }
 }
 }
 var ob=obj||dj_global;
 dojo.lang.map(arr,function(val){
-_188=_187.call(ob,_188,val);
+_18b=_18a.call(ob,_18b,val);
 });
-return _188;
-},forEach:function(_18c,_18d,_18e){
-if(dojo.lang.isString(_18c)){
-_18c=_18c.split("");
+return _18b;
+},forEach:function(_18f,_190,_191){
+if(dojo.lang.isString(_18f)){
+_18f=_18f.split("");
 }
 if(Array.forEach){
-Array.forEach(_18c,_18d,_18e);
+Array.forEach(_18f,_190,_191);
 }else{
-if(!_18e){
-_18e=dj_global;
+if(!_191){
+_191=dj_global;
 }
-for(var i=0,l=_18c.length;i<l;i++){
-_18d.call(_18e,_18c[i],i,_18c);
+for(var i=0,l=_18f.length;i<l;i++){
+_190.call(_191,_18f[i],i,_18f);
 }
 }
-},_everyOrSome:function(_191,arr,_193,_194){
+},_everyOrSome:function(_194,arr,_196,_197){
 if(dojo.lang.isString(arr)){
 arr=arr.split("");
 }
 if(Array.every){
-return Array[_191?"every":"some"](arr,_193,_194);
+return Array[_194?"every":"some"](arr,_196,_197);
 }else{
-if(!_194){
-_194=dj_global;
+if(!_197){
+_197=dj_global;
 }
 for(var i=0,l=arr.length;i<l;i++){
-var _197=_193.call(_194,arr[i],i,arr);
-if(_191&&!_197){
+var _19a=_196.call(_197,arr[i],i,arr);
+if(_194&&!_19a){
 return false;
 }else{
-if((!_191)&&(_197)){
+if((!_194)&&(_19a)){
 return true;
 }
 }
 }
-return Boolean(_191);
+return Boolean(_194);
 }
-},every:function(arr,_199,_19a){
-return this._everyOrSome(true,arr,_199,_19a);
-},some:function(arr,_19c,_19d){
-return this._everyOrSome(false,arr,_19c,_19d);
-},filter:function(arr,_19f,_1a0){
-var _1a1=dojo.lang.isString(arr);
-if(_1a1){
+},every:function(arr,_19c,_19d){
+return this._everyOrSome(true,arr,_19c,_19d);
+},some:function(arr,_19f,_1a0){
+return this._everyOrSome(false,arr,_19f,_1a0);
+},filter:function(arr,_1a2,_1a3){
+var _1a4=dojo.lang.isString(arr);
+if(_1a4){
 arr=arr.split("");
 }
-var _1a2;
+var _1a5;
 if(Array.filter){
-_1a2=Array.filter(arr,_19f,_1a0);
+_1a5=Array.filter(arr,_1a2,_1a3);
 }else{
-if(!_1a0){
+if(!_1a3){
 if(arguments.length>=3){
 dojo.raise("thisObject doesn't exist!");
 }
-_1a0=dj_global;
+_1a3=dj_global;
 }
-_1a2=[];
+_1a5=[];
 for(var i=0;i<arr.length;i++){
-if(_19f.call(_1a0,arr[i],i,arr)){
-_1a2.push(arr[i]);
+if(_1a2.call(_1a3,arr[i],i,arr)){
+_1a5.push(arr[i]);
 }
 }
 }
-if(_1a1){
-return _1a2.join("");
+if(_1a4){
+return _1a5.join("");
 }else{
-return _1a2;
+return _1a5;
 }
 },unnest:function(){
 var out=[];
@@ -35858,29 +27377,37 @@
 }
 }
 return out;
-},toArray:function(_1a7,_1a8){
-var _1a9=[];
-for(var i=_1a8||0;i<_1a7.length;i++){
-_1a9.push(_1a7[i]);
+},toArray:function(_1aa,_1ab){
+var _1ac=[];
+for(var i=_1ab||0;i<_1aa.length;i++){
+_1ac.push(_1aa[i]);
 }
-return _1a9;
+return _1ac;
 }});
 dojo.provide("dojo.lang.func");
-dojo.lang.hitch=function(_1ab,_1ac){
-var fcn=(dojo.lang.isString(_1ac)?_1ab[_1ac]:_1ac)||function(){
+dojo.lang.hitch=function(_1ae,_1af){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
+var fcn=(dojo.lang.isString(_1af)?_1ae[_1af]:_1af)||function(){
 };
 return function(){
-return fcn.apply(_1ab,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_1ae,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_1ae,_1af,_1b0){
-var nso=(_1af||dojo.lang.anon);
-if((_1b0)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_1b5,_1b6,_1b7){
+var nso=(_1b6||dojo.lang.anon);
+if((_1b7)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_1ae){
+if(nso[x]===_1b5){
 return x;
 }
 }
@@ -35892,50 +27419,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_1ae;
+nso[ret]=_1b5;
 return ret;
 };
-dojo.lang.forward=function(_1b4){
+dojo.lang.forward=function(_1bb){
 return function(){
-return this[_1b4].apply(this,arguments);
+return this[_1bb].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_1b5,func){
-var _1b7=[];
-_1b5=_1b5||dj_global;
+dojo.lang.curry=function(_1bc,func){
+var _1be=[];
+_1bc=_1bc||dj_global;
 if(dojo.lang.isString(func)){
-func=_1b5[func];
+func=_1bc[func];
 }
 for(var x=2;x<arguments.length;x++){
-_1b7.push(arguments[x]);
+_1be.push(arguments[x]);
 }
-var _1b9=(func["__preJoinArity"]||func.length)-_1b7.length;
-function gather(_1ba,_1bb,_1bc){
-var _1bd=_1bc;
-var _1be=_1bb.slice(0);
-for(var x=0;x<_1ba.length;x++){
-_1be.push(_1ba[x]);
+var _1c0=(func["__preJoinArity"]||func.length)-_1be.length;
+function gather(_1c1,_1c2,_1c3){
+var _1c4=_1c3;
+var _1c5=_1c2.slice(0);
+for(var x=0;x<_1c1.length;x++){
+_1c5.push(_1c1[x]);
 }
-_1bc=_1bc-_1ba.length;
-if(_1bc<=0){
-var res=func.apply(_1b5,_1be);
-_1bc=_1bd;
+_1c3=_1c3-_1c1.length;
+if(_1c3<=0){
+var res=func.apply(_1bc,_1c5);
+_1c3=_1c4;
 return res;
 }else{
 return function(){
-return gather(arguments,_1be,_1bc);
+return gather(arguments,_1c5,_1c3);
 };
 }
 }
-return gather([],_1b7,_1b9);
+return gather([],_1be,_1c0);
 };
-dojo.lang.curryArguments=function(_1c1,func,args,_1c4){
-var _1c5=[];
-var x=_1c4||0;
-for(x=_1c4;x<args.length;x++){
-_1c5.push(args[x]);
+dojo.lang.curryArguments=function(_1c8,func,args,_1cb){
+var _1cc=[];
+var x=_1cb||0;
+for(x=_1cb;x<args.length;x++){
+_1cc.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_1c1,func].concat(_1c5));
+return dojo.lang.curry.apply(dojo.lang,[_1c8,func].concat(_1cc));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -35952,36 +27479,36 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_1cb,_1cc){
+dojo.lang.delayThese=function(farr,cb,_1d2,_1d3){
 if(!farr.length){
-if(typeof _1cc=="function"){
-_1cc();
+if(typeof _1d3=="function"){
+_1d3();
 }
 return;
 }
-if((typeof _1cb=="undefined")&&(typeof cb=="number")){
-_1cb=cb;
+if((typeof _1d2=="undefined")&&(typeof cb=="number")){
+_1d2=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_1cb){
-_1cb=0;
+if(!_1d2){
+_1d2=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_1cb,_1cc);
-},_1cb);
+dojo.lang.delayThese(farr,cb,_1d2,_1d3);
+},_1d2);
 };
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_1cd,hash){
+dojo.string.substituteParams=function(_1d4,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _1cd.replace(/\%\{(\w+)\}/g,function(_1d0,key){
+return _1d4.replace(/\%\{(\w+)\}/g,function(_1d7,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -35995,11 +27522,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _1d3=str.split(" ");
-for(var i=0;i<_1d3.length;i++){
-_1d3[i]=_1d3[i].charAt(0).toUpperCase()+_1d3[i].substring(1);
+var _1da=str.split(" ");
+for(var i=0;i<_1da.length;i++){
+_1da[i]=_1da[i].charAt(0).toUpperCase()+_1da[i].substring(1);
 }
-return _1d3.join(" ");
+return _1da.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -36012,15 +27539,15 @@
 return str;
 }
 var ret="";
-var _1d8=escape(str);
-var _1d9,re=/%u([0-9A-F]{4})/i;
-while((_1d9=_1d8.match(re))){
-var num=Number("0x"+_1d9[1]);
-var _1dc=escape("&#"+num+";");
-ret+=_1d8.substring(0,_1d9.index)+_1dc;
-_1d8=_1d8.substring(_1d9.index+_1d9[0].length);
+var _1df=escape(str);
+var _1e0,re=/%u([0-9A-F]{4})/i;
+while((_1e0=_1df.match(re))){
+var num=Number("0x"+_1e0[1]);
+var _1e3=escape("&#"+num+";");
+ret+=_1df.substring(0,_1e0.index)+_1e3;
+_1df=_1df.substring(_1e0.index+_1e0[0].length);
 }
-ret+=_1d8.replace(/\+/g,"%2B");
+ret+=_1df.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -36045,9 +27572,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_1e1){
+dojo.string.escapeXml=function(str,_1e8){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_1e1){
+if(!_1e8){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -36070,8 +27597,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_1ea){
-if(_1ea){
+dojo.string.endsWith=function(str,end,_1f1){
+if(_1f1){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -36088,12 +27615,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_1ee,_1ef){
-if(_1ef){
+dojo.string.startsWith=function(str,_1f5,_1f6){
+if(_1f6){
 str=str.toLowerCase();
-_1ee=_1ee.toLowerCase();
+_1f5=_1f5.toLowerCase();
 }
-return str.indexOf(_1ee)==0;
+return str.indexOf(_1f5)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -36111,12 +27638,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_1f5){
-if(_1f5=="\n"){
+dojo.string.normalizeNewlines=function(text,_1fc){
+if(_1fc=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_1f5=="\r"){
+if(_1fc=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -36125,20 +27652,20 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_1f7){
-var _1f8=[];
-for(var i=0,_1fa=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_1fe){
+var _1ff=[];
+for(var i=0,_201=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_1f7){
-_1f8.push(str.substring(_1fa,i));
-_1fa=i+1;
+if(str.charAt(i)==_1fe){
+_1ff.push(str.substring(_201,i));
+_201=i+1;
 }
 }
-_1f8.push(str.substr(_1fa));
-return _1f8;
+_1ff.push(str.substr(_201));
+return _1ff;
 };
 dojo.provide("dojo.dom");
 dojo.dom.ELEMENT_NODE=1;
@@ -36167,102 +27694,102 @@
 }
 };
 dojo.dom.getUniqueId=function(){
-var _1fc=dojo.doc();
+var _203=dojo.doc();
 do{
 var id="dj_unique_"+(++arguments.callee._idIncrement);
-}while(_1fc.getElementById(id));
+}while(_203.getElementById(id));
 return id;
 };
 dojo.dom.getUniqueId._idIncrement=0;
-dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_1fe,_1ff){
-var node=_1fe.firstChild;
+dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_205,_206){
+var node=_205.firstChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.nextSibling;
 }
-if(_1ff&&node&&node.tagName&&node.tagName.toLowerCase()!=_1ff.toLowerCase()){
-node=dojo.dom.nextElement(node,_1ff);
+if(_206&&node&&node.tagName&&node.tagName.toLowerCase()!=_206.toLowerCase()){
+node=dojo.dom.nextElement(node,_206);
 }
 return node;
 };
-dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_201,_202){
-var node=_201.lastChild;
+dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_208,_209){
+var node=_208.lastChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.previousSibling;
 }
-if(_202&&node&&node.tagName&&node.tagName.toLowerCase()!=_202.toLowerCase()){
-node=dojo.dom.prevElement(node,_202);
+if(_209&&node&&node.tagName&&node.tagName.toLowerCase()!=_209.toLowerCase()){
+node=dojo.dom.prevElement(node,_209);
 }
 return node;
 };
-dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_205){
+dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_20c){
 if(!node){
 return null;
 }
 do{
 node=node.nextSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_205&&_205.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.nextElement(node,_205);
+if(node&&_20c&&_20c.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.nextElement(node,_20c);
 }
 return node;
 };
-dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_207){
+dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_20e){
 if(!node){
 return null;
 }
-if(_207){
-_207=_207.toLowerCase();
+if(_20e){
+_20e=_20e.toLowerCase();
 }
 do{
 node=node.previousSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_207&&_207.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.prevElement(node,_207);
+if(node&&_20e&&_20e.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.prevElement(node,_20e);
 }
 return node;
 };
-dojo.dom.moveChildren=function(_208,_209,trim){
-var _20b=0;
+dojo.dom.moveChildren=function(_20f,_210,trim){
+var _212=0;
 if(trim){
-while(_208.hasChildNodes()&&_208.firstChild.nodeType==dojo.dom.TEXT_NODE){
-_208.removeChild(_208.firstChild);
+while(_20f.hasChildNodes()&&_20f.firstChild.nodeType==dojo.dom.TEXT_NODE){
+_20f.removeChild(_20f.firstChild);
 }
-while(_208.hasChildNodes()&&_208.lastChild.nodeType==dojo.dom.TEXT_NODE){
-_208.removeChild(_208.lastChild);
+while(_20f.hasChildNodes()&&_20f.lastChild.nodeType==dojo.dom.TEXT_NODE){
+_20f.removeChild(_20f.lastChild);
 }
 }
-while(_208.hasChildNodes()){
-_209.appendChild(_208.firstChild);
-_20b++;
+while(_20f.hasChildNodes()){
+_210.appendChild(_20f.firstChild);
+_212++;
 }
-return _20b;
+return _212;
 };
-dojo.dom.copyChildren=function(_20c,_20d,trim){
-var _20f=_20c.cloneNode(true);
-return this.moveChildren(_20f,_20d,trim);
+dojo.dom.copyChildren=function(_213,_214,trim){
+var _216=_213.cloneNode(true);
+return this.moveChildren(_216,_214,trim);
 };
-dojo.dom.replaceChildren=function(node,_211){
-var _212=[];
+dojo.dom.replaceChildren=function(node,_218){
+var _219=[];
 if(dojo.render.html.ie){
 for(var i=0;i<node.childNodes.length;i++){
-_212.push(node.childNodes[i]);
+_219.push(node.childNodes[i]);
 }
 }
 dojo.dom.removeChildren(node);
-node.appendChild(_211);
-for(var i=0;i<_212.length;i++){
-dojo.dom.destroyNode(_212[i]);
+node.appendChild(_218);
+for(var i=0;i<_219.length;i++){
+dojo.dom.destroyNode(_219[i]);
 }
 };
 dojo.dom.removeChildren=function(node){
-var _215=node.childNodes.length;
+var _21c=node.childNodes.length;
 while(node.hasChildNodes()){
 dojo.dom.removeNode(node.firstChild);
 }
-return _215;
+return _21c;
 };
-dojo.dom.replaceNode=function(node,_217){
-return node.parentNode.replaceChild(_217,node);
+dojo.dom.replaceNode=function(node,_21e){
+return node.parentNode.replaceChild(_21e,node);
 };
 dojo.dom.destroyNode=function(node){
 if(node.parentNode){
@@ -36282,38 +27809,38 @@
 return node.parentNode.removeChild(node);
 }
 };
-dojo.dom.getAncestors=function(node,_21b,_21c){
-var _21d=[];
-var _21e=(_21b&&(_21b instanceof Function||typeof _21b=="function"));
+dojo.dom.getAncestors=function(node,_222,_223){
+var _224=[];
+var _225=(_222&&(_222 instanceof Function||typeof _222=="function"));
 while(node){
-if(!_21e||_21b(node)){
-_21d.push(node);
+if(!_225||_222(node)){
+_224.push(node);
 }
-if(_21c&&_21d.length>0){
-return _21d[0];
+if(_223&&_224.length>0){
+return _224[0];
 }
 node=node.parentNode;
 }
-if(_21c){
+if(_223){
 return null;
 }
-return _21d;
+return _224;
 };
-dojo.dom.getAncestorsByTag=function(node,tag,_221){
+dojo.dom.getAncestorsByTag=function(node,tag,_228){
 tag=tag.toLowerCase();
 return dojo.dom.getAncestors(node,function(el){
 return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
-},_221);
+},_228);
 };
 dojo.dom.getFirstAncestorByTag=function(node,tag){
 return dojo.dom.getAncestorsByTag(node,tag,true);
 };
-dojo.dom.isDescendantOf=function(node,_226,_227){
-if(_227&&node){
+dojo.dom.isDescendantOf=function(node,_22d,_22e){
+if(_22e&&node){
 node=node.parentNode;
 }
 while(node){
-if(node==_226){
+if(node==_22d){
 return true;
 }
 node=node.parentNode;
@@ -36335,12 +27862,12 @@
 };
 dojo.dom.createDocument=function(){
 var doc=null;
-var _22a=dojo.doc();
+var _231=dojo.doc();
 if(!dj_undef("ActiveXObject")){
-var _22b=["MSXML2","Microsoft","MSXML","MSXML3"];
-for(var i=0;i<_22b.length;i++){
+var _232=["MSXML2","Microsoft","MSXML","MSXML3"];
+for(var i=0;i<_232.length;i++){
 try{
-doc=new ActiveXObject(_22b[i]+".XMLDOM");
+doc=new ActiveXObject(_232[i]+".XMLDOM");
 }
 catch(e){
 }
@@ -36349,40 +27876,40 @@
 }
 }
 }else{
-if((_22a.implementation)&&(_22a.implementation.createDocument)){
-doc=_22a.implementation.createDocument("","",null);
+if((_231.implementation)&&(_231.implementation.createDocument)){
+doc=_231.implementation.createDocument("","",null);
 }
 }
 return doc;
 };
-dojo.dom.createDocumentFromText=function(str,_22e){
-if(!_22e){
-_22e="text/xml";
+dojo.dom.createDocumentFromText=function(str,_235){
+if(!_235){
+_235="text/xml";
 }
 if(!dj_undef("DOMParser")){
-var _22f=new DOMParser();
-return _22f.parseFromString(str,_22e);
+var _236=new DOMParser();
+return _236.parseFromString(str,_235);
 }else{
 if(!dj_undef("ActiveXObject")){
-var _230=dojo.dom.createDocument();
-if(_230){
-_230.async=false;
-_230.loadXML(str);
-return _230;
+var _237=dojo.dom.createDocument();
+if(_237){
+_237.async=false;
+_237.loadXML(str);
+return _237;
 }else{
 dojo.debug("toXml didn't work?");
 }
 }else{
-var _231=dojo.doc();
-if(_231.createElement){
-var tmp=_231.createElement("xml");
+var _238=dojo.doc();
+if(_238.createElement){
+var tmp=_238.createElement("xml");
 tmp.innerHTML=str;
-if(_231.implementation&&_231.implementation.createDocument){
-var _233=_231.implementation.createDocument("foo","",null);
+if(_238.implementation&&_238.implementation.createDocument){
+var _23a=_238.implementation.createDocument("foo","",null);
 for(var i=0;i<tmp.childNodes.length;i++){
-_233.importNode(tmp.childNodes.item(i),true);
+_23a.importNode(tmp.childNodes.item(i),true);
 }
-return _233;
+return _23a;
 }
 return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
 }
@@ -36390,39 +27917,39 @@
 }
 return null;
 };
-dojo.dom.prependChild=function(node,_236){
-if(_236.firstChild){
-_236.insertBefore(node,_236.firstChild);
+dojo.dom.prependChild=function(node,_23d){
+if(_23d.firstChild){
+_23d.insertBefore(node,_23d.firstChild);
 }else{
-_236.appendChild(node);
+_23d.appendChild(node);
 }
 return true;
 };
-dojo.dom.insertBefore=function(node,ref,_239){
-if((_239!=true)&&(node===ref||node.nextSibling===ref)){
+dojo.dom.insertBefore=function(node,ref,_240){
+if((_240!=true)&&(node===ref||node.nextSibling===ref)){
 return false;
 }
-var _23a=ref.parentNode;
-_23a.insertBefore(node,ref);
+var _241=ref.parentNode;
+_241.insertBefore(node,ref);
 return true;
 };
-dojo.dom.insertAfter=function(node,ref,_23d){
+dojo.dom.insertAfter=function(node,ref,_244){
 var pn=ref.parentNode;
 if(ref==pn.lastChild){
-if((_23d!=true)&&(node===ref)){
+if((_244!=true)&&(node===ref)){
 return false;
 }
 pn.appendChild(node);
 }else{
-return this.insertBefore(node,ref.nextSibling,_23d);
+return this.insertBefore(node,ref.nextSibling,_244);
 }
 return true;
 };
-dojo.dom.insertAtPosition=function(node,ref,_241){
-if((!node)||(!ref)||(!_241)){
+dojo.dom.insertAtPosition=function(node,ref,_248){
+if((!node)||(!ref)||(!_248)){
 return false;
 }
-switch(_241.toLowerCase()){
+switch(_248.toLowerCase()){
 case "before":
 return dojo.dom.insertBefore(node,ref);
 case "after":
@@ -36440,46 +27967,46 @@
 return true;
 }
 };
-dojo.dom.insertAtIndex=function(node,_243,_244){
-var _245=_243.childNodes;
-if(!_245.length||_245.length==_244){
-_243.appendChild(node);
+dojo.dom.insertAtIndex=function(node,_24a,_24b){
+var _24c=_24a.childNodes;
+if(!_24c.length||_24c.length==_24b){
+_24a.appendChild(node);
 return true;
 }
-if(_244==0){
-return dojo.dom.prependChild(node,_243);
+if(_24b==0){
+return dojo.dom.prependChild(node,_24a);
 }
-return dojo.dom.insertAfter(node,_245[_244-1]);
+return dojo.dom.insertAfter(node,_24c[_24b-1]);
 };
 dojo.dom.textContent=function(node,text){
 if(arguments.length>1){
-var _248=dojo.doc();
-dojo.dom.replaceChildren(node,_248.createTextNode(text));
+var _24f=dojo.doc();
+dojo.dom.replaceChildren(node,_24f.createTextNode(text));
 return text;
 }else{
 if(node.textContent!=undefined){
 return node.textContent;
 }
-var _249="";
+var _250="";
 if(node==null){
-return _249;
+return _250;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-_249+=dojo.dom.textContent(node.childNodes[i]);
+_250+=dojo.dom.textContent(node.childNodes[i]);
 break;
 case 3:
 case 2:
 case 4:
-_249+=node.childNodes[i].nodeValue;
+_250+=node.childNodes[i].nodeValue;
 break;
 default:
 break;
 }
 }
-return _249;
+return _250;
 }
 };
 dojo.dom.hasParent=function(node){
@@ -36495,17 +28022,17 @@
 }
 return "";
 };
-dojo.dom.setAttributeNS=function(elem,_24f,_250,_251){
+dojo.dom.setAttributeNS=function(elem,_256,_257,_258){
 if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
 dojo.raise("No element given to dojo.dom.setAttributeNS");
 }
 if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
-elem.setAttributeNS(_24f,_250,_251);
+elem.setAttributeNS(_256,_257,_258);
 }else{
-var _252=elem.ownerDocument;
-var _253=_252.createNode(2,_250,_24f);
-_253.nodeValue=_251;
-elem.setAttributeNode(_253);
+var _259=elem.ownerDocument;
+var _25a=_259.createNode(2,_257,_256);
+_25a.nodeValue=_258;
+elem.setAttributeNode(_25a);
 }
 };
 dojo.provide("dojo.undo.browser");
@@ -36552,12 +28079,12 @@
 this.bookmarkAnchor.href=hash;
 if(dojo.render.html.ie){
 url=this._loadIframeHistory();
-var _258=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_25a){
+var _25f=args["back"]||args["backButton"]||args["handle"];
+var tcb=function(_261){
 if(window.location.hash!=""){
 setTimeout("window.location.href = '"+hash+"';",1);
 }
-_258.apply(this,[_25a]);
+_25f.apply(this,[_261]);
 };
 if(args["back"]){
 args.back=tcb;
@@ -36570,13 +28097,13 @@
 }
 }
 }
-var _25b=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_25d){
+var _262=args["forward"]||args["forwardButton"]||args["handle"];
+var tfw=function(_264){
 if(window.location.hash!=""){
 window.location.href=hash;
 }
-if(_25b){
-_25b.apply(this,[_25d]);
+if(_262){
+_262.apply(this,[_264]);
 }
 };
 if(args["forward"]){
@@ -36621,10 +28148,10 @@
 }
 }
 }
-},iframeLoaded:function(evt,_260){
+},iframeLoaded:function(evt,_267){
 if(!dojo.render.html.opera){
-var _261=this._getUrlQuery(_260.href);
-if(_261==null){
+var _268=this._getUrlQuery(_267.href);
+if(_268==null){
 if(this.historyStack.length==1){
 this.handleBackButton();
 }
@@ -36634,17 +28161,17 @@
 this.moveForward=false;
 return;
 }
-if(this.historyStack.length>=2&&_261==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
+if(this.historyStack.length>=2&&_268==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
 this.handleBackButton();
 }else{
-if(this.forwardStack.length>0&&_261==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
+if(this.forwardStack.length>0&&_268==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
 this.handleForwardButton();
 }
 }
 }
 },handleBackButton:function(){
-var _262=this.historyStack.pop();
-if(!_262){
+var _269=this.historyStack.pop();
+if(!_269){
 return;
 }
 var last=this.historyStack[this.historyStack.length-1];
@@ -36664,7 +28191,7 @@
 }
 }
 }
-this.forwardStack.push(_262);
+this.forwardStack.push(_269);
 },handleForwardButton:function(){
 var last=this.forwardStack.pop();
 if(!last){
@@ -36685,11 +28212,11 @@
 },_createState:function(url,args,hash){
 return {"url":url,"kwArgs":args,"urlHash":hash};
 },_getUrlQuery:function(url){
-var _269=url.split("?");
-if(_269.length<2){
+var _270=url.split("?");
+if(_270.length<2){
 return null;
 }else{
-return _269[1];
+return _270[1];
 }
 },_loadIframeHistory:function(){
 var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
@@ -36700,26 +28227,26 @@
 dojo.provide("dojo.io.BrowserIO");
 if(!dj_undef("window")){
 dojo.io.checkChildrenForFile=function(node){
-var _26c=false;
-var _26d=node.getElementsByTagName("input");
-dojo.lang.forEach(_26d,function(_26e){
-if(_26c){
+var _273=false;
+var _274=node.getElementsByTagName("input");
+dojo.lang.forEach(_274,function(_275){
+if(_273){
 return;
 }
-if(_26e.getAttribute("type")=="file"){
-_26c=true;
+if(_275.getAttribute("type")=="file"){
+_273=true;
 }
 });
-return _26c;
+return _273;
 };
-dojo.io.formHasFile=function(_26f){
-return dojo.io.checkChildrenForFile(_26f);
+dojo.io.formHasFile=function(_276){
+return dojo.io.checkChildrenForFile(_276);
 };
-dojo.io.updateNode=function(node,_271){
+dojo.io.updateNode=function(node,_278){
 node=dojo.byId(node);
-var args=_271;
-if(dojo.lang.isString(_271)){
-args={url:_271};
+var args=_278;
+if(dojo.lang.isString(_278)){
+args={url:_278};
 }
 args.mimetype="text/html";
 args.load=function(t,d,e){
@@ -36734,18 +28261,18 @@
 var type=(node.type||"").toLowerCase();
 return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
 };
-dojo.io.encodeForm=function(_278,_279,_27a){
-if((!_278)||(!_278.tagName)||(!_278.tagName.toLowerCase()=="form")){
+dojo.io.encodeForm=function(_27f,_280,_281){
+if((!_27f)||(!_27f.tagName)||(!_27f.tagName.toLowerCase()=="form")){
 dojo.raise("Attempted to encode a non-form element.");
 }
-if(!_27a){
-_27a=dojo.io.formFilter;
+if(!_281){
+_281=dojo.io.formFilter;
 }
-var enc=/utf/i.test(_279||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _27c=[];
-for(var i=0;i<_278.elements.length;i++){
-var elm=_278.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_27a(elm)){
+var enc=/utf/i.test(_280||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _283=[];
+for(var i=0;i<_27f.elements.length;i++){
+var elm=_27f.elements[i];
+if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_281(elm)){
 continue;
 }
 var name=enc(elm.name);
@@ -36753,30 +28280,30 @@
 if(type=="select-multiple"){
 for(var j=0;j<elm.options.length;j++){
 if(elm.options[j].selected){
-_27c.push(name+"="+enc(elm.options[j].value));
+_283.push(name+"="+enc(elm.options[j].value));
 }
 }
 }else{
 if(dojo.lang.inArray(["radio","checkbox"],type)){
 if(elm.checked){
-_27c.push(name+"="+enc(elm.value));
+_283.push(name+"="+enc(elm.value));
 }
 }else{
-_27c.push(name+"="+enc(elm.value));
+_283.push(name+"="+enc(elm.value));
 }
 }
 }
-var _282=_278.getElementsByTagName("input");
-for(var i=0;i<_282.length;i++){
-var _283=_282[i];
-if(_283.type.toLowerCase()=="image"&&_283.form==_278&&_27a(_283)){
-var name=enc(_283.name);
-_27c.push(name+"="+enc(_283.value));
-_27c.push(name+".x=0");
-_27c.push(name+".y=0");
+var _289=_27f.getElementsByTagName("input");
+for(var i=0;i<_289.length;i++){
+var _28a=_289[i];
+if(_28a.type.toLowerCase()=="image"&&_28a.form==_27f&&_281(_28a)){
+var name=enc(_28a.name);
+_283.push(name+"="+enc(_28a.value));
+_283.push(name+".x=0");
+_283.push(name+".y=0");
 }
 }
-return _27c.join("&")+"&";
+return _283.join("&")+"&";
 };
 dojo.io.FormBind=function(args){
 this.bindArgs={};
@@ -36810,11 +28337,11 @@
 this.connect(node,"onclick","click");
 }
 }
-var _289=form.getElementsByTagName("input");
-for(var i=0;i<_289.length;i++){
-var _28a=_289[i];
-if(_28a.type.toLowerCase()=="image"&&_28a.form==form){
-this.connect(_28a,"onclick","click");
+var _290=form.getElementsByTagName("input");
+for(var i=0;i<_290.length;i++){
+var _291=_290[i];
+if(_291.type.toLowerCase()=="image"&&_291.form==form){
+this.connect(_291,"onclick","click");
 }
 }
 },onSubmit:function(form){
@@ -36832,26 +28359,26 @@
 this.clickedButton=node;
 },formFilter:function(node){
 var type=(node.type||"").toLowerCase();
-var _291=false;
+var _298=false;
 if(node.disabled||!node.name){
-_291=false;
+_298=false;
 }else{
 if(dojo.lang.inArray(["submit","button","image"],type)){
 if(!this.clickedButton){
 this.clickedButton=node;
 }
-_291=node==this.clickedButton;
+_298=node==this.clickedButton;
 }else{
-_291=!dojo.lang.inArray(["file","submit","reset","button"],type);
+_298=!dojo.lang.inArray(["file","submit","reset","button"],type);
 }
 }
-return _291;
-},connect:function(_292,_293,_294){
+return _298;
+},connect:function(_299,_29a,_29b){
 if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_292,_293,this,_294);
+dojo.event.connect(_299,_29a,this,_29b);
 }else{
-var fcn=dojo.lang.hitch(this,_294);
-_292[_293]=function(e){
+var fcn=dojo.lang.hitch(this,_29b);
+_299[_29a]=function(e){
 if(!e){
 e=window.event;
 }
@@ -36868,40 +28395,40 @@
 }
 }});
 dojo.io.XMLHTTPTransport=new function(){
-var _297=this;
-var _298={};
+var _29e=this;
+var _29f={};
 this.useCache=false;
 this.preventCache=false;
-function getCacheKey(url,_29a,_29b){
-return url+"|"+_29a+"|"+_29b.toLowerCase();
+function getCacheKey(url,_2a1,_2a2){
+return url+"|"+_2a1+"|"+_2a2.toLowerCase();
 }
-function addToCache(url,_29d,_29e,http){
-_298[getCacheKey(url,_29d,_29e)]=http;
+function addToCache(url,_2a4,_2a5,http){
+_29f[getCacheKey(url,_2a4,_2a5)]=http;
 }
-function getFromCache(url,_2a1,_2a2){
-return _298[getCacheKey(url,_2a1,_2a2)];
+function getFromCache(url,_2a8,_2a9){
+return _29f[getCacheKey(url,_2a8,_2a9)];
 }
 this.clearCache=function(){
-_298={};
+_29f={};
 };
-function doLoad(_2a3,http,url,_2a6,_2a7){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
+function doLoad(_2aa,http,url,_2ad,_2ae){
+if(((http.status>=200)&&(http.status<300))||(http.status==304)||(http.status==1223)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
 var ret;
-if(_2a3.method.toLowerCase()=="head"){
-var _2a9=http.getAllResponseHeaders();
+if(_2aa.method.toLowerCase()=="head"){
+var _2b0=http.getAllResponseHeaders();
 ret={};
 ret.toString=function(){
-return _2a9;
+return _2b0;
 };
-var _2aa=_2a9.split(/[\r\n]+/g);
-for(var i=0;i<_2aa.length;i++){
-var pair=_2aa[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+var _2b1=_2b0.split(/[\r\n]+/g);
+for(var i=0;i<_2b1.length;i++){
+var pair=_2b1[i].match(/^([^:]+)\s*:\s*(.+)$/i);
 if(pair){
 ret[pair[1]]=pair[2];
 }
 }
 }else{
-if(_2a3.mimetype=="text/javascript"){
+if(_2aa.mimetype=="text/javascript"){
 try{
 ret=dj_eval(http.responseText);
 }
@@ -36911,9 +28438,9 @@
 ret=null;
 }
 }else{
-if(_2a3.mimetype=="text/json"||_2a3.mimetype=="application/json"){
+if(_2aa.mimetype.substr(0,9)=="text/json"||_2aa.mimetype.substr(0,16)=="application/json"){
 try{
-ret=dj_eval("("+http.responseText+")");
+ret=dj_eval("("+_2aa.jsonFilter(http.responseText)+")");
 }
 catch(e){
 dojo.debug(e);
@@ -36921,7 +28448,7 @@
 ret=false;
 }
 }else{
-if((_2a3.mimetype=="application/xml")||(_2a3.mimetype=="text/xml")){
+if((_2aa.mimetype=="application/xml")||(_2aa.mimetype=="text/xml")){
 ret=http.responseXML;
 if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
 ret=dojo.dom.createDocumentFromText(http.responseText);
@@ -36932,22 +28459,22 @@
 }
 }
 }
-if(_2a7){
-addToCache(url,_2a6,_2a3.method,http);
+if(_2ae){
+addToCache(url,_2ad,_2aa.method,http);
 }
-_2a3[(typeof _2a3.load=="function")?"load":"handle"]("load",ret,http,_2a3);
+_2aa[(typeof _2aa.load=="function")?"load":"handle"]("load",ret,http,_2aa);
 }else{
-var _2ad=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_2a3[(typeof _2a3.error=="function")?"error":"handle"]("error",_2ad,http,_2a3);
+var _2b4=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
+_2aa[(typeof _2aa.error=="function")?"error":"handle"]("error",_2b4,http,_2aa);
 }
 }
-function setHeaders(http,_2af){
-if(_2af["headers"]){
-for(var _2b0 in _2af["headers"]){
-if(_2b0.toLowerCase()=="content-type"&&!_2af["contentType"]){
-_2af["contentType"]=_2af["headers"][_2b0];
+function setHeaders(http,_2b6){
+if(_2b6["headers"]){
+for(var _2b7 in _2b6["headers"]){
+if(_2b7.toLowerCase()=="content-type"&&!_2b6["contentType"]){
+_2b6["contentType"]=_2b6["headers"][_2b7];
 }else{
-http.setRequestHeader(_2b0,_2af["headers"][_2b0]);
+http.setRequestHeader(_2b7,_2b6["headers"][_2b7]);
 }
 }
 }
@@ -36961,7 +28488,7 @@
 };
 this.watchInFlight=function(){
 var now=null;
-if(!dojo.hostenv._blockAsync&&!_297._blockAsync){
+if(!dojo.hostenv._blockAsync&&!_29e._blockAsync){
 for(var x=this.inFlight.length-1;x>=0;x--){
 try{
 var tif=this.inFlight[x];
@@ -36989,8 +28516,8 @@
 }
 catch(e){
 try{
-var _2b4=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_2b4,tif.http,tif.req);
+var _2bb=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
+tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_2bb,tif.http,tif.req);
 }
 catch(e2){
 dojo.debug("XMLHttpTransport error callback failed: "+e2);
@@ -37005,74 +28532,75 @@
 }
 this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
 };
-var _2b5=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_2b6){
-return _2b5&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_2b6["mimetype"].toLowerCase()||""))&&!(_2b6["formNode"]&&dojo.io.formHasFile(_2b6["formNode"]));
+var _2bc=dojo.hostenv.getXmlhttpObject()?true:false;
+this.canHandle=function(_2bd){
+var mlc=_2bd["mimetype"].toLowerCase()||"";
+return _2bc&&((dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript"],mlc))||(mlc.substr(0,9)=="text/json"||mlc.substr(0,16)=="application/json"))&&!(_2bd["formNode"]&&dojo.io.formHasFile(_2bd["formNode"]));
 };
 this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_2b7){
-if(!_2b7["url"]){
-if(!_2b7["formNode"]&&(_2b7["backButton"]||_2b7["back"]||_2b7["changeUrl"]||_2b7["watchForURL"])&&(!djConfig.preventBackButtonFix)){
+this.bind=function(_2bf){
+if(!_2bf["url"]){
+if(!_2bf["formNode"]&&(_2bf["backButton"]||_2bf["back"]||_2bf["changeUrl"]||_2bf["watchForURL"])&&(!djConfig.preventBackButtonFix)){
 dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_2b7);
+dojo.undo.browser.addToHistory(_2bf);
 return true;
 }
 }
-var url=_2b7.url;
-var _2b9="";
-if(_2b7["formNode"]){
-var ta=_2b7.formNode.getAttribute("action");
-if((ta)&&(!_2b7["url"])){
+var url=_2bf.url;
+var _2c1="";
+if(_2bf["formNode"]){
+var ta=_2bf.formNode.getAttribute("action");
+if((ta)&&(!_2bf["url"])){
 url=ta;
 }
-var tp=_2b7.formNode.getAttribute("method");
-if((tp)&&(!_2b7["method"])){
-_2b7.method=tp;
+var tp=_2bf.formNode.getAttribute("method");
+if((tp)&&(!_2bf["method"])){
+_2bf.method=tp;
 }
-_2b9+=dojo.io.encodeForm(_2b7.formNode,_2b7.encoding,_2b7["formFilter"]);
+_2c1+=dojo.io.encodeForm(_2bf.formNode,_2bf.encoding,_2bf["formFilter"]);
 }
 if(url.indexOf("#")>-1){
 dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
 url=url.split("#")[0];
 }
-if(_2b7["file"]){
-_2b7.method="post";
+if(_2bf["file"]){
+_2bf.method="post";
 }
-if(!_2b7["method"]){
-_2b7.method="get";
+if(!_2bf["method"]){
+_2bf.method="get";
 }
-if(_2b7.method.toLowerCase()=="get"){
-_2b7.multipart=false;
+if(_2bf.method.toLowerCase()=="get"){
+_2bf.multipart=false;
 }else{
-if(_2b7["file"]){
-_2b7.multipart=true;
+if(_2bf["file"]){
+_2bf.multipart=true;
 }else{
-if(!_2b7["multipart"]){
-_2b7.multipart=false;
+if(!_2bf["multipart"]){
+_2bf.multipart=false;
 }
 }
 }
-if(_2b7["backButton"]||_2b7["back"]||_2b7["changeUrl"]){
-dojo.undo.browser.addToHistory(_2b7);
+if(_2bf["backButton"]||_2bf["back"]||_2bf["changeUrl"]){
+dojo.undo.browser.addToHistory(_2bf);
 }
-var _2bc=_2b7["content"]||{};
-if(_2b7.sendTransport){
-_2bc["dojo.transport"]="xmlhttp";
+var _2c4=_2bf["content"]||{};
+if(_2bf.sendTransport){
+_2c4["dojo.transport"]="xmlhttp";
 }
 do{
-if(_2b7.postContent){
-_2b9=_2b7.postContent;
+if(_2bf.postContent){
+_2c1=_2bf.postContent;
 break;
 }
-if(_2bc){
-_2b9+=dojo.io.argsFromMap(_2bc,_2b7.encoding);
+if(_2c4){
+_2c1+=dojo.io.argsFromMap(_2c4,_2bf.encoding);
 }
-if(_2b7.method.toLowerCase()=="get"||!_2b7.multipart){
+if(_2bf.method.toLowerCase()=="get"||!_2bf.multipart){
 break;
 }
 var t=[];
-if(_2b9.length){
-var q=_2b9.split("&");
+if(_2c1.length){
+var q=_2c1.split("&");
 for(var i=0;i<q.length;++i){
 if(q[i].length){
 var p=q[i].split("=");
@@ -37080,71 +28608,71 @@
 }
 }
 }
-if(_2b7.file){
-if(dojo.lang.isArray(_2b7.file)){
-for(var i=0;i<_2b7.file.length;++i){
-var o=_2b7.file[i];
+if(_2bf.file){
+if(dojo.lang.isArray(_2bf.file)){
+for(var i=0;i<_2bf.file.length;++i){
+var o=_2bf.file[i];
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }else{
-var o=_2b7.file;
+var o=_2bf.file;
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }
 if(t.length){
 t.push("--"+this.multipartBoundary+"--","");
-_2b9=t.join("\r\n");
+_2c1=t.join("\r\n");
 }
 }while(false);
-var _2c2=_2b7["sync"]?false:true;
-var _2c3=_2b7["preventCache"]||(this.preventCache==true&&_2b7["preventCache"]!=false);
-var _2c4=_2b7["useCache"]==true||(this.useCache==true&&_2b7["useCache"]!=false);
-if(!_2c3&&_2c4){
-var _2c5=getFromCache(url,_2b9,_2b7.method);
-if(_2c5){
-doLoad(_2b7,_2c5,url,_2b9,false);
+var _2ca=_2bf["sync"]?false:true;
+var _2cb=_2bf["preventCache"]||(this.preventCache==true&&_2bf["preventCache"]!=false);
+var _2cc=_2bf["useCache"]==true||(this.useCache==true&&_2bf["useCache"]!=false);
+if(!_2cb&&_2cc){
+var _2cd=getFromCache(url,_2c1,_2bf.method);
+if(_2cd){
+doLoad(_2bf,_2cd,url,_2c1,false);
 return;
 }
 }
-var http=dojo.hostenv.getXmlhttpObject(_2b7);
-var _2c7=false;
-if(_2c2){
-var _2c8=this.inFlight.push({"req":_2b7,"http":http,"url":url,"query":_2b9,"useCache":_2c4,"startTime":_2b7.timeoutSeconds?(new Date()).getTime():0});
+var http=dojo.hostenv.getXmlhttpObject(_2bf);
+var _2cf=false;
+if(_2ca){
+var _2d0=this.inFlight.push({"req":_2bf,"http":http,"url":url,"query":_2c1,"useCache":_2cc,"startTime":_2bf.timeoutSeconds?(new Date()).getTime():0});
 this.startWatchingInFlight();
 }else{
-_297._blockAsync=true;
+_29e._blockAsync=true;
 }
-if(_2b7.method.toLowerCase()=="post"){
-if(!_2b7.user){
-http.open("POST",url,_2c2);
+if(_2bf.method.toLowerCase()=="post"){
+if(!_2bf.user){
+http.open("POST",url,_2ca);
 }else{
-http.open("POST",url,_2c2,_2b7.user,_2b7.password);
+http.open("POST",url,_2ca,_2bf.user,_2bf.password);
 }
-setHeaders(http,_2b7);
-http.setRequestHeader("Content-Type",_2b7.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_2b7.contentType||"application/x-www-form-urlencoded"));
+setHeaders(http,_2bf);
+http.setRequestHeader("Content-Type",_2bf.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_2bf.contentType||"application/x-www-form-urlencoded"));
 try{
-http.send(_2b9);
+http.send(_2c1);
 }
 catch(e){
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_2b7,{status:404},url,_2b9,_2c4);
+doLoad(_2bf,{status:404},url,_2c1,_2cc);
 }
 }else{
-var _2c9=url;
-if(_2b9!=""){
-_2c9+=(_2c9.indexOf("?")>-1?"&":"?")+_2b9;
+var _2d1=url;
+if(_2c1!=""){
+_2d1+=(_2d1.indexOf("?")>-1?"&":"?")+_2c1;
 }
-if(_2c3){
-_2c9+=(dojo.string.endsWithAny(_2c9,"?","&")?"":(_2c9.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
+if(_2cb){
+_2d1+=(dojo.string.endsWithAny(_2d1,"?","&")?"":(_2d1.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
 }
-if(!_2b7.user){
-http.open(_2b7.method.toUpperCase(),_2c9,_2c2);
+if(!_2bf.user){
+http.open(_2bf.method.toUpperCase(),_2d1,_2ca);
 }else{
-http.open(_2b7.method.toUpperCase(),_2c9,_2c2,_2b7.user,_2b7.password);
+http.open(_2bf.method.toUpperCase(),_2d1,_2ca,_2bf.user,_2bf.password);
 }
-setHeaders(http,_2b7);
+setHeaders(http,_2bf);
 try{
 http.send(null);
 }
@@ -37152,14 +28680,14 @@
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_2b7,{status:404},url,_2b9,_2c4);
+doLoad(_2bf,{status:404},url,_2c1,_2cc);
 }
 }
-if(!_2c2){
-doLoad(_2b7,http,url,_2b9,_2c4);
-_297._blockAsync=false;
+if(!_2ca){
+doLoad(_2bf,http,url,_2c1,_2cc);
+_29e._blockAsync=false;
 }
-_2b7.abort=function(){
+_2bf.abort=function(){
 try{
 http._aborted=true;
 }
@@ -37173,15 +28701,15 @@
 };
 }
 dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_2cb,days,path,_2ce,_2cf){
-var _2d0=-1;
+dojo.io.cookie.setCookie=function(name,_2d3,days,path,_2d6,_2d7){
+var _2d8=-1;
 if((typeof days=="number")&&(days>=0)){
 var d=new Date();
 d.setTime(d.getTime()+(days*24*60*60*1000));
-_2d0=d.toGMTString();
+_2d8=d.toGMTString();
 }
-_2cb=escape(_2cb);
-document.cookie=name+"="+_2cb+";"+(_2d0!=-1?" expires="+_2d0+";":"")+(path?"path="+path:"")+(_2ce?"; domain="+_2ce:"")+(_2cf?"; secure":"");
+_2d3=escape(_2d3);
+document.cookie=name+"="+_2d3+";"+(_2d8!=-1?" expires="+_2d8+";":"")+(path?"path="+path:"")+(_2d6?"; domain="+_2d6:"")+(_2d7?"; secure":"");
 };
 dojo.io.cookie.set=dojo.io.cookie.setCookie;
 dojo.io.cookie.getCookie=function(name){
@@ -37189,71 +28717,71 @@
 if(idx==-1){
 return null;
 }
-var _2d4=document.cookie.substring(idx+name.length+1);
-var end=_2d4.indexOf(";");
+var _2dc=document.cookie.substring(idx+name.length+1);
+var end=_2dc.indexOf(";");
 if(end==-1){
-end=_2d4.length;
+end=_2dc.length;
 }
-_2d4=_2d4.substring(0,end);
-_2d4=unescape(_2d4);
-return _2d4;
+_2dc=_2dc.substring(0,end);
+_2dc=unescape(_2dc);
+return _2dc;
 };
 dojo.io.cookie.get=dojo.io.cookie.getCookie;
 dojo.io.cookie.deleteCookie=function(name){
 dojo.io.cookie.setCookie(name,"-",0);
 };
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_2db,_2dc,_2dd){
+dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_2e3,_2e4,_2e5){
 if(arguments.length==5){
-_2dd=_2db;
-_2db=null;
-_2dc=null;
+_2e5=_2e3;
+_2e3=null;
+_2e4=null;
 }
-var _2de=[],_2df,_2e0="";
-if(!_2dd){
-_2df=dojo.io.cookie.getObjectCookie(name);
+var _2e6=[],_2e7,_2e8="";
+if(!_2e5){
+_2e7=dojo.io.cookie.getObjectCookie(name);
 }
 if(days>=0){
-if(!_2df){
-_2df={};
+if(!_2e7){
+_2e7={};
 }
 for(var prop in obj){
 if(obj[prop]==null){
-delete _2df[prop];
+delete _2e7[prop];
 }else{
 if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_2df[prop]=obj[prop];
+_2e7[prop]=obj[prop];
 }
 }
 }
 prop=null;
-for(var prop in _2df){
-_2de.push(escape(prop)+"="+escape(_2df[prop]));
+for(var prop in _2e7){
+_2e6.push(escape(prop)+"="+escape(_2e7[prop]));
 }
-_2e0=_2de.join("&");
+_2e8=_2e6.join("&");
 }
-dojo.io.cookie.setCookie(name,_2e0,days,path,_2db,_2dc);
+dojo.io.cookie.setCookie(name,_2e8,days,path,_2e3,_2e4);
 };
 dojo.io.cookie.getObjectCookie=function(name){
-var _2e3=null,_2e4=dojo.io.cookie.getCookie(name);
-if(_2e4){
-_2e3={};
-var _2e5=_2e4.split("&");
-for(var i=0;i<_2e5.length;i++){
-var pair=_2e5[i].split("=");
-var _2e8=pair[1];
-if(isNaN(_2e8)){
-_2e8=unescape(pair[1]);
+var _2eb=null,_2ec=dojo.io.cookie.getCookie(name);
+if(_2ec){
+_2eb={};
+var _2ed=_2ec.split("&");
+for(var i=0;i<_2ed.length;i++){
+var pair=_2ed[i].split("=");
+var _2f0=pair[1];
+if(isNaN(_2f0)){
+_2f0=unescape(pair[1]);
 }
-_2e3[unescape(pair[0])]=_2e8;
+_2eb[unescape(pair[0])]=_2f0;
 }
 }
-return _2e3;
+return _2eb;
 };
 dojo.io.cookie.isSupported=function(){
 if(typeof navigator.cookieEnabled!="boolean"){
 dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _2e9=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_2e9=="CookiesAllowed");
+var _2f1=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+navigator.cookieEnabled=(_2f1=="CookiesAllowed");
 if(navigator.cookieEnabled){
 this.deleteCookie("__TestingYourBrowserForCookieSupport__");
 }
@@ -37268,7 +28796,7 @@
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_2eb){
+function interpolateArgs(args,_2f3){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -37295,14 +28823,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _2ee=dl.nameAnonFunc(args[2],ao.adviceObj,_2eb);
-ao.adviceFunc=_2ee;
+var _2f6=dl.nameAnonFunc(args[2],ao.adviceObj,_2f3);
+ao.adviceFunc=_2f6;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _2ee=dl.nameAnonFunc(args[0],ao.srcObj,_2eb);
-ao.srcFunc=_2ee;
+var _2f6=dl.nameAnonFunc(args[0],ao.srcObj,_2f3);
+ao.srcFunc=_2f6;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -37328,17 +28856,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _2ee=dl.nameAnonFunc(args[1],dj_global,_2eb);
-ao.srcFunc=_2ee;
+var _2f6=dl.nameAnonFunc(args[1],dj_global,_2f3);
+ao.srcFunc=_2f6;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _2ee=dl.nameAnonFunc(args[3],dj_global,_2eb);
+var _2f6=dl.nameAnonFunc(args[3],dj_global,_2f3);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_2ee;
+ao.adviceFunc=_2f6;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -37386,8 +28914,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _2ee=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_2eb);
-ao.aroundFunc=_2ee;
+var _2f6=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_2f3);
+ao.aroundFunc=_2f6;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -37416,18 +28944,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _2f0={};
+var _2f8={};
 for(var x in ao){
-_2f0[x]=ao[x];
+_2f8[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_2f0.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_2f0));
+_2f8.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_2f8));
 });
 return mjps;
 }
@@ -37439,20 +28974,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _2f8;
+var _300;
 if((arguments.length==1)&&(typeof a1=="object")){
-_2f8=a1;
+_300=a1;
 }else{
-_2f8={srcObj:a1,srcFunc:a2};
+_300={srcObj:a1,srcFunc:a2};
 }
-_2f8.adviceFunc=function(){
-var _2f9=[];
+_300.adviceFunc=function(){
+var _301=[];
 for(var x=0;x<arguments.length;x++){
-_2f9.push(arguments[x]);
+_301.push(arguments[x]);
 }
-dojo.debug("("+_2f8.srcObj+")."+_2f8.srcFunc,":",_2f9.join(", "));
+dojo.debug("("+_300.srcObj+")."+_300.srcFunc,":",_301.join(", "));
 };
-this.kwConnect(_2f8);
+this.kwConnect(_300);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -37478,25 +29013,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_301,_302){
-var fn=(_302)?"disconnect":"connect";
-if(typeof _301["srcFunc"]=="function"){
-_301.srcObj=_301["srcObj"]||dj_global;
-var _304=dojo.lang.nameAnonFunc(_301.srcFunc,_301.srcObj,true);
-_301.srcFunc=_304;
+this._kwConnectImpl=function(_309,_30a){
+var fn=(_30a)?"disconnect":"connect";
+if(typeof _309["srcFunc"]=="function"){
+_309.srcObj=_309["srcObj"]||dj_global;
+var _30c=dojo.lang.nameAnonFunc(_309.srcFunc,_309.srcObj,true);
+_309.srcFunc=_30c;
 }
-if(typeof _301["adviceFunc"]=="function"){
-_301.adviceObj=_301["adviceObj"]||dj_global;
-var _304=dojo.lang.nameAnonFunc(_301.adviceFunc,_301.adviceObj,true);
-_301.adviceFunc=_304;
+if(typeof _309["adviceFunc"]=="function"){
+_309.adviceObj=_309["adviceObj"]||dj_global;
+var _30c=dojo.lang.nameAnonFunc(_309.adviceFunc,_309.adviceObj,true);
+_309.adviceFunc=_30c;
 }
-_301.srcObj=_301["srcObj"]||dj_global;
-_301.adviceObj=_301["adviceObj"]||_301["targetObj"]||dj_global;
-_301.adviceFunc=_301["adviceFunc"]||_301["targetFunc"];
-return dojo.event[fn](_301);
+_309.srcObj=_309["srcObj"]||dj_global;
+_309.adviceObj=_309["adviceObj"]||_309["targetObj"]||dj_global;
+_309.adviceFunc=_309["adviceFunc"]||_309["targetFunc"];
+return dojo.event[fn](_309);
 };
-this.kwConnect=function(_305){
-return this._kwConnectImpl(_305,false);
+this.kwConnect=function(_30d){
+return this._kwConnectImpl(_30d,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -37521,12 +29056,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_308){
-return this._kwConnectImpl(_308,true);
+this.kwDisconnect=function(_310){
+return this._kwConnectImpl(_310,true);
 };
 };
-dojo.event.MethodInvocation=function(_309,obj,args){
-this.jp_=_309;
+dojo.event.MethodInvocation=function(_311,obj,args){
+this.jp_=_311;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -37545,48 +29080,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_311){
+dojo.event.MethodJoinPoint=function(obj,_319){
 this.object=obj||dj_global;
-this.methodname=_311;
-this.methodfunc=this.object[_311];
+this.methodname=_319;
+this.methodfunc=this.object[_319];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_313){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_31b){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_313];
+var ofn=obj[_31b];
 if(!ofn){
-ofn=obj[_313]=function(){
+ofn=obj[_31b]=function(){
 };
-if(!obj[_313]){
-dojo.raise("Cannot set do-nothing method on that object "+_313);
+if(!obj[_31b]){
+dojo.raise("Cannot set do-nothing method on that object "+_31b);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _315=_313+"$joinpoint";
-var _316=_313+"$joinpoint$method";
-var _317=obj[_315];
-if(!_317){
-var _318=false;
+var _31d=_31b+"$joinpoint";
+var _31e=_31b+"$joinpoint$method";
+var _31f=obj[_31d];
+if(!_31f){
+var _320=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_318=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_315,_316,_313]);
+_320=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_31d,_31e,_31b]);
 }
 }
-var _319=ofn.length;
-obj[_316]=ofn;
-_317=obj[_315]=new dojo.event.MethodJoinPoint(obj,_316);
-if(!_318){
-obj[_313]=function(){
-return _317.run.apply(_317,arguments);
+var _321=ofn.length;
+obj[_31e]=ofn;
+_31f=obj[_31d]=new dojo.event.MethodJoinPoint(obj,_31e);
+if(!_320){
+obj[_31b]=function(){
+return _31f.run.apply(_31f,arguments);
 };
 }else{
-obj[_313]=function(){
+obj[_31b]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -37620,12 +29155,12 @@
 }
 }
 }
-return _317.run.apply(_317,args);
+return _31f.run.apply(_31f,args);
 };
 }
-obj[_313].__preJoinArity=_319;
+obj[_31b].__preJoinArity=_321;
 }
-return _317;
+return _31f;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -37635,41 +29170,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _31f=[];
+var _327=[];
 for(var x=0;x<args.length;x++){
-_31f[x]=args[x];
+_327[x]=args[x];
 }
-var _321=function(marr){
+var _329=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _323=marr[0]||dj_global;
-var _324=marr[1];
-if(!_323[_324]){
-dojo.raise("function \""+_324+"\" does not exist on \""+_323+"\"");
+var _32b=marr[0]||dj_global;
+var _32c=marr[1];
+if(!_32b[_32c]){
+dojo.raise("function \""+_32c+"\" does not exist on \""+_32b+"\"");
 }
-var _325=marr[2]||dj_global;
-var _326=marr[3];
+var _32d=marr[2]||dj_global;
+var _32e=marr[3];
 var msg=marr[6];
-var _328=marr[7];
-if(_328>-1){
-if(_328==0){
+var _330=marr[7];
+if(_330>-1){
+if(_330==0){
 return;
 }
 marr[7]--;
 }
-var _329;
+var _331;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _323[_324].apply(_323,to.args);
+return _32b[_32c].apply(_32b,to.args);
 }};
-to.args=_31f;
-var _32b=parseInt(marr[4]);
-var _32c=((!isNaN(_32b))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_327;
+var _333=parseInt(marr[4]);
+var _334=((!isNaN(_333))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _32f=false;
+var _337=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -37679,7 +29214,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_321(mcpy);
+_329(mcpy);
 },tod);
 }
 return;
@@ -37687,49 +29222,49 @@
 marr.last=cur;
 }
 }
-if(_326){
-_325[_326].call(_325,to);
+if(_32e){
+_32d[_32e].call(_32d,to);
 }else{
-if((_32c)&&((dojo.render.html)||(dojo.render.svg))){
+if((_334)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_323[_324].call(_323,to);
+_32b[_32c].call(_32b,to);
 }else{
-_323[_324].apply(_323,args);
+_32b[_32c].apply(_32b,args);
 }
-},_32b);
+},_333);
 }else{
 if(msg){
-_323[_324].call(_323,to);
+_32b[_32c].call(_32b,to);
 }else{
-_323[_324].apply(_323,args);
+_32b[_32c].apply(_32b,args);
 }
 }
 }
 };
-var _332=function(){
+var _33a=function(){
 if(this.squelch){
 try{
-return _321.apply(this,arguments);
+return _329.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _321.apply(this,arguments);
+return _329.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_332);
+dojo.lang.forEach(this.before.concat(new Array()),_33a);
 }
-var _333;
+var _33b;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_333=mi.proceed();
+_33b=mi.proceed();
 }else{
 if(this.methodfunc){
-_333=this.object[this.methodname].apply(this.object,args);
+_33b=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -37740,9 +29275,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_332);
+dojo.lang.forEach(this.after.concat(new Array()),_33a);
 }
-return (this.methodfunc)?_333:null;
+return (this.methodfunc)?_33b:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -37758,38 +29293,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_338,_339,_33a,_33b,_33c,_33d,once,_33f,rate,_341,_342){
-var arr=this.getArr(_33c);
+},addAdvice:function(_340,_341,_342,_343,_344,_345,once,_347,rate,_349,_34a){
+var arr=this.getArr(_344);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_338,_339,_33a,_33b,_33f,rate,_341,_342];
+var ao=[_340,_341,_342,_343,_347,rate,_349,_34a];
 if(once){
-if(this.hasAdvice(_338,_339,_33c,arr)>=0){
+if(this.hasAdvice(_340,_341,_344,arr)>=0){
 return;
 }
 }
-if(_33d=="first"){
+if(_345=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_345,_346,_347,arr){
+},hasAdvice:function(_34d,_34e,_34f,arr){
 if(!arr){
-arr=this.getArr(_347);
+arr=this.getArr(_34f);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _346=="object")?(new String(_346)).toString():_346;
+var aao=(typeof _34e=="object")?(new String(_34e)).toString():_34e;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_345)&&(a1o==aao)){
+if((arr[x][0]==_34d)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_34d,_34e,_34f,once){
-var arr=this.getArr(_34f);
-var ind=this.hasAdvice(_34d,_34e,_34f,arr);
+},removeAdvice:function(_355,_356,_357,once){
+var arr=this.getArr(_357);
+var ind=this.hasAdvice(_355,_356,_357,arr);
 if(ind==-1){
 return false;
 }
@@ -37798,73 +29333,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_34d,_34e,_34f,arr);
+ind=this.hasAdvice(_355,_356,_357,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_353){
-if(!this.topics[_353]){
-this.topics[_353]=new this.TopicImpl(_353);
+this.getTopic=function(_35b){
+if(!this.topics[_35b]){
+this.topics[_35b]=new this.TopicImpl(_35b);
 }
-return this.topics[_353];
+return this.topics[_35b];
 };
-this.registerPublisher=function(_354,obj,_356){
-var _354=this.getTopic(_354);
-_354.registerPublisher(obj,_356);
+this.registerPublisher=function(_35c,obj,_35e){
+var _35c=this.getTopic(_35c);
+_35c.registerPublisher(obj,_35e);
 };
-this.subscribe=function(_357,obj,_359){
-var _357=this.getTopic(_357);
-_357.subscribe(obj,_359);
+this.subscribe=function(_35f,obj,_361){
+var _35f=this.getTopic(_35f);
+_35f.subscribe(obj,_361);
 };
-this.unsubscribe=function(_35a,obj,_35c){
-var _35a=this.getTopic(_35a);
-_35a.unsubscribe(obj,_35c);
+this.unsubscribe=function(_362,obj,_364){
+var _362=this.getTopic(_362);
+_362.unsubscribe(obj,_364);
 };
-this.destroy=function(_35d){
-this.getTopic(_35d).destroy();
-delete this.topics[_35d];
+this.destroy=function(_365){
+this.getTopic(_365).destroy();
+delete this.topics[_365];
 };
-this.publishApply=function(_35e,args){
-var _35e=this.getTopic(_35e);
-_35e.sendMessage.apply(_35e,args);
+this.publishApply=function(_366,args){
+var _366=this.getTopic(_366);
+_366.sendMessage.apply(_366,args);
 };
-this.publish=function(_360,_361){
-var _360=this.getTopic(_360);
+this.publish=function(_368,_369){
+var _368=this.getTopic(_368);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_360.sendMessage.apply(_360,args);
+_368.sendMessage.apply(_368,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_364){
-this.topicName=_364;
-this.subscribe=function(_365,_366){
-var tf=_366||_365;
-var to=(!_366)?dj_global:_365;
+dojo.event.topic.TopicImpl=function(_36c){
+this.topicName=_36c;
+this.subscribe=function(_36d,_36e){
+var tf=_36e||_36d;
+var to=(!_36e)?dj_global:_36d;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_369,_36a){
-var tf=(!_36a)?_369:_36a;
-var to=(!_36a)?null:_369;
+this.unsubscribe=function(_371,_372){
+var tf=(!_372)?_371:_372;
+var to=(!_372)?null:_371;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_36d){
-this._getJoinPoint().squelch=_36d;
+this.setSquelch=function(_375){
+this._getJoinPoint().squelch=_375;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_36e,_36f){
-dojo.event.connect(_36e,_36f,this,"sendMessage");
+this.registerPublisher=function(_376,_377){
+dojo.event.connect(_376,_377,this,"sendMessage");
 };
-this.sendMessage=function(_370){
+this.sendMessage=function(_378){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -37887,12 +29422,12 @@
 catch(e){
 }
 }
-this.clobber=function(_373){
+this.clobber=function(_37b){
 var na;
 var tna;
-if(_373){
-tna=_373.all||_373.getElementsByTagName("*");
-na=[_373];
+if(_37b){
+tna=_37b.all||_37b.getElementsByTagName("*");
+na=[_37b];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -37907,7 +29442,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _377={};
+var _37f={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -37958,9 +29493,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _37c=0;
-this.normalizedEventName=function(_37d){
-switch(_37d){
+var _384=0;
+this.normalizedEventName=function(_385){
+switch(_385){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -37969,10 +29504,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _37d;
+return _385;
 break;
 default:
-var lcn=_37d.toLowerCase();
+var lcn=_385.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -37992,88 +29527,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_382){
+this.addClobberNodeAttrs=function(node,_38a){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_382.length;x++){
-node.__clobberAttrs__.push(_382[x]);
+for(var x=0;x<_38a.length;x++){
+node.__clobberAttrs__.push(_38a[x]);
 }
 };
-this.removeListener=function(node,_385,fp,_387){
-if(!_387){
-var _387=false;
+this.removeListener=function(node,_38d,fp,_38f){
+if(!_38f){
+var _38f=false;
 }
-_385=dojo.event.browser.normalizedEventName(_385);
-if(_385=="key"){
+_38d=dojo.event.browser.normalizedEventName(_38d);
+if(_38d=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_387);
+this.removeListener(node,"onkeydown",fp,_38f);
 }
-_385="keypress";
+_38d="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_385,fp,_387);
+node.removeEventListener(_38d,fp,_38f);
 }
 };
-this.addListener=function(node,_389,fp,_38b,_38c){
+this.addListener=function(node,_391,fp,_393,_394){
 if(!node){
 return;
 }
-if(!_38b){
-var _38b=false;
+if(!_393){
+var _393=false;
 }
-_389=dojo.event.browser.normalizedEventName(_389);
-if(_389=="key"){
+_391=dojo.event.browser.normalizedEventName(_391);
+if(_391=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_38b,_38c);
+this.addListener(node,"onkeydown",fp,_393,_394);
 }
-_389="keypress";
+_391="keypress";
 }
-if(!_38c){
-var _38d=function(evt){
+if(!_394){
+var _395=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_38b){
+if(_393){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_38d=fp;
+_395=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_389,_38d,_38b);
-return _38d;
+node.addEventListener(_391,_395,_393);
+return _395;
 }else{
-_389="on"+_389;
-if(typeof node[_389]=="function"){
-var _390=node[_389];
-node[_389]=function(e){
-_390(e);
-return _38d(e);
+_391="on"+_391;
+if(typeof node[_391]=="function"){
+var _398=node[_391];
+node[_391]=function(e){
+_398(e);
+return _395(e);
 };
 }else{
-node[_389]=_38d;
+node[_391]=_395;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_389]);
+this.addClobberNodeAttrs(node,[_391]);
 }
-return _38d;
+return _395;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_393,_394){
-if(typeof _393!="function"){
-dojo.raise("listener not a function: "+_393);
+this.callListener=function(_39b,_39c){
+if(typeof _39b!="function"){
+dojo.raise("listener not a function: "+_39b);
 }
-dojo.event.browser.currentEvent.currentTarget=_394;
-return _393.call(_394,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_39c;
+return _39b.call(_39c,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -38086,7 +29621,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_397){
+this.fixEvent=function(evt,_39f){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -38163,14 +29698,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _399=evt.keyCode;
-if(_399>=65&&_399<=90&&evt.shiftKey==false){
-_399+=32;
+var _3a1=evt.keyCode;
+if(_3a1>=65&&_3a1<=90&&evt.shiftKey==false){
+_3a1+=32;
 }
-if(_399>=1&&_399<=26&&evt.ctrlKey){
-_399+=96;
+if(_3a1>=1&&_3a1<=26&&evt.ctrlKey){
+_3a1+=96;
 }
-evt.key=String.fromCharCode(_399);
+evt.key=String.fromCharCode(_3a1);
 }
 }
 }else{
@@ -38196,11 +29731,11 @@
 evt.key=evt.which;
 break;
 default:
-var _399=evt.which;
+var _3a1=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_399+=32;
+_3a1+=32;
 }
-evt.key=String.fromCharCode(_399);
+evt.key=String.fromCharCode(_3a1);
 }
 }
 }
@@ -38305,7 +29840,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_397?_397:evt.srcElement);
+evt.currentTarget=(_39f?_39f:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -38314,12 +29849,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _39b=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _3a3=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_39b.scrollLeft||0);
+evt.pageX=evt.clientX+(_3a3.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_39b.scrollTop||0);
+evt.pageY=evt.clientY+(_3a3.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -38350,6 +29885,8 @@
 
 __CPAN_EDITION__ event_and_io build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -38372,6 +29909,7 @@
 ../src/event/topic.js
 ../src/event/browser.js
 ../src/event/__package__.js
+
 __CPAN_EDITION__ kitchen_sink dojo.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -38408,7 +29946,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -39204,7 +30742,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -40323,7 +31863,7 @@
 if(dojo.render.html.ie){
 dojo.html.getComputedStyle=function(node,_1cf,_1d0){
 node=dojo.byId(node);
-if(!node||!node.style){
+if(!node||!node.currentStyle){
 return _1d0;
 }
 return node.currentStyle[dojo.html.toCamelCase(_1cf)];
@@ -41776,20 +33316,28 @@
 };
 dojo.provide("dojo.lang.func");
 dojo.lang.hitch=function(_361,_362){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
 var fcn=(dojo.lang.isString(_362)?_361[_362]:_362)||function(){
 };
 return function(){
-return fcn.apply(_361,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_361,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_364,_365,_366){
-var nso=(_365||dojo.lang.anon);
-if((_366)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_368,_369,_36a){
+var nso=(_369||dojo.lang.anon);
+if((_36a)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_364){
+if(nso[x]===_368){
 return x;
 }
 }
@@ -41801,50 +33349,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_364;
+nso[ret]=_368;
 return ret;
 };
-dojo.lang.forward=function(_36a){
+dojo.lang.forward=function(_36e){
 return function(){
-return this[_36a].apply(this,arguments);
+return this[_36e].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_36b,func){
-var _36d=[];
-_36b=_36b||dj_global;
+dojo.lang.curry=function(_36f,func){
+var _371=[];
+_36f=_36f||dj_global;
 if(dojo.lang.isString(func)){
-func=_36b[func];
+func=_36f[func];
 }
 for(var x=2;x<arguments.length;x++){
-_36d.push(arguments[x]);
+_371.push(arguments[x]);
 }
-var _36f=(func["__preJoinArity"]||func.length)-_36d.length;
-function gather(_370,_371,_372){
-var _373=_372;
-var _374=_371.slice(0);
-for(var x=0;x<_370.length;x++){
-_374.push(_370[x]);
+var _373=(func["__preJoinArity"]||func.length)-_371.length;
+function gather(_374,_375,_376){
+var _377=_376;
+var _378=_375.slice(0);
+for(var x=0;x<_374.length;x++){
+_378.push(_374[x]);
 }
-_372=_372-_370.length;
-if(_372<=0){
-var res=func.apply(_36b,_374);
-_372=_373;
+_376=_376-_374.length;
+if(_376<=0){
+var res=func.apply(_36f,_378);
+_376=_377;
 return res;
 }else{
 return function(){
-return gather(arguments,_374,_372);
+return gather(arguments,_378,_376);
 };
 }
 }
-return gather([],_36d,_36f);
+return gather([],_371,_373);
 };
-dojo.lang.curryArguments=function(_377,func,args,_37a){
-var _37b=[];
-var x=_37a||0;
-for(x=_37a;x<args.length;x++){
-_37b.push(args[x]);
+dojo.lang.curryArguments=function(_37b,func,args,_37e){
+var _37f=[];
+var x=_37e||0;
+for(x=_37e;x<args.length;x++){
+_37f.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_377,func].concat(_37b));
+return dojo.lang.curry.apply(dojo.lang,[_37b,func].concat(_37f));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -41861,37 +33409,37 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_381,_382){
+dojo.lang.delayThese=function(farr,cb,_385,_386){
 if(!farr.length){
-if(typeof _382=="function"){
-_382();
+if(typeof _386=="function"){
+_386();
 }
 return;
 }
-if((typeof _381=="undefined")&&(typeof cb=="number")){
-_381=cb;
+if((typeof _385=="undefined")&&(typeof cb=="number")){
+_385=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_381){
-_381=0;
+if(!_385){
+_385=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_381,_382);
-},_381);
+dojo.lang.delayThese(farr,cb,_385,_386);
+},_385);
 };
 dojo.provide("dojo.lfx.Animation");
-dojo.lfx.Line=function(_383,end){
-this.start=_383;
+dojo.lfx.Line=function(_387,end){
+this.start=_387;
 this.end=end;
-if(dojo.lang.isArray(_383)){
+if(dojo.lang.isArray(_387)){
 var diff=[];
 dojo.lang.forEach(this.start,function(s,i){
 diff[i]=this.end[i]-s;
@@ -41904,7 +33452,7 @@
 return res;
 };
 }else{
-var diff=end-_383;
+var diff=end-_387;
 this.getValue=function(n){
 return (diff*n)+this.start;
 };
@@ -41930,17 +33478,17 @@
 };
 dojo.lfx.IAnimation=function(){
 };
-dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_393,_394){
-if(!_394){
-_394=_393;
-_393=this;
+dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_397,_398){
+if(!_398){
+_398=_397;
+_397=this;
 }
-_394=dojo.lang.hitch(_393,_394);
-var _395=this[evt]||function(){
+_398=dojo.lang.hitch(_397,_398);
+var _399=this[evt]||function(){
 };
 this[evt]=function(){
-var ret=_395.apply(this,arguments);
-_394.apply(this,arguments);
+var ret=_399.apply(this,arguments);
+_398.apply(this,arguments);
 return ret;
 };
 return this;
@@ -41949,57 +33497,57 @@
 this[evt].apply(this,(args||[]));
 }
 return this;
-},repeat:function(_399){
-this.repeatCount=_399;
+},repeat:function(_39d){
+this.repeatCount=_39d;
 return this;
 },_active:false,_paused:false});
-dojo.lfx.Animation=function(_39a,_39b,_39c,_39d,_39e,rate){
+dojo.lfx.Animation=function(_39e,_39f,_3a0,_3a1,_3a2,rate){
 dojo.lfx.IAnimation.call(this);
-if(dojo.lang.isNumber(_39a)||(!_39a&&_39b.getValue)){
-rate=_39e;
-_39e=_39d;
-_39d=_39c;
-_39c=_39b;
-_39b=_39a;
-_39a=null;
+if(dojo.lang.isNumber(_39e)||(!_39e&&_39f.getValue)){
+rate=_3a2;
+_3a2=_3a1;
+_3a1=_3a0;
+_3a0=_39f;
+_39f=_39e;
+_39e=null;
 }else{
-if(_39a.getValue||dojo.lang.isArray(_39a)){
-rate=_39d;
-_39e=_39c;
-_39d=_39b;
-_39c=_39a;
-_39b=null;
-_39a=null;
+if(_39e.getValue||dojo.lang.isArray(_39e)){
+rate=_3a1;
+_3a2=_3a0;
+_3a1=_39f;
+_3a0=_39e;
+_39f=null;
+_39e=null;
 }
 }
-if(dojo.lang.isArray(_39c)){
-this.curve=new dojo.lfx.Line(_39c[0],_39c[1]);
+if(dojo.lang.isArray(_3a0)){
+this.curve=new dojo.lfx.Line(_3a0[0],_3a0[1]);
 }else{
-this.curve=_39c;
+this.curve=_3a0;
 }
-if(_39b!=null&&_39b>0){
-this.duration=_39b;
+if(_39f!=null&&_39f>0){
+this.duration=_39f;
 }
-if(_39e){
-this.repeatCount=_39e;
+if(_3a2){
+this.repeatCount=_3a2;
 }
 if(rate){
 this.rate=rate;
 }
-if(_39a){
+if(_39e){
 dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","onStop","onAnimate"],function(item){
-if(_39a[item]){
-this.connect(item,_39a[item]);
+if(_39e[item]){
+this.connect(item,_39e[item]);
 }
 },this);
 }
-if(_39d&&dojo.lang.isFunction(_39d)){
-this.easing=_39d;
+if(_3a1&&dojo.lang.isFunction(_3a1)){
+this.easing=_3a1;
 }
 };
 dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_3a1,_3a2){
-if(_3a2){
+dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_3a5,_3a6){
+if(_3a6){
 clearTimeout(this._timer);
 this._active=false;
 this._paused=false;
@@ -42011,10 +33559,10 @@
 }
 this.fire("handler",["beforeBegin"]);
 this.fire("beforeBegin");
-if(_3a1>0){
+if(_3a5>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_3a2);
-}),_3a1);
+this.play(null,_3a6);
+}),_3a5);
 return this;
 }
 this._startTime=new Date().valueOf();
@@ -42025,16 +33573,16 @@
 this._active=true;
 this._paused=false;
 var step=this._percent/100;
-var _3a4=this.curve.getValue(step);
+var _3a8=this.curve.getValue(step);
 if(this._percent==0){
 if(!this._startRepeatCount){
 this._startRepeatCount=this.repeatCount;
 }
-this.fire("handler",["begin",_3a4]);
-this.fire("onBegin",[_3a4]);
+this.fire("handler",["begin",_3a8]);
+this.fire("onBegin",[_3a8]);
 }
-this.fire("handler",["play",_3a4]);
-this.fire("onPlay",[_3a4]);
+this.fire("handler",["play",_3a8]);
+this.fire("onPlay",[_3a8]);
 this._cycle();
 return this;
 },pause:function(){
@@ -42043,28 +33591,28 @@
 return this;
 }
 this._paused=true;
-var _3a5=this.curve.getValue(this._percent/100);
-this.fire("handler",["pause",_3a5]);
-this.fire("onPause",[_3a5]);
+var _3a9=this.curve.getValue(this._percent/100);
+this.fire("handler",["pause",_3a9]);
+this.fire("onPause",[_3a9]);
 return this;
-},gotoPercent:function(pct,_3a7){
+},gotoPercent:function(pct,_3ab){
 clearTimeout(this._timer);
 this._active=true;
 this._paused=true;
 this._percent=pct;
-if(_3a7){
+if(_3ab){
 this.play();
 }
 return this;
-},stop:function(_3a8){
+},stop:function(_3ac){
 clearTimeout(this._timer);
 var step=this._percent/100;
-if(_3a8){
+if(_3ac){
 step=1;
 }
-var _3aa=this.curve.getValue(step);
-this.fire("handler",["stop",_3aa]);
-this.fire("onStop",[_3aa]);
+var _3ae=this.curve.getValue(step);
+this.fire("handler",["stop",_3ae]);
+this.fire("onStop",[_3ae]);
 this._active=false;
 this._paused=false;
 return this;
@@ -42089,9 +33637,9 @@
 if((this.easing)&&(dojo.lang.isFunction(this.easing))){
 step=this.easing(step);
 }
-var _3ad=this.curve.getValue(step);
-this.fire("handler",["animate",_3ad]);
-this.fire("onAnimate",[_3ad]);
+var _3b1=this.curve.getValue(step);
+this.fire("handler",["animate",_3b1]);
+this.fire("onAnimate",[_3b1]);
 if(step<1){
 this._timer=setTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
 }else{
@@ -42115,44 +33663,44 @@
 }
 return this;
 }});
-dojo.lfx.Combine=function(_3ae){
+dojo.lfx.Combine=function(_3b2){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._animsEnded=0;
-var _3af=arguments;
-if(_3af.length==1&&(dojo.lang.isArray(_3af[0])||dojo.lang.isArrayLike(_3af[0]))){
-_3af=_3af[0];
+var _3b3=arguments;
+if(_3b3.length==1&&(dojo.lang.isArray(_3b3[0])||dojo.lang.isArrayLike(_3b3[0]))){
+_3b3=_3b3[0];
 }
-dojo.lang.forEach(_3af,function(anim){
+dojo.lang.forEach(_3b3,function(anim){
 this._anims.push(anim);
 anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
 },this);
 };
 dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_3b1,_3b2){
+dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_3b5,_3b6){
 if(!this._anims.length){
 return this;
 }
 this.fire("beforeBegin");
-if(_3b1>0){
+if(_3b5>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_3b2);
-}),_3b1);
+this.play(null,_3b6);
+}),_3b5);
 return this;
 }
-if(_3b2||this._anims[0].percent==0){
+if(_3b6||this._anims[0].percent==0){
 this.fire("onBegin");
 }
 this.fire("onPlay");
-this._animsCall("play",null,_3b2);
+this._animsCall("play",null,_3b6);
 return this;
 },pause:function(){
 this.fire("onPause");
 this._animsCall("pause");
 return this;
-},stop:function(_3b3){
+},stop:function(_3b7){
 this.fire("onStop");
-this._animsCall("stop",_3b3);
+this._animsCall("stop",_3b7);
 return this;
 },_onAnimsEnded:function(){
 this._animsEnded++;
@@ -42160,31 +33708,31 @@
 this.fire("onEnd");
 }
 return this;
-},_animsCall:function(_3b4){
+},_animsCall:function(_3b8){
 var args=[];
 if(arguments.length>1){
 for(var i=1;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 }
-var _3b7=this;
+var _3bb=this;
 dojo.lang.forEach(this._anims,function(anim){
-anim[_3b4](args);
-},_3b7);
+anim[_3b8](args);
+},_3bb);
 return this;
 }});
-dojo.lfx.Chain=function(_3b9){
+dojo.lfx.Chain=function(_3bd){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._currAnim=-1;
-var _3ba=arguments;
-if(_3ba.length==1&&(dojo.lang.isArray(_3ba[0])||dojo.lang.isArrayLike(_3ba[0]))){
-_3ba=_3ba[0];
+var _3be=arguments;
+if(_3be.length==1&&(dojo.lang.isArray(_3be[0])||dojo.lang.isArrayLike(_3be[0]))){
+_3be=_3be[0];
 }
-var _3bb=this;
-dojo.lang.forEach(_3ba,function(anim,i,_3be){
+var _3bf=this;
+dojo.lang.forEach(_3be,function(anim,i,_3c2){
 this._anims.push(anim);
-if(i<_3be.length-1){
+if(i<_3c2.length-1){
 anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
 }else{
 anim.connect("onEnd",dojo.lang.hitch(this,function(){
@@ -42194,28 +33742,28 @@
 },this);
 };
 dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_3bf,_3c0){
+dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_3c3,_3c4){
 if(!this._anims.length){
 return this;
 }
-if(_3c0||!this._anims[this._currAnim]){
+if(_3c4||!this._anims[this._currAnim]){
 this._currAnim=0;
 }
-var _3c1=this._anims[this._currAnim];
+var _3c5=this._anims[this._currAnim];
 this.fire("beforeBegin");
-if(_3bf>0){
+if(_3c3>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_3c0);
-}),_3bf);
+this.play(null,_3c4);
+}),_3c3);
 return this;
 }
-if(_3c1){
+if(_3c5){
 if(this._currAnim==0){
 this.fire("handler",["begin",this._currAnim]);
 this.fire("onBegin",[this._currAnim]);
 }
 this.fire("onPlay",[this._currAnim]);
-_3c1.play(null,_3c0);
+_3c5.play(null,_3c4);
 }
 return this;
 },pause:function(){
@@ -42231,9 +33779,9 @@
 if(this._currAnim==-1){
 this._currAnim=0;
 }
-var _3c2=this._anims[this._currAnim];
-if(_3c2){
-if(!_3c2._active||_3c2._paused){
+var _3c6=this._anims[this._currAnim];
+if(_3c6){
+if(!_3c6._active||_3c6._paused){
 this.play();
 }else{
 this.pause();
@@ -42241,12 +33789,12 @@
 }
 return this;
 },stop:function(){
-var _3c3=this._anims[this._currAnim];
-if(_3c3){
-_3c3.stop();
+var _3c7=this._anims[this._currAnim];
+if(_3c7){
+_3c7.stop();
 this.fire("onStop",[this._currAnim]);
 }
-return _3c3;
+return _3c7;
 },_playNext:function(){
 if(this._currAnim==-1||this._anims.length==0){
 return this;
@@ -42257,82 +33805,82 @@
 }
 return this;
 }});
-dojo.lfx.combine=function(_3c4){
-var _3c5=arguments;
+dojo.lfx.combine=function(_3c8){
+var _3c9=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_3c5=arguments[0];
+_3c9=arguments[0];
 }
-if(_3c5.length==1){
-return _3c5[0];
+if(_3c9.length==1){
+return _3c9[0];
 }
-return new dojo.lfx.Combine(_3c5);
+return new dojo.lfx.Combine(_3c9);
 };
-dojo.lfx.chain=function(_3c6){
-var _3c7=arguments;
+dojo.lfx.chain=function(_3ca){
+var _3cb=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_3c7=arguments[0];
+_3cb=arguments[0];
 }
-if(_3c7.length==1){
-return _3c7[0];
+if(_3cb.length==1){
+return _3cb[0];
 }
-return new dojo.lfx.Chain(_3c7);
+return new dojo.lfx.Chain(_3cb);
 };
 dojo.provide("dojo.html.color");
 dojo.html.getBackgroundColor=function(node){
 node=dojo.byId(node);
-var _3c9;
+var _3cd;
 do{
-_3c9=dojo.html.getStyle(node,"background-color");
-if(_3c9.toLowerCase()=="rgba(0, 0, 0, 0)"){
-_3c9="transparent";
+_3cd=dojo.html.getStyle(node,"background-color");
+if(_3cd.toLowerCase()=="rgba(0, 0, 0, 0)"){
+_3cd="transparent";
 }
 if(node==document.getElementsByTagName("body")[0]){
 node=null;
 break;
 }
 node=node.parentNode;
-}while(node&&dojo.lang.inArray(["transparent",""],_3c9));
-if(_3c9=="transparent"){
-_3c9=[255,255,255,0];
+}while(node&&dojo.lang.inArray(["transparent",""],_3cd));
+if(_3cd=="transparent"){
+_3cd=[255,255,255,0];
 }else{
-_3c9=dojo.gfx.color.extractRGB(_3c9);
+_3cd=dojo.gfx.color.extractRGB(_3cd);
 }
-return _3c9;
+return _3cd;
 };
 dojo.provide("dojo.lfx.html");
-dojo.lfx.html._byId=function(_3ca){
-if(!_3ca){
+dojo.lfx.html._byId=function(_3ce){
+if(!_3ce){
 return [];
 }
-if(dojo.lang.isArrayLike(_3ca)){
-if(!_3ca.alreadyChecked){
+if(dojo.lang.isArrayLike(_3ce)){
+if(!_3ce.alreadyChecked){
 var n=[];
-dojo.lang.forEach(_3ca,function(node){
+dojo.lang.forEach(_3ce,function(node){
 n.push(dojo.byId(node));
 });
 n.alreadyChecked=true;
 return n;
 }else{
-return _3ca;
+return _3ce;
 }
 }else{
 var n=[];
-n.push(dojo.byId(_3ca));
+n.push(dojo.byId(_3ce));
 n.alreadyChecked=true;
 return n;
 }
 };
-dojo.lfx.html.propertyAnimation=function(_3cd,_3ce,_3cf,_3d0,_3d1){
-_3cd=dojo.lfx.html._byId(_3cd);
-var _3d2={"propertyMap":_3ce,"nodes":_3cd,"duration":_3cf,"easing":_3d0||dojo.lfx.easeDefault};
-var _3d3=function(args){
+dojo.lfx.html.propertyAnimation=function(_3d1,_3d2,_3d3,_3d4,_3d5){
+_3d1=dojo.lfx.html._byId(_3d1);
+var _3d6={"propertyMap":_3d2,"nodes":_3d1,"duration":_3d3,"easing":_3d4||dojo.lfx.easeDefault};
+var _3d7=function(args){
 if(args.nodes.length==1){
 var pm=args.propertyMap;
 if(!dojo.lang.isArray(args.propertyMap)){
 var parr=[];
-for(var _3d7 in pm){
-pm[_3d7].property=_3d7;
-parr.push(pm[_3d7]);
+for(var _3db in pm){
+pm[_3db].property=_3db;
+parr.push(pm[_3db]);
 }
 pm=args.propertyMap=parr;
 }
@@ -42347,24 +33895,24 @@
 });
 }
 };
-var _3d9=function(_3da){
-var _3db=[];
-dojo.lang.forEach(_3da,function(c){
-_3db.push(Math.round(c));
+var _3dd=function(_3de){
+var _3df=[];
+dojo.lang.forEach(_3de,function(c){
+_3df.push(Math.round(c));
 });
-return _3db;
+return _3df;
 };
-var _3dd=function(n,_3df){
+var _3e1=function(n,_3e3){
 n=dojo.byId(n);
 if(!n||!n.style){
 return;
 }
-for(var s in _3df){
+for(var s in _3e3){
 try{
 if(s=="opacity"){
-dojo.html.setOpacity(n,_3df[s]);
+dojo.html.setOpacity(n,_3e3[s]);
 }else{
-n.style[s]=_3df[s];
+n.style[s]=_3e3[s];
 }
 }
 catch(e){
@@ -42372,10 +33920,10 @@
 }
 }
 };
-var _3e1=function(_3e2){
-this._properties=_3e2;
-this.diffs=new Array(_3e2.length);
-dojo.lang.forEach(_3e2,function(prop,i){
+var _3e5=function(_3e6){
+this._properties=_3e6;
+this.diffs=new Array(_3e6.length);
+dojo.lang.forEach(_3e6,function(prop,i){
 if(dojo.lang.isFunction(prop.start)){
 prop.start=prop.start(prop,i);
 }
@@ -42396,43 +33944,43 @@
 this.getValue=function(n){
 var ret={};
 dojo.lang.forEach(this._properties,function(prop,i){
-var _3e9=null;
+var _3ed=null;
 if(dojo.lang.isArray(prop.start)){
 }else{
 if(prop.start instanceof dojo.gfx.color.Color){
-_3e9=(prop.units||"rgb")+"(";
+_3ed=(prop.units||"rgb")+"(";
 for(var j=0;j<prop.startRgb.length;j++){
-_3e9+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
+_3ed+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
 }
-_3e9+=")";
+_3ed+=")";
 }else{
-_3e9=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
+_3ed=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
 }
 }
-ret[dojo.html.toCamelCase(prop.property)]=_3e9;
+ret[dojo.html.toCamelCase(prop.property)]=_3ed;
 },this);
 return ret;
 };
 };
 var anim=new dojo.lfx.Animation({beforeBegin:function(){
-_3d3(_3d2);
-anim.curve=new _3e1(_3d2.propertyMap);
-},onAnimate:function(_3ec){
-dojo.lang.forEach(_3d2.nodes,function(node){
-_3dd(node,_3ec);
+_3d7(_3d6);
+anim.curve=new _3e5(_3d6.propertyMap);
+},onAnimate:function(_3f0){
+dojo.lang.forEach(_3d6.nodes,function(node){
+_3e1(node,_3f0);
 });
-}},_3d2.duration,null,_3d2.easing);
-if(_3d1){
-for(var x in _3d1){
-if(dojo.lang.isFunction(_3d1[x])){
-anim.connect(x,anim,_3d1[x]);
+}},_3d6.duration,null,_3d6.easing);
+if(_3d5){
+for(var x in _3d5){
+if(dojo.lang.isFunction(_3d5[x])){
+anim.connect(x,anim,_3d5[x]);
 }
 }
 }
 return anim;
 };
-dojo.lfx.html._makeFadeable=function(_3ef){
-var _3f0=function(node){
+dojo.lfx.html._makeFadeable=function(_3f3){
+var _3f4=function(node){
 if(dojo.render.html.ie){
 if((node.style.zoom.length==0)&&(dojo.html.getStyle(node,"zoom")=="normal")){
 node.style.zoom="1";
@@ -42442,100 +33990,100 @@
 }
 }
 };
-if(dojo.lang.isArrayLike(_3ef)){
-dojo.lang.forEach(_3ef,_3f0);
+if(dojo.lang.isArrayLike(_3f3)){
+dojo.lang.forEach(_3f3,_3f4);
 }else{
-_3f0(_3ef);
+_3f4(_3f3);
 }
 };
-dojo.lfx.html.fade=function(_3f2,_3f3,_3f4,_3f5,_3f6){
-_3f2=dojo.lfx.html._byId(_3f2);
-var _3f7={property:"opacity"};
-if(!dj_undef("start",_3f3)){
-_3f7.start=_3f3.start;
+dojo.lfx.html.fade=function(_3f6,_3f7,_3f8,_3f9,_3fa){
+_3f6=dojo.lfx.html._byId(_3f6);
+var _3fb={property:"opacity"};
+if(!dj_undef("start",_3f7)){
+_3fb.start=_3f7.start;
 }else{
-_3f7.start=function(){
-return dojo.html.getOpacity(_3f2[0]);
+_3fb.start=function(){
+return dojo.html.getOpacity(_3f6[0]);
 };
 }
-if(!dj_undef("end",_3f3)){
-_3f7.end=_3f3.end;
+if(!dj_undef("end",_3f7)){
+_3fb.end=_3f7.end;
 }else{
 dojo.raise("dojo.lfx.html.fade needs an end value");
 }
-var anim=dojo.lfx.propertyAnimation(_3f2,[_3f7],_3f4,_3f5);
+var anim=dojo.lfx.propertyAnimation(_3f6,[_3fb],_3f8,_3f9);
 anim.connect("beforeBegin",function(){
-dojo.lfx.html._makeFadeable(_3f2);
+dojo.lfx.html._makeFadeable(_3f6);
 });
-if(_3f6){
+if(_3fa){
 anim.connect("onEnd",function(){
-_3f6(_3f2,anim);
+_3fa(_3f6,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.fadeIn=function(_3f9,_3fa,_3fb,_3fc){
-return dojo.lfx.html.fade(_3f9,{end:1},_3fa,_3fb,_3fc);
+dojo.lfx.html.fadeIn=function(_3fd,_3fe,_3ff,_400){
+return dojo.lfx.html.fade(_3fd,{end:1},_3fe,_3ff,_400);
 };
-dojo.lfx.html.fadeOut=function(_3fd,_3fe,_3ff,_400){
-return dojo.lfx.html.fade(_3fd,{end:0},_3fe,_3ff,_400);
+dojo.lfx.html.fadeOut=function(_401,_402,_403,_404){
+return dojo.lfx.html.fade(_401,{end:0},_402,_403,_404);
 };
-dojo.lfx.html.fadeShow=function(_401,_402,_403,_404){
-_401=dojo.lfx.html._byId(_401);
-dojo.lang.forEach(_401,function(node){
+dojo.lfx.html.fadeShow=function(_405,_406,_407,_408){
+_405=dojo.lfx.html._byId(_405);
+dojo.lang.forEach(_405,function(node){
 dojo.html.setOpacity(node,0);
 });
-var anim=dojo.lfx.html.fadeIn(_401,_402,_403,_404);
+var anim=dojo.lfx.html.fadeIn(_405,_406,_407,_408);
 anim.connect("beforeBegin",function(){
-if(dojo.lang.isArrayLike(_401)){
-dojo.lang.forEach(_401,dojo.html.show);
+if(dojo.lang.isArrayLike(_405)){
+dojo.lang.forEach(_405,dojo.html.show);
 }else{
-dojo.html.show(_401);
+dojo.html.show(_405);
 }
 });
 return anim;
 };
-dojo.lfx.html.fadeHide=function(_407,_408,_409,_40a){
-var anim=dojo.lfx.html.fadeOut(_407,_408,_409,function(){
-if(dojo.lang.isArrayLike(_407)){
-dojo.lang.forEach(_407,dojo.html.hide);
+dojo.lfx.html.fadeHide=function(_40b,_40c,_40d,_40e){
+var anim=dojo.lfx.html.fadeOut(_40b,_40c,_40d,function(){
+if(dojo.lang.isArrayLike(_40b)){
+dojo.lang.forEach(_40b,dojo.html.hide);
 }else{
-dojo.html.hide(_407);
+dojo.html.hide(_40b);
 }
-if(_40a){
-_40a(_407,anim);
+if(_40e){
+_40e(_40b,anim);
 }
 });
 return anim;
 };
-dojo.lfx.html.wipeIn=function(_40c,_40d,_40e,_40f){
-_40c=dojo.lfx.html._byId(_40c);
-var _410=[];
-dojo.lang.forEach(_40c,function(node){
-var _412={};
-var _413,_414,_415;
+dojo.lfx.html.wipeIn=function(_410,_411,_412,_413){
+_410=dojo.lfx.html._byId(_410);
+var _414=[];
+dojo.lang.forEach(_410,function(node){
+var _416={};
+var _417,_418,_419;
 with(node.style){
-_413=top;
-_414=left;
-_415=position;
+_417=top;
+_418=left;
+_419=position;
 top="-9999px";
 left="-9999px";
 position="absolute";
 display="";
 }
-var _416=dojo.html.getBorderBox(node).height;
+var _41a=dojo.html.getBorderBox(node).height;
 with(node.style){
-top=_413;
-left=_414;
-position=_415;
+top=_417;
+left=_418;
+position=_419;
 display="none";
 }
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){
-return _416;
-}}},_40d,_40e);
+return _41a;
+}}},_411,_412);
 anim.connect("beforeBegin",function(){
-_412.overflow=node.style.overflow;
-_412.height=node.style.height;
+_416.overflow=node.style.overflow;
+_416.height=node.style.height;
 with(node.style){
 overflow="hidden";
 height="1px";
@@ -42544,27 +34092,27 @@
 });
 anim.connect("onEnd",function(){
 with(node.style){
-overflow=_412.overflow;
-height=_412.height;
+overflow=_416.overflow;
+height=_416.height;
 }
-if(_40f){
-_40f(node,anim);
+if(_413){
+_413(node,anim);
 }
 });
-_410.push(anim);
+_414.push(anim);
 });
-return dojo.lfx.combine(_410);
+return dojo.lfx.combine(_414);
 };
-dojo.lfx.html.wipeOut=function(_418,_419,_41a,_41b){
-_418=dojo.lfx.html._byId(_418);
-var _41c=[];
-dojo.lang.forEach(_418,function(node){
-var _41e={};
+dojo.lfx.html.wipeOut=function(_41c,_41d,_41e,_41f){
+_41c=dojo.lfx.html._byId(_41c);
+var _420=[];
+dojo.lang.forEach(_41c,function(node){
+var _422={};
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:function(){
 return dojo.html.getContentBox(node).height;
-},end:1}},_419,_41a,{"beforeBegin":function(){
-_41e.overflow=node.style.overflow;
-_41e.height=node.style.height;
+},end:1}},_41d,_41e,{"beforeBegin":function(){
+_422.overflow=node.style.overflow;
+_422.height=node.style.height;
 with(node.style){
 overflow="hidden";
 }
@@ -42572,247 +34120,247 @@
 },"onEnd":function(){
 dojo.html.hide(node);
 with(node.style){
-overflow=_41e.overflow;
-height=_41e.height;
+overflow=_422.overflow;
+height=_422.height;
 }
-if(_41b){
-_41b(node,anim);
+if(_41f){
+_41f(node,anim);
 }
 }});
-_41c.push(anim);
+_420.push(anim);
 });
-return dojo.lfx.combine(_41c);
+return dojo.lfx.combine(_420);
 };
-dojo.lfx.html.slideTo=function(_420,_421,_422,_423,_424){
-_420=dojo.lfx.html._byId(_420);
-var _425=[];
-var _426=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_421)){
+dojo.lfx.html.slideTo=function(_424,_425,_426,_427,_428){
+_424=dojo.lfx.html._byId(_424);
+var _429=[];
+var _42a=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_425)){
 dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
-_421={top:_421[0],left:_421[1]};
+_425={top:_425[0],left:_425[1]};
 }
-dojo.lang.forEach(_420,function(node){
+dojo.lang.forEach(_424,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _42b=node;
+var _42f=node;
 return function(){
-var pos=_426(_42b,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_426(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_426(node,"left"))||0);
+var pos=_42a(_42f,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_42a(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_42a(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_42b,true);
-dojo.html.setStyleAttributes(_42b,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_42f,true);
+dojo.html.setStyleAttributes(_42f,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_421.top||0)},"left":{start:left,end:(_421.left||0)}},_422,_423,{"beforeBegin":init});
-if(_424){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_425.top||0)},"left":{start:left,end:(_425.left||0)}},_426,_427,{"beforeBegin":init});
+if(_428){
 anim.connect("onEnd",function(){
-_424(_420,anim);
+_428(_424,anim);
 });
 }
-_425.push(anim);
+_429.push(anim);
 });
-return dojo.lfx.combine(_425);
+return dojo.lfx.combine(_429);
 };
-dojo.lfx.html.slideBy=function(_42f,_430,_431,_432,_433){
-_42f=dojo.lfx.html._byId(_42f);
-var _434=[];
-var _435=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_430)){
+dojo.lfx.html.slideBy=function(_433,_434,_435,_436,_437){
+_433=dojo.lfx.html._byId(_433);
+var _438=[];
+var _439=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_434)){
 dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
-_430={top:_430[0],left:_430[1]};
+_434={top:_434[0],left:_434[1]};
 }
-dojo.lang.forEach(_42f,function(node){
+dojo.lang.forEach(_433,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _43a=node;
+var _43e=node;
 return function(){
-var pos=_435(_43a,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_435(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_435(node,"left"))||0);
+var pos=_439(_43e,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_439(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_439(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_43a,true);
-dojo.html.setStyleAttributes(_43a,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_43e,true);
+dojo.html.setStyleAttributes(_43e,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_430.top||0)},"left":{start:left,end:left+(_430.left||0)}},_431,_432).connect("beforeBegin",init);
-if(_433){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_434.top||0)},"left":{start:left,end:left+(_434.left||0)}},_435,_436).connect("beforeBegin",init);
+if(_437){
 anim.connect("onEnd",function(){
-_433(_42f,anim);
+_437(_433,anim);
 });
 }
-_434.push(anim);
+_438.push(anim);
 });
-return dojo.lfx.combine(_434);
+return dojo.lfx.combine(_438);
 };
-dojo.lfx.html.explode=function(_43e,_43f,_440,_441,_442){
+dojo.lfx.html.explode=function(_442,_443,_444,_445,_446){
 var h=dojo.html;
-_43e=dojo.byId(_43e);
-_43f=dojo.byId(_43f);
-var _444=h.toCoordinateObject(_43e,true);
-var _445=document.createElement("div");
-h.copyStyle(_445,_43f);
-if(_43f.explodeClassName){
-_445.className=_43f.explodeClassName;
+_442=dojo.byId(_442);
+_443=dojo.byId(_443);
+var _448=h.toCoordinateObject(_442,true);
+var _449=document.createElement("div");
+h.copyStyle(_449,_443);
+if(_443.explodeClassName){
+_449.className=_443.explodeClassName;
 }
-with(_445.style){
+with(_449.style){
 position="absolute";
 display="none";
-var _446=h.getStyle(_43e,"background-color");
-backgroundColor=_446?_446.toLowerCase():"transparent";
+var _44a=h.getStyle(_442,"background-color");
+backgroundColor=_44a?_44a.toLowerCase():"transparent";
 backgroundColor=(backgroundColor=="transparent")?"rgb(221, 221, 221)":backgroundColor;
 }
-dojo.body().appendChild(_445);
-with(_43f.style){
+dojo.body().appendChild(_449);
+with(_443.style){
 visibility="hidden";
 display="block";
 }
-var _447=h.toCoordinateObject(_43f,true);
-with(_43f.style){
+var _44b=h.toCoordinateObject(_443,true);
+with(_443.style){
 display="none";
 visibility="visible";
 }
-var _448={opacity:{start:0.5,end:1}};
+var _44c={opacity:{start:0.5,end:1}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_448[type]={start:_444[type],end:_447[type]};
+_44c[type]={start:_448[type],end:_44b[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_445,_448,_440,_441,{"beforeBegin":function(){
-h.setDisplay(_445,"block");
+var anim=new dojo.lfx.propertyAnimation(_449,_44c,_444,_445,{"beforeBegin":function(){
+h.setDisplay(_449,"block");
 },"onEnd":function(){
-h.setDisplay(_43f,"block");
-_445.parentNode.removeChild(_445);
+h.setDisplay(_443,"block");
+_449.parentNode.removeChild(_449);
 }});
-if(_442){
+if(_446){
 anim.connect("onEnd",function(){
-_442(_43f,anim);
+_446(_443,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.implode=function(_44b,end,_44d,_44e,_44f){
+dojo.lfx.html.implode=function(_44f,end,_451,_452,_453){
 var h=dojo.html;
-_44b=dojo.byId(_44b);
+_44f=dojo.byId(_44f);
 end=dojo.byId(end);
-var _451=dojo.html.toCoordinateObject(_44b,true);
-var _452=dojo.html.toCoordinateObject(end,true);
-var _453=document.createElement("div");
-dojo.html.copyStyle(_453,_44b);
-if(_44b.explodeClassName){
-_453.className=_44b.explodeClassName;
+var _455=dojo.html.toCoordinateObject(_44f,true);
+var _456=dojo.html.toCoordinateObject(end,true);
+var _457=document.createElement("div");
+dojo.html.copyStyle(_457,_44f);
+if(_44f.explodeClassName){
+_457.className=_44f.explodeClassName;
 }
-dojo.html.setOpacity(_453,0.3);
-with(_453.style){
+dojo.html.setOpacity(_457,0.3);
+with(_457.style){
 position="absolute";
 display="none";
-backgroundColor=h.getStyle(_44b,"background-color").toLowerCase();
+backgroundColor=h.getStyle(_44f,"background-color").toLowerCase();
 }
-dojo.body().appendChild(_453);
-var _454={opacity:{start:1,end:0.5}};
+dojo.body().appendChild(_457);
+var _458={opacity:{start:1,end:0.5}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_454[type]={start:_451[type],end:_452[type]};
+_458[type]={start:_455[type],end:_456[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_453,_454,_44d,_44e,{"beforeBegin":function(){
-dojo.html.hide(_44b);
-dojo.html.show(_453);
+var anim=new dojo.lfx.propertyAnimation(_457,_458,_451,_452,{"beforeBegin":function(){
+dojo.html.hide(_44f);
+dojo.html.show(_457);
 },"onEnd":function(){
-_453.parentNode.removeChild(_453);
+_457.parentNode.removeChild(_457);
 }});
-if(_44f){
+if(_453){
 anim.connect("onEnd",function(){
-_44f(_44b,anim);
+_453(_44f,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.highlight=function(_457,_458,_459,_45a,_45b){
-_457=dojo.lfx.html._byId(_457);
-var _45c=[];
-dojo.lang.forEach(_457,function(node){
-var _45e=dojo.html.getBackgroundColor(node);
+dojo.lfx.html.highlight=function(_45b,_45c,_45d,_45e,_45f){
+_45b=dojo.lfx.html._byId(_45b);
+var _460=[];
+dojo.lang.forEach(_45b,function(node){
+var _462=dojo.html.getBackgroundColor(node);
 var bg=dojo.html.getStyle(node,"background-color").toLowerCase();
-var _460=dojo.html.getStyle(node,"background-image");
-var _461=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
-while(_45e.length>3){
-_45e.pop();
+var _464=dojo.html.getStyle(node,"background-image");
+var _465=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
+while(_462.length>3){
+_462.pop();
 }
-var rgb=new dojo.gfx.color.Color(_458);
-var _463=new dojo.gfx.color.Color(_45e);
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_463}},_459,_45a,{"beforeBegin":function(){
-if(_460){
+var rgb=new dojo.gfx.color.Color(_45c);
+var _467=new dojo.gfx.color.Color(_462);
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_467}},_45d,_45e,{"beforeBegin":function(){
+if(_464){
 node.style.backgroundImage="none";
 }
 node.style.backgroundColor="rgb("+rgb.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_460){
-node.style.backgroundImage=_460;
+if(_464){
+node.style.backgroundImage=_464;
 }
-if(_461){
+if(_465){
 node.style.backgroundColor="transparent";
 }
-if(_45b){
-_45b(node,anim);
+if(_45f){
+_45f(node,anim);
 }
 }});
-_45c.push(anim);
+_460.push(anim);
 });
-return dojo.lfx.combine(_45c);
+return dojo.lfx.combine(_460);
 };
-dojo.lfx.html.unhighlight=function(_465,_466,_467,_468,_469){
-_465=dojo.lfx.html._byId(_465);
-var _46a=[];
-dojo.lang.forEach(_465,function(node){
-var _46c=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
-var rgb=new dojo.gfx.color.Color(_466);
-var _46e=dojo.html.getStyle(node,"background-image");
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_46c,end:rgb}},_467,_468,{"beforeBegin":function(){
-if(_46e){
+dojo.lfx.html.unhighlight=function(_469,_46a,_46b,_46c,_46d){
+_469=dojo.lfx.html._byId(_469);
+var _46e=[];
+dojo.lang.forEach(_469,function(node){
+var _470=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
+var rgb=new dojo.gfx.color.Color(_46a);
+var _472=dojo.html.getStyle(node,"background-image");
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_470,end:rgb}},_46b,_46c,{"beforeBegin":function(){
+if(_472){
 node.style.backgroundImage="none";
 }
-node.style.backgroundColor="rgb("+_46c.toRgb().join(",")+")";
+node.style.backgroundColor="rgb("+_470.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_469){
-_469(node,anim);
+if(_46d){
+_46d(node,anim);
 }
 }});
-_46a.push(anim);
+_46e.push(anim);
 });
-return dojo.lfx.combine(_46a);
+return dojo.lfx.combine(_46e);
 };
 dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
 dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.html"]});
 dojo.provide("dojo.lfx.*");
 dojo.provide("dojo.lang.extras");
-dojo.lang.setTimeout=function(func,_471){
-var _472=window,_473=2;
+dojo.lang.setTimeout=function(func,_475){
+var _476=window,_477=2;
 if(!dojo.lang.isFunction(func)){
-_472=func;
-func=_471;
-_471=arguments[2];
-_473++;
+_476=func;
+func=_475;
+_475=arguments[2];
+_477++;
 }
 if(dojo.lang.isString(func)){
-func=_472[func];
+func=_476[func];
 }
 var args=[];
-for(var i=_473;i<arguments.length;i++){
+for(var i=_477;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 return dojo.global().setTimeout(function(){
-func.apply(_472,args);
-},_471);
+func.apply(_476,args);
+},_475);
 };
-dojo.lang.clearTimeout=function(_476){
-dojo.global().clearTimeout(_476);
+dojo.lang.clearTimeout=function(_47a){
+dojo.global().clearTimeout(_47a);
 };
 dojo.lang.getNameInObj=function(ns,item){
 if(!ns){
@@ -42857,26 +34405,26 @@
 }
 return undefined;
 };
-dojo.lang.getObjPathValue=function(_47f,_480,_481){
-with(dojo.parseObjPath(_47f,_480,_481)){
-return dojo.evalProp(prop,obj,_481);
+dojo.lang.getObjPathValue=function(_483,_484,_485){
+with(dojo.parseObjPath(_483,_484,_485)){
+return dojo.evalProp(prop,obj,_485);
 }
 };
-dojo.lang.setObjPathValue=function(_482,_483,_484,_485){
+dojo.lang.setObjPathValue=function(_486,_487,_488,_489){
 dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and the '=' operator","0.6");
 if(arguments.length<4){
-_485=true;
+_489=true;
 }
-with(dojo.parseObjPath(_482,_484,_485)){
-if(obj&&(_485||(prop in obj))){
-obj[prop]=_483;
+with(dojo.parseObjPath(_486,_488,_489)){
+if(obj&&(_489||(prop in obj))){
+obj[prop]=_487;
 }
 }
 };
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_487){
+function interpolateArgs(args,_48b){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -42903,14 +34451,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _48a=dl.nameAnonFunc(args[2],ao.adviceObj,_487);
-ao.adviceFunc=_48a;
+var _48e=dl.nameAnonFunc(args[2],ao.adviceObj,_48b);
+ao.adviceFunc=_48e;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _48a=dl.nameAnonFunc(args[0],ao.srcObj,_487);
-ao.srcFunc=_48a;
+var _48e=dl.nameAnonFunc(args[0],ao.srcObj,_48b);
+ao.srcFunc=_48e;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -42936,17 +34484,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _48a=dl.nameAnonFunc(args[1],dj_global,_487);
-ao.srcFunc=_48a;
+var _48e=dl.nameAnonFunc(args[1],dj_global,_48b);
+ao.srcFunc=_48e;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _48a=dl.nameAnonFunc(args[3],dj_global,_487);
+var _48e=dl.nameAnonFunc(args[3],dj_global,_48b);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_48a;
+ao.adviceFunc=_48e;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -42994,8 +34542,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _48a=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_487);
-ao.aroundFunc=_48a;
+var _48e=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_48b);
+ao.aroundFunc=_48e;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -43024,18 +34572,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _48c={};
+var _490={};
 for(var x in ao){
-_48c[x]=ao[x];
+_490[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_48c.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_48c));
+_490.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_490));
 });
 return mjps;
 }
@@ -43047,20 +34602,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _494;
+var _498;
 if((arguments.length==1)&&(typeof a1=="object")){
-_494=a1;
+_498=a1;
 }else{
-_494={srcObj:a1,srcFunc:a2};
+_498={srcObj:a1,srcFunc:a2};
 }
-_494.adviceFunc=function(){
-var _495=[];
+_498.adviceFunc=function(){
+var _499=[];
 for(var x=0;x<arguments.length;x++){
-_495.push(arguments[x]);
+_499.push(arguments[x]);
 }
-dojo.debug("("+_494.srcObj+")."+_494.srcFunc,":",_495.join(", "));
+dojo.debug("("+_498.srcObj+")."+_498.srcFunc,":",_499.join(", "));
 };
-this.kwConnect(_494);
+this.kwConnect(_498);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -43086,25 +34641,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_49d,_49e){
-var fn=(_49e)?"disconnect":"connect";
-if(typeof _49d["srcFunc"]=="function"){
-_49d.srcObj=_49d["srcObj"]||dj_global;
-var _4a0=dojo.lang.nameAnonFunc(_49d.srcFunc,_49d.srcObj,true);
-_49d.srcFunc=_4a0;
+this._kwConnectImpl=function(_4a1,_4a2){
+var fn=(_4a2)?"disconnect":"connect";
+if(typeof _4a1["srcFunc"]=="function"){
+_4a1.srcObj=_4a1["srcObj"]||dj_global;
+var _4a4=dojo.lang.nameAnonFunc(_4a1.srcFunc,_4a1.srcObj,true);
+_4a1.srcFunc=_4a4;
 }
-if(typeof _49d["adviceFunc"]=="function"){
-_49d.adviceObj=_49d["adviceObj"]||dj_global;
-var _4a0=dojo.lang.nameAnonFunc(_49d.adviceFunc,_49d.adviceObj,true);
-_49d.adviceFunc=_4a0;
+if(typeof _4a1["adviceFunc"]=="function"){
+_4a1.adviceObj=_4a1["adviceObj"]||dj_global;
+var _4a4=dojo.lang.nameAnonFunc(_4a1.adviceFunc,_4a1.adviceObj,true);
+_4a1.adviceFunc=_4a4;
 }
-_49d.srcObj=_49d["srcObj"]||dj_global;
-_49d.adviceObj=_49d["adviceObj"]||_49d["targetObj"]||dj_global;
-_49d.adviceFunc=_49d["adviceFunc"]||_49d["targetFunc"];
-return dojo.event[fn](_49d);
+_4a1.srcObj=_4a1["srcObj"]||dj_global;
+_4a1.adviceObj=_4a1["adviceObj"]||_4a1["targetObj"]||dj_global;
+_4a1.adviceFunc=_4a1["adviceFunc"]||_4a1["targetFunc"];
+return dojo.event[fn](_4a1);
 };
-this.kwConnect=function(_4a1){
-return this._kwConnectImpl(_4a1,false);
+this.kwConnect=function(_4a5){
+return this._kwConnectImpl(_4a5,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -43129,12 +34684,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_4a4){
-return this._kwConnectImpl(_4a4,true);
+this.kwDisconnect=function(_4a8){
+return this._kwConnectImpl(_4a8,true);
 };
 };
-dojo.event.MethodInvocation=function(_4a5,obj,args){
-this.jp_=_4a5;
+dojo.event.MethodInvocation=function(_4a9,obj,args){
+this.jp_=_4a9;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -43153,48 +34708,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_4ad){
+dojo.event.MethodJoinPoint=function(obj,_4b1){
 this.object=obj||dj_global;
-this.methodname=_4ad;
-this.methodfunc=this.object[_4ad];
+this.methodname=_4b1;
+this.methodfunc=this.object[_4b1];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_4af){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_4b3){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_4af];
+var ofn=obj[_4b3];
 if(!ofn){
-ofn=obj[_4af]=function(){
+ofn=obj[_4b3]=function(){
 };
-if(!obj[_4af]){
-dojo.raise("Cannot set do-nothing method on that object "+_4af);
+if(!obj[_4b3]){
+dojo.raise("Cannot set do-nothing method on that object "+_4b3);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _4b1=_4af+"$joinpoint";
-var _4b2=_4af+"$joinpoint$method";
-var _4b3=obj[_4b1];
-if(!_4b3){
-var _4b4=false;
+var _4b5=_4b3+"$joinpoint";
+var _4b6=_4b3+"$joinpoint$method";
+var _4b7=obj[_4b5];
+if(!_4b7){
+var _4b8=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_4b4=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_4b1,_4b2,_4af]);
+_4b8=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_4b5,_4b6,_4b3]);
 }
 }
-var _4b5=ofn.length;
-obj[_4b2]=ofn;
-_4b3=obj[_4b1]=new dojo.event.MethodJoinPoint(obj,_4b2);
-if(!_4b4){
-obj[_4af]=function(){
-return _4b3.run.apply(_4b3,arguments);
+var _4b9=ofn.length;
+obj[_4b6]=ofn;
+_4b7=obj[_4b5]=new dojo.event.MethodJoinPoint(obj,_4b6);
+if(!_4b8){
+obj[_4b3]=function(){
+return _4b7.run.apply(_4b7,arguments);
 };
 }else{
-obj[_4af]=function(){
+obj[_4b3]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -43228,12 +34783,12 @@
 }
 }
 }
-return _4b3.run.apply(_4b3,args);
+return _4b7.run.apply(_4b7,args);
 };
 }
-obj[_4af].__preJoinArity=_4b5;
+obj[_4b3].__preJoinArity=_4b9;
 }
-return _4b3;
+return _4b7;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -43243,41 +34798,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _4bb=[];
+var _4bf=[];
 for(var x=0;x<args.length;x++){
-_4bb[x]=args[x];
+_4bf[x]=args[x];
 }
-var _4bd=function(marr){
+var _4c1=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _4bf=marr[0]||dj_global;
-var _4c0=marr[1];
-if(!_4bf[_4c0]){
-dojo.raise("function \""+_4c0+"\" does not exist on \""+_4bf+"\"");
+var _4c3=marr[0]||dj_global;
+var _4c4=marr[1];
+if(!_4c3[_4c4]){
+dojo.raise("function \""+_4c4+"\" does not exist on \""+_4c3+"\"");
 }
-var _4c1=marr[2]||dj_global;
-var _4c2=marr[3];
+var _4c5=marr[2]||dj_global;
+var _4c6=marr[3];
 var msg=marr[6];
-var _4c4=marr[7];
-if(_4c4>-1){
-if(_4c4==0){
+var _4c8=marr[7];
+if(_4c8>-1){
+if(_4c8==0){
 return;
 }
 marr[7]--;
 }
-var _4c5;
+var _4c9;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _4bf[_4c0].apply(_4bf,to.args);
+return _4c3[_4c4].apply(_4c3,to.args);
 }};
-to.args=_4bb;
-var _4c7=parseInt(marr[4]);
-var _4c8=((!isNaN(_4c7))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_4bf;
+var _4cb=parseInt(marr[4]);
+var _4cc=((!isNaN(_4cb))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _4cb=false;
+var _4cf=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -43287,7 +34842,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_4bd(mcpy);
+_4c1(mcpy);
 },tod);
 }
 return;
@@ -43295,49 +34850,49 @@
 marr.last=cur;
 }
 }
-if(_4c2){
-_4c1[_4c2].call(_4c1,to);
+if(_4c6){
+_4c5[_4c6].call(_4c5,to);
 }else{
-if((_4c8)&&((dojo.render.html)||(dojo.render.svg))){
+if((_4cc)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_4bf[_4c0].call(_4bf,to);
+_4c3[_4c4].call(_4c3,to);
 }else{
-_4bf[_4c0].apply(_4bf,args);
+_4c3[_4c4].apply(_4c3,args);
 }
-},_4c7);
+},_4cb);
 }else{
 if(msg){
-_4bf[_4c0].call(_4bf,to);
+_4c3[_4c4].call(_4c3,to);
 }else{
-_4bf[_4c0].apply(_4bf,args);
+_4c3[_4c4].apply(_4c3,args);
 }
 }
 }
 };
-var _4ce=function(){
+var _4d2=function(){
 if(this.squelch){
 try{
-return _4bd.apply(this,arguments);
+return _4c1.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _4bd.apply(this,arguments);
+return _4c1.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_4ce);
+dojo.lang.forEach(this.before.concat(new Array()),_4d2);
 }
-var _4cf;
+var _4d3;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_4cf=mi.proceed();
+_4d3=mi.proceed();
 }else{
 if(this.methodfunc){
-_4cf=this.object[this.methodname].apply(this.object,args);
+_4d3=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -43348,9 +34903,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_4ce);
+dojo.lang.forEach(this.after.concat(new Array()),_4d2);
 }
-return (this.methodfunc)?_4cf:null;
+return (this.methodfunc)?_4d3:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -43366,38 +34921,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_4d4,_4d5,_4d6,_4d7,_4d8,_4d9,once,_4db,rate,_4dd,_4de){
-var arr=this.getArr(_4d8);
+},addAdvice:function(_4d8,_4d9,_4da,_4db,_4dc,_4dd,once,_4df,rate,_4e1,_4e2){
+var arr=this.getArr(_4dc);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_4d4,_4d5,_4d6,_4d7,_4db,rate,_4dd,_4de];
+var ao=[_4d8,_4d9,_4da,_4db,_4df,rate,_4e1,_4e2];
 if(once){
-if(this.hasAdvice(_4d4,_4d5,_4d8,arr)>=0){
+if(this.hasAdvice(_4d8,_4d9,_4dc,arr)>=0){
 return;
 }
 }
-if(_4d9=="first"){
+if(_4dd=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_4e1,_4e2,_4e3,arr){
+},hasAdvice:function(_4e5,_4e6,_4e7,arr){
 if(!arr){
-arr=this.getArr(_4e3);
+arr=this.getArr(_4e7);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _4e2=="object")?(new String(_4e2)).toString():_4e2;
+var aao=(typeof _4e6=="object")?(new String(_4e6)).toString():_4e6;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_4e1)&&(a1o==aao)){
+if((arr[x][0]==_4e5)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_4e9,_4ea,_4eb,once){
-var arr=this.getArr(_4eb);
-var ind=this.hasAdvice(_4e9,_4ea,_4eb,arr);
+},removeAdvice:function(_4ed,_4ee,_4ef,once){
+var arr=this.getArr(_4ef);
+var ind=this.hasAdvice(_4ed,_4ee,_4ef,arr);
 if(ind==-1){
 return false;
 }
@@ -43406,73 +34961,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_4e9,_4ea,_4eb,arr);
+ind=this.hasAdvice(_4ed,_4ee,_4ef,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_4ef){
-if(!this.topics[_4ef]){
-this.topics[_4ef]=new this.TopicImpl(_4ef);
+this.getTopic=function(_4f3){
+if(!this.topics[_4f3]){
+this.topics[_4f3]=new this.TopicImpl(_4f3);
 }
-return this.topics[_4ef];
+return this.topics[_4f3];
 };
-this.registerPublisher=function(_4f0,obj,_4f2){
-var _4f0=this.getTopic(_4f0);
-_4f0.registerPublisher(obj,_4f2);
+this.registerPublisher=function(_4f4,obj,_4f6){
+var _4f4=this.getTopic(_4f4);
+_4f4.registerPublisher(obj,_4f6);
 };
-this.subscribe=function(_4f3,obj,_4f5){
-var _4f3=this.getTopic(_4f3);
-_4f3.subscribe(obj,_4f5);
+this.subscribe=function(_4f7,obj,_4f9){
+var _4f7=this.getTopic(_4f7);
+_4f7.subscribe(obj,_4f9);
 };
-this.unsubscribe=function(_4f6,obj,_4f8){
-var _4f6=this.getTopic(_4f6);
-_4f6.unsubscribe(obj,_4f8);
+this.unsubscribe=function(_4fa,obj,_4fc){
+var _4fa=this.getTopic(_4fa);
+_4fa.unsubscribe(obj,_4fc);
 };
-this.destroy=function(_4f9){
-this.getTopic(_4f9).destroy();
-delete this.topics[_4f9];
+this.destroy=function(_4fd){
+this.getTopic(_4fd).destroy();
+delete this.topics[_4fd];
 };
-this.publishApply=function(_4fa,args){
-var _4fa=this.getTopic(_4fa);
-_4fa.sendMessage.apply(_4fa,args);
+this.publishApply=function(_4fe,args){
+var _4fe=this.getTopic(_4fe);
+_4fe.sendMessage.apply(_4fe,args);
 };
-this.publish=function(_4fc,_4fd){
-var _4fc=this.getTopic(_4fc);
+this.publish=function(_500,_501){
+var _500=this.getTopic(_500);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_4fc.sendMessage.apply(_4fc,args);
+_500.sendMessage.apply(_500,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_500){
-this.topicName=_500;
-this.subscribe=function(_501,_502){
-var tf=_502||_501;
-var to=(!_502)?dj_global:_501;
+dojo.event.topic.TopicImpl=function(_504){
+this.topicName=_504;
+this.subscribe=function(_505,_506){
+var tf=_506||_505;
+var to=(!_506)?dj_global:_505;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_505,_506){
-var tf=(!_506)?_505:_506;
-var to=(!_506)?null:_505;
+this.unsubscribe=function(_509,_50a){
+var tf=(!_50a)?_509:_50a;
+var to=(!_50a)?null:_509;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_509){
-this._getJoinPoint().squelch=_509;
+this.setSquelch=function(_50d){
+this._getJoinPoint().squelch=_50d;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_50a,_50b){
-dojo.event.connect(_50a,_50b,this,"sendMessage");
+this.registerPublisher=function(_50e,_50f){
+dojo.event.connect(_50e,_50f,this,"sendMessage");
 };
-this.sendMessage=function(_50c){
+this.sendMessage=function(_510){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -43495,12 +35050,12 @@
 catch(e){
 }
 }
-this.clobber=function(_50f){
+this.clobber=function(_513){
 var na;
 var tna;
-if(_50f){
-tna=_50f.all||_50f.getElementsByTagName("*");
-na=[_50f];
+if(_513){
+tna=_513.all||_513.getElementsByTagName("*");
+na=[_513];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -43515,7 +35070,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _513={};
+var _517={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -43566,9 +35121,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _518=0;
-this.normalizedEventName=function(_519){
-switch(_519){
+var _51c=0;
+this.normalizedEventName=function(_51d){
+switch(_51d){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -43577,10 +35132,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _519;
+return _51d;
 break;
 default:
-var lcn=_519.toLowerCase();
+var lcn=_51d.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -43600,88 +35155,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_51e){
+this.addClobberNodeAttrs=function(node,_522){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_51e.length;x++){
-node.__clobberAttrs__.push(_51e[x]);
+for(var x=0;x<_522.length;x++){
+node.__clobberAttrs__.push(_522[x]);
 }
 };
-this.removeListener=function(node,_521,fp,_523){
-if(!_523){
-var _523=false;
+this.removeListener=function(node,_525,fp,_527){
+if(!_527){
+var _527=false;
 }
-_521=dojo.event.browser.normalizedEventName(_521);
-if(_521=="key"){
+_525=dojo.event.browser.normalizedEventName(_525);
+if(_525=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_523);
+this.removeListener(node,"onkeydown",fp,_527);
 }
-_521="keypress";
+_525="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_521,fp,_523);
+node.removeEventListener(_525,fp,_527);
 }
 };
-this.addListener=function(node,_525,fp,_527,_528){
+this.addListener=function(node,_529,fp,_52b,_52c){
 if(!node){
 return;
 }
-if(!_527){
-var _527=false;
+if(!_52b){
+var _52b=false;
 }
-_525=dojo.event.browser.normalizedEventName(_525);
-if(_525=="key"){
+_529=dojo.event.browser.normalizedEventName(_529);
+if(_529=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_527,_528);
+this.addListener(node,"onkeydown",fp,_52b,_52c);
 }
-_525="keypress";
+_529="keypress";
 }
-if(!_528){
-var _529=function(evt){
+if(!_52c){
+var _52d=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_527){
+if(_52b){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_529=fp;
+_52d=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_525,_529,_527);
-return _529;
+node.addEventListener(_529,_52d,_52b);
+return _52d;
 }else{
-_525="on"+_525;
-if(typeof node[_525]=="function"){
-var _52c=node[_525];
-node[_525]=function(e){
-_52c(e);
-return _529(e);
+_529="on"+_529;
+if(typeof node[_529]=="function"){
+var _530=node[_529];
+node[_529]=function(e){
+_530(e);
+return _52d(e);
 };
 }else{
-node[_525]=_529;
+node[_529]=_52d;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_525]);
+this.addClobberNodeAttrs(node,[_529]);
 }
-return _529;
+return _52d;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_52f,_530){
-if(typeof _52f!="function"){
-dojo.raise("listener not a function: "+_52f);
+this.callListener=function(_533,_534){
+if(typeof _533!="function"){
+dojo.raise("listener not a function: "+_533);
 }
-dojo.event.browser.currentEvent.currentTarget=_530;
-return _52f.call(_530,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_534;
+return _533.call(_534,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -43694,7 +35249,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_533){
+this.fixEvent=function(evt,_537){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -43771,14 +35326,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _535=evt.keyCode;
-if(_535>=65&&_535<=90&&evt.shiftKey==false){
-_535+=32;
+var _539=evt.keyCode;
+if(_539>=65&&_539<=90&&evt.shiftKey==false){
+_539+=32;
 }
-if(_535>=1&&_535<=26&&evt.ctrlKey){
-_535+=96;
+if(_539>=1&&_539<=26&&evt.ctrlKey){
+_539+=96;
 }
-evt.key=String.fromCharCode(_535);
+evt.key=String.fromCharCode(_539);
 }
 }
 }else{
@@ -43804,11 +35359,11 @@
 evt.key=evt.which;
 break;
 default:
-var _535=evt.which;
+var _539=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_535+=32;
+_539+=32;
 }
-evt.key=String.fromCharCode(_535);
+evt.key=String.fromCharCode(_539);
 }
 }
 }
@@ -43913,7 +35468,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_533?_533:evt.srcElement);
+evt.currentTarget=(_537?_537:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -43922,12 +35477,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _537=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _53b=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_537.scrollLeft||0);
+evt.pageX=evt.clientX+(_53b.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_537.scrollTop||0);
+evt.pageY=evt.clientY+(_53b.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -43955,48 +35510,48 @@
 dojo.kwCompoundRequire({common:["dojo.event.common","dojo.event.topic"],browser:["dojo.event.browser"],dashboard:["dojo.event.browser"]});
 dojo.provide("dojo.event.*");
 dojo.provide("dojo.lang.declare");
-dojo.lang.declare=function(_539,_53a,init,_53c){
-if((dojo.lang.isFunction(_53c))||((!_53c)&&(!dojo.lang.isFunction(init)))){
-var temp=_53c;
-_53c=init;
+dojo.lang.declare=function(_53d,_53e,init,_540){
+if((dojo.lang.isFunction(_540))||((!_540)&&(!dojo.lang.isFunction(init)))){
+var temp=_540;
+_540=init;
 init=temp;
 }
-var _53e=[];
-if(dojo.lang.isArray(_53a)){
-_53e=_53a;
-_53a=_53e.shift();
+var _542=[];
+if(dojo.lang.isArray(_53e)){
+_542=_53e;
+_53e=_542.shift();
 }
 if(!init){
-init=dojo.evalObjPath(_539,false);
+init=dojo.evalObjPath(_53d,false);
 if((init)&&(!dojo.lang.isFunction(init))){
 init=null;
 }
 }
 var ctor=dojo.lang.declare._makeConstructor();
-var scp=(_53a?_53a.prototype:null);
+var scp=(_53e?_53e.prototype:null);
 if(scp){
 scp.prototyping=true;
-ctor.prototype=new _53a();
+ctor.prototype=new _53e();
 scp.prototyping=false;
 }
 ctor.superclass=scp;
-ctor.mixins=_53e;
-for(var i=0,l=_53e.length;i<l;i++){
-dojo.lang.extend(ctor,_53e[i].prototype);
+ctor.mixins=_542;
+for(var i=0,l=_542.length;i<l;i++){
+dojo.lang.extend(ctor,_542[i].prototype);
 }
 ctor.prototype.initializer=null;
-ctor.prototype.declaredClass=_539;
-if(dojo.lang.isArray(_53c)){
-dojo.lang.extend.apply(dojo.lang,[ctor].concat(_53c));
+ctor.prototype.declaredClass=_53d;
+if(dojo.lang.isArray(_540)){
+dojo.lang.extend.apply(dojo.lang,[ctor].concat(_540));
 }else{
-dojo.lang.extend(ctor,(_53c)||{});
+dojo.lang.extend(ctor,(_540)||{});
 }
 dojo.lang.extend(ctor,dojo.lang.declare._common);
 ctor.prototype.constructor=ctor;
 ctor.prototype.initializer=(ctor.prototype.initializer)||(init)||(function(){
 });
-var _543=dojo.parseObjPath(_539,null,true);
-_543.obj[_543.prop]=ctor;
+var _547=dojo.parseObjPath(_53d,null,true);
+_547.obj[_547.prop]=ctor;
 return ctor;
 };
 dojo.lang.declare._makeConstructor=function(){
@@ -44021,19 +35576,19 @@
 };
 dojo.lang.declare._common={_getPropContext:function(){
 return (this.___proto||this);
-},_contextMethod:function(_549,_54a,args){
-var _54c,_54d=this.___proto;
-this.___proto=_549;
+},_contextMethod:function(_54d,_54e,args){
+var _550,_551=this.___proto;
+this.___proto=_54d;
 try{
-_54c=_549[_54a].apply(this,(args||[]));
+_550=_54d[_54e].apply(this,(args||[]));
 }
 catch(e){
 throw e;
 }
 finally{
-this.___proto=_54d;
+this.___proto=_551;
 }
-return _54c;
+return _550;
 },_inherited:function(prop,args){
 var p=this._getPropContext();
 do{
@@ -44052,23 +35607,23 @@
 dojo.provide("dojo.logging.LogFilter");
 dojo.provide("dojo.logging.Record");
 dojo.provide("dojo.log");
-dojo.logging.Record=function(_553,_554){
-this.level=_553;
+dojo.logging.Record=function(_557,_558){
+this.level=_557;
 this.message="";
 this.msgArgs=[];
 this.time=new Date();
-if(dojo.lang.isArray(_554)){
-if(_554.length>0&&dojo.lang.isString(_554[0])){
-this.message=_554.shift();
+if(dojo.lang.isArray(_558)){
+if(_558.length>0&&dojo.lang.isString(_558[0])){
+this.message=_558.shift();
 }
-this.msgArgs=_554;
+this.msgArgs=_558;
 }else{
-this.message=_554;
+this.message=_558;
 }
 };
-dojo.logging.LogFilter=function(_555){
-this.passChain=_555||"";
-this.filter=function(_556){
+dojo.logging.LogFilter=function(_559){
+this.passChain=_559||"";
+this.filter=function(_55a){
 return true;
 };
 };
@@ -44098,15 +35653,15 @@
 },addFilter:function(flt){
 this.filters.push(flt);
 return this.filters.length-1;
-},removeFilterByIndex:function(_55d){
-if(this.filters[_55d]){
-delete this.filters[_55d];
+},removeFilterByIndex:function(_561){
+if(this.filters[_561]){
+delete this.filters[_561];
 return true;
 }
 return false;
-},removeFilter:function(_55e){
+},removeFilter:function(_562){
 for(var x=0;x<this.filters.length;x++){
-if(this.filters[x]===_55e){
+if(this.filters[x]===_562){
 delete this.filters[x];
 return true;
 }
@@ -44151,17 +35706,17 @@
 return this.logType("ERROR",this._argsToArr(arguments));
 },critical:function(msg){
 return this.logType("CRITICAL",this._argsToArr(arguments));
-},exception:function(msg,e,_56e){
+},exception:function(msg,e,_572){
 if(e){
-var _56f=[e.name,(e.description||e.message)];
+var _573=[e.name,(e.description||e.message)];
 if(e.fileName){
-_56f.push(e.fileName);
-_56f.push("line "+e.lineNumber);
+_573.push(e.fileName);
+_573.push("line "+e.lineNumber);
 }
-msg+=" "+_56f.join(" : ");
+msg+=" "+_573.join(" : ");
 }
 this.logType("ERROR",msg);
-if(!_56e){
+if(!_572){
 throw e;
 }
 },logType:function(type,args){
@@ -44173,31 +35728,31 @@
 },crit:function(){
 this.critical.apply(this,arguments);
 }});
-dojo.logging.LogHandler=function(_572){
-this.cutOffLevel=(_572)?_572:0;
+dojo.logging.LogHandler=function(_576){
+this.cutOffLevel=(_576)?_576:0;
 this.formatter=null;
 this.data=[];
 this.filters=[];
 };
-dojo.lang.extend(dojo.logging.LogHandler,{setFormatter:function(_573){
+dojo.lang.extend(dojo.logging.LogHandler,{setFormatter:function(_577){
 dojo.unimplemented("setFormatter");
 },flush:function(){
 },close:function(){
 },handleError:function(){
 dojo.deprecated("dojo.logging.LogHandler.handleError","use handle()","0.6");
-},handle:function(_574){
-if((this.filter(_574))&&(_574.level>=this.cutOffLevel)){
-this.emit(_574);
+},handle:function(_578){
+if((this.filter(_578))&&(_578.level>=this.cutOffLevel)){
+this.emit(_578);
 }
-},emit:function(_575){
+},emit:function(_579){
 dojo.unimplemented("emit");
 }});
 void (function(){
-var _576=["setLevel","addFilter","removeFilterByIndex","removeFilter","removeAllFilters","filter"];
+var _57a=["setLevel","addFilter","removeFilterByIndex","removeFilter","removeAllFilters","filter"];
 var tgt=dojo.logging.LogHandler.prototype;
 var src=dojo.logging.Logger.prototype;
-for(var x=0;x<_576.length;x++){
-tgt[_576[x]]=src[_576[x]];
+for(var x=0;x<_57a.length;x++){
+tgt[_57a[x]]=src[_57a[x]];
 }
 })();
 dojo.logging.log=new dojo.logging.Logger();
@@ -44226,20 +35781,20 @@
 }
 return null;
 };
-dojo.declare("dojo.logging.MemoryLogHandler",dojo.logging.LogHandler,{initializer:function(_57f,_580,_581,_582){
-dojo.logging.LogHandler.call(this,_57f);
-this.numRecords=(typeof djConfig["loggingNumRecords"]!="undefined")?djConfig["loggingNumRecords"]:((_580)?_580:-1);
-this.postType=(typeof djConfig["loggingPostType"]!="undefined")?djConfig["loggingPostType"]:(_581||-1);
-this.postInterval=(typeof djConfig["loggingPostInterval"]!="undefined")?djConfig["loggingPostInterval"]:(_581||-1);
-},emit:function(_583){
+dojo.declare("dojo.logging.MemoryLogHandler",dojo.logging.LogHandler,{initializer:function(_583,_584,_585,_586){
+dojo.logging.LogHandler.call(this,_583);
+this.numRecords=(typeof djConfig["loggingNumRecords"]!="undefined")?djConfig["loggingNumRecords"]:((_584)?_584:-1);
+this.postType=(typeof djConfig["loggingPostType"]!="undefined")?djConfig["loggingPostType"]:(_585||-1);
+this.postInterval=(typeof djConfig["loggingPostInterval"]!="undefined")?djConfig["loggingPostInterval"]:(_585||-1);
+},emit:function(_587){
 if(!djConfig.isDebug){
 return;
 }
-var _584=String(dojo.log.getLevelName(_583.level)+": "+_583.time.toLocaleTimeString())+": "+_583.message;
+var _588=String(dojo.log.getLevelName(_587.level)+": "+_587.time.toLocaleTimeString())+": "+_587.message;
 if(!dj_undef("println",dojo.hostenv)){
-dojo.hostenv.println(_584,_583.msgArgs);
+dojo.hostenv.println(_588,_587.msgArgs);
 }
-this.data.push(_583);
+this.data.push(_587);
 if(this.numRecords!=-1){
 while(this.data.length>this.numRecords){
 this.data.shift();
@@ -44268,12 +35823,12 @@
 dojo.string.trimEnd=function(str){
 return dojo.string.trim(str,-1);
 };
-dojo.string.repeat=function(str,_58b,_58c){
+dojo.string.repeat=function(str,_58f,_590){
 var out="";
-for(var i=0;i<_58b;i++){
+for(var i=0;i<_58f;i++){
 out+=str;
-if(_58c&&i<_58b-1){
-out+=_58c;
+if(_590&&i<_58f-1){
+out+=_590;
 }
 }
 return out;
@@ -44305,59 +35860,71 @@
 dojo.provide("dojo.io.common");
 dojo.io.transports=[];
 dojo.io.hdlrFuncNames=["load","error","timeout"];
-dojo.io.Request=function(url,_59b,_59c,_59d){
+dojo.io.Request=function(url,_59f,_5a0,_5a1){
 if((arguments.length==1)&&(arguments[0].constructor==Object)){
 this.fromKwArgs(arguments[0]);
 }else{
 this.url=url;
-if(_59b){
-this.mimetype=_59b;
+if(_59f){
+this.mimetype=_59f;
 }
-if(_59c){
-this.transport=_59c;
+if(_5a0){
+this.transport=_5a0;
 }
 if(arguments.length>=4){
-this.changeUrl=_59d;
+this.changeUrl=_5a1;
 }
 }
 };
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_5a0,_5a1){
-},error:function(type,_5a3,_5a4,_5a5){
-},timeout:function(type,_5a7,_5a8,_5a9){
-},handle:function(type,data,_5ac,_5ad){
+dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jsonFilter:function(_5a2){
+if((this.mimetype=="text/json-comment-filtered")||(this.mimetype=="application/json-comment-filtered")){
+var _5a3=_5a2.indexOf("/*");
+var _5a4=_5a2.lastIndexOf("*/");
+if((_5a3==-1)||(_5a4==-1)){
+dojo.debug("your JSON wasn't comment filtered!");
+return "";
+}
+return _5a2.substring(_5a3+2,_5a4);
+}
+dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+return _5a2;
+},load:function(type,data,_5a7,_5a8){
+},error:function(type,_5aa,_5ab,_5ac){
+},timeout:function(type,_5ae,_5af,_5b0){
+},handle:function(type,data,_5b3,_5b4){
 },timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_5ae){
-if(_5ae["url"]){
-_5ae.url=_5ae.url.toString();
+},fromKwArgs:function(_5b5){
+if(_5b5["url"]){
+_5b5.url=_5b5.url.toString();
 }
-if(_5ae["formNode"]){
-_5ae.formNode=dojo.byId(_5ae.formNode);
+if(_5b5["formNode"]){
+_5b5.formNode=dojo.byId(_5b5.formNode);
 }
-if(!_5ae["method"]&&_5ae["formNode"]&&_5ae["formNode"].method){
-_5ae.method=_5ae["formNode"].method;
+if(!_5b5["method"]&&_5b5["formNode"]&&_5b5["formNode"].method){
+_5b5.method=_5b5["formNode"].method;
 }
-if(!_5ae["handle"]&&_5ae["handler"]){
-_5ae.handle=_5ae.handler;
+if(!_5b5["handle"]&&_5b5["handler"]){
+_5b5.handle=_5b5.handler;
 }
-if(!_5ae["load"]&&_5ae["loaded"]){
-_5ae.load=_5ae.loaded;
+if(!_5b5["load"]&&_5b5["loaded"]){
+_5b5.load=_5b5.loaded;
 }
-if(!_5ae["changeUrl"]&&_5ae["changeURL"]){
-_5ae.changeUrl=_5ae.changeURL;
+if(!_5b5["changeUrl"]&&_5b5["changeURL"]){
+_5b5.changeUrl=_5b5.changeURL;
 }
-_5ae.encoding=dojo.lang.firstValued(_5ae["encoding"],djConfig["bindEncoding"],"");
-_5ae.sendTransport=dojo.lang.firstValued(_5ae["sendTransport"],djConfig["ioSendTransport"],false);
-var _5af=dojo.lang.isFunction;
+_5b5.encoding=dojo.lang.firstValued(_5b5["encoding"],djConfig["bindEncoding"],"");
+_5b5.sendTransport=dojo.lang.firstValued(_5b5["sendTransport"],djConfig["ioSendTransport"],false);
+var _5b6=dojo.lang.isFunction;
 for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
 var fn=dojo.io.hdlrFuncNames[x];
-if(_5ae[fn]&&_5af(_5ae[fn])){
+if(_5b5[fn]&&_5b6(_5b5[fn])){
 continue;
 }
-if(_5ae["handle"]&&_5af(_5ae["handle"])){
-_5ae[fn]=_5ae.handle;
+if(_5b5["handle"]&&_5b6(_5b5["handle"])){
+_5b5[fn]=_5b5.handle;
 }
 }
-dojo.lang.mixin(this,_5ae);
+dojo.lang.mixin(this,_5b5);
 }});
 dojo.io.Error=function(msg,type,num){
 this.message=msg;
@@ -44368,79 +35935,79 @@
 this.push(name);
 this[name]=dojo.io[name];
 };
-dojo.io.bind=function(_5b6){
-if(!(_5b6 instanceof dojo.io.Request)){
+dojo.io.bind=function(_5bd){
+if(!(_5bd instanceof dojo.io.Request)){
 try{
-_5b6=new dojo.io.Request(_5b6);
+_5bd=new dojo.io.Request(_5bd);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _5b7="";
-if(_5b6["transport"]){
-_5b7=_5b6["transport"];
-if(!this[_5b7]){
-dojo.io.sendBindError(_5b6,"No dojo.io.bind() transport with name '"+_5b6["transport"]+"'.");
-return _5b6;
+var _5be="";
+if(_5bd["transport"]){
+_5be=_5bd["transport"];
+if(!this[_5be]){
+dojo.io.sendBindError(_5bd,"No dojo.io.bind() transport with name '"+_5bd["transport"]+"'.");
+return _5bd;
 }
-if(!this[_5b7].canHandle(_5b6)){
-dojo.io.sendBindError(_5b6,"dojo.io.bind() transport with name '"+_5b6["transport"]+"' cannot handle this type of request.");
-return _5b6;
+if(!this[_5be].canHandle(_5bd)){
+dojo.io.sendBindError(_5bd,"dojo.io.bind() transport with name '"+_5bd["transport"]+"' cannot handle this type of request.");
+return _5bd;
 }
 }else{
 for(var x=0;x<dojo.io.transports.length;x++){
 var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_5b6))){
-_5b7=tmp;
+if((this[tmp])&&(this[tmp].canHandle(_5bd))){
+_5be=tmp;
 break;
 }
 }
-if(_5b7==""){
-dojo.io.sendBindError(_5b6,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _5b6;
+if(_5be==""){
+dojo.io.sendBindError(_5bd,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
+return _5bd;
 }
 }
-this[_5b7].bind(_5b6);
-_5b6.bindSuccess=true;
-return _5b6;
+this[_5be].bind(_5bd);
+_5bd.bindSuccess=true;
+return _5bd;
 };
-dojo.io.sendBindError=function(_5ba,_5bb){
-if((typeof _5ba.error=="function"||typeof _5ba.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _5bc=new dojo.io.Error(_5bb);
+dojo.io.sendBindError=function(_5c1,_5c2){
+if((typeof _5c1.error=="function"||typeof _5c1.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
+var _5c3=new dojo.io.Error(_5c2);
 setTimeout(function(){
-_5ba[(typeof _5ba.error=="function")?"error":"handle"]("error",_5bc,null,_5ba);
+_5c1[(typeof _5c1.error=="function")?"error":"handle"]("error",_5c3,null,_5c1);
 },50);
 }else{
-dojo.raise(_5bb);
+dojo.raise(_5c2);
 }
 };
-dojo.io.queueBind=function(_5bd){
-if(!(_5bd instanceof dojo.io.Request)){
+dojo.io.queueBind=function(_5c4){
+if(!(_5c4 instanceof dojo.io.Request)){
 try{
-_5bd=new dojo.io.Request(_5bd);
+_5c4=new dojo.io.Request(_5c4);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _5be=_5bd.load;
-_5bd.load=function(){
+var _5c5=_5c4.load;
+_5c4.load=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_5be.apply(this,arguments);
+var ret=_5c5.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-var _5c0=_5bd.error;
-_5bd.error=function(){
+var _5c7=_5c4.error;
+_5c4.error=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_5c0.apply(this,arguments);
+var ret=_5c7.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-dojo.io._bindQueue.push(_5bd);
+dojo.io._bindQueue.push(_5c4);
 dojo.io._dispatchNextQueueBind();
-return _5bd;
+return _5c4;
 };
 dojo.io._dispatchNextQueueBind=function(){
 if(!dojo.io._queueBindInFlight){
@@ -44454,48 +36021,48 @@
 };
 dojo.io._bindQueue=[];
 dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_5c3,last){
-var enc=/utf/i.test(_5c3||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _5c6=[];
-var _5c7=new Object();
+dojo.io.argsFromMap=function(map,_5ca,last){
+var enc=/utf/i.test(_5ca||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _5cd=[];
+var _5ce=new Object();
 for(var name in map){
-var _5c9=function(elt){
+var _5d0=function(elt){
 var val=enc(name)+"="+enc(elt);
-_5c6[(last==name)?"push":"unshift"](val);
+_5cd[(last==name)?"push":"unshift"](val);
 };
-if(!_5c7[name]){
-var _5cc=map[name];
-if(dojo.lang.isArray(_5cc)){
-dojo.lang.forEach(_5cc,_5c9);
+if(!_5ce[name]){
+var _5d3=map[name];
+if(dojo.lang.isArray(_5d3)){
+dojo.lang.forEach(_5d3,_5d0);
 }else{
-_5c9(_5cc);
+_5d0(_5d3);
 }
 }
 }
-return _5c6.join("&");
+return _5cd.join("&");
 };
-dojo.io.setIFrameSrc=function(_5cd,src,_5cf){
+dojo.io.setIFrameSrc=function(_5d4,src,_5d6){
 try{
 var r=dojo.render.html;
-if(!_5cf){
+if(!_5d6){
 if(r.safari){
-_5cd.location=src;
+_5d4.location=src;
 }else{
-frames[_5cd.name].location=src;
+frames[_5d4.name].location=src;
 }
 }else{
 var idoc;
 if(r.ie){
-idoc=_5cd.contentWindow.document;
+idoc=_5d4.contentWindow.document;
 }else{
 if(r.safari){
-idoc=_5cd.document;
+idoc=_5d4.document;
 }else{
-idoc=_5cd.contentWindow;
+idoc=_5d4.contentWindow;
 }
 }
 if(!idoc){
-_5cd.location=src;
+_5d4.location=src;
 return;
 }else{
 idoc.location.replace(src);
@@ -44508,9 +36075,9 @@
 }
 };
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_5d2,hash){
+dojo.string.substituteParams=function(_5d9,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _5d2.replace(/\%\{(\w+)\}/g,function(_5d5,key){
+return _5d9.replace(/\%\{(\w+)\}/g,function(_5dc,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -44524,11 +36091,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _5d8=str.split(" ");
-for(var i=0;i<_5d8.length;i++){
-_5d8[i]=_5d8[i].charAt(0).toUpperCase()+_5d8[i].substring(1);
+var _5df=str.split(" ");
+for(var i=0;i<_5df.length;i++){
+_5df[i]=_5df[i].charAt(0).toUpperCase()+_5df[i].substring(1);
 }
-return _5d8.join(" ");
+return _5df.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -44541,15 +36108,15 @@
 return str;
 }
 var ret="";
-var _5dd=escape(str);
-var _5de,re=/%u([0-9A-F]{4})/i;
-while((_5de=_5dd.match(re))){
-var num=Number("0x"+_5de[1]);
-var _5e1=escape("&#"+num+";");
-ret+=_5dd.substring(0,_5de.index)+_5e1;
-_5dd=_5dd.substring(_5de.index+_5de[0].length);
+var _5e4=escape(str);
+var _5e5,re=/%u([0-9A-F]{4})/i;
+while((_5e5=_5e4.match(re))){
+var num=Number("0x"+_5e5[1]);
+var _5e8=escape("&#"+num+";");
+ret+=_5e4.substring(0,_5e5.index)+_5e8;
+_5e4=_5e4.substring(_5e5.index+_5e5[0].length);
 }
-ret+=_5dd.replace(/\+/g,"%2B");
+ret+=_5e4.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -44574,9 +36141,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_5e6){
+dojo.string.escapeXml=function(str,_5ed){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_5e6){
+if(!_5ed){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -44599,8 +36166,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_5ef){
-if(_5ef){
+dojo.string.endsWith=function(str,end,_5f6){
+if(_5f6){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -44617,12 +36184,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_5f3,_5f4){
-if(_5f4){
+dojo.string.startsWith=function(str,_5fa,_5fb){
+if(_5fb){
 str=str.toLowerCase();
-_5f3=_5f3.toLowerCase();
+_5fa=_5fa.toLowerCase();
 }
-return str.indexOf(_5f3)==0;
+return str.indexOf(_5fa)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -44640,12 +36207,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_5fa){
-if(_5fa=="\n"){
+dojo.string.normalizeNewlines=function(text,_601){
+if(_601=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_5fa=="\r"){
+if(_601=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -44654,20 +36221,20 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_5fc){
-var _5fd=[];
-for(var i=0,_5ff=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_603){
+var _604=[];
+for(var i=0,_606=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_5fc){
-_5fd.push(str.substring(_5ff,i));
-_5ff=i+1;
+if(str.charAt(i)==_603){
+_604.push(str.substring(_606,i));
+_606=i+1;
 }
 }
-_5fd.push(str.substr(_5ff));
-return _5fd;
+_604.push(str.substr(_606));
+return _604;
 };
 dojo.provide("dojo.undo.browser");
 try{
@@ -44713,12 +36280,12 @@
 this.bookmarkAnchor.href=hash;
 if(dojo.render.html.ie){
 url=this._loadIframeHistory();
-var _604=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_606){
+var _60b=args["back"]||args["backButton"]||args["handle"];
+var tcb=function(_60d){
 if(window.location.hash!=""){
 setTimeout("window.location.href = '"+hash+"';",1);
 }
-_604.apply(this,[_606]);
+_60b.apply(this,[_60d]);
 };
 if(args["back"]){
 args.back=tcb;
@@ -44731,13 +36298,13 @@
 }
 }
 }
-var _607=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_609){
+var _60e=args["forward"]||args["forwardButton"]||args["handle"];
+var tfw=function(_610){
 if(window.location.hash!=""){
 window.location.href=hash;
 }
-if(_607){
-_607.apply(this,[_609]);
+if(_60e){
+_60e.apply(this,[_610]);
 }
 };
 if(args["forward"]){
@@ -44782,10 +36349,10 @@
 }
 }
 }
-},iframeLoaded:function(evt,_60c){
+},iframeLoaded:function(evt,_613){
 if(!dojo.render.html.opera){
-var _60d=this._getUrlQuery(_60c.href);
-if(_60d==null){
+var _614=this._getUrlQuery(_613.href);
+if(_614==null){
 if(this.historyStack.length==1){
 this.handleBackButton();
 }
@@ -44795,17 +36362,17 @@
 this.moveForward=false;
 return;
 }
-if(this.historyStack.length>=2&&_60d==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
+if(this.historyStack.length>=2&&_614==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
 this.handleBackButton();
 }else{
-if(this.forwardStack.length>0&&_60d==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
+if(this.forwardStack.length>0&&_614==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
 this.handleForwardButton();
 }
 }
 }
 },handleBackButton:function(){
-var _60e=this.historyStack.pop();
-if(!_60e){
+var _615=this.historyStack.pop();
+if(!_615){
 return;
 }
 var last=this.historyStack[this.historyStack.length-1];
@@ -44825,7 +36392,7 @@
 }
 }
 }
-this.forwardStack.push(_60e);
+this.forwardStack.push(_615);
 },handleForwardButton:function(){
 var last=this.forwardStack.pop();
 if(!last){
@@ -44846,11 +36413,11 @@
 },_createState:function(url,args,hash){
 return {"url":url,"kwArgs":args,"urlHash":hash};
 },_getUrlQuery:function(url){
-var _615=url.split("?");
-if(_615.length<2){
+var _61c=url.split("?");
+if(_61c.length<2){
 return null;
 }else{
-return _615[1];
+return _61c[1];
 }
 },_loadIframeHistory:function(){
 var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
@@ -44861,26 +36428,26 @@
 dojo.provide("dojo.io.BrowserIO");
 if(!dj_undef("window")){
 dojo.io.checkChildrenForFile=function(node){
-var _618=false;
-var _619=node.getElementsByTagName("input");
-dojo.lang.forEach(_619,function(_61a){
-if(_618){
+var _61f=false;
+var _620=node.getElementsByTagName("input");
+dojo.lang.forEach(_620,function(_621){
+if(_61f){
 return;
 }
-if(_61a.getAttribute("type")=="file"){
-_618=true;
+if(_621.getAttribute("type")=="file"){
+_61f=true;
 }
 });
-return _618;
+return _61f;
 };
-dojo.io.formHasFile=function(_61b){
-return dojo.io.checkChildrenForFile(_61b);
+dojo.io.formHasFile=function(_622){
+return dojo.io.checkChildrenForFile(_622);
 };
-dojo.io.updateNode=function(node,_61d){
+dojo.io.updateNode=function(node,_624){
 node=dojo.byId(node);
-var args=_61d;
-if(dojo.lang.isString(_61d)){
-args={url:_61d};
+var args=_624;
+if(dojo.lang.isString(_624)){
+args={url:_624};
 }
 args.mimetype="text/html";
 args.load=function(t,d,e){
@@ -44895,18 +36462,18 @@
 var type=(node.type||"").toLowerCase();
 return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
 };
-dojo.io.encodeForm=function(_624,_625,_626){
-if((!_624)||(!_624.tagName)||(!_624.tagName.toLowerCase()=="form")){
+dojo.io.encodeForm=function(_62b,_62c,_62d){
+if((!_62b)||(!_62b.tagName)||(!_62b.tagName.toLowerCase()=="form")){
 dojo.raise("Attempted to encode a non-form element.");
 }
-if(!_626){
-_626=dojo.io.formFilter;
+if(!_62d){
+_62d=dojo.io.formFilter;
 }
-var enc=/utf/i.test(_625||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _628=[];
-for(var i=0;i<_624.elements.length;i++){
-var elm=_624.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_626(elm)){
+var enc=/utf/i.test(_62c||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _62f=[];
+for(var i=0;i<_62b.elements.length;i++){
+var elm=_62b.elements[i];
+if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_62d(elm)){
 continue;
 }
 var name=enc(elm.name);
@@ -44914,30 +36481,30 @@
 if(type=="select-multiple"){
 for(var j=0;j<elm.options.length;j++){
 if(elm.options[j].selected){
-_628.push(name+"="+enc(elm.options[j].value));
+_62f.push(name+"="+enc(elm.options[j].value));
 }
 }
 }else{
 if(dojo.lang.inArray(["radio","checkbox"],type)){
 if(elm.checked){
-_628.push(name+"="+enc(elm.value));
+_62f.push(name+"="+enc(elm.value));
 }
 }else{
-_628.push(name+"="+enc(elm.value));
+_62f.push(name+"="+enc(elm.value));
 }
 }
 }
-var _62e=_624.getElementsByTagName("input");
-for(var i=0;i<_62e.length;i++){
-var _62f=_62e[i];
-if(_62f.type.toLowerCase()=="image"&&_62f.form==_624&&_626(_62f)){
-var name=enc(_62f.name);
-_628.push(name+"="+enc(_62f.value));
-_628.push(name+".x=0");
-_628.push(name+".y=0");
+var _635=_62b.getElementsByTagName("input");
+for(var i=0;i<_635.length;i++){
+var _636=_635[i];
+if(_636.type.toLowerCase()=="image"&&_636.form==_62b&&_62d(_636)){
+var name=enc(_636.name);
+_62f.push(name+"="+enc(_636.value));
+_62f.push(name+".x=0");
+_62f.push(name+".y=0");
 }
 }
-return _628.join("&")+"&";
+return _62f.join("&")+"&";
 };
 dojo.io.FormBind=function(args){
 this.bindArgs={};
@@ -44971,11 +36538,11 @@
 this.connect(node,"onclick","click");
 }
 }
-var _635=form.getElementsByTagName("input");
-for(var i=0;i<_635.length;i++){
-var _636=_635[i];
-if(_636.type.toLowerCase()=="image"&&_636.form==form){
-this.connect(_636,"onclick","click");
+var _63c=form.getElementsByTagName("input");
+for(var i=0;i<_63c.length;i++){
+var _63d=_63c[i];
+if(_63d.type.toLowerCase()=="image"&&_63d.form==form){
+this.connect(_63d,"onclick","click");
 }
 }
 },onSubmit:function(form){
@@ -44993,26 +36560,26 @@
 this.clickedButton=node;
 },formFilter:function(node){
 var type=(node.type||"").toLowerCase();
-var _63d=false;
+var _644=false;
 if(node.disabled||!node.name){
-_63d=false;
+_644=false;
 }else{
 if(dojo.lang.inArray(["submit","button","image"],type)){
 if(!this.clickedButton){
 this.clickedButton=node;
 }
-_63d=node==this.clickedButton;
+_644=node==this.clickedButton;
 }else{
-_63d=!dojo.lang.inArray(["file","submit","reset","button"],type);
+_644=!dojo.lang.inArray(["file","submit","reset","button"],type);
 }
 }
-return _63d;
-},connect:function(_63e,_63f,_640){
+return _644;
+},connect:function(_645,_646,_647){
 if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_63e,_63f,this,_640);
+dojo.event.connect(_645,_646,this,_647);
 }else{
-var fcn=dojo.lang.hitch(this,_640);
-_63e[_63f]=function(e){
+var fcn=dojo.lang.hitch(this,_647);
+_645[_646]=function(e){
 if(!e){
 e=window.event;
 }
@@ -45029,40 +36596,40 @@
 }
 }});
 dojo.io.XMLHTTPTransport=new function(){
-var _643=this;
-var _644={};
+var _64a=this;
+var _64b={};
 this.useCache=false;
 this.preventCache=false;
-function getCacheKey(url,_646,_647){
-return url+"|"+_646+"|"+_647.toLowerCase();
+function getCacheKey(url,_64d,_64e){
+return url+"|"+_64d+"|"+_64e.toLowerCase();
 }
-function addToCache(url,_649,_64a,http){
-_644[getCacheKey(url,_649,_64a)]=http;
+function addToCache(url,_650,_651,http){
+_64b[getCacheKey(url,_650,_651)]=http;
 }
-function getFromCache(url,_64d,_64e){
-return _644[getCacheKey(url,_64d,_64e)];
+function getFromCache(url,_654,_655){
+return _64b[getCacheKey(url,_654,_655)];
 }
 this.clearCache=function(){
-_644={};
+_64b={};
 };
-function doLoad(_64f,http,url,_652,_653){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
+function doLoad(_656,http,url,_659,_65a){
+if(((http.status>=200)&&(http.status<300))||(http.status==304)||(http.status==1223)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
 var ret;
-if(_64f.method.toLowerCase()=="head"){
-var _655=http.getAllResponseHeaders();
+if(_656.method.toLowerCase()=="head"){
+var _65c=http.getAllResponseHeaders();
 ret={};
 ret.toString=function(){
-return _655;
+return _65c;
 };
-var _656=_655.split(/[\r\n]+/g);
-for(var i=0;i<_656.length;i++){
-var pair=_656[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+var _65d=_65c.split(/[\r\n]+/g);
+for(var i=0;i<_65d.length;i++){
+var pair=_65d[i].match(/^([^:]+)\s*:\s*(.+)$/i);
 if(pair){
 ret[pair[1]]=pair[2];
 }
 }
 }else{
-if(_64f.mimetype=="text/javascript"){
+if(_656.mimetype=="text/javascript"){
 try{
 ret=dj_eval(http.responseText);
 }
@@ -45072,9 +36639,9 @@
 ret=null;
 }
 }else{
-if(_64f.mimetype=="text/json"||_64f.mimetype=="application/json"){
+if(_656.mimetype.substr(0,9)=="text/json"||_656.mimetype.substr(0,16)=="application/json"){
 try{
-ret=dj_eval("("+http.responseText+")");
+ret=dj_eval("("+_656.jsonFilter(http.responseText)+")");
 }
 catch(e){
 dojo.debug(e);
@@ -45082,7 +36649,7 @@
 ret=false;
 }
 }else{
-if((_64f.mimetype=="application/xml")||(_64f.mimetype=="text/xml")){
+if((_656.mimetype=="application/xml")||(_656.mimetype=="text/xml")){
 ret=http.responseXML;
 if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
 ret=dojo.dom.createDocumentFromText(http.responseText);
@@ -45093,22 +36660,22 @@
 }
 }
 }
-if(_653){
-addToCache(url,_652,_64f.method,http);
+if(_65a){
+addToCache(url,_659,_656.method,http);
 }
-_64f[(typeof _64f.load=="function")?"load":"handle"]("load",ret,http,_64f);
+_656[(typeof _656.load=="function")?"load":"handle"]("load",ret,http,_656);
 }else{
-var _659=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_64f[(typeof _64f.error=="function")?"error":"handle"]("error",_659,http,_64f);
+var _660=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
+_656[(typeof _656.error=="function")?"error":"handle"]("error",_660,http,_656);
 }
 }
-function setHeaders(http,_65b){
-if(_65b["headers"]){
-for(var _65c in _65b["headers"]){
-if(_65c.toLowerCase()=="content-type"&&!_65b["contentType"]){
-_65b["contentType"]=_65b["headers"][_65c];
+function setHeaders(http,_662){
+if(_662["headers"]){
+for(var _663 in _662["headers"]){
+if(_663.toLowerCase()=="content-type"&&!_662["contentType"]){
+_662["contentType"]=_662["headers"][_663];
 }else{
-http.setRequestHeader(_65c,_65b["headers"][_65c]);
+http.setRequestHeader(_663,_662["headers"][_663]);
 }
 }
 }
@@ -45122,7 +36689,7 @@
 };
 this.watchInFlight=function(){
 var now=null;
-if(!dojo.hostenv._blockAsync&&!_643._blockAsync){
+if(!dojo.hostenv._blockAsync&&!_64a._blockAsync){
 for(var x=this.inFlight.length-1;x>=0;x--){
 try{
 var tif=this.inFlight[x];
@@ -45150,8 +36717,8 @@
 }
 catch(e){
 try{
-var _660=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_660,tif.http,tif.req);
+var _667=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
+tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_667,tif.http,tif.req);
 }
 catch(e2){
 dojo.debug("XMLHttpTransport error callback failed: "+e2);
@@ -45166,74 +36733,75 @@
 }
 this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
 };
-var _661=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_662){
-return _661&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_662["mimetype"].toLowerCase()||""))&&!(_662["formNode"]&&dojo.io.formHasFile(_662["formNode"]));
+var _668=dojo.hostenv.getXmlhttpObject()?true:false;
+this.canHandle=function(_669){
+var mlc=_669["mimetype"].toLowerCase()||"";
+return _668&&((dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript"],mlc))||(mlc.substr(0,9)=="text/json"||mlc.substr(0,16)=="application/json"))&&!(_669["formNode"]&&dojo.io.formHasFile(_669["formNode"]));
 };
 this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_663){
-if(!_663["url"]){
-if(!_663["formNode"]&&(_663["backButton"]||_663["back"]||_663["changeUrl"]||_663["watchForURL"])&&(!djConfig.preventBackButtonFix)){
+this.bind=function(_66b){
+if(!_66b["url"]){
+if(!_66b["formNode"]&&(_66b["backButton"]||_66b["back"]||_66b["changeUrl"]||_66b["watchForURL"])&&(!djConfig.preventBackButtonFix)){
 dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_663);
+dojo.undo.browser.addToHistory(_66b);
 return true;
 }
 }
-var url=_663.url;
-var _665="";
-if(_663["formNode"]){
-var ta=_663.formNode.getAttribute("action");
-if((ta)&&(!_663["url"])){
+var url=_66b.url;
+var _66d="";
+if(_66b["formNode"]){
+var ta=_66b.formNode.getAttribute("action");
+if((ta)&&(!_66b["url"])){
 url=ta;
 }
-var tp=_663.formNode.getAttribute("method");
-if((tp)&&(!_663["method"])){
-_663.method=tp;
+var tp=_66b.formNode.getAttribute("method");
+if((tp)&&(!_66b["method"])){
+_66b.method=tp;
 }
-_665+=dojo.io.encodeForm(_663.formNode,_663.encoding,_663["formFilter"]);
+_66d+=dojo.io.encodeForm(_66b.formNode,_66b.encoding,_66b["formFilter"]);
 }
 if(url.indexOf("#")>-1){
 dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
 url=url.split("#")[0];
 }
-if(_663["file"]){
-_663.method="post";
+if(_66b["file"]){
+_66b.method="post";
 }
-if(!_663["method"]){
-_663.method="get";
+if(!_66b["method"]){
+_66b.method="get";
 }
-if(_663.method.toLowerCase()=="get"){
-_663.multipart=false;
+if(_66b.method.toLowerCase()=="get"){
+_66b.multipart=false;
 }else{
-if(_663["file"]){
-_663.multipart=true;
+if(_66b["file"]){
+_66b.multipart=true;
 }else{
-if(!_663["multipart"]){
-_663.multipart=false;
+if(!_66b["multipart"]){
+_66b.multipart=false;
 }
 }
 }
-if(_663["backButton"]||_663["back"]||_663["changeUrl"]){
-dojo.undo.browser.addToHistory(_663);
+if(_66b["backButton"]||_66b["back"]||_66b["changeUrl"]){
+dojo.undo.browser.addToHistory(_66b);
 }
-var _668=_663["content"]||{};
-if(_663.sendTransport){
-_668["dojo.transport"]="xmlhttp";
+var _670=_66b["content"]||{};
+if(_66b.sendTransport){
+_670["dojo.transport"]="xmlhttp";
 }
 do{
-if(_663.postContent){
-_665=_663.postContent;
+if(_66b.postContent){
+_66d=_66b.postContent;
 break;
 }
-if(_668){
-_665+=dojo.io.argsFromMap(_668,_663.encoding);
+if(_670){
+_66d+=dojo.io.argsFromMap(_670,_66b.encoding);
 }
-if(_663.method.toLowerCase()=="get"||!_663.multipart){
+if(_66b.method.toLowerCase()=="get"||!_66b.multipart){
 break;
 }
 var t=[];
-if(_665.length){
-var q=_665.split("&");
+if(_66d.length){
+var q=_66d.split("&");
 for(var i=0;i<q.length;++i){
 if(q[i].length){
 var p=q[i].split("=");
@@ -45241,71 +36809,71 @@
 }
 }
 }
-if(_663.file){
-if(dojo.lang.isArray(_663.file)){
-for(var i=0;i<_663.file.length;++i){
-var o=_663.file[i];
+if(_66b.file){
+if(dojo.lang.isArray(_66b.file)){
+for(var i=0;i<_66b.file.length;++i){
+var o=_66b.file[i];
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }else{
-var o=_663.file;
+var o=_66b.file;
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }
 if(t.length){
 t.push("--"+this.multipartBoundary+"--","");
-_665=t.join("\r\n");
+_66d=t.join("\r\n");
 }
 }while(false);
-var _66e=_663["sync"]?false:true;
-var _66f=_663["preventCache"]||(this.preventCache==true&&_663["preventCache"]!=false);
-var _670=_663["useCache"]==true||(this.useCache==true&&_663["useCache"]!=false);
-if(!_66f&&_670){
-var _671=getFromCache(url,_665,_663.method);
-if(_671){
-doLoad(_663,_671,url,_665,false);
+var _676=_66b["sync"]?false:true;
+var _677=_66b["preventCache"]||(this.preventCache==true&&_66b["preventCache"]!=false);
+var _678=_66b["useCache"]==true||(this.useCache==true&&_66b["useCache"]!=false);
+if(!_677&&_678){
+var _679=getFromCache(url,_66d,_66b.method);
+if(_679){
+doLoad(_66b,_679,url,_66d,false);
 return;
 }
 }
-var http=dojo.hostenv.getXmlhttpObject(_663);
-var _673=false;
-if(_66e){
-var _674=this.inFlight.push({"req":_663,"http":http,"url":url,"query":_665,"useCache":_670,"startTime":_663.timeoutSeconds?(new Date()).getTime():0});
+var http=dojo.hostenv.getXmlhttpObject(_66b);
+var _67b=false;
+if(_676){
+var _67c=this.inFlight.push({"req":_66b,"http":http,"url":url,"query":_66d,"useCache":_678,"startTime":_66b.timeoutSeconds?(new Date()).getTime():0});
 this.startWatchingInFlight();
 }else{
-_643._blockAsync=true;
+_64a._blockAsync=true;
 }
-if(_663.method.toLowerCase()=="post"){
-if(!_663.user){
-http.open("POST",url,_66e);
+if(_66b.method.toLowerCase()=="post"){
+if(!_66b.user){
+http.open("POST",url,_676);
 }else{
-http.open("POST",url,_66e,_663.user,_663.password);
+http.open("POST",url,_676,_66b.user,_66b.password);
 }
-setHeaders(http,_663);
-http.setRequestHeader("Content-Type",_663.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_663.contentType||"application/x-www-form-urlencoded"));
+setHeaders(http,_66b);
+http.setRequestHeader("Content-Type",_66b.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_66b.contentType||"application/x-www-form-urlencoded"));
 try{
-http.send(_665);
+http.send(_66d);
 }
 catch(e){
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_663,{status:404},url,_665,_670);
+doLoad(_66b,{status:404},url,_66d,_678);
 }
 }else{
-var _675=url;
-if(_665!=""){
-_675+=(_675.indexOf("?")>-1?"&":"?")+_665;
+var _67d=url;
+if(_66d!=""){
+_67d+=(_67d.indexOf("?")>-1?"&":"?")+_66d;
 }
-if(_66f){
-_675+=(dojo.string.endsWithAny(_675,"?","&")?"":(_675.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
+if(_677){
+_67d+=(dojo.string.endsWithAny(_67d,"?","&")?"":(_67d.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
 }
-if(!_663.user){
-http.open(_663.method.toUpperCase(),_675,_66e);
+if(!_66b.user){
+http.open(_66b.method.toUpperCase(),_67d,_676);
 }else{
-http.open(_663.method.toUpperCase(),_675,_66e,_663.user,_663.password);
+http.open(_66b.method.toUpperCase(),_67d,_676,_66b.user,_66b.password);
 }
-setHeaders(http,_663);
+setHeaders(http,_66b);
 try{
 http.send(null);
 }
@@ -45313,14 +36881,14 @@
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_663,{status:404},url,_665,_670);
+doLoad(_66b,{status:404},url,_66d,_678);
 }
 }
-if(!_66e){
-doLoad(_663,http,url,_665,_670);
-_643._blockAsync=false;
+if(!_676){
+doLoad(_66b,http,url,_66d,_678);
+_64a._blockAsync=false;
 }
-_663.abort=function(){
+_66b.abort=function(){
 try{
 http._aborted=true;
 }
@@ -45334,15 +36902,15 @@
 };
 }
 dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_677,days,path,_67a,_67b){
-var _67c=-1;
+dojo.io.cookie.setCookie=function(name,_67f,days,path,_682,_683){
+var _684=-1;
 if((typeof days=="number")&&(days>=0)){
 var d=new Date();
 d.setTime(d.getTime()+(days*24*60*60*1000));
-_67c=d.toGMTString();
+_684=d.toGMTString();
 }
-_677=escape(_677);
-document.cookie=name+"="+_677+";"+(_67c!=-1?" expires="+_67c+";":"")+(path?"path="+path:"")+(_67a?"; domain="+_67a:"")+(_67b?"; secure":"");
+_67f=escape(_67f);
+document.cookie=name+"="+_67f+";"+(_684!=-1?" expires="+_684+";":"")+(path?"path="+path:"")+(_682?"; domain="+_682:"")+(_683?"; secure":"");
 };
 dojo.io.cookie.set=dojo.io.cookie.setCookie;
 dojo.io.cookie.getCookie=function(name){
@@ -45350,71 +36918,71 @@
 if(idx==-1){
 return null;
 }
-var _680=document.cookie.substring(idx+name.length+1);
-var end=_680.indexOf(";");
+var _688=document.cookie.substring(idx+name.length+1);
+var end=_688.indexOf(";");
 if(end==-1){
-end=_680.length;
+end=_688.length;
 }
-_680=_680.substring(0,end);
-_680=unescape(_680);
-return _680;
+_688=_688.substring(0,end);
+_688=unescape(_688);
+return _688;
 };
 dojo.io.cookie.get=dojo.io.cookie.getCookie;
 dojo.io.cookie.deleteCookie=function(name){
 dojo.io.cookie.setCookie(name,"-",0);
 };
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_687,_688,_689){
+dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_68f,_690,_691){
 if(arguments.length==5){
-_689=_687;
-_687=null;
-_688=null;
+_691=_68f;
+_68f=null;
+_690=null;
 }
-var _68a=[],_68b,_68c="";
-if(!_689){
-_68b=dojo.io.cookie.getObjectCookie(name);
+var _692=[],_693,_694="";
+if(!_691){
+_693=dojo.io.cookie.getObjectCookie(name);
 }
 if(days>=0){
-if(!_68b){
-_68b={};
+if(!_693){
+_693={};
 }
 for(var prop in obj){
 if(obj[prop]==null){
-delete _68b[prop];
+delete _693[prop];
 }else{
 if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_68b[prop]=obj[prop];
+_693[prop]=obj[prop];
 }
 }
 }
 prop=null;
-for(var prop in _68b){
-_68a.push(escape(prop)+"="+escape(_68b[prop]));
+for(var prop in _693){
+_692.push(escape(prop)+"="+escape(_693[prop]));
 }
-_68c=_68a.join("&");
+_694=_692.join("&");
 }
-dojo.io.cookie.setCookie(name,_68c,days,path,_687,_688);
+dojo.io.cookie.setCookie(name,_694,days,path,_68f,_690);
 };
 dojo.io.cookie.getObjectCookie=function(name){
-var _68f=null,_690=dojo.io.cookie.getCookie(name);
-if(_690){
-_68f={};
-var _691=_690.split("&");
-for(var i=0;i<_691.length;i++){
-var pair=_691[i].split("=");
-var _694=pair[1];
-if(isNaN(_694)){
-_694=unescape(pair[1]);
+var _697=null,_698=dojo.io.cookie.getCookie(name);
+if(_698){
+_697={};
+var _699=_698.split("&");
+for(var i=0;i<_699.length;i++){
+var pair=_699[i].split("=");
+var _69c=pair[1];
+if(isNaN(_69c)){
+_69c=unescape(pair[1]);
 }
-_68f[unescape(pair[0])]=_694;
+_697[unescape(pair[0])]=_69c;
 }
 }
-return _68f;
+return _697;
 };
 dojo.io.cookie.isSupported=function(){
 if(typeof navigator.cookieEnabled!="boolean"){
 dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _695=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_695=="CookiesAllowed");
+var _69d=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+navigator.cookieEnabled=(_69d=="CookiesAllowed");
 if(navigator.cookieEnabled){
 this.deleteCookie("__TestingYourBrowserForCookieSupport__");
 }
@@ -45429,15 +36997,15 @@
 dojo.kwCompoundRequire({common:[["dojo.uri.Uri",false,false]]});
 dojo.provide("dojo.uri.*");
 dojo.provide("dojo.io.IframeIO");
-dojo.io.createIFrame=function(_696,_697,uri){
-if(window[_696]){
-return window[_696];
+dojo.io.createIFrame=function(_69e,_69f,uri){
+if(window[_69e]){
+return window[_69e];
 }
-if(window.frames[_696]){
-return window.frames[_696];
+if(window.frames[_69e]){
+return window.frames[_69e];
 }
 var r=dojo.render.html;
-var _69a=null;
+var _6a2=null;
 var turi=uri;
 if(!turi){
 if(djConfig["useXDomain"]&&!djConfig["dojoIframeHistoryUrl"]){
@@ -45445,16 +37013,16 @@
 }
 turi=(djConfig["dojoIframeHistoryUrl"]||dojo.uri.moduleUri("dojo","../iframe_history.html"))+"#noInit=true";
 }
-var _69c=((r.ie)&&(dojo.render.os.win))?"<iframe name=\""+_696+"\" src=\""+turi+"\" onload=\""+_697+"\">":"iframe";
-_69a=document.createElement(_69c);
-with(_69a){
-name=_696;
-setAttribute("name",_696);
-id=_696;
+var _6a4=((r.ie)&&(dojo.render.os.win))?"<iframe name=\""+_69e+"\" src=\""+turi+"\" onload=\""+_69f+"\">":"iframe";
+_6a2=document.createElement(_6a4);
+with(_6a2){
+name=_69e;
+setAttribute("name",_69e);
+id=_69e;
 }
-dojo.body().appendChild(_69a);
-window[_696]=_69a;
-with(_69a.style){
+dojo.body().appendChild(_6a2);
+window[_69e]=_6a2;
+with(_6a2.style){
 if(!r.safari){
 position="absolute";
 }
@@ -45463,13 +37031,13 @@
 visibility="hidden";
 }
 if(!r.ie){
-dojo.io.setIFrameSrc(_69a,turi,true);
-_69a.onload=new Function(_697);
+dojo.io.setIFrameSrc(_6a2,turi,true);
+_6a2.onload=new Function(_69f);
 }
-return _69a;
+return _6a2;
 };
 dojo.io.IframeTransport=new function(){
-var _69d=this;
+var _6a5=this;
 this.currentRequest=null;
 this.requestQueue=[];
 this.iframeName="dojoIoIframe";
@@ -45481,28 +37049,28 @@
 var cr=this.currentRequest=this.requestQueue.shift();
 cr._contentToClean=[];
 var fn=cr["formNode"];
-var _6a0=cr["content"]||{};
+var _6a8=cr["content"]||{};
 if(cr.sendTransport){
-_6a0["dojo.transport"]="iframe";
+_6a8["dojo.transport"]="iframe";
 }
 if(fn){
-if(_6a0){
-for(var x in _6a0){
+if(_6a8){
+for(var x in _6a8){
 if(!fn[x]){
 var tn;
 if(dojo.render.html.ie){
-tn=document.createElement("<input type='hidden' name='"+x+"' value='"+_6a0[x]+"'>");
+tn=document.createElement("<input type='hidden' name='"+x+"' value='"+_6a8[x]+"'>");
 fn.appendChild(tn);
 }else{
 tn=document.createElement("input");
 fn.appendChild(tn);
 tn.type="hidden";
 tn.name=x;
-tn.value=_6a0[x];
+tn.value=_6a8[x];
 }
 cr._contentToClean.push(x);
 }else{
-fn[x].value=_6a0[x];
+fn[x].value=_6a8[x];
 }
 }
 }
@@ -45518,52 +37086,52 @@
 fn.target=this.iframeName;
 fn.submit();
 }else{
-var _6a3=dojo.io.argsFromMap(this.currentRequest.content);
-var _6a4=cr.url+(cr.url.indexOf("?")>-1?"&":"?")+_6a3;
-dojo.io.setIFrameSrc(this.iframe,_6a4,true);
+var _6ab=dojo.io.argsFromMap(this.currentRequest.content);
+var _6ac=cr.url+(cr.url.indexOf("?")>-1?"&":"?")+_6ab;
+dojo.io.setIFrameSrc(this.iframe,_6ac,true);
 }
 }
 catch(e){
 this.iframeOnload(e);
 }
 };
-this.canHandle=function(_6a5){
-return ((dojo.lang.inArray(["text/plain","text/html","text/javascript","text/json","application/json"],_6a5["mimetype"]))&&(dojo.lang.inArray(["post","get"],_6a5["method"].toLowerCase()))&&(!((_6a5["sync"])&&(_6a5["sync"]==true))));
+this.canHandle=function(_6ad){
+return ((dojo.lang.inArray(["text/plain","text/html","text/javascript","text/json","application/json"],_6ad["mimetype"]))&&(dojo.lang.inArray(["post","get"],_6ad["method"].toLowerCase()))&&(!((_6ad["sync"])&&(_6ad["sync"]==true))));
 };
-this.bind=function(_6a6){
+this.bind=function(_6ae){
 if(!this["iframe"]){
 this.setUpIframe();
 }
-this.requestQueue.push(_6a6);
+this.requestQueue.push(_6ae);
 this.fireNextRequest();
 return;
 };
 this.setUpIframe=function(){
 this.iframe=dojo.io.createIFrame(this.iframeName,"dojo.io.IframeTransport.iframeOnload();");
 };
-this.iframeOnload=function(_6a7){
-if(!_69d.currentRequest){
-_69d.fireNextRequest();
+this.iframeOnload=function(_6af){
+if(!_6a5.currentRequest){
+_6a5.fireNextRequest();
 return;
 }
-var req=_69d.currentRequest;
+var req=_6a5.currentRequest;
 if(req.formNode){
-var _6a9=req._contentToClean;
-for(var i=0;i<_6a9.length;i++){
-var key=_6a9[i];
+var _6b1=req._contentToClean;
+for(var i=0;i<_6b1.length;i++){
+var key=_6b1[i];
 if(dojo.render.html.safari){
-var _6ac=req.formNode;
-for(var j=0;j<_6ac.childNodes.length;j++){
-var _6ae=_6ac.childNodes[j];
-if(_6ae.name==key){
-var _6af=_6ae.parentNode;
-_6af.removeChild(_6ae);
+var _6b4=req.formNode;
+for(var j=0;j<_6b4.childNodes.length;j++){
+var _6b6=_6b4.childNodes[j];
+if(_6b6.name==key){
+var _6b7=_6b6.parentNode;
+_6b7.removeChild(_6b6);
 break;
 }
 }
 }else{
-var _6b0=req.formNode[key];
-req.formNode.removeChild(_6b0);
+var _6b8=req.formNode[key];
+req.formNode.removeChild(_6b8);
 req.formNode[key]=null;
 }
 }
@@ -45575,16 +37143,16 @@
 req.formNode.target=req._originalTarget;
 }
 }
-var _6b1=function(_6b2){
-var doc=_6b2.contentDocument||((_6b2.contentWindow)&&(_6b2.contentWindow.document))||((_6b2.name)&&(document.frames[_6b2.name])&&(document.frames[_6b2.name].document))||null;
+var _6b9=function(_6ba){
+var doc=_6ba.contentDocument||((_6ba.contentWindow)&&(_6ba.contentWindow.document))||((_6ba.name)&&(document.frames[_6ba.name])&&(document.frames[_6ba.name].document))||null;
 return doc;
 };
-var _6b4;
-var _6b5=false;
-if(_6a7){
-this._callError(req,"IframeTransport Request Error: "+_6a7);
+var _6bc;
+var _6bd=false;
+if(_6af){
+this._callError(req,"IframeTransport Request Error: "+_6af);
 }else{
-var ifd=_6b1(_69d.iframe);
+var ifd=_6b9(_6a5.iframe);
 try{
 var cmt=req.mimetype;
 if((cmt=="text/javascript")||(cmt=="text/json")||(cmt=="application/json")){
@@ -45592,37 +37160,37 @@
 if(cmt=="text/json"||cmt=="application/json"){
 js="("+js+")";
 }
-_6b4=dj_eval(js);
+_6bc=dj_eval(js);
 }else{
 if(cmt=="text/html"){
-_6b4=ifd;
+_6bc=ifd;
 }else{
-_6b4=ifd.getElementsByTagName("textarea")[0].value;
+_6bc=ifd.getElementsByTagName("textarea")[0].value;
 }
 }
-_6b5=true;
+_6bd=true;
 }
 catch(e){
 this._callError(req,"IframeTransport Error: "+e);
 }
 }
 try{
-if(_6b5&&dojo.lang.isFunction(req["load"])){
-req.load("load",_6b4,req);
+if(_6bd&&dojo.lang.isFunction(req["load"])){
+req.load("load",_6bc,req);
 }
 }
 catch(e){
 throw e;
 }
 finally{
-_69d.currentRequest=null;
-_69d.fireNextRequest();
+_6a5.currentRequest=null;
+_6a5.fireNextRequest();
 }
 };
-this._callError=function(req,_6ba){
-var _6bb=new dojo.io.Error(_6ba);
+this._callError=function(req,_6c2){
+var _6c3=new dojo.io.Error(_6c2);
 if(dojo.lang.isFunction(req["error"])){
-req.error("error",_6bb,req);
+req.error("error",_6c3,req);
 }
 };
 dojo.io.transports.addTransport("IframeTransport");
@@ -45634,7 +37202,7 @@
 this.arrConcat=(dojo.render.html.capable&&dojo.render.html["ie"]);
 var a=[];
 var b="";
-var _6bf=this.length=b.length;
+var _6c7=this.length=b.length;
 if(this.arrConcat){
 if(b.length>0){
 a.push(b);
@@ -45655,8 +37223,8 @@
 }else{
 b+=s;
 }
-_6bf+=s.length;
-this.length=_6bf;
+_6c7+=s.length;
+this.length=_6c7;
 }
 }
 return this;
@@ -45664,7 +37232,7 @@
 this.clear=function(){
 a=[];
 b="";
-_6bf=this.length=0;
+_6c7=this.length=0;
 return this;
 };
 this.remove=function(f,l){
@@ -45677,7 +37245,7 @@
 s=b.substring(0,(f-1));
 }
 b=s+b.substring(f+l);
-_6bf=this.length=b.length;
+_6c7=this.length=b.length;
 if(this.arrConcat){
 a.push(b);
 b="";
@@ -45690,7 +37258,7 @@
 }
 a=[];
 b=b.replace(o,n);
-_6bf=this.length=b.length;
+_6c7=this.length=b.length;
 if(this.arrConcat){
 a.push(b);
 b="";
@@ -45709,7 +37277,7 @@
 t.splice(idx,0,s);
 b=t.join("");
 }
-_6bf=this.length=b.length;
+_6c7=this.length=b.length;
 if(this.arrConcat){
 a.push(b);
 b="";
@@ -45724,13 +37292,13 @@
 alert("\"dojo/__package__.js\" is now located at \"dojo/dojo.js\". Please update your includes accordingly");
 }
 dojo.provide("dojo.AdapterRegistry");
-dojo.AdapterRegistry=function(_6ca){
+dojo.AdapterRegistry=function(_6d2){
 this.pairs=[];
-this.returnWrappers=_6ca||false;
+this.returnWrappers=_6d2||false;
 };
-dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_6cc,wrap,_6ce,_6cf){
-var type=(_6cf)?"unshift":"push";
-this.pairs[type]([name,_6cc,wrap,_6ce]);
+dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_6d4,wrap,_6d6,_6d7){
+var type=(_6d7)?"unshift":"push";
+this.pairs[type]([name,_6d4,wrap,_6d6]);
 },match:function(){
 for(var i=0;i<this.pairs.length;i++){
 var pair=this.pairs[i];
@@ -45754,8 +37322,8 @@
 return false;
 }});
 dojo.provide("dojo.json");
-dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_6d7,wrap,_6d9){
-dojo.json.jsonRegistry.register(name,_6d7,wrap,_6d9);
+dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_6df,wrap,_6e1){
+dojo.json.jsonRegistry.register(name,_6df,wrap,_6e1);
 },evalJson:function(json){
 try{
 return eval("("+json+")");
@@ -45765,11 +37333,11 @@
 return json;
 }
 },serialize:function(o){
-var _6dc=typeof (o);
-if(_6dc=="undefined"){
+var _6e4=typeof (o);
+if(_6e4=="undefined"){
 return "undefined";
 }else{
-if((_6dc=="number")||(_6dc=="boolean")){
+if((_6e4=="number")||(_6e4=="boolean")){
 return o+"";
 }else{
 if(o===null){
@@ -45777,24 +37345,24 @@
 }
 }
 }
-if(_6dc=="string"){
+if(_6e4=="string"){
 return dojo.string.escapeString(o);
 }
 var me=arguments.callee;
-var _6de;
+var _6e6;
 if(typeof (o.__json__)=="function"){
-_6de=o.__json__();
-if(o!==_6de){
-return me(_6de);
+_6e6=o.__json__();
+if(o!==_6e6){
+return me(_6e6);
 }
 }
 if(typeof (o.json)=="function"){
-_6de=o.json();
-if(o!==_6de){
-return me(_6de);
+_6e6=o.json();
+if(o!==_6e6){
+return me(_6e6);
 }
 }
-if(_6dc!="function"&&typeof (o.length)=="number"){
+if(_6e4!="function"&&typeof (o.length)=="number"){
 var res=[];
 for(var i=0;i<o.length;i++){
 var val=me(o[i]);
@@ -45807,22 +37375,22 @@
 }
 try{
 window.o=o;
-_6de=dojo.json.jsonRegistry.match(o);
-return me(_6de);
+_6e6=dojo.json.jsonRegistry.match(o);
+return me(_6e6);
 }
 catch(e){
 }
-if(_6dc=="function"){
+if(_6e4=="function"){
 return null;
 }
 res=[];
 for(var k in o){
-var _6e3;
+var _6eb;
 if(typeof (k)=="number"){
-_6e3="\""+k+"\"";
+_6eb="\""+k+"\"";
 }else{
 if(typeof (k)=="string"){
-_6e3=dojo.string.escapeString(k);
+_6eb=dojo.string.escapeString(k);
 }else{
 continue;
 }
@@ -45831,18 +37399,18 @@
 if(typeof (val)!="string"){
 continue;
 }
-res.push(_6e3+":"+val);
+res.push(_6eb+":"+val);
 }
 return "{"+res.join(",")+"}";
 }};
 dojo.provide("dojo.Deferred");
-dojo.Deferred=function(_6e4){
+dojo.Deferred=function(_6ec){
 this.chain=[];
 this.id=this._nextId();
 this.fired=-1;
 this.paused=0;
 this.results=[null,null];
-this.canceller=_6e4;
+this.canceller=_6ec;
 this.silentlyCancelled=false;
 };
 dojo.lang.extend(dojo.Deferred,{getFunctionFromArgs:function(){
@@ -45862,21 +37430,21 @@
 }
 return null;
 },makeCalled:function(){
-var _6e6=new dojo.Deferred();
-_6e6.callback();
-return _6e6;
+var _6ee=new dojo.Deferred();
+_6ee.callback();
+return _6ee;
 },repr:function(){
-var _6e7;
+var _6ef;
 if(this.fired==-1){
-_6e7="unfired";
+_6ef="unfired";
 }else{
 if(this.fired==0){
-_6e7="success";
+_6ef="success";
 }else{
-_6e7="error";
+_6ef="error";
 }
 }
-return "Deferred("+this.id+", "+_6e7+")";
+return "Deferred("+this.id+", "+_6ef+")";
 },toString:dojo.lang.forward("repr"),_nextId:(function(){
 var n=1;
 return function(){
@@ -45929,23 +37497,23 @@
 }
 this._resback(res);
 },addBoth:function(cb,cbfn){
-var _6ef=this.getFunctionFromArgs(cb,cbfn);
+var _6f7=this.getFunctionFromArgs(cb,cbfn);
 if(arguments.length>2){
-_6ef=dojo.lang.curryArguments(null,_6ef,arguments,2);
+_6f7=dojo.lang.curryArguments(null,_6f7,arguments,2);
 }
-return this.addCallbacks(_6ef,_6ef);
+return this.addCallbacks(_6f7,_6f7);
 },addCallback:function(cb,cbfn){
-var _6f2=this.getFunctionFromArgs(cb,cbfn);
+var _6fa=this.getFunctionFromArgs(cb,cbfn);
 if(arguments.length>2){
-_6f2=dojo.lang.curryArguments(null,_6f2,arguments,2);
+_6fa=dojo.lang.curryArguments(null,_6fa,arguments,2);
 }
-return this.addCallbacks(_6f2,null);
+return this.addCallbacks(_6fa,null);
 },addErrback:function(cb,cbfn){
-var _6f5=this.getFunctionFromArgs(cb,cbfn);
+var _6fd=this.getFunctionFromArgs(cb,cbfn);
 if(arguments.length>2){
-_6f5=dojo.lang.curryArguments(null,_6f5,arguments,2);
+_6fd=dojo.lang.curryArguments(null,_6fd,arguments,2);
 }
-return this.addCallbacks(null,_6f5);
+return this.addCallbacks(null,_6fd);
 return this.addCallbacks(null,cbfn);
 },addCallbacks:function(cb,eb){
 this.chain.push([cb,eb]);
@@ -45954,20 +37522,20 @@
 }
 return this;
 },_fire:function(){
-var _6f8=this.chain;
-var _6f9=this.fired;
-var res=this.results[_6f9];
+var _700=this.chain;
+var _701=this.fired;
+var res=this.results[_701];
 var self=this;
 var cb=null;
-while(_6f8.length>0&&this.paused==0){
-var pair=_6f8.shift();
-var f=pair[_6f9];
+while(_700.length>0&&this.paused==0){
+var pair=_700.shift();
+var f=pair[_701];
 if(f==null){
 continue;
 }
 try{
 res=f(res);
-_6f9=((res instanceof Error)?1:0);
+_701=((res instanceof Error)?1:0);
 if(res instanceof dojo.Deferred){
 cb=function(res){
 self._continue(res);
@@ -45976,12 +37544,12 @@
 }
 }
 catch(err){
-_6f9=1;
+_701=1;
 res=err;
 }
 }
-this.fired=_6f9;
-this.results[_6f9]=res;
+this.fired=_701;
+this.results[_701]=res;
 if((cb)&&(this.paused)){
 res.addBoth(cb);
 }
@@ -45994,36 +37562,36 @@
 };
 dojo.lang.extend(dojo.rpc.RpcService,{strictArgChecks:true,serviceUrl:"",parseResults:function(obj){
 return obj;
-},errorCallback:function(_702){
+},errorCallback:function(_70a){
 return function(type,e){
-_702.errback(new Error(e.message));
+_70a.errback(new Error(e.message));
 };
-},resultCallback:function(_705){
+},resultCallback:function(_70d){
 var tf=dojo.lang.hitch(this,function(type,obj,e){
 if(obj["error"]!=null){
 var err=new Error(obj.error);
 err.id=obj.id;
-_705.errback(err);
+_70d.errback(err);
 }else{
-var _70b=this.parseResults(obj);
-_705.callback(_70b);
+var _713=this.parseResults(obj);
+_70d.callback(_713);
 }
 });
 return tf;
-},generateMethod:function(_70c,_70d,url){
+},generateMethod:function(_714,_715,url){
 return dojo.lang.hitch(this,function(){
-var _70f=new dojo.Deferred();
-if((this.strictArgChecks)&&(_70d!=null)&&(arguments.length!=_70d.length)){
+var _717=new dojo.Deferred();
+if((this.strictArgChecks)&&(_715!=null)&&(arguments.length!=_715.length)){
 dojo.raise("Invalid number of parameters for remote method.");
 }else{
-this.bind(_70c,arguments,_70f,url);
+this.bind(_714,arguments,_717,url);
 }
-return _70f;
+return _717;
 });
-},processSmd:function(_710){
+},processSmd:function(_718){
 dojo.debug("RpcService: Processing returned SMD.");
-if(_710.methods){
-dojo.lang.forEach(_710.methods,function(m){
+if(_718.methods){
+dojo.lang.forEach(_718.methods,function(m){
 if(m&&m["name"]){
 dojo.debug("RpcService: Creating Method: this.",m.name,"()");
 this[m.name]=this.generateMethod(m.name,m.parameters,m["url"]||m["serviceUrl"]||m["serviceURL"]);
@@ -46035,12 +37603,12 @@
 }
 },this);
 }
-this.serviceUrl=_710.serviceUrl||_710.serviceURL;
+this.serviceUrl=_718.serviceUrl||_718.serviceURL;
 dojo.debug("RpcService: Dojo RpcService is ready for use.");
-},connect:function(_712){
-dojo.debug("RpcService: Attempting to load SMD document from:",_712);
-dojo.io.bind({url:_712,mimetype:"text/json",load:dojo.lang.hitch(this,function(type,_714,e){
-return this.processSmd(_714);
+},connect:function(_71a){
+dojo.debug("RpcService: Attempting to load SMD document from:",_71a);
+dojo.io.bind({url:_71a,mimetype:"text/json",load:dojo.lang.hitch(this,function(type,_71c,e){
+return this.processSmd(_71c);
 }),sync:true});
 }});
 dojo.provide("dojo.rpc.JsonService");
@@ -46068,14 +37636,14 @@
 }
 };
 dojo.inherits(dojo.rpc.JsonService,dojo.rpc.RpcService);
-dojo.extend(dojo.rpc.JsonService,{bustCache:false,contentType:"application/json-rpc",lastSubmissionId:0,callRemote:function(_717,_718){
-var _719=new dojo.Deferred();
-this.bind(_717,_718,_719);
-return _719;
-},bind:function(_71a,_71b,_71c,url){
-dojo.io.bind({url:url||this.serviceUrl,postContent:this.createRequest(_71a,_71b),method:"POST",contentType:this.contentType,mimetype:"text/json",load:this.resultCallback(_71c),error:this.errorCallback(_71c),preventCache:this.bustCache});
-},createRequest:function(_71e,_71f){
-var req={"params":_71f,"method":_71e,"id":++this.lastSubmissionId};
+dojo.extend(dojo.rpc.JsonService,{bustCache:false,contentType:"application/json-rpc",lastSubmissionId:0,callRemote:function(_71f,_720){
+var _721=new dojo.Deferred();
+this.bind(_71f,_720,_721);
+return _721;
+},bind:function(_722,_723,_724,url){
+dojo.io.bind({url:url||this.serviceUrl,postContent:this.createRequest(_722,_723),method:"POST",contentType:this.contentType,mimetype:"text/json",load:this.resultCallback(_724),error:this.errorCallback(_724),preventCache:this.bustCache});
+},createRequest:function(_726,_727){
+var req={"params":_727,"method":_726,"id":++this.lastSubmissionId};
 var data=dojo.json.serialize(req);
 dojo.debug("JsonService: JSON-RPC Request: "+data);
 return data;
@@ -46111,25 +37679,25 @@
 }
 }
 function getDojoTagName(node){
-var _726=getTagName(node);
-if(!_726){
+var _72e=getTagName(node);
+if(!_72e){
 return "";
 }
-if((dojo.widget)&&(dojo.widget.tags[_726])){
-return _726;
+if((dojo.widget)&&(dojo.widget.tags[_72e])){
+return _72e;
 }
-var p=_726.indexOf(":");
+var p=_72e.indexOf(":");
 if(p>=0){
-return _726;
+return _72e;
 }
-if(_726.substr(0,5)=="dojo:"){
-return _726;
+if(_72e.substr(0,5)=="dojo:"){
+return _72e;
 }
 if(dojo.render.html.capable&&dojo.render.html.ie&&node.scopeName!="HTML"){
-return node.scopeName.toLowerCase()+":"+_726;
+return node.scopeName.toLowerCase()+":"+_72e;
 }
-if(_726.substr(0,4)=="dojo"){
-return "dojo:"+_726.substring(4);
+if(_72e.substr(0,4)=="dojo"){
+return "dojo:"+_72e.substring(4);
 }
 var djt=node.getAttribute("dojoType")||node.getAttribute("dojotype");
 if(djt){
@@ -46151,21 +37719,21 @@
 return "dojo:"+djt.toLowerCase();
 }
 if((dj_global["djConfig"])&&(!djConfig["ignoreClassNames"])){
-var _729=node.className||node.getAttribute("class");
-if((_729)&&(_729.indexOf)&&(_729.indexOf("dojo-")!=-1)){
-var _72a=_729.split(" ");
-for(var x=0,c=_72a.length;x<c;x++){
-if(_72a[x].slice(0,5)=="dojo-"){
-return "dojo:"+_72a[x].substr(5).toLowerCase();
+var _731=node.className||node.getAttribute("class");
+if((_731)&&(_731.indexOf)&&(_731.indexOf("dojo-")!=-1)){
+var _732=_731.split(" ");
+for(var x=0,c=_732.length;x<c;x++){
+if(_732[x].slice(0,5)=="dojo-"){
+return "dojo:"+_732[x].substr(5).toLowerCase();
 }
 }
 }
 }
 return "";
 }
-this.parseElement=function(node,_72e,_72f,_730){
-var _731=getTagName(node);
-if(isIE&&_731.indexOf("/")==0){
+this.parseElement=function(node,_736,_737,_738){
+var _739=getTagName(node);
+if(isIE&&_739.indexOf("/")==0){
 return null;
 }
 try{
@@ -46176,91 +37744,91 @@
 }
 catch(e){
 }
-var _733=true;
-if(_72f){
-var _734=getDojoTagName(node);
-_731=_734||_731;
-_733=Boolean(_734);
+var _73b=true;
+if(_737){
+var _73c=getDojoTagName(node);
+_739=_73c||_739;
+_73b=Boolean(_73c);
 }
-var _735={};
-_735[_731]=[];
-var pos=_731.indexOf(":");
+var _73d={};
+_73d[_739]=[];
+var pos=_739.indexOf(":");
 if(pos>0){
-var ns=_731.substring(0,pos);
-_735["ns"]=ns;
+var ns=_739.substring(0,pos);
+_73d["ns"]=ns;
 if((dojo.ns)&&(!dojo.ns.allow(ns))){
-_733=false;
+_73b=false;
 }
 }
-if(_733){
-var _738=this.parseAttributes(node);
-for(var attr in _738){
-if((!_735[_731][attr])||(typeof _735[_731][attr]!="array")){
-_735[_731][attr]=[];
+if(_73b){
+var _740=this.parseAttributes(node);
+for(var attr in _740){
+if((!_73d[_739][attr])||(typeof _73d[_739][attr]!="array")){
+_73d[_739][attr]=[];
 }
-_735[_731][attr].push(_738[attr]);
+_73d[_739][attr].push(_740[attr]);
 }
-_735[_731].nodeRef=node;
-_735.tagName=_731;
-_735.index=_730||0;
+_73d[_739].nodeRef=node;
+_73d.tagName=_739;
+_73d.index=_738||0;
 }
-var _739=0;
+var _741=0;
 for(var i=0;i<node.childNodes.length;i++){
 var tcn=node.childNodes.item(i);
 switch(tcn.nodeType){
 case dojo.dom.ELEMENT_NODE:
 var ctn=getDojoTagName(tcn)||getTagName(tcn);
-if(!_735[ctn]){
-_735[ctn]=[];
+if(!_73d[ctn]){
+_73d[ctn]=[];
 }
-_735[ctn].push(this.parseElement(tcn,true,_72f,_739));
+_73d[ctn].push(this.parseElement(tcn,true,_737,_741));
 if((tcn.childNodes.length==1)&&(tcn.childNodes.item(0).nodeType==dojo.dom.TEXT_NODE)){
-_735[ctn][_735[ctn].length-1].value=tcn.childNodes.item(0).nodeValue;
+_73d[ctn][_73d[ctn].length-1].value=tcn.childNodes.item(0).nodeValue;
 }
-_739++;
+_741++;
 break;
 case dojo.dom.TEXT_NODE:
 if(node.childNodes.length==1){
-_735[_731].push({value:node.childNodes.item(0).nodeValue});
+_73d[_739].push({value:node.childNodes.item(0).nodeValue});
 }
 break;
 default:
 break;
 }
 }
-return _735;
+return _73d;
 };
 this.parseAttributes=function(node){
-var _73e={};
+var _746={};
 var atts=node.attributes;
-var _740,i=0;
-while((_740=atts[i++])){
+var _748,i=0;
+while((_748=atts[i++])){
 if(isIE){
-if(!_740){
+if(!_748){
 continue;
 }
-if((typeof _740=="object")&&(typeof _740.nodeValue=="undefined")||(_740.nodeValue==null)||(_740.nodeValue=="")){
+if((typeof _748=="object")&&(typeof _748.nodeValue=="undefined")||(_748.nodeValue==null)||(_748.nodeValue=="")){
 continue;
 }
 }
-var nn=_740.nodeName.split(":");
-nn=(nn.length==2)?nn[1]:_740.nodeName;
-_73e[nn]={value:_740.nodeValue};
+var nn=_748.nodeName.split(":");
+nn=(nn.length==2)?nn[1]:_748.nodeName;
+_746[nn]={value:_748.nodeValue};
 }
-return _73e;
+return _746;
 };
 };
 dojo.kwCompoundRequire({common:["dojo.dom"],browser:["dojo.html.*"],dashboard:["dojo.html.*"]});
 dojo.provide("dojo.xml.*");
 dojo.provide("dojo.undo.Manager");
-dojo.undo.Manager=function(_743){
+dojo.undo.Manager=function(_74b){
 this.clear();
-this._parent=_743;
+this._parent=_74b;
 };
-dojo.extend(dojo.undo.Manager,{_parent:null,_undoStack:null,_redoStack:null,_currentManager:null,canUndo:false,canRedo:false,isUndoing:false,isRedoing:false,onUndo:function(_744,item){
-},onRedo:function(_746,item){
-},onUndoAny:function(_748,item){
-},onRedoAny:function(_74a,item){
+dojo.extend(dojo.undo.Manager,{_parent:null,_undoStack:null,_redoStack:null,_currentManager:null,canUndo:false,canRedo:false,isUndoing:false,isRedoing:false,onUndo:function(_74c,item){
+},onRedo:function(_74e,item){
+},onUndoAny:function(_750,item){
+},onRedoAny:function(_752,item){
 },_updateStatus:function(){
 this.canUndo=this._undoStack.length>0;
 this.canRedo=this._redoStack.length>0;
@@ -46320,51 +37888,51 @@
 while(this._redoStack.length>0){
 this.redo();
 }
-},push:function(undo,redo,_750){
+},push:function(undo,redo,_758){
 if(!undo){
 return;
 }
 if(this._currentManager==this){
-this._undoStack.push({undo:undo,redo:redo,description:_750});
+this._undoStack.push({undo:undo,redo:redo,description:_758});
 }else{
 this._currentManager.push.apply(this._currentManager,arguments);
 }
 this._redoStack=[];
 this._updateStatus();
-},concat:function(_751){
-if(!_751){
+},concat:function(_759){
+if(!_759){
 return;
 }
 if(this._currentManager==this){
-for(var x=0;x<_751._undoStack.length;x++){
-this._undoStack.push(_751._undoStack[x]);
+for(var x=0;x<_759._undoStack.length;x++){
+this._undoStack.push(_759._undoStack[x]);
 }
-if(_751._undoStack.length>0){
+if(_759._undoStack.length>0){
 this._redoStack=[];
 }
 this._updateStatus();
 }else{
 this._currentManager.concat.apply(this._currentManager,arguments);
 }
-},beginTransaction:function(_753){
+},beginTransaction:function(_75b){
 if(this._currentManager==this){
 var mgr=new dojo.undo.Manager(this);
-mgr.description=_753?_753:"";
+mgr.description=_75b?_75b:"";
 this._undoStack.push(mgr);
 this._currentManager=mgr;
 return mgr;
 }else{
 this._currentManager=this._currentManager.beginTransaction.apply(this._currentManager,arguments);
 }
-},endTransaction:function(_755){
+},endTransaction:function(_75d){
 if(this._currentManager==this){
 if(this._parent){
 this._parent._currentManager=this._parent;
-if(this._undoStack.length==0||_755){
+if(this._undoStack.length==0||_75d){
 var idx=dojo.lang.find(this._parent._undoStack,this);
 if(idx>=0){
 this._parent._undoStack.splice(idx,1);
-if(_755){
+if(_75d){
 for(var x=0;x<this._undoStack.length;x++){
 this._parent._undoStack.splice(idx++,0,this._undoStack[x]);
 }
@@ -46394,18 +37962,18 @@
 dojo.crypto.outputTypes={Base64:0,Hex:1,String:2,Raw:3};
 dojo.provide("dojo.crypto.MD5");
 dojo.crypto.MD5=new function(){
-var _758=8;
-var mask=(1<<_758)-1;
+var _760=8;
+var mask=(1<<_760)-1;
 function toWord(s){
 var wa=[];
-for(var i=0;i<s.length*_758;i+=_758){
-wa[i>>5]|=(s.charCodeAt(i/_758)&mask)<<(i%32);
+for(var i=0;i<s.length*_760;i+=_760){
+wa[i>>5]|=(s.charCodeAt(i/_760)&mask)<<(i%32);
 }
 return wa;
 }
 function toString(wa){
 var s=[];
-for(var i=0;i<wa.length*32;i+=_758){
+for(var i=0;i<wa.length*32;i+=_760){
 s.push(String.fromCharCode((wa[i>>5]>>>(i%32))&mask));
 }
 return s.join("");
@@ -46543,29 +38111,29 @@
 function hmac(data,key){
 var wa=toWord(key);
 if(wa.length>16){
-wa=core(wa,key.length*_758);
+wa=core(wa,key.length*_760);
 }
 var l=[],r=[];
 for(var i=0;i<16;i++){
 l[i]=wa[i]^909522486;
 r[i]=wa[i]^1549556828;
 }
-var h=core(l.concat(toWord(data)),512+data.length*_758);
+var h=core(l.concat(toWord(data)),512+data.length*_760);
 return core(r.concat(h),640);
 }
-this.compute=function(data,_7a6){
-var out=_7a6||dojo.crypto.outputTypes.Base64;
+this.compute=function(data,_7ae){
+var out=_7ae||dojo.crypto.outputTypes.Base64;
 switch(out){
 case dojo.crypto.outputTypes.Hex:
-return toHex(core(toWord(data),data.length*_758));
+return toHex(core(toWord(data),data.length*_760));
 case dojo.crypto.outputTypes.String:
-return toString(core(toWord(data),data.length*_758));
+return toString(core(toWord(data),data.length*_760));
 default:
-return toBase64(core(toWord(data),data.length*_758));
+return toBase64(core(toWord(data),data.length*_760));
 }
 };
-this.getHMAC=function(data,key,_7aa){
-var out=_7aa||dojo.crypto.outputTypes.Base64;
+this.getHMAC=function(data,key,_7b2){
+var out=_7b2||dojo.crypto.outputTypes.Base64;
 switch(out){
 case dojo.crypto.outputTypes.Hex:
 return toHex(hmac(data,key));
@@ -46591,20 +38159,20 @@
 };
 dojo.collections.Iterator=function(arr){
 var a=arr;
-var _7b0=0;
-this.element=a[_7b0]||null;
+var _7b8=0;
+this.element=a[_7b8]||null;
 this.atEnd=function(){
-return (_7b0>=a.length);
+return (_7b8>=a.length);
 };
 this.get=function(){
 if(this.atEnd()){
 return null;
 }
-this.element=a[_7b0++];
+this.element=a[_7b8++];
 return this.element;
 };
-this.map=function(fn,_7b2){
-var s=_7b2||dj_global;
+this.map=function(fn,_7ba){
+var s=_7ba||dj_global;
 if(Array.map){
 return Array.map(a,fn,s);
 }else{
@@ -46616,32 +38184,32 @@
 }
 };
 this.reset=function(){
-_7b0=0;
-this.element=a[_7b0];
+_7b8=0;
+this.element=a[_7b8];
 };
 };
 dojo.collections.DictionaryIterator=function(obj){
 var a=[];
-var _7b8={};
+var _7c0={};
 for(var p in obj){
-if(!_7b8[p]){
+if(!_7c0[p]){
 a.push(obj[p]);
 }
 }
-var _7ba=0;
-this.element=a[_7ba]||null;
+var _7c2=0;
+this.element=a[_7c2]||null;
 this.atEnd=function(){
-return (_7ba>=a.length);
+return (_7c2>=a.length);
 };
 this.get=function(){
 if(this.atEnd()){
 return null;
 }
-this.element=a[_7ba++];
+this.element=a[_7c2++];
 return this.element;
 };
-this.map=function(fn,_7bc){
-var s=_7bc||dj_global;
+this.map=function(fn,_7c4){
+var s=_7c4||dj_global;
 if(Array.map){
 return Array.map(a,fn,s);
 }else{
@@ -46653,20 +38221,20 @@
 }
 };
 this.reset=function(){
-_7ba=0;
-this.element=a[_7ba];
+_7c2=0;
+this.element=a[_7c2];
 };
 };
 dojo.provide("dojo.collections.ArrayList");
 dojo.collections.ArrayList=function(arr){
-var _7c1=[];
+var _7c9=[];
 if(arr){
-_7c1=_7c1.concat(arr);
+_7c9=_7c9.concat(arr);
 }
-this.count=_7c1.length;
+this.count=_7c9.length;
 this.add=function(obj){
-_7c1.push(obj);
-this.count=_7c1.length;
+_7c9.push(obj);
+this.count=_7c9.length;
 };
 this.addRange=function(a){
 if(a.getIterator){
@@ -46674,87 +38242,87 @@
 while(!e.atEnd()){
 this.add(e.get());
 }
-this.count=_7c1.length;
+this.count=_7c9.length;
 }else{
 for(var i=0;i<a.length;i++){
-_7c1.push(a[i]);
+_7c9.push(a[i]);
 }
-this.count=_7c1.length;
+this.count=_7c9.length;
 }
 };
 this.clear=function(){
-_7c1.splice(0,_7c1.length);
+_7c9.splice(0,_7c9.length);
 this.count=0;
 };
 this.clone=function(){
-return new dojo.collections.ArrayList(_7c1);
+return new dojo.collections.ArrayList(_7c9);
 };
 this.contains=function(obj){
-for(var i=0;i<_7c1.length;i++){
-if(_7c1[i]==obj){
+for(var i=0;i<_7c9.length;i++){
+if(_7c9[i]==obj){
 return true;
 }
 }
 return false;
 };
-this.forEach=function(fn,_7c9){
-var s=_7c9||dj_global;
+this.forEach=function(fn,_7d1){
+var s=_7d1||dj_global;
 if(Array.forEach){
-Array.forEach(_7c1,fn,s);
+Array.forEach(_7c9,fn,s);
 }else{
-for(var i=0;i<_7c1.length;i++){
-fn.call(s,_7c1[i],i,_7c1);
+for(var i=0;i<_7c9.length;i++){
+fn.call(s,_7c9[i],i,_7c9);
 }
 }
 };
 this.getIterator=function(){
-return new dojo.collections.Iterator(_7c1);
+return new dojo.collections.Iterator(_7c9);
 };
 this.indexOf=function(obj){
-for(var i=0;i<_7c1.length;i++){
-if(_7c1[i]==obj){
+for(var i=0;i<_7c9.length;i++){
+if(_7c9[i]==obj){
 return i;
 }
 }
 return -1;
 };
 this.insert=function(i,obj){
-_7c1.splice(i,0,obj);
-this.count=_7c1.length;
+_7c9.splice(i,0,obj);
+this.count=_7c9.length;
 };
 this.item=function(i){
-return _7c1[i];
+return _7c9[i];
 };
 this.remove=function(obj){
 var i=this.indexOf(obj);
 if(i>=0){
-_7c1.splice(i,1);
+_7c9.splice(i,1);
 }
-this.count=_7c1.length;
+this.count=_7c9.length;
 };
 this.removeAt=function(i){
-_7c1.splice(i,1);
-this.count=_7c1.length;
+_7c9.splice(i,1);
+this.count=_7c9.length;
 };
 this.reverse=function(){
-_7c1.reverse();
+_7c9.reverse();
 };
 this.sort=function(fn){
 if(fn){
-_7c1.sort(fn);
+_7c9.sort(fn);
 }else{
-_7c1.sort();
+_7c9.sort();
 }
 };
 this.setByIndex=function(i,obj){
-_7c1[i]=obj;
-this.count=_7c1.length;
+_7c9[i]=obj;
+this.count=_7c9.length;
 };
 this.toArray=function(){
-return [].concat(_7c1);
+return [].concat(_7c9);
 };
-this.toString=function(_7d7){
-return _7c1.join((_7d7||","));
+this.toString=function(_7df){
+return _7c9.join((_7df||","));
 };
 };
 dojo.provide("dojo.collections.Queue");
@@ -46790,8 +38358,8 @@
 this.enqueue=function(o){
 this.count=q.push(o);
 };
-this.forEach=function(fn,_7e1){
-var s=_7e1||dj_global;
+this.forEach=function(fn,_7e9){
+var s=_7e9||dj_global;
 if(Array.forEach){
 Array.forEach(q,fn,s);
 }else{
@@ -46835,8 +38403,8 @@
 this.copyTo=function(arr,i){
 arr.splice(i,0,q);
 };
-this.forEach=function(fn,_7eb){
-var s=_7eb||dj_global;
+this.forEach=function(fn,_7f3){
+var s=_7f3||dj_global;
 if(Array.forEach){
 Array.forEach(q,fn,s);
 }else{
@@ -46890,10 +38458,10 @@
 }
 }
 return true;
-},accepts:function(_7fa){
+},accepts:function(_802){
 if(!dojo.lang.inArray(this.acceptedTypes,"*")){
-for(var i=0;i<_7fa.length;i++){
-if(!dojo.lang.inArray(this.acceptedTypes,_7fa[i].type)){
+for(var i=0;i<_802.length;i++){
+if(!dojo.lang.inArray(this.acceptedTypes,_802[i].type)){
 return false;
 }
 }
@@ -46916,8 +38484,8 @@
 this.target=null;
 this.eventStatus="success";
 };
-dojo.declare("dojo.dnd.DragManager",null,{selectedSources:[],dragObjects:[],dragSources:[],registerDragSource:function(_801){
-},dropTargets:[],registerDropTarget:function(_802){
+dojo.declare("dojo.dnd.DragManager",null,{selectedSources:[],dragObjects:[],dragSources:[],registerDragSource:function(_809){
+},dropTargets:[],registerDropTarget:function(_80a){
 },lastDragTarget:null,currentDragTarget:null,onKeyDown:function(){
 },onMouseOut:function(){
 },onMouseMove:function(){
@@ -46930,10 +38498,10 @@
 },registerDragSource:function(ds){
 if(ds["domNode"]){
 var dp=this.dsPrefix;
-var _806=dp+"Idx_"+(this.dsCounter++);
-ds.dragSourceId=_806;
-this.dragSources[_806]=ds;
-ds.domNode.setAttribute(dp,_806);
+var _80e=dp+"Idx_"+(this.dsCounter++);
+ds.dragSourceId=_80e;
+this.dragSources[_80e]=ds;
+ds.domNode.setAttribute(dp,_80e);
 if(dojo.render.html.ie){
 dojo.event.browser.addListener(ds.domNode,"ondragstart",this.cancelEvent);
 }
@@ -46941,9 +38509,9 @@
 },unregisterDragSource:function(ds){
 if(ds["domNode"]){
 var dp=this.dsPrefix;
-var _809=ds.dragSourceId;
+var _811=ds.dragSourceId;
 delete ds.dragSourceId;
-delete this.dragSources[_809];
+delete this.dragSources[_811];
 ds.domNode.setAttribute(dp,null);
 if(dojo.render.html.ie){
 dojo.event.browser.removeListener(ds.domNode,"ondragstart",this.cancelEvent);
@@ -46952,9 +38520,9 @@
 },registerDropTarget:function(dt){
 this.dropTargets.push(dt);
 },unregisterDropTarget:function(dt){
-var _80c=dojo.lang.find(this.dropTargets,dt,true);
-if(_80c>=0){
-this.dropTargets.splice(_80c,1);
+var _814=dojo.lang.find(this.dropTargets,dt,true);
+if(_814>=0){
+this.dropTargets.splice(_814,1);
 }
 },getDragSource:function(e){
 var tn=e.target;
@@ -46984,8 +38552,8 @@
 return;
 }
 }
-var _812=e.target.nodeType==dojo.html.TEXT_NODE?e.target.parentNode:e.target;
-if(dojo.html.isTag(_812,"button","textarea","input","select","option")){
+var _81a=e.target.nodeType==dojo.html.TEXT_NODE?e.target.parentNode:e.target;
+if(dojo.html.isTag(_81a,"button","textarea","input","select","option")){
 return;
 }
 var ds=this.getDragSource(e);
@@ -47000,7 +38568,7 @@
 this.mouseDownY=e.pageY;
 e.preventDefault();
 dojo.event.connect(document,"onmousemove",this,"onMouseMove");
-},onMouseUp:function(e,_815){
+},onMouseUp:function(e,_81d){
 if(this.selectedSources.length==0){
 return;
 }
@@ -47012,17 +38580,17 @@
 if(this.currentDropTarget){
 this.currentDropTarget.onDropStart();
 }
-dojo.lang.forEach(this.dragObjects,function(_816){
+dojo.lang.forEach(this.dragObjects,function(_81e){
 var ret=null;
-if(!_816){
+if(!_81e){
 return;
 }
 if(this.currentDropTarget){
-e.dragObject=_816;
+e.dragObject=_81e;
 var ce=this.currentDropTarget.domNode.childNodes;
 if(ce.length>0){
 e.dropTarget=ce[0];
-while(e.dropTarget==_816.domNode){
+while(e.dropTarget==_81e.domNode){
 e.dropTarget=e.dropTarget.nextSibling;
 }
 }else{
@@ -47037,21 +38605,21 @@
 e.dragStatus=this.dropAcceptable&&ret?"dropSuccess":"dropFailure";
 dojo.lang.delayThese([function(){
 try{
-_816.dragSource.onDragEnd(e);
+_81e.dragSource.onDragEnd(e);
 }
 catch(err){
-var _819={};
+var _821={};
 for(var i in e){
 if(i=="type"){
-_819.type="mouseup";
+_821.type="mouseup";
 continue;
 }
-_819[i]=e[i];
+_821[i]=e[i];
 }
-_816.dragSource.onDragEnd(_819);
+_81e.dragSource.onDragEnd(_821);
 }
 },function(){
-_816.onDragEnd(e);
+_81e.onDragEnd(e);
 }]);
 },this);
 this.selectedSources=[];
@@ -47085,14 +38653,14 @@
 },cacheTargetLocations:function(){
 dojo.profile.start("cacheTargetLocations");
 this.dropTargetDimensions=[];
-dojo.lang.forEach(this.dropTargets,function(_822){
-var tn=_822.domNode;
-if(!tn||!_822.accepts([this.dragSource])){
+dojo.lang.forEach(this.dropTargets,function(_82a){
+var tn=_82a.domNode;
+if(!tn||!_82a.accepts([this.dragSource])){
 return;
 }
 var abs=dojo.html.getAbsolutePosition(tn,true);
 var bb=dojo.html.getBorderBox(tn);
-this.dropTargetDimensions.push([[abs.x,abs.y],[abs.x+bb.width,abs.y+bb.height],_822]);
+this.dropTargetDimensions.push([[abs.x,abs.y],[abs.x+bb.width,abs.y+bb.height],_82a]);
 },this);
 dojo.profile.end("cacheTargetLocations");
 },onMouseMove:function(e){
@@ -47113,25 +38681,25 @@
 dy=e.pageY-this.mouseDownY;
 }
 this.dragSource=this.selectedSources[0];
-dojo.lang.forEach(this.selectedSources,function(_829){
-if(!_829){
+dojo.lang.forEach(this.selectedSources,function(_831){
+if(!_831){
 return;
 }
-var tdo=_829.onDragStart(e);
+var tdo=_831.onDragStart(e);
 if(tdo){
 tdo.onDragStart(e);
 tdo.dragOffset.y+=dy;
 tdo.dragOffset.x+=dx;
-tdo.dragSource=_829;
+tdo.dragSource=_831;
 this.dragObjects.push(tdo);
 }
 },this);
 this.previousDropTarget=null;
 this.cacheTargetLocations();
 }
-dojo.lang.forEach(this.dragObjects,function(_82b){
-if(_82b){
-_82b.onDragMove(e);
+dojo.lang.forEach(this.dragObjects,function(_833){
+if(_833){
+_833.onDragMove(e);
 }
 });
 if(this.currentDropTarget){
@@ -47143,8 +38711,8 @@
 this.currentDropTarget.onDragMove(e,this.dragObjects);
 }
 }else{
-var _82e=this.findBestTarget(e);
-if(_82e.target===null){
+var _836=this.findBestTarget(e);
+if(_836.target===null){
 if(this.currentDropTarget){
 this.currentDropTarget.onDragOut(e);
 this.previousDropTarget=this.currentDropTarget;
@@ -47153,12 +38721,12 @@
 this.dropAcceptable=false;
 return;
 }
-if(this.currentDropTarget!==_82e.target){
+if(this.currentDropTarget!==_836.target){
 if(this.currentDropTarget){
 this.previousDropTarget=this.currentDropTarget;
 this.currentDropTarget.onDragOut(e);
 }
-this.currentDropTarget=_82e.target;
+this.currentDropTarget=_836.target;
 e.dragObjects=this.dragObjects;
 this.dropAcceptable=this.currentDropTarget.onDragOver(e);
 }else{
@@ -47168,21 +38736,21 @@
 }
 }
 },findBestTarget:function(e){
-var _830=this;
-var _831=new Object();
-_831.target=null;
-_831.points=null;
-dojo.lang.every(this.dropTargetDimensions,function(_832){
-if(!_830.isInsideBox(e,_832)){
+var _838=this;
+var _839=new Object();
+_839.target=null;
+_839.points=null;
+dojo.lang.every(this.dropTargetDimensions,function(_83a){
+if(!_838.isInsideBox(e,_83a)){
 return true;
 }
-_831.target=_832[2];
-_831.points=_832;
-return Boolean(_830.nestedTargets);
+_839.target=_83a[2];
+_839.points=_83a;
+return Boolean(_838.nestedTargets);
 });
-return _831;
-},isInsideBox:function(e,_834){
-if((e.pageX>_834[0][0])&&(e.pageX<_834[1][0])&&(e.pageY>_834[0][1])&&(e.pageY<_834[1][1])){
+return _839;
+},isInsideBox:function(e,_83c){
+if((e.pageX>_83c[0][0])&&(e.pageX<_83c[1][0])&&(e.pageY>_83c[0][1])&&(e.pageY<_83c[1][1])){
 return true;
 }
 return false;
@@ -47203,22 +38771,22 @@
 dojo.provide("dojo.html.selection");
 dojo.html.selectionType={NONE:0,TEXT:1,CONTROL:2};
 dojo.html.clearSelection=function(){
-var _839=dojo.global();
-var _83a=dojo.doc();
+var _841=dojo.global();
+var _842=dojo.doc();
 try{
-if(_839["getSelection"]){
+if(_841["getSelection"]){
 if(dojo.render.html.safari){
-_839.getSelection().collapse();
+_841.getSelection().collapse();
 }else{
-_839.getSelection().removeAllRanges();
+_841.getSelection().removeAllRanges();
 }
 }else{
-if(_83a.selection){
-if(_83a.selection.empty){
-_83a.selection.empty();
+if(_842.selection){
+if(_842.selection.empty){
+_842.selection.empty();
 }else{
-if(_83a.selection.clear){
-_83a.selection.clear();
+if(_842.selection.clear){
+_842.selection.clear();
 }
 }
 }
@@ -47230,17 +38798,17 @@
 return false;
 }
 };
-dojo.html.disableSelection=function(_83b){
-_83b=dojo.byId(_83b)||dojo.body();
+dojo.html.disableSelection=function(_843){
+_843=dojo.byId(_843)||dojo.body();
 var h=dojo.render.html;
 if(h.mozilla){
-_83b.style.MozUserSelect="none";
+_843.style.MozUserSelect="none";
 }else{
 if(h.safari){
-_83b.style.KhtmlUserSelect="none";
+_843.style.KhtmlUserSelect="none";
 }else{
 if(h.ie){
-_83b.unselectable="on";
+_843.unselectable="on";
 }else{
 return false;
 }
@@ -47248,17 +38816,17 @@
 }
 return true;
 };
-dojo.html.enableSelection=function(_83d){
-_83d=dojo.byId(_83d)||dojo.body();
+dojo.html.enableSelection=function(_845){
+_845=dojo.byId(_845)||dojo.body();
 var h=dojo.render.html;
 if(h.mozilla){
-_83d.style.MozUserSelect="";
+_845.style.MozUserSelect="";
 }else{
 if(h.safari){
-_83d.style.KhtmlUserSelect="";
+_845.style.KhtmlUserSelect="";
 }else{
 if(h.ie){
-_83d.unselectable="off";
+_845.unselectable="off";
 }else{
 return false;
 }
@@ -47266,25 +38834,25 @@
 }
 return true;
 };
-dojo.html.selectElement=function(_83f){
+dojo.html.selectElement=function(_847){
 dojo.deprecated("dojo.html.selectElement","replaced by dojo.html.selection.selectElementChildren",0.5);
 };
-dojo.html.selectInputText=function(_840){
-var _841=dojo.global();
-var _842=dojo.doc();
-_840=dojo.byId(_840);
-if(_842["selection"]&&dojo.body()["createTextRange"]){
-var _843=_840.createTextRange();
-_843.moveStart("character",0);
-_843.moveEnd("character",_840.value.length);
-_843.select();
+dojo.html.selectInputText=function(_848){
+var _849=dojo.global();
+var _84a=dojo.doc();
+_848=dojo.byId(_848);
+if(_84a["selection"]&&dojo.body()["createTextRange"]){
+var _84b=_848.createTextRange();
+_84b.moveStart("character",0);
+_84b.moveEnd("character",_848.value.length);
+_84b.select();
 }else{
-if(_841["getSelection"]){
-var _844=_841.getSelection();
-_840.setSelectionRange(0,_840.value.length);
+if(_849["getSelection"]){
+var _84c=_849.getSelection();
+_848.setSelectionRange(0,_848.value.length);
 }
 }
-_840.focus();
+_848.focus();
 };
 dojo.html.isSelectionCollapsed=function(){
 dojo.deprecated("dojo.html.isSelectionCollapsed","replaced by dojo.html.selection.isCollapsed",0.5);
@@ -47294,7 +38862,7 @@
 if(dojo.doc()["selection"]){
 return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()];
 }else{
-var _845=dojo.html.selectionType.TEXT;
+var _84d=dojo.html.selectionType.TEXT;
 var oSel;
 try{
 oSel=dojo.global().getSelection();
@@ -47302,38 +38870,38 @@
 catch(e){
 }
 if(oSel&&oSel.rangeCount==1){
-var _847=oSel.getRangeAt(0);
-if(_847.startContainer==_847.endContainer&&(_847.endOffset-_847.startOffset)==1&&_847.startContainer.nodeType!=dojo.dom.TEXT_NODE){
-_845=dojo.html.selectionType.CONTROL;
+var _84f=oSel.getRangeAt(0);
+if(_84f.startContainer==_84f.endContainer&&(_84f.endOffset-_84f.startOffset)==1&&_84f.startContainer.nodeType!=dojo.dom.TEXT_NODE){
+_84d=dojo.html.selectionType.CONTROL;
 }
 }
-return _845;
+return _84d;
 }
 },isCollapsed:function(){
-var _848=dojo.global();
-var _849=dojo.doc();
-if(_849["selection"]){
-return _849.selection.createRange().text=="";
+var _850=dojo.global();
+var _851=dojo.doc();
+if(_851["selection"]){
+return _851.selection.createRange().text=="";
 }else{
-if(_848["getSelection"]){
-var _84a=_848.getSelection();
-if(dojo.lang.isString(_84a)){
-return _84a=="";
+if(_850["getSelection"]){
+var _852=_850.getSelection();
+if(dojo.lang.isString(_852)){
+return _852=="";
 }else{
-return _84a.isCollapsed||_84a.toString()=="";
+return _852.isCollapsed||_852.toString()=="";
 }
 }
 }
 },getSelectedElement:function(){
 if(dojo.html.selection.getType()==dojo.html.selectionType.CONTROL){
 if(dojo.doc()["selection"]){
-var _84b=dojo.doc().selection.createRange();
-if(_84b&&_84b.item){
+var _853=dojo.doc().selection.createRange();
+if(_853&&_853.item){
 return dojo.doc().selection.createRange().item(0);
 }
 }else{
-var _84c=dojo.global().getSelection();
-return _84c.anchorNode.childNodes[_84c.anchorOffset];
+var _854=dojo.global().getSelection();
+return _854.anchorNode.childNodes[_854.anchorOffset];
 }
 }
 },getParentElement:function(){
@@ -47346,9 +38914,9 @@
 if(dojo.doc()["selection"]){
 return dojo.doc().selection.createRange().parentElement();
 }else{
-var _84e=dojo.global().getSelection();
-if(_84e){
-var node=_84e.anchorNode;
+var _856=dojo.global().getSelection();
+if(_856){
+var node=_856.anchorNode;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.parentNode;
 }
@@ -47363,9 +38931,9 @@
 }
 return dojo.doc().selection.createRange().text;
 }else{
-var _850=dojo.global().getSelection();
-if(_850){
-return _850.toString();
+var _858=dojo.global().getSelection();
+if(_858){
+return _858.toString();
 }
 }
 },getSelectedHtml:function(){
@@ -47375,18 +38943,18 @@
 }
 return dojo.doc().selection.createRange().htmlText;
 }else{
-var _851=dojo.global().getSelection();
-if(_851&&_851.rangeCount){
-var frag=_851.getRangeAt(0).cloneContents();
+var _859=dojo.global().getSelection();
+if(_859&&_859.rangeCount){
+var frag=_859.getRangeAt(0).cloneContents();
 var div=document.createElement("div");
 div.appendChild(frag);
 return div.innerHTML;
 }
 return null;
 }
-},hasAncestorElement:function(_854){
+},hasAncestorElement:function(_85c){
 return (dojo.html.selection.getAncestorElement.apply(this,arguments)!=null);
-},getAncestorElement:function(_855){
+},getAncestorElement:function(_85d){
 var node=dojo.html.selection.getSelectedElement()||dojo.html.selection.getParentElement();
 while(node){
 if(dojo.html.selection.isTag(node,arguments).length>0){
@@ -47404,132 +38972,132 @@
 }
 }
 return "";
-},selectElement:function(_85a){
-var _85b=dojo.global();
-var _85c=dojo.doc();
-_85a=dojo.byId(_85a);
-if(_85c.selection&&dojo.body().createTextRange){
+},selectElement:function(_862){
+var _863=dojo.global();
+var _864=dojo.doc();
+_862=dojo.byId(_862);
+if(_864.selection&&dojo.body().createTextRange){
 try{
-var _85d=dojo.body().createControlRange();
-_85d.addElement(_85a);
-_85d.select();
+var _865=dojo.body().createControlRange();
+_865.addElement(_862);
+_865.select();
 }
 catch(e){
-dojo.html.selection.selectElementChildren(_85a);
+dojo.html.selection.selectElementChildren(_862);
 }
 }else{
-if(_85b["getSelection"]){
-var _85e=_85b.getSelection();
-if(_85e["removeAllRanges"]){
-var _85d=_85c.createRange();
-_85d.selectNode(_85a);
-_85e.removeAllRanges();
-_85e.addRange(_85d);
+if(_863["getSelection"]){
+var _866=_863.getSelection();
+if(_866["removeAllRanges"]){
+var _865=_864.createRange();
+_865.selectNode(_862);
+_866.removeAllRanges();
+_866.addRange(_865);
 }
 }
 }
-},selectElementChildren:function(_85f){
-var _860=dojo.global();
-var _861=dojo.doc();
-_85f=dojo.byId(_85f);
-if(_861.selection&&dojo.body().createTextRange){
-var _862=dojo.body().createTextRange();
-_862.moveToElementText(_85f);
-_862.select();
+},selectElementChildren:function(_867){
+var _868=dojo.global();
+var _869=dojo.doc();
+_867=dojo.byId(_867);
+if(_869.selection&&dojo.body().createTextRange){
+var _86a=dojo.body().createTextRange();
+_86a.moveToElementText(_867);
+_86a.select();
 }else{
-if(_860["getSelection"]){
-var _863=_860.getSelection();
-if(_863["setBaseAndExtent"]){
-_863.setBaseAndExtent(_85f,0,_85f,_85f.innerText.length-1);
+if(_868["getSelection"]){
+var _86b=_868.getSelection();
+if(_86b["setBaseAndExtent"]){
+_86b.setBaseAndExtent(_867,0,_867,_867.innerText.length-1);
 }else{
-if(_863["selectAllChildren"]){
-_863.selectAllChildren(_85f);
+if(_86b["selectAllChildren"]){
+_86b.selectAllChildren(_867);
 }
 }
 }
 }
 },getBookmark:function(){
-var _864;
-var _865=dojo.doc();
-if(_865["selection"]){
-var _866=_865.selection.createRange();
-_864=_866.getBookmark();
+var _86c;
+var _86d=dojo.doc();
+if(_86d["selection"]){
+var _86e=_86d.selection.createRange();
+_86c=_86e.getBookmark();
 }else{
-var _867;
+var _86f;
 try{
-_867=dojo.global().getSelection();
+_86f=dojo.global().getSelection();
 }
 catch(e){
 }
-if(_867){
-var _866=_867.getRangeAt(0);
-_864=_866.cloneRange();
+if(_86f){
+var _86e=_86f.getRangeAt(0);
+_86c=_86e.cloneRange();
 }else{
 dojo.debug("No idea how to store the current selection for this browser!");
 }
 }
-return _864;
-},moveToBookmark:function(_868){
-var _869=dojo.doc();
-if(_869["selection"]){
-var _86a=_869.selection.createRange();
-_86a.moveToBookmark(_868);
-_86a.select();
+return _86c;
+},moveToBookmark:function(_870){
+var _871=dojo.doc();
+if(_871["selection"]){
+var _872=_871.selection.createRange();
+_872.moveToBookmark(_870);
+_872.select();
 }else{
-var _86b;
+var _873;
 try{
-_86b=dojo.global().getSelection();
+_873=dojo.global().getSelection();
 }
 catch(e){
 }
-if(_86b&&_86b["removeAllRanges"]){
-_86b.removeAllRanges();
-_86b.addRange(_868);
+if(_873&&_873["removeAllRanges"]){
+_873.removeAllRanges();
+_873.addRange(_870);
 }else{
 dojo.debug("No idea how to restore selection for this browser!");
 }
 }
-},collapse:function(_86c){
+},collapse:function(_874){
 if(dojo.global()["getSelection"]){
-var _86d=dojo.global().getSelection();
-if(_86d.removeAllRanges){
-if(_86c){
-_86d.collapseToStart();
+var _875=dojo.global().getSelection();
+if(_875.removeAllRanges){
+if(_874){
+_875.collapseToStart();
 }else{
-_86d.collapseToEnd();
+_875.collapseToEnd();
 }
 }else{
-dojo.global().getSelection().collapse(_86c);
+dojo.global().getSelection().collapse(_874);
 }
 }else{
 if(dojo.doc().selection){
-var _86e=dojo.doc().selection.createRange();
-_86e.collapse(_86c);
-_86e.select();
+var _876=dojo.doc().selection.createRange();
+_876.collapse(_874);
+_876.select();
 }
 }
 },remove:function(){
 if(dojo.doc().selection){
-var _86f=dojo.doc().selection;
-if(_86f.type.toUpperCase()!="NONE"){
-_86f.clear();
+var _877=dojo.doc().selection;
+if(_877.type.toUpperCase()!="NONE"){
+_877.clear();
 }
-return _86f;
+return _877;
 }else{
-var _86f=dojo.global().getSelection();
-for(var i=0;i<_86f.rangeCount;i++){
-_86f.getRangeAt(i).deleteContents();
+var _877=dojo.global().getSelection();
+for(var i=0;i<_877.rangeCount;i++){
+_877.getRangeAt(i).deleteContents();
 }
-return _86f;
+return _877;
 }
 }});
 dojo.provide("dojo.html.iframe");
-dojo.html.iframeContentWindow=function(_871){
-var win=dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(_871))||dojo.html.iframeContentDocument(_871).__parent__||(_871.name&&document.frames[_871.name])||null;
+dojo.html.iframeContentWindow=function(_879){
+var win=dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(_879))||dojo.html.iframeContentDocument(_879).__parent__||(_879.name&&document.frames[_879.name])||null;
 return win;
 };
-dojo.html.iframeContentDocument=function(_873){
-var doc=_873.contentDocument||((_873.contentWindow)&&(_873.contentWindow.document))||((_873.name)&&(document.frames[_873.name])&&(document.frames[_873.name].document))||null;
+dojo.html.iframeContentDocument=function(_87b){
+var doc=_87b.contentDocument||((_87b.contentWindow)&&(_87b.contentWindow.document))||((_87b.name)&&(document.frames[_87b.name])&&(document.frames[_87b.name].document))||null;
 return doc;
 };
 dojo.html.BackgroundIframe=function(node){
@@ -47548,24 +39116,24 @@
 };
 dojo.lang.extend(dojo.html.BackgroundIframe,{iframe:null,onResized:function(){
 if(this.iframe&&this.domNode&&this.domNode.parentNode){
-var _877=dojo.html.getMarginBox(this.domNode);
-if(_877.width==0||_877.height==0){
+var _87f=dojo.html.getMarginBox(this.domNode);
+if(_87f.width==0||_87f.height==0){
 dojo.lang.setTimeout(this,this.onResized,100);
 return;
 }
-this.iframe.style.width=_877.width+"px";
-this.iframe.style.height=_877.height+"px";
+this.iframe.style.width=_87f.width+"px";
+this.iframe.style.height=_87f.height+"px";
 }
 },size:function(node){
 if(!this.iframe){
 return;
 }
-var _879=dojo.html.toCoordinateObject(node,true,dojo.html.boxSizing.BORDER_BOX);
+var _881=dojo.html.toCoordinateObject(node,true,dojo.html.boxSizing.BORDER_BOX);
 with(this.iframe.style){
-width=_879.width+"px";
-height=_879.height+"px";
-left=_879.left+"px";
-top=_879.top+"px";
+width=_881.width+"px";
+height=_881.height+"px";
+left=_881.left+"px";
+top=_881.top+"px";
 }
 },setZIndex:function(node){
 if(!this.iframe){
@@ -47595,14 +39163,14 @@
 }});
 dojo.provide("dojo.dnd.HtmlDragAndDrop");
 dojo.declare("dojo.dnd.HtmlDragSource",dojo.dnd.DragSource,{dragClass:"",onDragStart:function(){
-var _87b=new dojo.dnd.HtmlDragObject(this.dragObject,this.type);
+var _883=new dojo.dnd.HtmlDragObject(this.dragObject,this.type);
 if(this.dragClass){
-_87b.dragClass=this.dragClass;
+_883.dragClass=this.dragClass;
 }
 if(this.constrainToContainer){
-_87b.constrainTo(this.constrainingContainer||this.domNode.parentNode);
+_883.constrainTo(this.constrainingContainer||this.domNode.parentNode);
 }
-return _87b;
+return _883;
 },setDragHandle:function(node){
 node=dojo.byId(node);
 dojo.dnd.dragManager.unregisterDragSource(this);
@@ -47610,10 +39178,10 @@
 dojo.dnd.dragManager.registerDragSource(this);
 },setDragTarget:function(node){
 this.dragObject=node;
-},constrainTo:function(_87e){
+},constrainTo:function(_886){
 this.constrainToContainer=true;
-if(_87e){
-this.constrainingContainer=_87e;
+if(_886){
+this.constrainingContainer=_886;
 }
 },onSelected:function(){
 for(var i=0;i<this.dragObjects.length;i++){
@@ -47646,35 +39214,35 @@
 var isTr=(ltn=="tr");
 if((isTr)||(ltn=="tbody")){
 var doc=this.domNode.ownerDocument;
-var _888=doc.createElement("table");
+var _890=doc.createElement("table");
 if(isTr){
-var _889=doc.createElement("tbody");
-_888.appendChild(_889);
-_889.appendChild(node);
+var _891=doc.createElement("tbody");
+_890.appendChild(_891);
+_891.appendChild(node);
 }else{
-_888.appendChild(node);
+_890.appendChild(node);
 }
-var _88a=((isTr)?this.domNode:this.domNode.firstChild);
-var _88b=((isTr)?node:node.firstChild);
-var _88c=_88a.childNodes;
-var _88d=_88b.childNodes;
-for(var i=0;i<_88c.length;i++){
-if((_88d[i])&&(_88d[i].style)){
-_88d[i].style.width=dojo.html.getContentBox(_88c[i]).width+"px";
+var _892=((isTr)?this.domNode:this.domNode.firstChild);
+var _893=((isTr)?node:node.firstChild);
+var _894=_892.childNodes;
+var _895=_893.childNodes;
+for(var i=0;i<_894.length;i++){
+if((_895[i])&&(_895[i].style)){
+_895[i].style.width=dojo.html.getContentBox(_894[i]).width+"px";
 }
 }
-node=_888;
+node=_890;
 }
 if((dojo.render.html.ie55||dojo.render.html.ie60)&&this.createIframe){
 with(node.style){
 top="0px";
 left="0px";
 }
-var _88f=document.createElement("div");
-_88f.appendChild(node);
-this.bgIframe=new dojo.html.BackgroundIframe(_88f);
-_88f.appendChild(this.bgIframe.iframe);
-node=_88f;
+var _897=document.createElement("div");
+_897.appendChild(node);
+this.bgIframe=new dojo.html.BackgroundIframe(_897);
+_897.appendChild(this.bgIframe.iframe);
+node=_897;
 }
 node.style.zIndex=999;
 return node;
@@ -47697,32 +39265,32 @@
 dojo.event.topic.publish("dragStart",{source:this});
 },getConstraints:function(){
 if(this.constrainingContainer.nodeName.toLowerCase()=="body"){
-var _891=dojo.html.getViewport();
-var _892=_891.width;
-var _893=_891.height;
-var _894=dojo.html.getScroll().offset;
-var x=_894.x;
-var y=_894.y;
+var _899=dojo.html.getViewport();
+var _89a=_899.width;
+var _89b=_899.height;
+var _89c=dojo.html.getScroll().offset;
+var x=_89c.x;
+var y=_89c.y;
 }else{
-var _897=dojo.html.getContentBox(this.constrainingContainer);
-_892=_897.width;
-_893=_897.height;
+var _89f=dojo.html.getContentBox(this.constrainingContainer);
+_89a=_89f.width;
+_89b=_89f.height;
 x=this.containingBlockPosition.x+dojo.html.getPixelValue(this.constrainingContainer,"padding-left",true)+dojo.html.getBorderExtent(this.constrainingContainer,"left");
 y=this.containingBlockPosition.y+dojo.html.getPixelValue(this.constrainingContainer,"padding-top",true)+dojo.html.getBorderExtent(this.constrainingContainer,"top");
 }
 var mb=dojo.html.getMarginBox(this.domNode);
-return {minX:x,minY:y,maxX:x+_892-mb.width,maxY:y+_893-mb.height};
+return {minX:x,minY:y,maxX:x+_89a-mb.width,maxY:y+_89b-mb.height};
 },updateDragOffset:function(){
-var _899=dojo.html.getScroll().offset;
-if(_899.y!=this.scrollOffset.y){
-var diff=_899.y-this.scrollOffset.y;
+var _8a1=dojo.html.getScroll().offset;
+if(_8a1.y!=this.scrollOffset.y){
+var diff=_8a1.y-this.scrollOffset.y;
 this.dragOffset.y+=diff;
-this.scrollOffset.y=_899.y;
+this.scrollOffset.y=_8a1.y;
 }
-if(_899.x!=this.scrollOffset.x){
-var diff=_899.x-this.scrollOffset.x;
+if(_8a1.x!=this.scrollOffset.x){
+var diff=_8a1.x-this.scrollOffset.x;
 this.dragOffset.x+=diff;
-this.scrollOffset.x=_899.x;
+this.scrollOffset.x=_8a1.x;
 }
 },onDragMove:function(e){
 this.updateDragOffset();
@@ -47758,22 +39326,22 @@
 this.dragClone=null;
 break;
 case "dropFailure":
-var _8a1=dojo.html.getAbsolutePosition(this.dragClone,true);
-var _8a2={left:this.dragStartPosition.x+1,top:this.dragStartPosition.y+1};
-var anim=dojo.lfx.slideTo(this.dragClone,_8a2,300);
-var _8a4=this;
+var _8a9=dojo.html.getAbsolutePosition(this.dragClone,true);
+var _8aa={left:this.dragStartPosition.x+1,top:this.dragStartPosition.y+1};
+var anim=dojo.lfx.slideTo(this.dragClone,_8aa,300);
+var _8ac=this;
 dojo.event.connect(anim,"onEnd",function(e){
-dojo.html.removeNode(_8a4.dragClone);
-_8a4.dragClone=null;
+dojo.html.removeNode(_8ac.dragClone);
+_8ac.dragClone=null;
 });
 anim.play();
 break;
 }
 dojo.event.topic.publish("dragEnd",{source:this});
-},constrainTo:function(_8a6){
+},constrainTo:function(_8ae){
 this.constrainToContainer=true;
-if(_8a6){
-this.constrainingContainer=_8a6;
+if(_8ae){
+this.constrainingContainer=_8ae;
 }else{
 this.constrainingContainer=this.domNode.parentNode;
 }
@@ -47789,18 +39357,18 @@
 return false;
 }
 this.childBoxes=[];
-for(var i=0,_8ab;i<this.domNode.childNodes.length;i++){
-_8ab=this.domNode.childNodes[i];
-if(_8ab.nodeType!=dojo.html.ELEMENT_NODE){
+for(var i=0,_8b3;i<this.domNode.childNodes.length;i++){
+_8b3=this.domNode.childNodes[i];
+if(_8b3.nodeType!=dojo.html.ELEMENT_NODE){
 continue;
 }
-var pos=dojo.html.getAbsolutePosition(_8ab,true);
-var _8ad=dojo.html.getBorderBox(_8ab);
-this.childBoxes.push({top:pos.y,bottom:pos.y+_8ad.height,left:pos.x,right:pos.x+_8ad.width,height:_8ad.height,width:_8ad.width,node:_8ab});
+var pos=dojo.html.getAbsolutePosition(_8b3,true);
+var _8b5=dojo.html.getBorderBox(_8b3);
+this.childBoxes.push({top:pos.y,bottom:pos.y+_8b5.height,left:pos.x,right:pos.x+_8b5.width,height:_8b5.height,width:_8b5.width,node:_8b3});
 }
 return true;
 },_getNodeUnderMouse:function(e){
-for(var i=0,_8b0;i<this.childBoxes.length;i++){
+for(var i=0,_8b8;i<this.childBoxes.length;i++){
 with(this.childBoxes[i]){
 if(e.pageX>=left&&e.pageX<=right&&e.pageY>=top&&e.pageY<=bottom){
 return i;
@@ -47827,30 +39395,30 @@
 left=dojo.html.getAbsolutePosition(this.domNode,true).x+"px";
 }
 }
-},onDragMove:function(e,_8b2){
+},onDragMove:function(e,_8ba){
 var i=this._getNodeUnderMouse(e);
 if(!this.dropIndicator){
 this.createDropIndicator();
 }
-var _8b4=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
+var _8bc=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
 var hide=false;
 if(i<0){
 if(this.childBoxes.length){
-var _8b6=(dojo.html.gravity(this.childBoxes[0].node,e)&_8b4);
-if(_8b6){
+var _8be=(dojo.html.gravity(this.childBoxes[0].node,e)&_8bc);
+if(_8be){
 hide=true;
 }
 }else{
-var _8b6=true;
+var _8be=true;
 }
 }else{
-var _8b7=this.childBoxes[i];
-var _8b6=(dojo.html.gravity(_8b7.node,e)&_8b4);
-if(_8b7.node===_8b2[0].dragSource.domNode){
+var _8bf=this.childBoxes[i];
+var _8be=(dojo.html.gravity(_8bf.node,e)&_8bc);
+if(_8bf.node===_8ba[0].dragSource.domNode){
 hide=true;
 }else{
-var _8b8=_8b6?(i>0?this.childBoxes[i-1]:_8b7):(i<this.childBoxes.length-1?this.childBoxes[i+1]:_8b7);
-if(_8b8.node===_8b2[0].dragSource.domNode){
+var _8c0=_8be?(i>0?this.childBoxes[i-1]:_8bf):(i<this.childBoxes.length-1?this.childBoxes[i+1]:_8bf);
+if(_8c0.node===_8ba[0].dragSource.domNode){
 hide=true;
 }
 }
@@ -47861,30 +39429,30 @@
 }else{
 this.dropIndicator.style.display="";
 }
-this.placeIndicator(e,_8b2,i,_8b6);
+this.placeIndicator(e,_8ba,i,_8be);
 if(!dojo.html.hasParent(this.dropIndicator)){
 dojo.body().appendChild(this.dropIndicator);
 }
-},placeIndicator:function(e,_8ba,_8bb,_8bc){
-var _8bd=this.vertical?"left":"top";
-var _8be;
-if(_8bb<0){
+},placeIndicator:function(e,_8c2,_8c3,_8c4){
+var _8c5=this.vertical?"left":"top";
+var _8c6;
+if(_8c3<0){
 if(this.childBoxes.length){
-_8be=_8bc?this.childBoxes[0]:this.childBoxes[this.childBoxes.length-1];
+_8c6=_8c4?this.childBoxes[0]:this.childBoxes[this.childBoxes.length-1];
 }else{
-this.dropIndicator.style[_8bd]=dojo.html.getAbsolutePosition(this.domNode,true)[this.vertical?"x":"y"]+"px";
+this.dropIndicator.style[_8c5]=dojo.html.getAbsolutePosition(this.domNode,true)[this.vertical?"x":"y"]+"px";
 }
 }else{
-_8be=this.childBoxes[_8bb];
+_8c6=this.childBoxes[_8c3];
 }
-if(_8be){
-this.dropIndicator.style[_8bd]=(_8bc?_8be[_8bd]:_8be[this.vertical?"right":"bottom"])+"px";
+if(_8c6){
+this.dropIndicator.style[_8c5]=(_8c4?_8c6[_8c5]:_8c6[this.vertical?"right":"bottom"])+"px";
 if(this.vertical){
-this.dropIndicator.style.height=_8be.height+"px";
-this.dropIndicator.style.top=_8be.top+"px";
+this.dropIndicator.style.height=_8c6.height+"px";
+this.dropIndicator.style.top=_8c6.top+"px";
 }else{
-this.dropIndicator.style.width=_8be.width+"px";
-this.dropIndicator.style.left=_8be.left+"px";
+this.dropIndicator.style.width=_8c6.width+"px";
+this.dropIndicator.style.left=_8c6.left+"px";
 }
 }
 },onDragOut:function(e){
@@ -47895,10 +39463,10 @@
 },onDrop:function(e){
 this.onDragOut(e);
 var i=this._getNodeUnderMouse(e);
-var _8c2=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
+var _8ca=this.vertical?dojo.html.gravity.WEST:dojo.html.gravity.NORTH;
 if(i<0){
 if(this.childBoxes.length){
-if(dojo.html.gravity(this.childBoxes[0].node,e)&_8c2){
+if(dojo.html.gravity(this.childBoxes[0].node,e)&_8ca){
 return this.insert(e,this.childBoxes[0].node,"before");
 }else{
 return this.insert(e,this.childBoxes[this.childBoxes.length-1].node,"after");
@@ -47906,45 +39474,45 @@
 }
 return this.insert(e,this.domNode,"append");
 }
-var _8c3=this.childBoxes[i];
-if(dojo.html.gravity(_8c3.node,e)&_8c2){
-return this.insert(e,_8c3.node,"before");
+var _8cb=this.childBoxes[i];
+if(dojo.html.gravity(_8cb.node,e)&_8ca){
+return this.insert(e,_8cb.node,"before");
 }else{
-return this.insert(e,_8c3.node,"after");
+return this.insert(e,_8cb.node,"after");
 }
-},insert:function(e,_8c5,_8c6){
+},insert:function(e,_8cd,_8ce){
 var node=e.dragObject.domNode;
-if(_8c6=="before"){
-return dojo.html.insertBefore(node,_8c5);
+if(_8ce=="before"){
+return dojo.html.insertBefore(node,_8cd);
 }else{
-if(_8c6=="after"){
-return dojo.html.insertAfter(node,_8c5);
+if(_8ce=="after"){
+return dojo.html.insertAfter(node,_8cd);
 }else{
-if(_8c6=="append"){
-_8c5.appendChild(node);
+if(_8ce=="append"){
+_8cd.appendChild(node);
 return true;
 }
 }
 }
 return false;
-}},function(node,_8c9){
+}},function(node,_8d1){
 if(arguments.length==0){
 return;
 }
 this.domNode=dojo.byId(node);
 dojo.dnd.DropTarget.call(this);
-if(_8c9&&dojo.lang.isString(_8c9)){
-_8c9=[_8c9];
+if(_8d1&&dojo.lang.isString(_8d1)){
+_8d1=[_8d1];
 }
-this.acceptedTypes=_8c9||[];
+this.acceptedTypes=_8d1||[];
 dojo.dnd.dragManager.registerDropTarget(this);
 });
 dojo.kwCompoundRequire({common:["dojo.dnd.DragAndDrop"],browser:["dojo.dnd.HtmlDragAndDrop"],dashboard:["dojo.dnd.HtmlDragAndDrop"]});
 dojo.provide("dojo.dnd.*");
 dojo.provide("dojo.ns");
-dojo.ns={namespaces:{},failed:{},loading:{},loaded:{},register:function(name,_8cb,_8cc,_8cd){
-if(!_8cd||!this.namespaces[name]){
-this.namespaces[name]=new dojo.ns.Ns(name,_8cb,_8cc);
+dojo.ns={namespaces:{},failed:{},loading:{},loaded:{},register:function(name,_8d3,_8d4,_8d5){
+if(!_8d5||!this.namespaces[name]){
+this.namespaces[name]=new dojo.ns.Ns(name,_8d3,_8d4);
 }
 },allow:function(name){
 if(this.failed[name]){
@@ -47988,44 +39556,44 @@
 }
 return this.namespaces[name];
 }};
-dojo.ns.Ns=function(name,_8d4,_8d5){
+dojo.ns.Ns=function(name,_8dc,_8dd){
 this.name=name;
-this.module=_8d4;
-this.resolver=_8d5;
+this.module=_8dc;
+this.resolver=_8dd;
 this._loaded=[];
 this._failed=[];
 };
-dojo.ns.Ns.prototype.resolve=function(name,_8d7,_8d8){
+dojo.ns.Ns.prototype.resolve=function(name,_8df,_8e0){
 if(!this.resolver||djConfig["skipAutoRequire"]){
 return false;
 }
-var _8d9=this.resolver(name,_8d7);
-if((_8d9)&&(!this._loaded[_8d9])&&(!this._failed[_8d9])){
+var _8e1=this.resolver(name,_8df);
+if((_8e1)&&(!this._loaded[_8e1])&&(!this._failed[_8e1])){
 var req=dojo.require;
-req(_8d9,false,true);
-if(dojo.hostenv.findModule(_8d9,false)){
-this._loaded[_8d9]=true;
+req(_8e1,false,true);
+if(dojo.hostenv.findModule(_8e1,false)){
+this._loaded[_8e1]=true;
 }else{
-if(!_8d8){
-dojo.raise("dojo.ns.Ns.resolve: module '"+_8d9+"' not found after loading via namespace '"+this.name+"'");
+if(!_8e0){
+dojo.raise("dojo.ns.Ns.resolve: module '"+_8e1+"' not found after loading via namespace '"+this.name+"'");
 }
-this._failed[_8d9]=true;
+this._failed[_8e1]=true;
 }
 }
-return Boolean(this._loaded[_8d9]);
+return Boolean(this._loaded[_8e1]);
 };
-dojo.registerNamespace=function(name,_8dc,_8dd){
+dojo.registerNamespace=function(name,_8e4,_8e5){
 dojo.ns.register.apply(dojo.ns,arguments);
 };
-dojo.registerNamespaceResolver=function(name,_8df){
+dojo.registerNamespaceResolver=function(name,_8e7){
 var n=dojo.ns.namespaces[name];
 if(n){
-n.resolver=_8df;
+n.resolver=_8e7;
 }
 };
-dojo.registerNamespaceManifest=function(_8e1,path,name,_8e4,_8e5){
+dojo.registerNamespaceManifest=function(_8e9,path,name,_8ec,_8ed){
 dojo.registerModulePath(name,path);
-dojo.registerNamespace(name,_8e4,_8e5);
+dojo.registerNamespace(name,_8ec,_8ed);
 };
 dojo.registerNamespace("dojo","dojo.widget");
 dojo.provide("dojo.widget.Manager");
@@ -48033,35 +39601,35 @@
 this.widgets=[];
 this.widgetIds=[];
 this.topWidgets={};
-var _8e6={};
-var _8e7=[];
-this.getUniqueId=function(_8e8){
-var _8e9;
+var _8ee={};
+var _8ef=[];
+this.getUniqueId=function(_8f0){
+var _8f1;
 do{
-_8e9=_8e8+"_"+(_8e6[_8e8]!=undefined?++_8e6[_8e8]:_8e6[_8e8]=0);
-}while(this.getWidgetById(_8e9));
-return _8e9;
+_8f1=_8f0+"_"+(_8ee[_8f0]!=undefined?++_8ee[_8f0]:_8ee[_8f0]=0);
+}while(this.getWidgetById(_8f1));
+return _8f1;
 };
-this.add=function(_8ea){
-this.widgets.push(_8ea);
-if(!_8ea.extraArgs["id"]){
-_8ea.extraArgs["id"]=_8ea.extraArgs["ID"];
+this.add=function(_8f2){
+this.widgets.push(_8f2);
+if(!_8f2.extraArgs["id"]){
+_8f2.extraArgs["id"]=_8f2.extraArgs["ID"];
 }
-if(_8ea.widgetId==""){
-if(_8ea["id"]){
-_8ea.widgetId=_8ea["id"];
+if(_8f2.widgetId==""){
+if(_8f2["id"]){
+_8f2.widgetId=_8f2["id"];
 }else{
-if(_8ea.extraArgs["id"]){
-_8ea.widgetId=_8ea.extraArgs["id"];
+if(_8f2.extraArgs["id"]){
+_8f2.widgetId=_8f2.extraArgs["id"];
 }else{
-_8ea.widgetId=this.getUniqueId(_8ea.ns+"_"+_8ea.widgetType);
+_8f2.widgetId=this.getUniqueId(_8f2.ns+"_"+_8f2.widgetType);
 }
 }
 }
-if(this.widgetIds[_8ea.widgetId]){
-dojo.debug("widget ID collision on ID: "+_8ea.widgetId);
+if(this.widgetIds[_8f2.widgetId]){
+dojo.debug("widget ID collision on ID: "+_8f2.widgetId);
 }
-this.widgetIds[_8ea.widgetId]=_8ea;
+this.widgetIds[_8f2.widgetId]=_8f2;
 };
 this.destroyAll=function(){
 for(var x=this.widgets.length-1;x>=0;x--){
@@ -48073,14 +39641,14 @@
 }
 }
 };
-this.remove=function(_8ec){
-if(dojo.lang.isNumber(_8ec)){
-var tw=this.widgets[_8ec].widgetId;
+this.remove=function(_8f4){
+if(dojo.lang.isNumber(_8f4)){
+var tw=this.widgets[_8f4].widgetId;
 delete this.topWidgets[tw];
 delete this.widgetIds[tw];
-this.widgets.splice(_8ec,1);
+this.widgets.splice(_8f4,1);
 }else{
-this.removeById(_8ec);
+this.removeById(_8f4);
 }
 };
 this.removeById=function(id){
@@ -48106,31 +39674,31 @@
 };
 this.getWidgetsByType=function(type){
 var lt=type.toLowerCase();
-var _8f3=(type.indexOf(":")<0?function(x){
+var _8fb=(type.indexOf(":")<0?function(x){
 return x.widgetType.toLowerCase();
 }:function(x){
 return x.getNamespacedType();
 });
 var ret=[];
 dojo.lang.forEach(this.widgets,function(x){
-if(_8f3(x)==lt){
+if(_8fb(x)==lt){
 ret.push(x);
 }
 });
 return ret;
 };
-this.getWidgetsByFilter=function(_8f8,_8f9){
+this.getWidgetsByFilter=function(_900,_901){
 var ret=[];
 dojo.lang.every(this.widgets,function(x){
-if(_8f8(x)){
+if(_900(x)){
 ret.push(x);
-if(_8f9){
+if(_901){
 return false;
 }
 }
 return true;
 });
-return (_8f9?ret[0]:ret);
+return (_901?ret[0]:ret);
 };
 this.getAllWidgets=function(){
 return this.widgets.concat();
@@ -48149,99 +39717,99 @@
 this.byType=this.getWidgetsByType;
 this.byFilter=this.getWidgetsByFilter;
 this.byNode=this.getWidgetByNode;
-var _8ff={};
-var _900=["dojo.widget"];
-for(var i=0;i<_900.length;i++){
-_900[_900[i]]=true;
+var _907={};
+var _908=["dojo.widget"];
+for(var i=0;i<_908.length;i++){
+_908[_908[i]]=true;
 }
-this.registerWidgetPackage=function(_902){
-if(!_900[_902]){
-_900[_902]=true;
-_900.push(_902);
+this.registerWidgetPackage=function(_90a){
+if(!_908[_90a]){
+_908[_90a]=true;
+_908.push(_90a);
 }
 };
 this.getWidgetPackageList=function(){
-return dojo.lang.map(_900,function(elt){
+return dojo.lang.map(_908,function(elt){
 return (elt!==true?elt:undefined);
 });
 };
-this.getImplementation=function(_904,_905,_906,ns){
-var impl=this.getImplementationName(_904,ns);
+this.getImplementation=function(_90c,_90d,_90e,ns){
+var impl=this.getImplementationName(_90c,ns);
 if(impl){
-var ret=_905?new impl(_905):new impl();
+var ret=_90d?new impl(_90d):new impl();
 return ret;
 }
 };
 function buildPrefixCache(){
-for(var _90a in dojo.render){
-if(dojo.render[_90a]["capable"]===true){
-var _90b=dojo.render[_90a].prefixes;
-for(var i=0;i<_90b.length;i++){
-_8e7.push(_90b[i].toLowerCase());
+for(var _912 in dojo.render){
+if(dojo.render[_912]["capable"]===true){
+var _913=dojo.render[_912].prefixes;
+for(var i=0;i<_913.length;i++){
+_8ef.push(_913[i].toLowerCase());
 }
 }
 }
 }
-var _90d=function(_90e,_90f){
-if(!_90f){
+var _915=function(_916,_917){
+if(!_917){
 return null;
 }
-for(var i=0,l=_8e7.length,_912;i<=l;i++){
-_912=(i<l?_90f[_8e7[i]]:_90f);
-if(!_912){
+for(var i=0,l=_8ef.length,_91a;i<=l;i++){
+_91a=(i<l?_917[_8ef[i]]:_917);
+if(!_91a){
 continue;
 }
-for(var name in _912){
-if(name.toLowerCase()==_90e){
-return _912[name];
+for(var name in _91a){
+if(name.toLowerCase()==_916){
+return _91a[name];
 }
 }
 }
 return null;
 };
-var _914=function(_915,_916){
-var _917=dojo.evalObjPath(_916,false);
-return (_917?_90d(_915,_917):null);
+var _91c=function(_91d,_91e){
+var _91f=dojo.evalObjPath(_91e,false);
+return (_91f?_915(_91d,_91f):null);
 };
-this.getImplementationName=function(_918,ns){
-var _91a=_918.toLowerCase();
+this.getImplementationName=function(_920,ns){
+var _922=_920.toLowerCase();
 ns=ns||"dojo";
-var imps=_8ff[ns]||(_8ff[ns]={});
-var impl=imps[_91a];
+var imps=_907[ns]||(_907[ns]={});
+var impl=imps[_922];
 if(impl){
 return impl;
 }
-if(!_8e7.length){
+if(!_8ef.length){
 buildPrefixCache();
 }
-var _91d=dojo.ns.get(ns);
-if(!_91d){
+var _925=dojo.ns.get(ns);
+if(!_925){
 dojo.ns.register(ns,ns+".widget");
-_91d=dojo.ns.get(ns);
+_925=dojo.ns.get(ns);
 }
-if(_91d){
-_91d.resolve(_918);
+if(_925){
+_925.resolve(_920);
 }
-impl=_914(_91a,_91d.module);
+impl=_91c(_922,_925.module);
 if(impl){
-return (imps[_91a]=impl);
+return (imps[_922]=impl);
 }
-_91d=dojo.ns.require(ns);
-if((_91d)&&(_91d.resolver)){
-_91d.resolve(_918);
-impl=_914(_91a,_91d.module);
+_925=dojo.ns.require(ns);
+if((_925)&&(_925.resolver)){
+_925.resolve(_920);
+impl=_91c(_922,_925.module);
 if(impl){
-return (imps[_91a]=impl);
+return (imps[_922]=impl);
 }
 }
-dojo.deprecated("dojo.widget.Manager.getImplementationName","Could not locate widget implementation for \""+_918+"\" in \""+_91d.module+"\" registered to namespace \""+_91d.name+"\". "+"Developers must specify correct namespaces for all non-Dojo widgets","0.5");
-for(var i=0;i<_900.length;i++){
-impl=_914(_91a,_900[i]);
+dojo.deprecated("dojo.widget.Manager.getImplementationName","Could not locate widget implementation for \""+_920+"\" in \""+_925.module+"\" registered to namespace \""+_925.name+"\". "+"Developers must specify correct namespaces for all non-Dojo widgets","0.5");
+for(var i=0;i<_908.length;i++){
+impl=_91c(_922,_908[i]);
 if(impl){
-return (imps[_91a]=impl);
+return (imps[_922]=impl);
 }
 }
-throw new Error("Could not locate widget implementation for \""+_918+"\" in \""+_91d.module+"\" registered to namespace \""+_91d.name+"\"");
+throw new Error("Could not locate widget implementation for \""+_920+"\" in \""+_925.module+"\" registered to namespace \""+_925.name+"\"");
 };
 this.resizing=false;
 this.onWindowResized=function(){
@@ -48251,9 +39819,9 @@
 try{
 this.resizing=true;
 for(var id in this.topWidgets){
-var _920=this.topWidgets[id];
-if(_920.checkSize){
-_920.checkSize();
+var _928=this.topWidgets[id];
+if(_928.checkSize){
+_928.checkSize();
 }
 }
 }
@@ -48272,8 +39840,8 @@
 var dw=dojo.widget;
 var dwm=dw.manager;
 var h=dojo.lang.curry(dojo.lang,"hitch",dwm);
-var g=function(_925,_926){
-dw[(_926||_925)]=h(_925);
+var g=function(_92d,_92e){
+dw[(_92e||_92d)]=h(_92d);
 };
 g("add","addWidget");
 g("destroyAll","destroyAllWidgets");
@@ -48287,11 +39855,11 @@
 g("getWidgetsByFilter","byFilter");
 g("getWidgetByNode","byNode");
 dw.all=function(n){
-var _928=dwm.getAllWidgets.apply(dwm,arguments);
+var _930=dwm.getAllWidgets.apply(dwm,arguments);
 if(arguments.length>0){
-return _928[n];
+return _930[n];
 }
-return _928;
+return _930;
 };
 g("registerWidgetPackage");
 g("getImplementation","getWidgetImplementation");
@@ -48315,22 +39883,22 @@
 var div=document.createElement("div");
 div.style.backgroundImage="url(\""+this.imgPath+"/tab_close.gif\")";
 dojo.body().appendChild(div);
-var _92a=null;
+var _932=null;
 if(window.getComputedStyle){
-var _92b=getComputedStyle(div,"");
-_92a=_92b.getPropertyValue("background-image");
+var _933=getComputedStyle(div,"");
+_932=_933.getPropertyValue("background-image");
 }else{
-_92a=div.currentStyle.backgroundImage;
+_932=div.currentStyle.backgroundImage;
 }
-var _92c=false;
-if(_92a!=null&&(_92a=="none"||_92a=="url(invalid-url:)")){
+var _934=false;
+if(_932!=null&&(_932=="none"||_932=="url(invalid-url:)")){
 this.accessible=true;
 }
 dojo.body().removeChild(div);
 }
 return this.accessible;
-},setCheckAccessible:function(_92d){
-this.doAccessibleCheck=_92d;
+},setCheckAccessible:function(_935){
+this.doAccessibleCheck=_935;
 },setAccessibleMode:function(){
 if(this.accessible===null){
 if(this.checkAccessible()){
@@ -48357,52 +39925,52 @@
 this.notifyChildrenOfResize();
 },notifyChildrenOfResize:function(){
 for(var i=0;i<this.children.length;i++){
-var _92f=this.children[i];
-if(_92f.onResized){
-_92f.onResized();
+var _937=this.children[i];
+if(_937.onResized){
+_937.onResized();
 }
 }
-},create:function(args,_931,_932,ns){
+},create:function(args,_939,_93a,ns){
 if(ns){
 this.ns=ns;
 }
-this.satisfyPropertySets(args,_931,_932);
-this.mixInProperties(args,_931,_932);
-this.postMixInProperties(args,_931,_932);
+this.satisfyPropertySets(args,_939,_93a);
+this.mixInProperties(args,_939,_93a);
+this.postMixInProperties(args,_939,_93a);
 dojo.widget.manager.add(this);
-this.buildRendering(args,_931,_932);
-this.initialize(args,_931,_932);
-this.postInitialize(args,_931,_932);
-this.postCreate(args,_931,_932);
+this.buildRendering(args,_939,_93a);
+this.initialize(args,_939,_93a);
+this.postInitialize(args,_939,_93a);
+this.postCreate(args,_939,_93a);
 return this;
-},destroy:function(_934){
+},destroy:function(_93c){
 if(this.parent){
 this.parent.removeChild(this);
 }
 this.destroyChildren();
 this.uninitialize();
-this.destroyRendering(_934);
+this.destroyRendering(_93c);
 dojo.widget.manager.removeById(this.widgetId);
 },destroyChildren:function(){
-var _935;
+var _93d;
 var i=0;
 while(this.children.length>i){
-_935=this.children[i];
-if(_935 instanceof dojo.widget.Widget){
-this.removeChild(_935);
-_935.destroy();
+_93d=this.children[i];
+if(_93d instanceof dojo.widget.Widget){
+this.removeChild(_93d);
+_93d.destroy();
 continue;
 }
 i++;
 }
-},getChildrenOfType:function(type,_938){
+},getChildrenOfType:function(type,_940){
 var ret=[];
-var _93a=dojo.lang.isFunction(type);
-if(!_93a){
+var _942=dojo.lang.isFunction(type);
+if(!_942){
 type=type.toLowerCase();
 }
 for(var x=0;x<this.children.length;x++){
-if(_93a){
+if(_942){
 if(this.children[x] instanceof type){
 ret.push(this.children[x]);
 }
@@ -48411,24 +39979,24 @@
 ret.push(this.children[x]);
 }
 }
-if(_938){
-ret=ret.concat(this.children[x].getChildrenOfType(type,_938));
+if(_940){
+ret=ret.concat(this.children[x].getChildrenOfType(type,_940));
 }
 }
 return ret;
 },getDescendants:function(){
-var _93c=[];
-var _93d=[this];
+var _944=[];
+var _945=[this];
 var elem;
-while((elem=_93d.pop())){
-_93c.push(elem);
+while((elem=_945.pop())){
+_944.push(elem);
 if(elem.children){
 dojo.lang.forEach(elem.children,function(elem){
-_93d.push(elem);
+_945.push(elem);
 });
 }
 }
-return _93c;
+return _944;
 },isFirstChild:function(){
 return this===this.parent.children[0];
 },isLastChild:function(){
@@ -48442,29 +40010,29 @@
 }
 return;
 }
-var _944;
-var _945=dojo.widget.lcArgsCache[this.widgetType];
-if(_945==null){
-_945={};
+var _94c;
+var _94d=dojo.widget.lcArgsCache[this.widgetType];
+if(_94d==null){
+_94d={};
 for(var y in this){
-_945[((new String(y)).toLowerCase())]=y;
+_94d[((new String(y)).toLowerCase())]=y;
 }
-dojo.widget.lcArgsCache[this.widgetType]=_945;
+dojo.widget.lcArgsCache[this.widgetType]=_94d;
 }
-var _947={};
+var _94f={};
 for(var x in args){
 if(!this[x]){
-var y=_945[(new String(x)).toLowerCase()];
+var y=_94d[(new String(x)).toLowerCase()];
 if(y){
 args[y]=args[x];
 x=y;
 }
 }
-if(_947[x]){
+if(_94f[x]){
 continue;
 }
-_947[x]=true;
-if((typeof this[x])!=(typeof _944)){
+_94f[x]=true;
+if((typeof this[x])!=(typeof _94c)){
 if(typeof args[x]!="string"){
 this[x]=args[x];
 }else{
@@ -48495,11 +40063,11 @@
 if(this[x] instanceof dojo.uri.Uri){
 this[x]=dojo.uri.dojoUri(args[x]);
 }else{
-var _949=args[x].split(";");
-for(var y=0;y<_949.length;y++){
-var si=_949[y].indexOf(":");
-if((si!=-1)&&(_949[y].length>si)){
-this[x][_949[y].substr(0,si).replace(/^\s+|\s+$/g,"")]=_949[y].substr(si+1);
+var _951=args[x].split(";");
+for(var y=0;y<_951.length;y++){
+var si=_951[y].indexOf(":");
+if((si!=-1)&&(_951[y].length>si)){
+this[x][_951[y].substr(0,si).replace(/^\s+|\s+$/g,"")]=_951[y].substr(si+1);
 }
 }
 }
@@ -48517,34 +40085,34 @@
 this.extraArgs[x.toLowerCase()]=args[x];
 }
 }
-},postMixInProperties:function(args,frag,_94d){
-},initialize:function(args,frag,_950){
+},postMixInProperties:function(args,frag,_955){
+},initialize:function(args,frag,_958){
 return false;
-},postInitialize:function(args,frag,_953){
+},postInitialize:function(args,frag,_95b){
 return false;
-},postCreate:function(args,frag,_956){
+},postCreate:function(args,frag,_95e){
 return false;
 },uninitialize:function(){
 return false;
-},buildRendering:function(args,frag,_959){
+},buildRendering:function(args,frag,_961){
 dojo.unimplemented("dojo.widget.Widget.buildRendering, on "+this.toString()+", ");
 return false;
 },destroyRendering:function(){
 dojo.unimplemented("dojo.widget.Widget.destroyRendering");
 return false;
-},addedTo:function(_95a){
-},addChild:function(_95b){
+},addedTo:function(_962){
+},addChild:function(_963){
 dojo.unimplemented("dojo.widget.Widget.addChild");
 return false;
-},removeChild:function(_95c){
+},removeChild:function(_964){
 for(var x=0;x<this.children.length;x++){
-if(this.children[x]===_95c){
+if(this.children[x]===_964){
 this.children.splice(x,1);
-_95c.parent=null;
+_964.parent=null;
 break;
 }
 }
-return _95c;
+return _964;
 },getPreviousSibling:function(){
 var idx=this.getParentIndex();
 if(idx<=0){
@@ -48570,30 +40138,30 @@
 dojo.widget.tags.addParseTreeHandler=function(type){
 dojo.deprecated("addParseTreeHandler",". ParseTreeHandlers are now reserved for components. Any unfiltered DojoML tag without a ParseTreeHandler is assumed to be a widget","0.5");
 };
-dojo.widget.tags["dojo:propertyset"]=function(_961,_962,_963){
-var _964=_962.parseProperties(_961["dojo:propertyset"]);
+dojo.widget.tags["dojo:propertyset"]=function(_969,_96a,_96b){
+var _96c=_96a.parseProperties(_969["dojo:propertyset"]);
 };
-dojo.widget.tags["dojo:connect"]=function(_965,_966,_967){
-var _968=_966.parseProperties(_965["dojo:connect"]);
+dojo.widget.tags["dojo:connect"]=function(_96d,_96e,_96f){
+var _970=_96e.parseProperties(_96d["dojo:connect"]);
 };
-dojo.widget.buildWidgetFromParseTree=function(type,frag,_96b,_96c,_96d,_96e){
+dojo.widget.buildWidgetFromParseTree=function(type,frag,_973,_974,_975,_976){
 dojo.a11y.setAccessibleMode();
-var _96f=type.split(":");
-_96f=(_96f.length==2)?_96f[1]:type;
-var _970=_96e||_96b.parseProperties(frag[frag["ns"]+":"+_96f]);
-var _971=dojo.widget.manager.getImplementation(_96f,null,null,frag["ns"]);
-if(!_971){
+var _977=type.split(":");
+_977=(_977.length==2)?_977[1]:type;
+var _978=_976||_973.parseProperties(frag[frag["ns"]+":"+_977]);
+var _979=dojo.widget.manager.getImplementation(_977,null,null,frag["ns"]);
+if(!_979){
 throw new Error("cannot find \""+type+"\" widget");
 }else{
-if(!_971.create){
+if(!_979.create){
 throw new Error("\""+type+"\" widget object has no \"create\" method and does not appear to implement *Widget");
 }
 }
-_970["dojoinsertionindex"]=_96d;
-var ret=_971.create(_970,frag,_96c,frag["ns"]);
+_978["dojoinsertionindex"]=_975;
+var ret=_979.create(_978,frag,_974,frag["ns"]);
 return ret;
 };
-dojo.widget.defineWidget=function(_973,_974,_975,init,_977){
+dojo.widget.defineWidget=function(_97b,_97c,_97d,init,_97f){
 if(dojo.lang.isString(arguments[3])){
 dojo.widget._defineWidget(arguments[0],arguments[3],arguments[1],arguments[4],arguments[2]);
 }else{
@@ -48613,50 +40181,50 @@
 }
 };
 dojo.widget.defineWidget.renderers="html|svg|vml";
-dojo.widget._defineWidget=function(_97a,_97b,_97c,init,_97e){
-var _97f=_97a.split(".");
-var type=_97f.pop();
-var regx="\\.("+(_97b?_97b+"|":"")+dojo.widget.defineWidget.renderers+")\\.";
-var r=_97a.search(new RegExp(regx));
-_97f=(r<0?_97f.join("."):_97a.substr(0,r));
-dojo.widget.manager.registerWidgetPackage(_97f);
-var pos=_97f.indexOf(".");
-var _984=(pos>-1)?_97f.substring(0,pos):_97f;
-_97e=(_97e)||{};
-_97e.widgetType=type;
-if((!init)&&(_97e["classConstructor"])){
-init=_97e.classConstructor;
-delete _97e.classConstructor;
+dojo.widget._defineWidget=function(_982,_983,_984,init,_986){
+var _987=_982.split(".");
+var type=_987.pop();
+var regx="\\.("+(_983?_983+"|":"")+dojo.widget.defineWidget.renderers+")\\.";
+var r=_982.search(new RegExp(regx));
+_987=(r<0?_987.join("."):_982.substr(0,r));
+dojo.widget.manager.registerWidgetPackage(_987);
+var pos=_987.indexOf(".");
+var _98c=(pos>-1)?_987.substring(0,pos):_987;
+_986=(_986)||{};
+_986.widgetType=type;
+if((!init)&&(_986["classConstructor"])){
+init=_986.classConstructor;
+delete _986.classConstructor;
 }
-dojo.declare(_97a,_97c,init,_97e);
+dojo.declare(_982,_984,init,_986);
 };
 dojo.provide("dojo.widget.Parse");
-dojo.widget.Parse=function(_985){
+dojo.widget.Parse=function(_98d){
 this.propertySetsList=[];
-this.fragment=_985;
-this.createComponents=function(frag,_987){
-var _988=[];
-var _989=false;
+this.fragment=_98d;
+this.createComponents=function(frag,_98f){
+var _990=[];
+var _991=false;
 try{
 if(frag&&frag.tagName&&(frag!=frag.nodeRef)){
-var _98a=dojo.widget.tags;
+var _992=dojo.widget.tags;
 var tna=String(frag.tagName).split(";");
 for(var x=0;x<tna.length;x++){
 var ltn=tna[x].replace(/^\s+|\s+$/g,"").toLowerCase();
 frag.tagName=ltn;
 var ret;
-if(_98a[ltn]){
-_989=true;
-ret=_98a[ltn](frag,this,_987,frag.index);
-_988.push(ret);
+if(_992[ltn]){
+_991=true;
+ret=_992[ltn](frag,this,_98f,frag.index);
+_990.push(ret);
 }else{
 if(ltn.indexOf(":")==-1){
 ltn="dojo:"+ltn;
 }
-ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,_987,frag.index);
+ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,_98f,frag.index);
 if(ret){
-_989=true;
-_988.push(ret);
+_991=true;
+_990.push(ret);
 }
 }
 }
@@ -48665,43 +40233,43 @@
 catch(e){
 dojo.debug("dojo.widget.Parse: error:",e);
 }
-if(!_989){
-_988=_988.concat(this.createSubComponents(frag,_987));
+if(!_991){
+_990=_990.concat(this.createSubComponents(frag,_98f));
 }
-return _988;
+return _990;
 };
-this.createSubComponents=function(_98f,_990){
-var frag,_992=[];
-for(var item in _98f){
-frag=_98f[item];
-if(frag&&typeof frag=="object"&&(frag!=_98f.nodeRef)&&(frag!=_98f.tagName)&&(!dojo.dom.isNode(frag))){
-_992=_992.concat(this.createComponents(frag,_990));
+this.createSubComponents=function(_997,_998){
+var frag,_99a=[];
+for(var item in _997){
+frag=_997[item];
+if(frag&&typeof frag=="object"&&(frag!=_997.nodeRef)&&(frag!=_997.tagName)&&(!dojo.dom.isNode(frag))){
+_99a=_99a.concat(this.createComponents(frag,_998));
 }
 }
-return _992;
+return _99a;
 };
-this.parsePropertySets=function(_994){
+this.parsePropertySets=function(_99c){
 return [];
 };
-this.parseProperties=function(_995){
-var _996={};
-for(var item in _995){
-if((_995[item]==_995.tagName)||(_995[item]==_995.nodeRef)){
+this.parseProperties=function(_99d){
+var _99e={};
+for(var item in _99d){
+if((_99d[item]==_99d.tagName)||(_99d[item]==_99d.nodeRef)){
 }else{
-var frag=_995[item];
+var frag=_99d[item];
 if(frag.tagName&&dojo.widget.tags[frag.tagName.toLowerCase()]){
 }else{
 if(frag[0]&&frag[0].value!=""&&frag[0].value!=null){
 try{
 if(item.toLowerCase()=="dataprovider"){
-var _999=this;
-this.getDataProvider(_999,frag[0].value);
-_996.dataProvider=this.dataProvider;
+var _9a1=this;
+this.getDataProvider(_9a1,frag[0].value);
+_99e.dataProvider=this.dataProvider;
 }
-_996[item]=frag[0].value;
-var _99a=this.parseProperties(frag);
-for(var _99b in _99a){
-_996[_99b]=_99a[_99b];
+_99e[item]=frag[0].value;
+var _9a2=this.parseProperties(frag);
+for(var _9a3 in _9a2){
+_99e[_9a3]=_9a2[_9a3];
 }
 }
 catch(e){
@@ -48712,67 +40280,67 @@
 switch(item.toLowerCase()){
 case "checked":
 case "disabled":
-if(typeof _996[item]!="boolean"){
-_996[item]=true;
+if(typeof _99e[item]!="boolean"){
+_99e[item]=true;
 }
 break;
 }
 }
 }
-return _996;
+return _99e;
 };
-this.getDataProvider=function(_99c,_99d){
-dojo.io.bind({url:_99d,load:function(type,_99f){
+this.getDataProvider=function(_9a4,_9a5){
+dojo.io.bind({url:_9a5,load:function(type,_9a7){
 if(type=="load"){
-_99c.dataProvider=_99f;
+_9a4.dataProvider=_9a7;
 }
 },mimetype:"text/javascript",sync:true});
 };
-this.getPropertySetById=function(_9a0){
+this.getPropertySetById=function(_9a8){
 for(var x=0;x<this.propertySetsList.length;x++){
-if(_9a0==this.propertySetsList[x]["id"][0].value){
+if(_9a8==this.propertySetsList[x]["id"][0].value){
 return this.propertySetsList[x];
 }
 }
 return "";
 };
-this.getPropertySetsByType=function(_9a2){
-var _9a3=[];
+this.getPropertySetsByType=function(_9aa){
+var _9ab=[];
 for(var x=0;x<this.propertySetsList.length;x++){
 var cpl=this.propertySetsList[x];
 var cpcc=cpl.componentClass||cpl.componentType||null;
-var _9a7=this.propertySetsList[x]["id"][0].value;
-if(cpcc&&(_9a7==cpcc[0].value)){
-_9a3.push(cpl);
+var _9af=this.propertySetsList[x]["id"][0].value;
+if(cpcc&&(_9af==cpcc[0].value)){
+_9ab.push(cpl);
 }
 }
-return _9a3;
+return _9ab;
 };
-this.getPropertySets=function(_9a8){
+this.getPropertySets=function(_9b0){
 var ppl="dojo:propertyproviderlist";
-var _9aa=[];
-var _9ab=_9a8.tagName;
-if(_9a8[ppl]){
-var _9ac=_9a8[ppl].value.split(" ");
-for(var _9ad in _9ac){
-if((_9ad.indexOf("..")==-1)&&(_9ad.indexOf("://")==-1)){
-var _9ae=this.getPropertySetById(_9ad);
-if(_9ae!=""){
-_9aa.push(_9ae);
+var _9b2=[];
+var _9b3=_9b0.tagName;
+if(_9b0[ppl]){
+var _9b4=_9b0[ppl].value.split(" ");
+for(var _9b5 in _9b4){
+if((_9b5.indexOf("..")==-1)&&(_9b5.indexOf("://")==-1)){
+var _9b6=this.getPropertySetById(_9b5);
+if(_9b6!=""){
+_9b2.push(_9b6);
 }
 }else{
 }
 }
 }
-return this.getPropertySetsByType(_9ab).concat(_9aa);
+return this.getPropertySetsByType(_9b3).concat(_9b2);
 };
-this.createComponentFromScript=function(_9af,_9b0,_9b1,ns){
-_9b1.fastMixIn=true;
-var ltn=(ns||"dojo")+":"+_9b0.toLowerCase();
+this.createComponentFromScript=function(_9b7,_9b8,_9b9,ns){
+_9b9.fastMixIn=true;
+var ltn=(ns||"dojo")+":"+_9b8.toLowerCase();
 if(dojo.widget.tags[ltn]){
-return [dojo.widget.tags[ltn](_9b1,this,null,null,_9b1)];
+return [dojo.widget.tags[ltn](_9b9,this,null,null,_9b9)];
 }
-return [dojo.widget.buildWidgetFromParseTree(ltn,_9b1,this,null,null,_9b1)];
+return [dojo.widget.buildWidgetFromParseTree(ltn,_9b9,this,null,null,_9b9)];
 };
 };
 dojo.widget._parser_collection={"dojo":new dojo.widget.Parse()};
@@ -48785,129 +40353,129 @@
 }
 return this._parser_collection[name];
 };
-dojo.widget.createWidget=function(name,_9b6,_9b7,_9b8){
-var _9b9=false;
-var _9ba=(typeof name=="string");
-if(_9ba){
+dojo.widget.createWidget=function(name,_9be,_9bf,_9c0){
+var _9c1=false;
+var _9c2=(typeof name=="string");
+if(_9c2){
 var pos=name.indexOf(":");
 var ns=(pos>-1)?name.substring(0,pos):"dojo";
 if(pos>-1){
 name=name.substring(pos+1);
 }
-var _9bd=name.toLowerCase();
-var _9be=ns+":"+_9bd;
-_9b9=(dojo.byId(name)&&!dojo.widget.tags[_9be]);
+var _9c5=name.toLowerCase();
+var _9c6=ns+":"+_9c5;
+_9c1=(dojo.byId(name)&&!dojo.widget.tags[_9c6]);
 }
-if((arguments.length==1)&&(_9b9||!_9ba)){
+if((arguments.length==1)&&(_9c1||!_9c2)){
 var xp=new dojo.xml.Parse();
-var tn=_9b9?dojo.byId(name):name;
+var tn=_9c1?dojo.byId(name):name;
 return dojo.widget.getParser().createComponents(xp.parseElement(tn,null,true))[0];
 }
-function fromScript(_9c1,name,_9c3,ns){
-_9c3[_9be]={dojotype:[{value:_9bd}],nodeRef:_9c1,fastMixIn:true};
-_9c3.ns=ns;
-return dojo.widget.getParser().createComponentFromScript(_9c1,name,_9c3,ns);
+function fromScript(_9c9,name,_9cb,ns){
+_9cb[_9c6]={dojotype:[{value:_9c5}],nodeRef:_9c9,fastMixIn:true};
+_9cb.ns=ns;
+return dojo.widget.getParser().createComponentFromScript(_9c9,name,_9cb,ns);
 }
-_9b6=_9b6||{};
-var _9c5=false;
+_9be=_9be||{};
+var _9cd=false;
 var tn=null;
 var h=dojo.render.html.capable;
 if(h){
 tn=document.createElement("span");
 }
-if(!_9b7){
-_9c5=true;
-_9b7=tn;
+if(!_9bf){
+_9cd=true;
+_9bf=tn;
 if(h){
-dojo.body().appendChild(_9b7);
+dojo.body().appendChild(_9bf);
 }
 }else{
-if(_9b8){
-dojo.dom.insertAtPosition(tn,_9b7,_9b8);
+if(_9c0){
+dojo.dom.insertAtPosition(tn,_9bf,_9c0);
 }else{
-tn=_9b7;
+tn=_9bf;
 }
 }
-var _9c7=fromScript(tn,name.toLowerCase(),_9b6,ns);
-if((!_9c7)||(!_9c7[0])||(typeof _9c7[0].widgetType=="undefined")){
+var _9cf=fromScript(tn,name.toLowerCase(),_9be,ns);
+if((!_9cf)||(!_9cf[0])||(typeof _9cf[0].widgetType=="undefined")){
 throw new Error("createWidget: Creation of \""+name+"\" widget failed.");
 }
 try{
-if(_9c5&&_9c7[0].domNode.parentNode){
-_9c7[0].domNode.parentNode.removeChild(_9c7[0].domNode);
+if(_9cd&&_9cf[0].domNode.parentNode){
+_9cf[0].domNode.parentNode.removeChild(_9cf[0].domNode);
 }
 }
 catch(e){
 dojo.debug(e);
 }
-return _9c7[0];
+return _9cf[0];
 };
 dojo.provide("dojo.widget.DomWidget");
 dojo.widget._cssFiles={};
 dojo.widget._cssStrings={};
 dojo.widget._templateCache={};
 dojo.widget.defaultStrings={dojoRoot:dojo.hostenv.getBaseScriptUri(),dojoWidgetModuleUri:dojo.uri.moduleUri("dojo.widget"),baseScriptUri:dojo.hostenv.getBaseScriptUri()};
-dojo.widget.fillFromTemplateCache=function(obj,_9c9,_9ca,_9cb){
-var _9cc=_9c9||obj.templatePath;
-var _9cd=dojo.widget._templateCache;
-if(!_9cc&&!obj["widgetType"]){
+dojo.widget.fillFromTemplateCache=function(obj,_9d1,_9d2,_9d3){
+var _9d4=_9d1||obj.templatePath;
+var _9d5=dojo.widget._templateCache;
+if(!_9d4&&!obj["widgetType"]){
 do{
-var _9ce="__dummyTemplate__"+dojo.widget._templateCache.dummyCount++;
-}while(_9cd[_9ce]);
-obj.widgetType=_9ce;
+var _9d6="__dummyTemplate__"+dojo.widget._templateCache.dummyCount++;
+}while(_9d5[_9d6]);
+obj.widgetType=_9d6;
 }
-var wt=_9cc?_9cc.toString():obj.widgetType;
-var ts=_9cd[wt];
+var wt=_9d4?_9d4.toString():obj.widgetType;
+var ts=_9d5[wt];
 if(!ts){
-_9cd[wt]={"string":null,"node":null};
-if(_9cb){
+_9d5[wt]={"string":null,"node":null};
+if(_9d3){
 ts={};
 }else{
-ts=_9cd[wt];
+ts=_9d5[wt];
 }
 }
-if((!obj.templateString)&&(!_9cb)){
-obj.templateString=_9ca||ts["string"];
+if((!obj.templateString)&&(!_9d3)){
+obj.templateString=_9d2||ts["string"];
 }
 if(obj.templateString){
 obj.templateString=this._sanitizeTemplateString(obj.templateString);
 }
-if((!obj.templateNode)&&(!_9cb)){
+if((!obj.templateNode)&&(!_9d3)){
 obj.templateNode=ts["node"];
 }
-if((!obj.templateNode)&&(!obj.templateString)&&(_9cc)){
-var _9d1=this._sanitizeTemplateString(dojo.hostenv.getText(_9cc));
-obj.templateString=_9d1;
-if(!_9cb){
-_9cd[wt]["string"]=_9d1;
+if((!obj.templateNode)&&(!obj.templateString)&&(_9d4)){
+var _9d9=this._sanitizeTemplateString(dojo.hostenv.getText(_9d4));
+obj.templateString=_9d9;
+if(!_9d3){
+_9d5[wt]["string"]=_9d9;
 }
 }
-if((!ts["string"])&&(!_9cb)){
+if((!ts["string"])&&(!_9d3)){
 ts.string=obj.templateString;
 }
 };
-dojo.widget._sanitizeTemplateString=function(_9d2){
-if(_9d2){
-_9d2=_9d2.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
-var _9d3=_9d2.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
-if(_9d3){
-_9d2=_9d3[1];
+dojo.widget._sanitizeTemplateString=function(_9da){
+if(_9da){
+_9da=_9da.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
+var _9db=_9da.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+if(_9db){
+_9da=_9db[1];
 }
 }else{
-_9d2="";
+_9da="";
 }
-return _9d2;
+return _9da;
 };
 dojo.widget._templateCache.dummyCount=0;
 dojo.widget.attachProperties=["dojoAttachPoint","id"];
 dojo.widget.eventAttachProperty="dojoAttachEvent";
 dojo.widget.onBuildProperty="dojoOnBuild";
 dojo.widget.waiNames=["waiRole","waiState"];
-dojo.widget.wai={waiRole:{name:"waiRole","namespace":"http://www.w3.org/TR/xhtml2",alias:"x2",prefix:"wairole:"},waiState:{name:"waiState","namespace":"http://www.w3.org/2005/07/aaa",alias:"aaa",prefix:""},setAttr:function(node,ns,attr,_9d7){
+dojo.widget.wai={waiRole:{name:"waiRole","namespace":"http://www.w3.org/TR/xhtml2",alias:"x2",prefix:"wairole:"},waiState:{name:"waiState","namespace":"http://www.w3.org/2005/07/aaa",alias:"aaa",prefix:""},setAttr:function(node,ns,attr,_9df){
 if(dojo.render.html.ie){
-node.setAttribute(this[ns].alias+":"+attr,this[ns].prefix+_9d7);
+node.setAttribute(this[ns].alias+":"+attr,this[ns].prefix+_9df);
 }else{
-node.setAttributeNS(this[ns]["namespace"],attr,this[ns].prefix+_9d7);
+node.setAttributeNS(this[ns]["namespace"],attr,this[ns].prefix+_9df);
 }
 },getAttr:function(node,ns,attr){
 if(dojo.render.html.ie){
@@ -48916,119 +40484,119 @@
 return node.getAttributeNS(this[ns]["namespace"],attr);
 }
 },removeAttr:function(node,ns,attr){
-var _9de=true;
+var _9e6=true;
 if(dojo.render.html.ie){
-_9de=node.removeAttribute(this[ns].alias+":"+attr);
+_9e6=node.removeAttribute(this[ns].alias+":"+attr);
 }else{
 node.removeAttributeNS(this[ns]["namespace"],attr);
 }
-return _9de;
+return _9e6;
 }};
-dojo.widget.attachTemplateNodes=function(_9df,_9e0,_9e1){
-var _9e2=dojo.dom.ELEMENT_NODE;
+dojo.widget.attachTemplateNodes=function(_9e7,_9e8,_9e9){
+var _9ea=dojo.dom.ELEMENT_NODE;
 function trim(str){
 return str.replace(/^\s+|\s+$/g,"");
 }
-if(!_9df){
-_9df=_9e0.domNode;
+if(!_9e7){
+_9e7=_9e8.domNode;
 }
-if(_9df.nodeType!=_9e2){
+if(_9e7.nodeType!=_9ea){
 return;
 }
-var _9e4=_9df.all||_9df.getElementsByTagName("*");
-var _9e5=_9e0;
-for(var x=-1;x<_9e4.length;x++){
-var _9e7=(x==-1)?_9df:_9e4[x];
-var _9e8=[];
-if(!_9e0.widgetsInTemplate||!_9e7.getAttribute("dojoType")){
+var _9ec=_9e7.all||_9e7.getElementsByTagName("*");
+var _9ed=_9e8;
+for(var x=-1;x<_9ec.length;x++){
+var _9ef=(x==-1)?_9e7:_9ec[x];
+var _9f0=[];
+if(!_9e8.widgetsInTemplate||!_9ef.getAttribute("dojoType")){
 for(var y=0;y<this.attachProperties.length;y++){
-var _9ea=_9e7.getAttribute(this.attachProperties[y]);
-if(_9ea){
-_9e8=_9ea.split(";");
-for(var z=0;z<_9e8.length;z++){
-if(dojo.lang.isArray(_9e0[_9e8[z]])){
-_9e0[_9e8[z]].push(_9e7);
+var _9f2=_9ef.getAttribute(this.attachProperties[y]);
+if(_9f2){
+_9f0=_9f2.split(";");
+for(var z=0;z<_9f0.length;z++){
+if(dojo.lang.isArray(_9e8[_9f0[z]])){
+_9e8[_9f0[z]].push(_9ef);
 }else{
-_9e0[_9e8[z]]=_9e7;
+_9e8[_9f0[z]]=_9ef;
 }
 }
 break;
 }
 }
-var _9ec=_9e7.getAttribute(this.eventAttachProperty);
-if(_9ec){
-var evts=_9ec.split(";");
+var _9f4=_9ef.getAttribute(this.eventAttachProperty);
+if(_9f4){
+var evts=_9f4.split(";");
 for(var y=0;y<evts.length;y++){
 if((!evts[y])||(!evts[y].length)){
 continue;
 }
-var _9ee=null;
+var _9f6=null;
 var tevt=trim(evts[y]);
 if(evts[y].indexOf(":")>=0){
-var _9f0=tevt.split(":");
-tevt=trim(_9f0[0]);
-_9ee=trim(_9f0[1]);
+var _9f8=tevt.split(":");
+tevt=trim(_9f8[0]);
+_9f6=trim(_9f8[1]);
 }
-if(!_9ee){
-_9ee=tevt;
+if(!_9f6){
+_9f6=tevt;
 }
 var tf=function(){
-var ntf=new String(_9ee);
+var ntf=new String(_9f6);
 return function(evt){
-if(_9e5[ntf]){
-_9e5[ntf](dojo.event.browser.fixEvent(evt,this));
+if(_9ed[ntf]){
+_9ed[ntf](dojo.event.browser.fixEvent(evt,this));
 }
 };
 }();
-dojo.event.browser.addListener(_9e7,tevt,tf,false,true);
+dojo.event.browser.addListener(_9ef,tevt,tf,false,true);
 }
 }
-for(var y=0;y<_9e1.length;y++){
-var _9f4=_9e7.getAttribute(_9e1[y]);
-if((_9f4)&&(_9f4.length)){
-var _9ee=null;
-var _9f5=_9e1[y].substr(4);
-_9ee=trim(_9f4);
-var _9f6=[_9ee];
-if(_9ee.indexOf(";")>=0){
-_9f6=dojo.lang.map(_9ee.split(";"),trim);
+for(var y=0;y<_9e9.length;y++){
+var _9fc=_9ef.getAttribute(_9e9[y]);
+if((_9fc)&&(_9fc.length)){
+var _9f6=null;
+var _9fd=_9e9[y].substr(4);
+_9f6=trim(_9fc);
+var _9fe=[_9f6];
+if(_9f6.indexOf(";")>=0){
+_9fe=dojo.lang.map(_9f6.split(";"),trim);
 }
-for(var z=0;z<_9f6.length;z++){
-if(!_9f6[z].length){
+for(var z=0;z<_9fe.length;z++){
+if(!_9fe[z].length){
 continue;
 }
 var tf=function(){
-var ntf=new String(_9f6[z]);
+var ntf=new String(_9fe[z]);
 return function(evt){
-if(_9e5[ntf]){
-_9e5[ntf](dojo.event.browser.fixEvent(evt,this));
+if(_9ed[ntf]){
+_9ed[ntf](dojo.event.browser.fixEvent(evt,this));
 }
 };
 }();
-dojo.event.browser.addListener(_9e7,_9f5,tf,false,true);
+dojo.event.browser.addListener(_9ef,_9fd,tf,false,true);
 }
 }
 }
 }
-var _9f9=_9e7.getAttribute(this.templateProperty);
-if(_9f9){
-_9e0[_9f9]=_9e7;
+var _a01=_9ef.getAttribute(this.templateProperty);
+if(_a01){
+_9e8[_a01]=_9ef;
 }
 dojo.lang.forEach(dojo.widget.waiNames,function(name){
 var wai=dojo.widget.wai[name];
-var val=_9e7.getAttribute(wai.name);
+var val=_9ef.getAttribute(wai.name);
 if(val){
 if(val.indexOf("-")==-1){
-dojo.widget.wai.setAttr(_9e7,wai.name,"role",val);
+dojo.widget.wai.setAttr(_9ef,wai.name,"role",val);
 }else{
-var _9fd=val.split("-");
-dojo.widget.wai.setAttr(_9e7,wai.name,_9fd[0],_9fd[1]);
+var _a05=val.split("-");
+dojo.widget.wai.setAttr(_9ef,wai.name,_a05[0],_a05[1]);
 }
 }
 },this);
-var _9fe=_9e7.getAttribute(this.onBuildProperty);
-if(_9fe){
-eval("var node = baseNode; var widget = targetObj; "+_9fe);
+var _a06=_9ef.getAttribute(this.onBuildProperty);
+if(_a06){
+eval("var node = baseNode; var widget = targetObj; "+_a06);
 }
 }
 };
@@ -49054,23 +40622,23 @@
 if((arguments.length>0)&&(typeof arguments[0]=="object")){
 this.create(arguments[0]);
 }
-},{templateNode:null,templateString:null,templateCssString:null,preventClobber:false,domNode:null,containerNode:null,widgetsInTemplate:false,addChild:function(_a06,_a07,pos,ref,_a0a){
+},{templateNode:null,templateString:null,templateCssString:null,preventClobber:false,domNode:null,containerNode:null,widgetsInTemplate:false,addChild:function(_a0e,_a0f,pos,ref,_a12){
 if(!this.isContainer){
 dojo.debug("dojo.widget.DomWidget.addChild() attempted on non-container widget");
 return null;
 }else{
-if(_a0a==undefined){
-_a0a=this.children.length;
+if(_a12==undefined){
+_a12=this.children.length;
 }
-this.addWidgetAsDirectChild(_a06,_a07,pos,ref,_a0a);
-this.registerChild(_a06,_a0a);
+this.addWidgetAsDirectChild(_a0e,_a0f,pos,ref,_a12);
+this.registerChild(_a0e,_a12);
 }
-return _a06;
-},addWidgetAsDirectChild:function(_a0b,_a0c,pos,ref,_a0f){
-if((!this.containerNode)&&(!_a0c)){
+return _a0e;
+},addWidgetAsDirectChild:function(_a13,_a14,pos,ref,_a17){
+if((!this.containerNode)&&(!_a14)){
 this.containerNode=this.domNode;
 }
-var cn=(_a0c)?_a0c:this.containerNode;
+var cn=(_a14)?_a14:this.containerNode;
 if(!pos){
 pos="after";
 }
@@ -49080,38 +40648,38 @@
 }
 ref=cn.lastChild;
 }
-if(!_a0f){
-_a0f=0;
+if(!_a17){
+_a17=0;
 }
-_a0b.domNode.setAttribute("dojoinsertionindex",_a0f);
+_a13.domNode.setAttribute("dojoinsertionindex",_a17);
 if(!ref){
-cn.appendChild(_a0b.domNode);
+cn.appendChild(_a13.domNode);
 }else{
 if(pos=="insertAtIndex"){
-dojo.dom.insertAtIndex(_a0b.domNode,ref.parentNode,_a0f);
+dojo.dom.insertAtIndex(_a13.domNode,ref.parentNode,_a17);
 }else{
 if((pos=="after")&&(ref===cn.lastChild)){
-cn.appendChild(_a0b.domNode);
+cn.appendChild(_a13.domNode);
 }else{
-dojo.dom.insertAtPosition(_a0b.domNode,cn,pos);
+dojo.dom.insertAtPosition(_a13.domNode,cn,pos);
 }
 }
 }
-},registerChild:function(_a11,_a12){
-_a11.dojoInsertionIndex=_a12;
+},registerChild:function(_a19,_a1a){
+_a19.dojoInsertionIndex=_a1a;
 var idx=-1;
 for(var i=0;i<this.children.length;i++){
-if(this.children[i].dojoInsertionIndex<=_a12){
+if(this.children[i].dojoInsertionIndex<=_a1a){
 idx=i;
 }
 }
-this.children.splice(idx+1,0,_a11);
-_a11.parent=this;
-_a11.addedTo(this,idx+1);
-delete dojo.widget.manager.topWidgets[_a11.widgetId];
-},removeChild:function(_a15){
-dojo.dom.removeNode(_a15.domNode);
-return dojo.widget.DomWidget.superclass.removeChild.call(this,_a15);
+this.children.splice(idx+1,0,_a19);
+_a19.parent=this;
+_a19.addedTo(this,idx+1);
+delete dojo.widget.manager.topWidgets[_a19.widgetId];
+},removeChild:function(_a1d){
+dojo.dom.removeNode(_a1d.domNode);
+return dojo.widget.DomWidget.superclass.removeChild.call(this,_a1d);
 },getFragNodeRef:function(frag){
 if(!frag){
 return null;
@@ -49120,91 +40688,91 @@
 dojo.raise("Error: no frag for widget type "+this.getNamespacedType()+", id "+this.widgetId+" (maybe a widget has set it's type incorrectly)");
 }
 return frag[this.getNamespacedType()]["nodeRef"];
-},postInitialize:function(args,frag,_a19){
-var _a1a=this.getFragNodeRef(frag);
-if(_a19&&(_a19.snarfChildDomOutput||!_a1a)){
-_a19.addWidgetAsDirectChild(this,"","insertAtIndex","",args["dojoinsertionindex"],_a1a);
+},postInitialize:function(args,frag,_a21){
+var _a22=this.getFragNodeRef(frag);
+if(_a21&&(_a21.snarfChildDomOutput||!_a22)){
+_a21.addWidgetAsDirectChild(this,"","insertAtIndex","",args["dojoinsertionindex"],_a22);
 }else{
-if(_a1a){
-if(this.domNode&&(this.domNode!==_a1a)){
-this._sourceNodeRef=dojo.dom.replaceNode(_a1a,this.domNode);
+if(_a22){
+if(this.domNode&&(this.domNode!==_a22)){
+this._sourceNodeRef=dojo.dom.replaceNode(_a22,this.domNode);
 }
 }
 }
-if(_a19){
-_a19.registerChild(this,args.dojoinsertionindex);
+if(_a21){
+_a21.registerChild(this,args.dojoinsertionindex);
 }else{
 dojo.widget.manager.topWidgets[this.widgetId]=this;
 }
 if(this.widgetsInTemplate){
-var _a1b=new dojo.xml.Parse();
-var _a1c;
-var _a1d=this.domNode.getElementsByTagName("*");
-for(var i=0;i<_a1d.length;i++){
-if(_a1d[i].getAttribute("dojoAttachPoint")=="subContainerWidget"){
-_a1c=_a1d[i];
+var _a23=new dojo.xml.Parse();
+var _a24;
+var _a25=this.domNode.getElementsByTagName("*");
+for(var i=0;i<_a25.length;i++){
+if(_a25[i].getAttribute("dojoAttachPoint")=="subContainerWidget"){
+_a24=_a25[i];
 }
-if(_a1d[i].getAttribute("dojoType")){
-_a1d[i].setAttribute("isSubWidget",true);
+if(_a25[i].getAttribute("dojoType")){
+_a25[i].setAttribute("isSubWidget",true);
 }
 }
 if(this.isContainer&&!this.containerNode){
-if(_a1c){
+if(_a24){
 var src=this.getFragNodeRef(frag);
 if(src){
-dojo.dom.moveChildren(src,_a1c);
+dojo.dom.moveChildren(src,_a24);
 frag["dojoDontFollow"]=true;
 }
 }else{
 dojo.debug("No subContainerWidget node can be found in template file for widget "+this);
 }
 }
-var _a20=_a1b.parseElement(this.domNode,null,true);
-dojo.widget.getParser().createSubComponents(_a20,this);
-var _a21=[];
-var _a22=[this];
+var _a28=_a23.parseElement(this.domNode,null,true);
+dojo.widget.getParser().createSubComponents(_a28,this);
+var _a29=[];
+var _a2a=[this];
 var w;
-while((w=_a22.pop())){
+while((w=_a2a.pop())){
 for(var i=0;i<w.children.length;i++){
-var _a24=w.children[i];
-if(_a24._processedSubWidgets||!_a24.extraArgs["issubwidget"]){
+var _a2c=w.children[i];
+if(_a2c._processedSubWidgets||!_a2c.extraArgs["issubwidget"]){
 continue;
 }
-_a21.push(_a24);
-if(_a24.isContainer){
-_a22.push(_a24);
+_a29.push(_a2c);
+if(_a2c.isContainer){
+_a2a.push(_a2c);
 }
 }
 }
-for(var i=0;i<_a21.length;i++){
-var _a25=_a21[i];
-if(_a25._processedSubWidgets){
+for(var i=0;i<_a29.length;i++){
+var _a2d=_a29[i];
+if(_a2d._processedSubWidgets){
 dojo.debug("This should not happen: widget._processedSubWidgets is already true!");
 return;
 }
-_a25._processedSubWidgets=true;
-if(_a25.extraArgs["dojoattachevent"]){
-var evts=_a25.extraArgs["dojoattachevent"].split(";");
+_a2d._processedSubWidgets=true;
+if(_a2d.extraArgs["dojoattachevent"]){
+var evts=_a2d.extraArgs["dojoattachevent"].split(";");
 for(var j=0;j<evts.length;j++){
-var _a28=null;
+var _a30=null;
 var tevt=dojo.string.trim(evts[j]);
 if(tevt.indexOf(":")>=0){
-var _a2a=tevt.split(":");
-tevt=dojo.string.trim(_a2a[0]);
-_a28=dojo.string.trim(_a2a[1]);
+var _a32=tevt.split(":");
+tevt=dojo.string.trim(_a32[0]);
+_a30=dojo.string.trim(_a32[1]);
 }
-if(!_a28){
-_a28=tevt;
+if(!_a30){
+_a30=tevt;
 }
-if(dojo.lang.isFunction(_a25[tevt])){
-dojo.event.kwConnect({srcObj:_a25,srcFunc:tevt,targetObj:this,targetFunc:_a28});
+if(dojo.lang.isFunction(_a2d[tevt])){
+dojo.event.kwConnect({srcObj:_a2d,srcFunc:tevt,targetObj:this,targetFunc:_a30});
 }else{
-alert(tevt+" is not a function in widget "+_a25);
+alert(tevt+" is not a function in widget "+_a2d);
 }
 }
 }
-if(_a25.extraArgs["dojoattachpoint"]){
-this[_a25.extraArgs["dojoattachpoint"]]=_a25;
+if(_a2d.extraArgs["dojoattachpoint"]){
+this[_a2d.extraArgs["dojoattachpoint"]]=_a2d;
 }
 }
 }
@@ -49216,16 +40784,16 @@
 if(args["templatecsspath"]){
 args["templateCssPath"]=args["templatecsspath"];
 }
-var _a2e=args["templateCssPath"]||this.templateCssPath;
-if(_a2e&&!dojo.widget._cssFiles[_a2e.toString()]){
-if((!this.templateCssString)&&(_a2e)){
-this.templateCssString=dojo.hostenv.getText(_a2e);
+var _a36=args["templateCssPath"]||this.templateCssPath;
+if(_a36&&!dojo.widget._cssFiles[_a36.toString()]){
+if((!this.templateCssString)&&(_a36)){
+this.templateCssString=dojo.hostenv.getText(_a36);
 this.templateCssPath=null;
 }
-dojo.widget._cssFiles[_a2e.toString()]=true;
+dojo.widget._cssFiles[_a36.toString()]=true;
 }
 if((this["templateCssString"])&&(!dojo.widget._cssStrings[this.templateCssString])){
-dojo.html.insertCssText(this.templateCssString,null,_a2e);
+dojo.html.insertCssText(this.templateCssString,null,_a36);
 dojo.widget._cssStrings[this.templateCssString]=true;
 }
 if((!this.preventClobber)&&((this.templatePath)||(this.templateNode)||((this["templateString"])&&(this.templateString.length))||((typeof ts!="undefined")&&((ts["string"])||(ts["node"]))))){
@@ -49235,13 +40803,13 @@
 }
 this.fillInTemplate(args,frag);
 },buildFromTemplate:function(args,frag){
-var _a31=false;
+var _a39=false;
 if(args["templatepath"]){
 args["templatePath"]=args["templatepath"];
 }
-dojo.widget.fillFromTemplateCache(this,args["templatePath"],null,_a31);
+dojo.widget.fillFromTemplateCache(this,args["templatePath"],null,_a39);
 var ts=dojo.widget._templateCache[this.templatePath?this.templatePath.toString():this.widgetType];
-if((ts)&&(!_a31)){
+if((ts)&&(!_a39)){
 if(!this.templateString.length){
 this.templateString=ts["string"];
 }
@@ -49249,43 +40817,43 @@
 this.templateNode=ts["node"];
 }
 }
-var _a33=false;
+var _a3b=false;
 var node=null;
 var tstr=this.templateString;
 if((!this.templateNode)&&(this.templateString)){
-_a33=this.templateString.match(/\$\{([^\}]+)\}/g);
-if(_a33){
+_a3b=this.templateString.match(/\$\{([^\}]+)\}/g);
+if(_a3b){
 var hash=this.strings||{};
 for(var key in dojo.widget.defaultStrings){
 if(dojo.lang.isUndefined(hash[key])){
 hash[key]=dojo.widget.defaultStrings[key];
 }
 }
-for(var i=0;i<_a33.length;i++){
-var key=_a33[i];
+for(var i=0;i<_a3b.length;i++){
+var key=_a3b[i];
 key=key.substring(2,key.length-1);
 var kval=(key.substring(0,5)=="this.")?dojo.lang.getObjPathValue(key.substring(5),this):hash[key];
-var _a3a;
+var _a42;
 if((kval)||(dojo.lang.isString(kval))){
-_a3a=new String((dojo.lang.isFunction(kval))?kval.call(this,key,this.templateString):kval);
-while(_a3a.indexOf("\"")>-1){
-_a3a=_a3a.replace("\"","&quot;");
+_a42=new String((dojo.lang.isFunction(kval))?kval.call(this,key,this.templateString):kval);
+while(_a42.indexOf("\"")>-1){
+_a42=_a42.replace("\"","&quot;");
 }
-tstr=tstr.replace(_a33[i],_a3a);
+tstr=tstr.replace(_a3b[i],_a42);
 }
 }
 }else{
 this.templateNode=this.createNodesFromText(this.templateString,true)[0];
-if(!_a31){
+if(!_a39){
 ts.node=this.templateNode;
 }
 }
 }
-if((!this.templateNode)&&(!_a33)){
+if((!this.templateNode)&&(!_a3b)){
 dojo.debug("DomWidget.buildFromTemplate: could not create template");
 return false;
 }else{
-if(!_a33){
+if(!_a3b){
 node=this.templateNode.cloneNode(true);
 if(!node){
 return false;
@@ -49302,14 +40870,14 @@
 dojo.dom.moveChildren(src,this.containerNode);
 }
 }
-},attachTemplateNodes:function(_a3c,_a3d){
-if(!_a3c){
-_a3c=this.domNode;
+},attachTemplateNodes:function(_a44,_a45){
+if(!_a44){
+_a44=this.domNode;
 }
-if(!_a3d){
-_a3d=this;
+if(!_a45){
+_a45=this;
 }
-return dojo.widget.attachTemplateNodes(_a3c,_a3d,dojo.widget.getDojoEventsFromStr(this.templateString));
+return dojo.widget.attachTemplateNodes(_a44,_a45,dojo.widget.getDojoEventsFromStr(this.templateString));
 },fillInTemplate:function(){
 },destroyRendering:function(){
 try{
@@ -49329,32 +40897,32 @@
 dojo.unimplemented("dojo.widget.DomWidget.createNodesFromText");
 }});
 dojo.provide("dojo.lfx.toggle");
-dojo.lfx.toggle.plain={show:function(node,_a3f,_a40,_a41){
+dojo.lfx.toggle.plain={show:function(node,_a47,_a48,_a49){
 dojo.html.show(node);
-if(dojo.lang.isFunction(_a41)){
-_a41();
+if(dojo.lang.isFunction(_a49)){
+_a49();
 }
-},hide:function(node,_a43,_a44,_a45){
+},hide:function(node,_a4b,_a4c,_a4d){
 dojo.html.hide(node);
-if(dojo.lang.isFunction(_a45)){
-_a45();
+if(dojo.lang.isFunction(_a4d)){
+_a4d();
 }
 }};
-dojo.lfx.toggle.fade={show:function(node,_a47,_a48,_a49){
-dojo.lfx.fadeShow(node,_a47,_a48,_a49).play();
-},hide:function(node,_a4b,_a4c,_a4d){
-dojo.lfx.fadeHide(node,_a4b,_a4c,_a4d).play();
-}};
-dojo.lfx.toggle.wipe={show:function(node,_a4f,_a50,_a51){
-dojo.lfx.wipeIn(node,_a4f,_a50,_a51).play();
+dojo.lfx.toggle.fade={show:function(node,_a4f,_a50,_a51){
+dojo.lfx.fadeShow(node,_a4f,_a50,_a51).play();
 },hide:function(node,_a53,_a54,_a55){
-dojo.lfx.wipeOut(node,_a53,_a54,_a55).play();
+dojo.lfx.fadeHide(node,_a53,_a54,_a55).play();
 }};
-dojo.lfx.toggle.explode={show:function(node,_a57,_a58,_a59,_a5a){
-dojo.lfx.explode(_a5a||{x:0,y:0,width:0,height:0},node,_a57,_a58,_a59).play();
-},hide:function(node,_a5c,_a5d,_a5e,_a5f){
-dojo.lfx.implode(node,_a5f||{x:0,y:0,width:0,height:0},_a5c,_a5d,_a5e).play();
+dojo.lfx.toggle.wipe={show:function(node,_a57,_a58,_a59){
+dojo.lfx.wipeIn(node,_a57,_a58,_a59).play();
+},hide:function(node,_a5b,_a5c,_a5d){
+dojo.lfx.wipeOut(node,_a5b,_a5c,_a5d).play();
 }};
+dojo.lfx.toggle.explode={show:function(node,_a5f,_a60,_a61,_a62){
+dojo.lfx.explode(_a62||{x:0,y:0,width:0,height:0},node,_a5f,_a60,_a61).play();
+},hide:function(node,_a64,_a65,_a66,_a67){
+dojo.lfx.implode(node,_a67||{x:0,y:0,width:0,height:0},_a64,_a65,_a66).play();
+}};
 dojo.provide("dojo.widget.HtmlWidget");
 dojo.declare("dojo.widget.HtmlWidget",dojo.widget.DomWidget,{templateCssPath:null,templatePath:null,lang:"",toggle:"plain",toggleDuration:150,initialize:function(args,frag){
 },postMixInProperties:function(args,frag){
@@ -49364,13 +40932,13 @@
 this.toggleObj=dojo.lfx.toggle[this.toggle.toLowerCase()]||dojo.lfx.toggle.plain;
 },createNodesFromText:function(txt,wrap){
 return dojo.html.createNodesFromText(txt,wrap);
-},destroyRendering:function(_a66){
+},destroyRendering:function(_a6e){
 try{
 if(this.bgIframe){
 this.bgIframe.remove();
 delete this.bgIframe;
 }
-if(!_a66&&this.domNode){
+if(!_a6e&&this.domNode){
 dojo.event.browser.clean(this.domNode);
 }
 dojo.widget.HtmlWidget.superclass.destroyRendering.call(this);
@@ -49407,13 +40975,13 @@
 return false;
 }
 var wh=dojo.html.getMarginBox(this.domNode);
-var _a6a=w||wh.width;
-var _a6b=h||wh.height;
-if(this.width==_a6a&&this.height==_a6b){
+var _a72=w||wh.width;
+var _a73=h||wh.height;
+if(this.width==_a72&&this.height==_a73){
 return false;
 }
-this.width=_a6a;
-this.height=_a6b;
+this.width=_a72;
+this.height=_a73;
 return true;
 },checkSize:function(){
 if(!this._isResized()){
@@ -49430,9 +40998,9 @@
 dojo.lang.setTimeout(this,this.onResized,0);
 }
 },onResized:function(){
-dojo.lang.forEach(this.children,function(_a6e){
-if(_a6e.checkSize){
-_a6e.checkSize();
+dojo.lang.forEach(this.children,function(_a76){
+if(_a76.checkSize){
+_a76.checkSize();
 }
 });
 }});
@@ -49449,11 +41017,11 @@
 if(n<1){
 return 0;
 }
-var _a72=1;
+var _a7a=1;
 for(var i=1;i<=n;i++){
-_a72*=i;
+_a7a*=i;
 }
-return _a72;
+return _a7a;
 };
 dojo.math.permutations=function(n,k){
 if(n==0||k==0){
@@ -49481,33 +41049,33 @@
 return i*k;
 };
 dojo.math.mean=function(){
-var _a7e=dojo.lang.isArray(arguments[0])?arguments[0]:arguments;
+var _a86=dojo.lang.isArray(arguments[0])?arguments[0]:arguments;
 var mean=0;
-for(var i=0;i<_a7e.length;i++){
-mean+=_a7e[i];
+for(var i=0;i<_a86.length;i++){
+mean+=_a86[i];
 }
-return mean/_a7e.length;
+return mean/_a86.length;
 };
-dojo.math.round=function(_a81,_a82){
-if(!_a82){
-var _a83=1;
+dojo.math.round=function(_a89,_a8a){
+if(!_a8a){
+var _a8b=1;
 }else{
-var _a83=Math.pow(10,_a82);
+var _a8b=Math.pow(10,_a8a);
 }
-return Math.round(_a81*_a83)/_a83;
+return Math.round(_a89*_a8b)/_a8b;
 };
 dojo.math.sd=dojo.math.standardDeviation=function(){
-var _a84=dojo.lang.isArray(arguments[0])?arguments[0]:arguments;
-return Math.sqrt(dojo.math.variance(_a84));
+var _a8c=dojo.lang.isArray(arguments[0])?arguments[0]:arguments;
+return Math.sqrt(dojo.math.variance(_a8c));
 };
 dojo.math.variance=function(){
-var _a85=dojo.lang.isArray(arguments[0])?arguments[0]:arguments;
-var mean=0,_a87=0;
-for(var i=0;i<_a85.length;i++){
-mean+=_a85[i];
-_a87+=Math.pow(_a85[i],2);
+var _a8d=dojo.lang.isArray(arguments[0])?arguments[0]:arguments;
+var mean=0,_a8f=0;
+for(var i=0;i<_a8d.length;i++){
+mean+=_a8d[i];
+_a8f+=Math.pow(_a8d[i],2);
 }
-return (_a87/_a85.length)-Math.pow(mean/_a85.length,2);
+return (_a8f/_a8d.length)-Math.pow(mean/_a8d.length,2);
 };
 dojo.math.range=function(a,b,step){
 if(arguments.length<2){
@@ -49517,39 +41085,39 @@
 if(arguments.length<3){
 step=1;
 }
-var _a8c=[];
+var _a94=[];
 if(step>0){
 for(var i=a;i<b;i+=step){
-_a8c.push(i);
+_a94.push(i);
 }
 }else{
 if(step<0){
 for(var i=a;i>b;i+=step){
-_a8c.push(i);
+_a94.push(i);
 }
 }else{
 throw new Error("dojo.math.range: step must be non-zero");
 }
 }
-return _a8c;
+return _a94;
 };
 dojo.provide("dojo.math.curves");
-dojo.math.curves={Line:function(_a8e,end){
-this.start=_a8e;
+dojo.math.curves={Line:function(_a96,end){
+this.start=_a96;
 this.end=end;
-this.dimensions=_a8e.length;
-for(var i=0;i<_a8e.length;i++){
-_a8e[i]=Number(_a8e[i]);
+this.dimensions=_a96.length;
+for(var i=0;i<_a96.length;i++){
+_a96[i]=Number(_a96[i]);
 }
 for(var i=0;i<end.length;i++){
 end[i]=Number(end[i]);
 }
 this.getValue=function(n){
-var _a92=new Array(this.dimensions);
+var _a9a=new Array(this.dimensions);
 for(var i=0;i<this.dimensions;i++){
-_a92[i]=((this.end[i]-this.start[i])*n)+this.start[i];
+_a9a[i]=((this.end[i]-this.start[i])*n)+this.start[i];
 }
-return _a92;
+return _a9a;
 };
 return this;
 },Bezier:function(pnts){
@@ -49560,9 +41128,9 @@
 if(step<=0){
 return this.p[0];
 }
-var _a96=new Array(this.p[0].length);
+var _a9e=new Array(this.p[0].length);
 for(var k=0;j<this.p[0].length;k++){
-_a96[k]=0;
+_a9e[k]=0;
 }
 for(var j=0;j<this.p[0].length;j++){
 var C=0;
@@ -49573,17 +41141,17 @@
 for(var l=0;l<this.p.length;l++){
 D+=this.p[this.p.length-1][0]*dojo.math.bernstein(step,this.p.length,l);
 }
-_a96[j]=C/D;
+_a9e[j]=C/D;
 }
-return _a96;
+return _a9e;
 };
 this.p=pnts;
 return this;
 },CatmullRom:function(pnts,c){
 this.getValue=function(step){
-var _aa0=step*(this.p.length-1);
-var node=Math.floor(_aa0);
-var _aa2=_aa0-node;
+var _aa8=step*(this.p.length-1);
+var node=Math.floor(_aa8);
+var _aaa=_aa8-node;
 var i0=node-1;
 if(i0<0){
 i0=0;
@@ -49597,18 +41165,18 @@
 if(i2>=this.p.length){
 i2=this.p.length-1;
 }
-var u=_aa2;
-var u2=_aa2*_aa2;
-var u3=_aa2*_aa2*_aa2;
-var _aaa=new Array(this.p[0].length);
+var u=_aaa;
+var u2=_aaa*_aaa;
+var u3=_aaa*_aaa*_aaa;
+var _ab2=new Array(this.p[0].length);
 for(var k=0;k<this.p[0].length;k++){
 var x1=(-this.c*this.p[i0][k])+((2-this.c)*this.p[i][k])+((this.c-2)*this.p[i1][k])+(this.c*this.p[i2][k]);
 var x2=(2*this.c*this.p[i0][k])+((this.c-3)*this.p[i][k])+((3-2*this.c)*this.p[i1][k])+(-this.c*this.p[i2][k]);
 var x3=(-this.c*this.p[i0][k])+(this.c*this.p[i1][k]);
 var x4=this.p[i][k];
-_aaa[k]=x1*u3+x2*u2+x3*u+x4;
+_ab2[k]=x1*u3+x2*u2+x3*u+x4;
 }
-return _aaa;
+return _ab2;
 };
 if(!c){
 this.c=0.7;
@@ -49617,88 +41185,88 @@
 }
 this.p=pnts;
 return this;
-},Arc:function(_ab0,end,ccw){
-var _ab3=dojo.math.points.midpoint(_ab0,end);
-var _ab4=dojo.math.points.translate(dojo.math.points.invert(_ab3),_ab0);
-var rad=Math.sqrt(Math.pow(_ab4[0],2)+Math.pow(_ab4[1],2));
-var _ab6=dojo.math.radToDeg(Math.atan(_ab4[1]/_ab4[0]));
-if(_ab4[0]<0){
-_ab6-=90;
+},Arc:function(_ab8,end,ccw){
+var _abb=dojo.math.points.midpoint(_ab8,end);
+var _abc=dojo.math.points.translate(dojo.math.points.invert(_abb),_ab8);
+var rad=Math.sqrt(Math.pow(_abc[0],2)+Math.pow(_abc[1],2));
+var _abe=dojo.math.radToDeg(Math.atan(_abc[1]/_abc[0]));
+if(_abc[0]<0){
+_abe-=90;
 }else{
-_ab6+=90;
+_abe+=90;
 }
-dojo.math.curves.CenteredArc.call(this,_ab3,rad,_ab6,_ab6+(ccw?-180:180));
-},CenteredArc:function(_ab7,_ab8,_ab9,end){
-this.center=_ab7;
-this.radius=_ab8;
-this.start=_ab9||0;
+dojo.math.curves.CenteredArc.call(this,_abb,rad,_abe,_abe+(ccw?-180:180));
+},CenteredArc:function(_abf,_ac0,_ac1,end){
+this.center=_abf;
+this.radius=_ac0;
+this.start=_ac1||0;
 this.end=end;
 this.getValue=function(n){
-var _abc=new Array(2);
-var _abd=dojo.math.degToRad(this.start+((this.end-this.start)*n));
-_abc[0]=this.center[0]+this.radius*Math.sin(_abd);
-_abc[1]=this.center[1]-this.radius*Math.cos(_abd);
-return _abc;
+var _ac4=new Array(2);
+var _ac5=dojo.math.degToRad(this.start+((this.end-this.start)*n));
+_ac4[0]=this.center[0]+this.radius*Math.sin(_ac5);
+_ac4[1]=this.center[1]-this.radius*Math.cos(_ac5);
+return _ac4;
 };
 return this;
-},Circle:function(_abe,_abf){
-dojo.math.curves.CenteredArc.call(this,_abe,_abf,0,360);
+},Circle:function(_ac6,_ac7){
+dojo.math.curves.CenteredArc.call(this,_ac6,_ac7,0,360);
 return this;
 },Path:function(){
-var _ac0=[];
-var _ac1=[];
-var _ac2=[];
-var _ac3=0;
-this.add=function(_ac4,_ac5){
-if(_ac5<0){
+var _ac8=[];
+var _ac9=[];
+var _aca=[];
+var _acb=0;
+this.add=function(_acc,_acd){
+if(_acd<0){
 dojo.raise("dojo.math.curves.Path.add: weight cannot be less than 0");
 }
-_ac0.push(_ac4);
-_ac1.push(_ac5);
-_ac3+=_ac5;
+_ac8.push(_acc);
+_ac9.push(_acd);
+_acb+=_acd;
 computeRanges();
 };
-this.remove=function(_ac6){
-for(var i=0;i<_ac0.length;i++){
-if(_ac0[i]==_ac6){
-_ac0.splice(i,1);
-_ac3-=_ac1.splice(i,1)[0];
+this.remove=function(_ace){
+for(var i=0;i<_ac8.length;i++){
+if(_ac8[i]==_ace){
+_ac8.splice(i,1);
+_acb-=_ac9.splice(i,1)[0];
 break;
 }
 }
 computeRanges();
 };
 this.removeAll=function(){
-_ac0=[];
-_ac1=[];
-_ac3=0;
+_ac8=[];
+_ac9=[];
+_acb=0;
 };
 this.getValue=function(n){
-var _ac9=false,_aca=0;
-for(var i=0;i<_ac2.length;i++){
-var r=_ac2[i];
+var _ad1=false,_ad2=0;
+for(var i=0;i<_aca.length;i++){
+var r=_aca[i];
 if(n>=r[0]&&n<r[1]){
 var subN=(n-r[0])/r[2];
-_aca=_ac0[i].getValue(subN);
-_ac9=true;
+_ad2=_ac8[i].getValue(subN);
+_ad1=true;
 break;
 }
 }
-if(!_ac9){
-_aca=_ac0[_ac0.length-1].getValue(1);
+if(!_ad1){
+_ad2=_ac8[_ac8.length-1].getValue(1);
 }
 for(var j=0;j<i;j++){
-_aca=dojo.math.points.translate(_aca,_ac0[j].getValue(1));
+_ad2=dojo.math.points.translate(_ad2,_ac8[j].getValue(1));
 }
-return _aca;
+return _ad2;
 };
 function computeRanges(){
-var _acf=0;
-for(var i=0;i<_ac1.length;i++){
-var end=_acf+_ac1[i]/_ac3;
-var len=end-_acf;
-_ac2[i]=[_acf,end,len];
-_acf=end;
+var _ad7=0;
+for(var i=0;i<_ac9.length;i++){
+var end=_ad7+_ac9[i]/_acb;
+var len=end-_ad7;
+_aca[i]=[_ad7,end,len];
+_ad7=end;
 }
 }
 return this;
@@ -49737,6 +41305,8 @@
 
 __CPAN_EDITION__ kitchen_sink build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -49817,1021 +41387,7 @@
 ../src/math/curves.js
 ../src/math/points.js
 ../src/math/__package__.js
-__CPAN_EDITION__ minimal dojo.js
-/*
-	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
-*/
-
-/*
-	This is a compiled version of Dojo, built for deployment and not for
-	development. To get an editable version, please visit:
-
-		http://dojotoolkit.org
-
-	for documentation and information on getting the source.
-*/
-
-if(typeof dojo=="undefined"){
-var dj_global=this;
-var dj_currentContext=this;
-function dj_undef(_1,_2){
-return (typeof (_2||dj_currentContext)[_1]=="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:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
-with(dojo.version){
-return major+"."+minor+"."+patch+flag+" ("+revision+")";
-}
-}};
-dojo.evalProp=function(_3,_4,_5){
-if((!_4)||(!_3)){
-return undefined;
-}
-if(!dj_undef(_3,_4)){
-return _4[_3];
-}
-return (_5?(_4[_3]={}):undefined);
-};
-dojo.parseObjPath=function(_6,_7,_8){
-var _9=(_7||dojo.global());
-var _a=_6.split(".");
-var _b=_a.pop();
-for(var i=0,l=_a.length;i<l&&_9;i++){
-_9=dojo.evalProp(_a[i],_9,_8);
-}
-return {obj:_9,prop:_b};
-};
-dojo.evalObjPath=function(_e,_f){
-if(typeof _e!="string"){
-return dojo.global();
-}
-if(_e.indexOf(".")==-1){
-return dojo.evalProp(_e,dojo.global(),_f);
-}
-var ref=dojo.parseObjPath(_e,dojo.global(),_f);
-if(ref){
-return dojo.evalProp(ref.prop,ref.obj,_f);
-}
-return null;
-};
-dojo.errorToString=function(_11){
-if(!dj_undef("message",_11)){
-return _11.message;
-}else{
-if(!dj_undef("description",_11)){
-return _11.description;
-}else{
-return _11;
-}
-}
-};
-dojo.raise=function(_12,_13){
-if(_13){
-_12=_12+": "+dojo.errorToString(_13);
-}else{
-_12=dojo.errorToString(_12);
-}
-try{
-if(djConfig.isDebug){
-dojo.hostenv.println("FATAL exception raised: "+_12);
-}
-}
-catch(e){
-}
-throw _13||Error(_12);
-};
-dojo.debug=function(){
-};
-dojo.debugShallow=function(obj){
-};
-dojo.profile={start:function(){
-},end:function(){
-},stop:function(){
-},dump:function(){
-}};
-function dj_eval(_15){
-return dj_global.eval?dj_global.eval(_15):eval(_15);
-}
-dojo.unimplemented=function(_16,_17){
-var _18="'"+_16+"' not implemented";
-if(_17!=null){
-_18+=" "+_17;
-}
-dojo.raise(_18);
-};
-dojo.deprecated=function(_19,_1a,_1b){
-var _1c="DEPRECATED: "+_19;
-if(_1a){
-_1c+=" "+_1a;
-}
-if(_1b){
-_1c+=" -- will be removed in version: "+_1b;
-}
-dojo.debug(_1c);
-};
-dojo.render=(function(){
-function vscaffold(_1d,_1e){
-var tmp={capable:false,support:{builtin:false,plugin:false},prefixes:_1d};
-for(var i=0;i<_1e.length;i++){
-tmp[_1e[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 _21={isDebug:false,allowQueryConfig:false,baseScriptUri:"",baseRelativePath:"",libraryScriptUri:"",iePreventClobber:false,ieClobberMinimal:true,preventBackButtonFix:true,delayMozLoadingFix:false,searchIds:[],parseWidgets:true};
-if(typeof djConfig=="undefined"){
-djConfig=_21;
-}else{
-for(var _22 in _21){
-if(typeof djConfig[_22]=="undefined"){
-djConfig[_22]=_21[_22];
-}
-}
-}
-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 _25=uri.lastIndexOf("/");
-djConfig.baseScriptUri=djConfig.baseRelativePath;
-return djConfig.baseScriptUri;
-};
-(function(){
-var _26={pkgFileName:"__package__",loading_modules_:{},loaded_modules_:{},addedToLoadingCount:[],removedFromLoadingCount:[],inFlightCount:0,modulePrefixes_:{dojo:{name:"dojo",value:"src"}},setModulePrefix:function(_27,_28){
-this.modulePrefixes_[_27]={name:_27,value:_28};
-},moduleHasPrefix:function(_29){
-var mp=this.modulePrefixes_;
-return Boolean(mp[_29]&&mp[_29].value);
-},getModulePrefix:function(_2b){
-if(this.moduleHasPrefix(_2b)){
-return this.modulePrefixes_[_2b].value;
-}
-return _2b;
-},getTextStack:[],loadUriStack:[],loadedUris:[],post_load_:false,modulesLoadedListeners:[],unloadListeners:[],loadNotifying:false};
-for(var _2c in _26){
-dojo.hostenv[_2c]=_26[_2c];
-}
-})();
-dojo.hostenv.loadPath=function(_2d,_2e,cb){
-var uri;
-if(_2d.charAt(0)=="/"||_2d.match(/^\w+:/)){
-uri=_2d;
-}else{
-uri=this.getBaseScriptUri()+_2d;
-}
-if(djConfig.cacheBust&&dojo.render.html.capable){
-uri+="?"+String(djConfig.cacheBust).replace(/\W+/g,"");
-}
-try{
-return !_2e?this.loadUri(uri,cb):this.loadUriAndCheck(uri,_2e,cb);
-}
-catch(e){
-dojo.debug(e);
-return false;
-}
-};
-dojo.hostenv.loadUri=function(uri,cb){
-if(this.loadedUris[uri]){
-return true;
-}
-var _33=this.getText(uri,null,true);
-if(!_33){
-return false;
-}
-this.loadedUris[uri]=true;
-if(cb){
-_33="("+_33+")";
-}
-var _34=dj_eval(_33);
-if(cb){
-cb(_34);
-}
-return true;
-};
-dojo.hostenv.loadUriAndCheck=function(uri,_36,cb){
-var ok=true;
-try{
-ok=this.loadUri(uri,cb);
-}
-catch(e){
-dojo.debug("failed loading ",uri," with error: ",e);
-}
-return Boolean(ok&&this.findModule(_36,false));
-};
-dojo.loaded=function(){
-};
-dojo.unloaded=function(){
-};
-dojo.hostenv.loaded=function(){
-this.loadNotifying=true;
-this.post_load_=true;
-var mll=this.modulesLoadedListeners;
-for(var x=0;x<mll.length;x++){
-mll[x]();
-}
-this.modulesLoadedListeners=[];
-this.loadNotifying=false;
-dojo.loaded();
-};
-dojo.hostenv.unloaded=function(){
-var mll=this.unloadListeners;
-while(mll.length){
-(mll.pop())();
-}
-dojo.unloaded();
-};
-dojo.addOnLoad=function(obj,_3d){
-var dh=dojo.hostenv;
-if(arguments.length==1){
-dh.modulesLoadedListeners.push(obj);
-}else{
-if(arguments.length>1){
-dh.modulesLoadedListeners.push(function(){
-obj[_3d]();
-});
-}
-}
-if(dh.post_load_&&dh.inFlightCount==0&&!dh.loadNotifying){
-dh.callLoaded();
-}
-};
-dojo.addOnUnload=function(obj,_40){
-var dh=dojo.hostenv;
-if(arguments.length==1){
-dh.unloadListeners.push(obj);
-}else{
-if(arguments.length>1){
-dh.unloadListeners.push(function(){
-obj[_40]();
-});
-}
-}
-};
-dojo.hostenv.modulesLoaded=function(){
-if(this.post_load_){
-return;
-}
-if(this.loadUriStack.length==0&&this.getTextStack.length==0){
-if(this.inFlightCount>0){
-dojo.debug("files still in flight!");
-return;
-}
-dojo.hostenv.callLoaded();
-}
-};
-dojo.hostenv.callLoaded=function(){
-if(typeof setTimeout=="object"||(djConfig["useXDomain"]&&dojo.render.html.opera)){
-setTimeout("dojo.hostenv.loaded();",0);
-}else{
-dojo.hostenv.loaded();
-}
-};
-dojo.hostenv.getModuleSymbols=function(_42){
-var _43=_42.split(".");
-for(var i=_43.length;i>0;i--){
-var _45=_43.slice(0,i).join(".");
-if((i==1)&&!this.moduleHasPrefix(_45)){
-_43[0]="../"+_43[0];
-}else{
-var _46=this.getModulePrefix(_45);
-if(_46!=_45){
-_43.splice(0,i,_46);
-break;
-}
-}
-}
-return _43;
-};
-dojo.hostenv._global_omit_module_check=false;
-dojo.hostenv.loadModule=function(_47,_48,_49){
-if(!_47){
-return;
-}
-_49=this._global_omit_module_check||_49;
-var _4a=this.findModule(_47,false);
-if(_4a){
-return _4a;
-}
-if(dj_undef(_47,this.loading_modules_)){
-this.addedToLoadingCount.push(_47);
-}
-this.loading_modules_[_47]=1;
-var _4b=_47.replace(/\./g,"/")+".js";
-var _4c=_47.split(".");
-var _4d=this.getModuleSymbols(_47);
-var _4e=((_4d[0].charAt(0)!="/")&&!_4d[0].match(/^\w+:/));
-var _4f=_4d[_4d.length-1];
-var ok;
-if(_4f=="*"){
-_47=_4c.slice(0,-1).join(".");
-while(_4d.length){
-_4d.pop();
-_4d.push(this.pkgFileName);
-_4b=_4d.join("/")+".js";
-if(_4e&&_4b.charAt(0)=="/"){
-_4b=_4b.slice(1);
-}
-ok=this.loadPath(_4b,!_49?_47:null);
-if(ok){
-break;
-}
-_4d.pop();
-}
-}else{
-_4b=_4d.join("/")+".js";
-_47=_4c.join(".");
-var _51=!_49?_47:null;
-ok=this.loadPath(_4b,_51);
-if(!ok&&!_48){
-_4d.pop();
-while(_4d.length){
-_4b=_4d.join("/")+".js";
-ok=this.loadPath(_4b,_51);
-if(ok){
-break;
-}
-_4d.pop();
-_4b=_4d.join("/")+"/"+this.pkgFileName+".js";
-if(_4e&&_4b.charAt(0)=="/"){
-_4b=_4b.slice(1);
-}
-ok=this.loadPath(_4b,_51);
-if(ok){
-break;
-}
-}
-}
-if(!ok&&!_49){
-dojo.raise("Could not load '"+_47+"'; last tried '"+_4b+"'");
-}
-}
-if(!_49&&!this["isXDomain"]){
-_4a=this.findModule(_47,false);
-if(!_4a){
-dojo.raise("symbol '"+_47+"' is not defined after loading '"+_4b+"'");
-}
-}
-return _4a;
-};
-dojo.hostenv.startPackage=function(_52){
-var _53=String(_52);
-var _54=_53;
-var _55=_52.split(/\./);
-if(_55[_55.length-1]=="*"){
-_55.pop();
-_54=_55.join(".");
-}
-var _56=dojo.evalObjPath(_54,true);
-this.loaded_modules_[_53]=_56;
-this.loaded_modules_[_54]=_56;
-return _56;
-};
-dojo.hostenv.findModule=function(_57,_58){
-var lmn=String(_57);
-if(this.loaded_modules_[lmn]){
-return this.loaded_modules_[lmn];
-}
-if(_58){
-dojo.raise("no loaded module named '"+_57+"'");
-}
-return null;
-};
-dojo.kwCompoundRequire=function(_5a){
-var _5b=_5a["common"]||[];
-var _5c=_5a[dojo.hostenv.name_]?_5b.concat(_5a[dojo.hostenv.name_]||[]):_5b.concat(_5a["default"]||[]);
-for(var x=0;x<_5c.length;x++){
-var _5e=_5c[x];
-if(_5e.constructor==Array){
-dojo.hostenv.loadModule.apply(dojo.hostenv,_5e);
-}else{
-dojo.hostenv.loadModule(_5e);
-}
-}
-};
-dojo.require=function(_5f){
-dojo.hostenv.loadModule.apply(dojo.hostenv,arguments);
-};
-dojo.requireIf=function(_60,_61){
-var _62=arguments[0];
-if((_62===true)||(_62=="common")||(_62&&dojo.render[_62].capable)){
-var _63=[];
-for(var i=1;i<arguments.length;i++){
-_63.push(arguments[i]);
-}
-dojo.require.apply(dojo,_63);
-}
-};
-dojo.requireAfterIf=dojo.requireIf;
-dojo.provide=function(_65){
-return dojo.hostenv.startPackage.apply(dojo.hostenv,arguments);
-};
-dojo.registerModulePath=function(_66,_67){
-return dojo.hostenv.setModulePrefix(_66,_67);
-};
-if(djConfig["modulePaths"]){
-for(var param in djConfig["modulePaths"]){
-dojo.registerModulePath(param,djConfig["modulePaths"][param]);
-}
-}
-dojo.setModulePrefix=function(_68,_69){
-dojo.deprecated("dojo.setModulePrefix(\""+_68+"\", \""+_69+"\")","replaced by dojo.registerModulePath","0.5");
-return dojo.registerModulePath(_68,_69);
-};
-dojo.exists=function(obj,_6b){
-var p=_6b.split(".");
-for(var i=0;i<p.length;i++){
-if(!obj[p[i]]){
-return false;
-}
-obj=obj[p[i]];
-}
-return true;
-};
-dojo.hostenv.normalizeLocale=function(_6e){
-var _6f=_6e?_6e.toLowerCase():dojo.locale;
-if(_6f=="root"){
-_6f="ROOT";
-}
-return _6f;
-};
-dojo.hostenv.searchLocalePath=function(_70,_71,_72){
-_70=dojo.hostenv.normalizeLocale(_70);
-var _73=_70.split("-");
-var _74=[];
-for(var i=_73.length;i>0;i--){
-_74.push(_73.slice(0,i).join("-"));
-}
-_74.push(false);
-if(_71){
-_74.reverse();
-}
-for(var j=_74.length-1;j>=0;j--){
-var loc=_74[j]||"ROOT";
-var _78=_72(loc);
-if(_78){
-break;
-}
-}
-};
-dojo.hostenv.localesGenerated;
-dojo.hostenv.registerNlsPrefix=function(){
-dojo.registerModulePath("nls","nls");
-};
-dojo.hostenv.preloadLocalizations=function(){
-if(dojo.hostenv.localesGenerated){
-dojo.hostenv.registerNlsPrefix();
-function preload(_79){
-_79=dojo.hostenv.normalizeLocale(_79);
-dojo.hostenv.searchLocalePath(_79,true,function(loc){
-for(var i=0;i<dojo.hostenv.localesGenerated.length;i++){
-if(dojo.hostenv.localesGenerated[i]==loc){
-dojo["require"]("nls.dojo_"+loc);
-return true;
-}
-}
-return false;
-});
-}
-preload();
-var _7c=djConfig.extraLocale||[];
-for(var i=0;i<_7c.length;i++){
-preload(_7c[i]);
-}
-}
-dojo.hostenv.preloadLocalizations=function(){
-};
-};
-dojo.requireLocalization=function(_7e,_7f,_80,_81){
-dojo.hostenv.preloadLocalizations();
-var _82=dojo.hostenv.normalizeLocale(_80);
-var _83=[_7e,"nls",_7f].join(".");
-var _84="";
-if(_81){
-var _85=_81.split(",");
-for(var i=0;i<_85.length;i++){
-if(_82.indexOf(_85[i])==0){
-if(_85[i].length>_84.length){
-_84=_85[i];
-}
-}
-}
-if(!_84){
-_84="ROOT";
-}
-}
-var _87=_81?_84:_82;
-var _88=dojo.hostenv.findModule(_83);
-var _89=null;
-if(_88){
-if(djConfig.localizationComplete&&_88._built){
-return;
-}
-var _8a=_87.replace("-","_");
-var _8b=_83+"."+_8a;
-_89=dojo.hostenv.findModule(_8b);
-}
-if(!_89){
-_88=dojo.hostenv.startPackage(_83);
-var _8c=dojo.hostenv.getModuleSymbols(_7e);
-var _8d=_8c.concat("nls").join("/");
-var _8e;
-dojo.hostenv.searchLocalePath(_87,_81,function(loc){
-var _90=loc.replace("-","_");
-var _91=_83+"."+_90;
-var _92=false;
-if(!dojo.hostenv.findModule(_91)){
-dojo.hostenv.startPackage(_91);
-var _93=[_8d];
-if(loc!="ROOT"){
-_93.push(loc);
-}
-_93.push(_7f);
-var _94=_93.join("/")+".js";
-_92=dojo.hostenv.loadPath(_94,null,function(_95){
-var _96=function(){
-};
-_96.prototype=_8e;
-_88[_90]=new _96();
-for(var j in _95){
-_88[_90][j]=_95[j];
-}
-});
-}else{
-_92=true;
-}
-if(_92&&_88[_90]){
-_8e=_88[_90];
-}else{
-_88[_90]=_8e;
-}
-if(_81){
-return true;
-}
-});
-}
-if(_81&&_82!=_84){
-_88[_82.replace("-","_")]=_88[_84.replace("-","_")];
-}
-};
-(function(){
-var _98=djConfig.extraLocale;
-if(_98){
-if(!_98 instanceof Array){
-_98=[_98];
-}
-var req=dojo.requireLocalization;
-dojo.requireLocalization=function(m,b,_9c,_9d){
-req(m,b,_9c,_9d);
-if(_9c){
-return;
-}
-for(var i=0;i<_98.length;i++){
-req(m,b,_98[i],_9d);
-}
-};
-}
-})();
-}
-if(typeof window!="undefined"){
-(function(){
-if(djConfig.allowQueryConfig){
-var _9f=document.location.toString();
-var _a0=_9f.split("?",2);
-if(_a0.length>1){
-var _a1=_a0[1];
-var _a2=_a1.split("&");
-for(var x in _a2){
-var sp=_a2[x].split("=");
-if((sp[0].length>9)&&(sp[0].substr(0,9)=="djConfig.")){
-var opt=sp[0].substr(9);
-try{
-djConfig[opt]=eval(sp[1]);
-}
-catch(e){
-djConfig[opt]=sp[1];
-}
-}
-}
-}
-}
-if(((djConfig["baseScriptUri"]=="")||(djConfig["baseRelativePath"]==""))&&(document&&document.getElementsByTagName)){
-var _a6=document.getElementsByTagName("script");
-var _a7=/(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
-for(var i=0;i<_a6.length;i++){
-var src=_a6[i].getAttribute("src");
-if(!src){
-continue;
-}
-var m=src.match(_a7);
-if(m){
-var _ab=src.substring(0,m.index);
-if(src.indexOf("bootstrap1")>-1){
-_ab+="../";
-}
-if(!this["djConfig"]){
-djConfig={};
-}
-if(djConfig["baseScriptUri"]==""){
-djConfig["baseScriptUri"]=_ab;
-}
-if(djConfig["baseRelativePath"]==""){
-djConfig["baseRelativePath"]=_ab;
-}
-break;
-}
-}
-}
-var dr=dojo.render;
-var drh=dojo.render.html;
-var drs=dojo.render.svg;
-var dua=(drh.UA=navigator.userAgent);
-var dav=(drh.AV=navigator.appVersion);
-var t=true;
-var f=false;
-drh.capable=t;
-drh.support.builtin=t;
-dr.ver=parseFloat(drh.AV);
-dr.os.mac=dav.indexOf("Macintosh")>=0;
-dr.os.win=dav.indexOf("Windows")>=0;
-dr.os.linux=dav.indexOf("X11")>=0;
-drh.opera=dua.indexOf("Opera")>=0;
-drh.khtml=(dav.indexOf("Konqueror")>=0)||(dav.indexOf("Safari")>=0);
-drh.safari=dav.indexOf("Safari")>=0;
-var _b3=dua.indexOf("Gecko");
-drh.mozilla=drh.moz=(_b3>=0)&&(!drh.khtml);
-if(drh.mozilla){
-drh.geckoVersion=dua.substring(_b3+6,_b3+14);
-}
-drh.ie=(document.all)&&(!drh.opera);
-drh.ie50=drh.ie&&dav.indexOf("MSIE 5.0")>=0;
-drh.ie55=drh.ie&&dav.indexOf("MSIE 5.5")>=0;
-drh.ie60=drh.ie&&dav.indexOf("MSIE 6.0")>=0;
-drh.ie70=drh.ie&&dav.indexOf("MSIE 7.0")>=0;
-var cm=document["compatMode"];
-drh.quirks=(cm=="BackCompat")||(cm=="QuirksMode")||drh.ie55||drh.ie50;
-dojo.locale=dojo.locale||(drh.ie?navigator.userLanguage:navigator.language).toLowerCase();
-dr.vml.capable=drh.ie;
-drs.capable=f;
-drs.support.plugin=f;
-drs.support.builtin=f;
-var _b5=window["document"];
-var tdi=_b5["implementation"];
-if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg","1.0"))){
-drs.capable=t;
-drs.support.builtin=t;
-drs.support.plugin=f;
-}
-if(drh.safari){
-var tmp=dua.split("AppleWebKit/")[1];
-var ver=parseFloat(tmp.split(" ")[0]);
-if(ver>=420){
-drs.capable=t;
-drs.support.builtin=t;
-drs.support.plugin=f;
-}
-}else{
-}
-})();
-dojo.hostenv.startPackage("dojo.hostenv");
-dojo.render.name=dojo.hostenv.name_="browser";
-dojo.hostenv.searchIds=[];
-dojo.hostenv._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
-dojo.hostenv.getXmlhttpObject=function(){
-var _b9=null;
-var _ba=null;
-try{
-_b9=new XMLHttpRequest();
-}
-catch(e){
-}
-if(!_b9){
-for(var i=0;i<3;++i){
-var _bc=dojo.hostenv._XMLHTTP_PROGIDS[i];
-try{
-_b9=new ActiveXObject(_bc);
-}
-catch(e){
-_ba=e;
-}
-if(_b9){
-dojo.hostenv._XMLHTTP_PROGIDS=[_bc];
-break;
-}
-}
-}
-if(!_b9){
-return dojo.raise("XMLHTTP not available",_ba);
-}
-return _b9;
-};
-dojo.hostenv._blockAsync=false;
-dojo.hostenv.getText=function(uri,_be,_bf){
-if(!_be){
-this._blockAsync=true;
-}
-var _c0=this.getXmlhttpObject();
-function isDocumentOk(_c1){
-var _c2=_c1["status"];
-return Boolean((!_c2)||((200<=_c2)&&(300>_c2))||(_c2==304));
-}
-if(_be){
-var _c3=this,_c4=null,gbl=dojo.global();
-var xhr=dojo.evalObjPath("dojo.io.XMLHTTPTransport");
-_c0.onreadystatechange=function(){
-if(_c4){
-gbl.clearTimeout(_c4);
-_c4=null;
-}
-if(_c3._blockAsync||(xhr&&xhr._blockAsync)){
-_c4=gbl.setTimeout(function(){
-_c0.onreadystatechange.apply(this);
-},10);
-}else{
-if(4==_c0.readyState){
-if(isDocumentOk(_c0)){
-_be(_c0.responseText);
-}
-}
-}
-};
-}
-_c0.open("GET",uri,_be?true:false);
-try{
-_c0.send(null);
-if(_be){
-return null;
-}
-if(!isDocumentOk(_c0)){
-var err=Error("Unable to load "+uri+" status:"+_c0.status);
-err.status=_c0.status;
-err.responseText=_c0.responseText;
-throw err;
-}
-}
-catch(e){
-this._blockAsync=false;
-if((_bf)&&(!_be)){
-return null;
-}else{
-throw e;
-}
-}
-this._blockAsync=false;
-return _c0.responseText;
-};
-dojo.hostenv.defaultDebugContainerId="dojoDebug";
-dojo.hostenv._println_buffer=[];
-dojo.hostenv._println_safe=false;
-dojo.hostenv.println=function(_c8){
-if(!dojo.hostenv._println_safe){
-dojo.hostenv._println_buffer.push(_c8);
-}else{
-try{
-var _c9=document.getElementById(djConfig.debugContainerId?djConfig.debugContainerId:dojo.hostenv.defaultDebugContainerId);
-if(!_c9){
-_c9=dojo.body();
-}
-var div=document.createElement("div");
-div.appendChild(document.createTextNode(_c8));
-_c9.appendChild(div);
-}
-catch(e){
-try{
-document.write("<div>"+_c8+"</div>");
-}
-catch(e2){
-window.status=_c8;
-}
-}
-}
-};
-dojo.addOnLoad(function(){
-dojo.hostenv._println_safe=true;
-while(dojo.hostenv._println_buffer.length>0){
-dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
-}
-});
-function dj_addNodeEvtHdlr(_cb,_cc,fp){
-var _ce=_cb["on"+_cc]||function(){
-};
-_cb["on"+_cc]=function(){
-fp.apply(_cb,arguments);
-_ce.apply(_cb,arguments);
-};
-return true;
-}
-function dj_load_init(e){
-var _d0=(e&&e.type)?e.type.toLowerCase():"load";
-if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
-return;
-}
-arguments.callee.initialized=true;
-if(typeof (_timer)!="undefined"){
-clearInterval(_timer);
-delete _timer;
-}
-var _d1=function(){
-if(dojo.render.html.ie){
-dojo.hostenv.makeWidgets();
-}
-};
-if(dojo.hostenv.inFlightCount==0){
-_d1();
-dojo.hostenv.modulesLoaded();
-}else{
-dojo.hostenv.modulesLoadedListeners.unshift(_d1);
-}
-}
-if(document.addEventListener){
-if(dojo.render.html.opera||(dojo.render.html.moz&&(djConfig["enableMozDomContentLoaded"]===true))){
-document.addEventListener("DOMContentLoaded",dj_load_init,null);
-}
-window.addEventListener("load",dj_load_init,null);
-}
-if(dojo.render.html.ie&&dojo.render.os.win){
-document.attachEvent("onreadystatechange",function(e){
-if(document.readyState=="complete"){
-dj_load_init();
-}
-});
-}
-if(/(WebKit|khtml)/i.test(navigator.userAgent)){
-var _timer=setInterval(function(){
-if(/loaded|complete/.test(document.readyState)){
-dj_load_init();
-}
-},10);
-}
-if(dojo.render.html.ie){
-dj_addNodeEvtHdlr(window,"beforeunload",function(){
-dojo.hostenv._unloading=true;
-window.setTimeout(function(){
-dojo.hostenv._unloading=false;
-},0);
-});
-}
-dj_addNodeEvtHdlr(window,"unload",function(){
-dojo.hostenv.unloaded();
-if((!dojo.render.html.ie)||(dojo.render.html.ie&&dojo.hostenv._unloading)){
-dojo.hostenv.unloaded();
-}
-});
-dojo.hostenv.makeWidgets=function(){
-var _d3=[];
-if(djConfig.searchIds&&djConfig.searchIds.length>0){
-_d3=_d3.concat(djConfig.searchIds);
-}
-if(dojo.hostenv.searchIds&&dojo.hostenv.searchIds.length>0){
-_d3=_d3.concat(dojo.hostenv.searchIds);
-}
-if((djConfig.parseWidgets)||(_d3.length>0)){
-if(dojo.evalObjPath("dojo.widget.Parse")){
-var _d4=new dojo.xml.Parse();
-if(_d3.length>0){
-for(var x=0;x<_d3.length;x++){
-var _d6=document.getElementById(_d3[x]);
-if(!_d6){
-continue;
-}
-var _d7=_d4.parseElement(_d6,null,true);
-dojo.widget.getParser().createComponents(_d7);
-}
-}else{
-if(djConfig.parseWidgets){
-var _d7=_d4.parseElement(dojo.body(),null,true);
-dojo.widget.getParser().createComponents(_d7);
-}
-}
-}
-}
-};
-dojo.addOnLoad(function(){
-if(!dojo.render.html.ie){
-dojo.hostenv.makeWidgets();
-}
-});
-try{
-if(dojo.render.html.ie){
-document.namespaces.add("v","urn:schemas-microsoft-com:vml");
-document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");
-}
-}
-catch(e){
-}
-dojo.hostenv.writeIncludes=function(){
-};
-if(!dj_undef("document",this)){
-dj_currentDocument=this.document;
-}
-dojo.doc=function(){
-return dj_currentDocument;
-};
-dojo.body=function(){
-return dojo.doc().body||dojo.doc().getElementsByTagName("body")[0];
-};
-dojo.byId=function(id,doc){
-if((id)&&((typeof id=="string")||(id instanceof String))){
-if(!doc){
-doc=dj_currentDocument;
-}
-var ele=doc.getElementById(id);
-if(ele&&(ele.id!=id)&&doc.all){
-ele=null;
-eles=doc.all[id];
-if(eles){
-if(eles.length){
-for(var i=0;i<eles.length;i++){
-if(eles[i].id==id){
-ele=eles[i];
-break;
-}
-}
-}else{
-ele=eles;
-}
-}
-}
-return ele;
-}
-return id;
-};
-dojo.setContext=function(_dc,_dd){
-dj_currentContext=_dc;
-dj_currentDocument=_dd;
-};
-dojo._fireCallback=function(_de,_df,_e0){
-if((_df)&&((typeof _de=="string")||(_de instanceof String))){
-_de=_df[_de];
-}
-return (_df?_de.apply(_df,_e0||[]):_de());
-};
-dojo.withGlobal=function(_e1,_e2,_e3,_e4){
-var _e5;
-var _e6=dj_currentContext;
-var _e7=dj_currentDocument;
-try{
-dojo.setContext(_e1,_e1.document);
-_e5=dojo._fireCallback(_e2,_e3,_e4);
-}
-finally{
-dojo.setContext(_e6,_e7);
-}
-return _e5;
-};
-dojo.withDoc=function(_e8,_e9,_ea,_eb){
-var _ec;
-var _ed=dj_currentDocument;
-try{
-dj_currentDocument=_e8;
-_ec=dojo._fireCallback(_e9,_ea,_eb);
-}
-finally{
-dj_currentDocument=_ed;
-}
-return _ec;
-};
-}
-dojo.requireIf((djConfig["isDebug"]||djConfig["debugAtAllCosts"]),"dojo.debug");
-dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&!djConfig["useXDomain"],"dojo.browser_debug");
-dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&djConfig["useXDomain"],"dojo.browser_debug_xd");
-
-
-__CPAN_EDITION__ minimal build.txt
-Files baked into this build:
-dojoGuardStart.js
-../src/bootstrap1.js
-../src/loader.js
-dojoGuardEnd.js
-../src/hostenv_browser.js
 __CPAN_EDITION__ src dojo.js
 if(typeof dojo == "undefined"){
 	dj_usingBootstrap = true; //Needed for bootstrap2.js to work properly.
@@ -50950,7 +41506,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -51746,7 +42302,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -52309,20 +42867,28 @@
 };
 dojo.provide("dojo.lang.func");
 dojo.lang.hitch=function(_15e,_15f){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
 var fcn=(dojo.lang.isString(_15f)?_15e[_15f]:_15f)||function(){
 };
 return function(){
-return fcn.apply(_15e,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_15e,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_161,_162,_163){
-var nso=(_162||dojo.lang.anon);
-if((_163)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_165,_166,_167){
+var nso=(_166||dojo.lang.anon);
+if((_167)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_161){
+if(nso[x]===_165){
 return x;
 }
 }
@@ -52334,50 +42900,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_161;
+nso[ret]=_165;
 return ret;
 };
-dojo.lang.forward=function(_167){
+dojo.lang.forward=function(_16b){
 return function(){
-return this[_167].apply(this,arguments);
+return this[_16b].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_168,func){
-var _16a=[];
-_168=_168||dj_global;
+dojo.lang.curry=function(_16c,func){
+var _16e=[];
+_16c=_16c||dj_global;
 if(dojo.lang.isString(func)){
-func=_168[func];
+func=_16c[func];
 }
 for(var x=2;x<arguments.length;x++){
-_16a.push(arguments[x]);
+_16e.push(arguments[x]);
 }
-var _16c=(func["__preJoinArity"]||func.length)-_16a.length;
-function gather(_16d,_16e,_16f){
-var _170=_16f;
-var _171=_16e.slice(0);
-for(var x=0;x<_16d.length;x++){
-_171.push(_16d[x]);
+var _170=(func["__preJoinArity"]||func.length)-_16e.length;
+function gather(_171,_172,_173){
+var _174=_173;
+var _175=_172.slice(0);
+for(var x=0;x<_171.length;x++){
+_175.push(_171[x]);
 }
-_16f=_16f-_16d.length;
-if(_16f<=0){
-var res=func.apply(_168,_171);
-_16f=_170;
+_173=_173-_171.length;
+if(_173<=0){
+var res=func.apply(_16c,_175);
+_173=_174;
 return res;
 }else{
 return function(){
-return gather(arguments,_171,_16f);
+return gather(arguments,_175,_173);
 };
 }
 }
-return gather([],_16a,_16c);
+return gather([],_16e,_170);
 };
-dojo.lang.curryArguments=function(_174,func,args,_177){
-var _178=[];
-var x=_177||0;
-for(x=_177;x<args.length;x++){
-_178.push(args[x]);
+dojo.lang.curryArguments=function(_178,func,args,_17b){
+var _17c=[];
+var x=_17b||0;
+for(x=_17b;x<args.length;x++){
+_17c.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_174,func].concat(_178));
+return dojo.lang.curry.apply(dojo.lang,[_178,func].concat(_17c));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -52394,36 +42960,36 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_17e,_17f){
+dojo.lang.delayThese=function(farr,cb,_182,_183){
 if(!farr.length){
-if(typeof _17f=="function"){
-_17f();
+if(typeof _183=="function"){
+_183();
 }
 return;
 }
-if((typeof _17e=="undefined")&&(typeof cb=="number")){
-_17e=cb;
+if((typeof _182=="undefined")&&(typeof cb=="number")){
+_182=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_17e){
-_17e=0;
+if(!_182){
+_182=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_17e,_17f);
-},_17e);
+dojo.lang.delayThese(farr,cb,_182,_183);
+},_182);
 };
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_181){
+function interpolateArgs(args,_185){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -52450,14 +43016,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _184=dl.nameAnonFunc(args[2],ao.adviceObj,_181);
-ao.adviceFunc=_184;
+var _188=dl.nameAnonFunc(args[2],ao.adviceObj,_185);
+ao.adviceFunc=_188;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _184=dl.nameAnonFunc(args[0],ao.srcObj,_181);
-ao.srcFunc=_184;
+var _188=dl.nameAnonFunc(args[0],ao.srcObj,_185);
+ao.srcFunc=_188;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -52483,17 +43049,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _184=dl.nameAnonFunc(args[1],dj_global,_181);
-ao.srcFunc=_184;
+var _188=dl.nameAnonFunc(args[1],dj_global,_185);
+ao.srcFunc=_188;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _184=dl.nameAnonFunc(args[3],dj_global,_181);
+var _188=dl.nameAnonFunc(args[3],dj_global,_185);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_184;
+ao.adviceFunc=_188;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -52541,8 +43107,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _184=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_181);
-ao.aroundFunc=_184;
+var _188=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_185);
+ao.aroundFunc=_188;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -52571,18 +43137,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _186={};
+var _18a={};
 for(var x in ao){
-_186[x]=ao[x];
+_18a[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_186.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_186));
+_18a.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_18a));
 });
 return mjps;
 }
@@ -52594,20 +43167,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _18e;
+var _192;
 if((arguments.length==1)&&(typeof a1=="object")){
-_18e=a1;
+_192=a1;
 }else{
-_18e={srcObj:a1,srcFunc:a2};
+_192={srcObj:a1,srcFunc:a2};
 }
-_18e.adviceFunc=function(){
-var _18f=[];
+_192.adviceFunc=function(){
+var _193=[];
 for(var x=0;x<arguments.length;x++){
-_18f.push(arguments[x]);
+_193.push(arguments[x]);
 }
-dojo.debug("("+_18e.srcObj+")."+_18e.srcFunc,":",_18f.join(", "));
+dojo.debug("("+_192.srcObj+")."+_192.srcFunc,":",_193.join(", "));
 };
-this.kwConnect(_18e);
+this.kwConnect(_192);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -52633,25 +43206,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_197,_198){
-var fn=(_198)?"disconnect":"connect";
-if(typeof _197["srcFunc"]=="function"){
-_197.srcObj=_197["srcObj"]||dj_global;
-var _19a=dojo.lang.nameAnonFunc(_197.srcFunc,_197.srcObj,true);
-_197.srcFunc=_19a;
+this._kwConnectImpl=function(_19b,_19c){
+var fn=(_19c)?"disconnect":"connect";
+if(typeof _19b["srcFunc"]=="function"){
+_19b.srcObj=_19b["srcObj"]||dj_global;
+var _19e=dojo.lang.nameAnonFunc(_19b.srcFunc,_19b.srcObj,true);
+_19b.srcFunc=_19e;
 }
-if(typeof _197["adviceFunc"]=="function"){
-_197.adviceObj=_197["adviceObj"]||dj_global;
-var _19a=dojo.lang.nameAnonFunc(_197.adviceFunc,_197.adviceObj,true);
-_197.adviceFunc=_19a;
+if(typeof _19b["adviceFunc"]=="function"){
+_19b.adviceObj=_19b["adviceObj"]||dj_global;
+var _19e=dojo.lang.nameAnonFunc(_19b.adviceFunc,_19b.adviceObj,true);
+_19b.adviceFunc=_19e;
 }
-_197.srcObj=_197["srcObj"]||dj_global;
-_197.adviceObj=_197["adviceObj"]||_197["targetObj"]||dj_global;
-_197.adviceFunc=_197["adviceFunc"]||_197["targetFunc"];
-return dojo.event[fn](_197);
+_19b.srcObj=_19b["srcObj"]||dj_global;
+_19b.adviceObj=_19b["adviceObj"]||_19b["targetObj"]||dj_global;
+_19b.adviceFunc=_19b["adviceFunc"]||_19b["targetFunc"];
+return dojo.event[fn](_19b);
 };
-this.kwConnect=function(_19b){
-return this._kwConnectImpl(_19b,false);
+this.kwConnect=function(_19f){
+return this._kwConnectImpl(_19f,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -52676,12 +43249,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_19e){
-return this._kwConnectImpl(_19e,true);
+this.kwDisconnect=function(_1a2){
+return this._kwConnectImpl(_1a2,true);
 };
 };
-dojo.event.MethodInvocation=function(_19f,obj,args){
-this.jp_=_19f;
+dojo.event.MethodInvocation=function(_1a3,obj,args){
+this.jp_=_1a3;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -52700,48 +43273,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_1a7){
+dojo.event.MethodJoinPoint=function(obj,_1ab){
 this.object=obj||dj_global;
-this.methodname=_1a7;
-this.methodfunc=this.object[_1a7];
+this.methodname=_1ab;
+this.methodfunc=this.object[_1ab];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_1a9){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_1ad){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_1a9];
+var ofn=obj[_1ad];
 if(!ofn){
-ofn=obj[_1a9]=function(){
+ofn=obj[_1ad]=function(){
 };
-if(!obj[_1a9]){
-dojo.raise("Cannot set do-nothing method on that object "+_1a9);
+if(!obj[_1ad]){
+dojo.raise("Cannot set do-nothing method on that object "+_1ad);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _1ab=_1a9+"$joinpoint";
-var _1ac=_1a9+"$joinpoint$method";
-var _1ad=obj[_1ab];
-if(!_1ad){
-var _1ae=false;
+var _1af=_1ad+"$joinpoint";
+var _1b0=_1ad+"$joinpoint$method";
+var _1b1=obj[_1af];
+if(!_1b1){
+var _1b2=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_1ae=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_1ab,_1ac,_1a9]);
+_1b2=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_1af,_1b0,_1ad]);
 }
 }
-var _1af=ofn.length;
-obj[_1ac]=ofn;
-_1ad=obj[_1ab]=new dojo.event.MethodJoinPoint(obj,_1ac);
-if(!_1ae){
-obj[_1a9]=function(){
-return _1ad.run.apply(_1ad,arguments);
+var _1b3=ofn.length;
+obj[_1b0]=ofn;
+_1b1=obj[_1af]=new dojo.event.MethodJoinPoint(obj,_1b0);
+if(!_1b2){
+obj[_1ad]=function(){
+return _1b1.run.apply(_1b1,arguments);
 };
 }else{
-obj[_1a9]=function(){
+obj[_1ad]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -52775,12 +43348,12 @@
 }
 }
 }
-return _1ad.run.apply(_1ad,args);
+return _1b1.run.apply(_1b1,args);
 };
 }
-obj[_1a9].__preJoinArity=_1af;
+obj[_1ad].__preJoinArity=_1b3;
 }
-return _1ad;
+return _1b1;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -52790,41 +43363,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _1b5=[];
+var _1b9=[];
 for(var x=0;x<args.length;x++){
-_1b5[x]=args[x];
+_1b9[x]=args[x];
 }
-var _1b7=function(marr){
+var _1bb=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _1b9=marr[0]||dj_global;
-var _1ba=marr[1];
-if(!_1b9[_1ba]){
-dojo.raise("function \""+_1ba+"\" does not exist on \""+_1b9+"\"");
+var _1bd=marr[0]||dj_global;
+var _1be=marr[1];
+if(!_1bd[_1be]){
+dojo.raise("function \""+_1be+"\" does not exist on \""+_1bd+"\"");
 }
-var _1bb=marr[2]||dj_global;
-var _1bc=marr[3];
+var _1bf=marr[2]||dj_global;
+var _1c0=marr[3];
 var msg=marr[6];
-var _1be=marr[7];
-if(_1be>-1){
-if(_1be==0){
+var _1c2=marr[7];
+if(_1c2>-1){
+if(_1c2==0){
 return;
 }
 marr[7]--;
 }
-var _1bf;
+var _1c3;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _1b9[_1ba].apply(_1b9,to.args);
+return _1bd[_1be].apply(_1bd,to.args);
 }};
-to.args=_1b5;
-var _1c1=parseInt(marr[4]);
-var _1c2=((!isNaN(_1c1))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_1b9;
+var _1c5=parseInt(marr[4]);
+var _1c6=((!isNaN(_1c5))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _1c5=false;
+var _1c9=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -52834,7 +43407,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_1b7(mcpy);
+_1bb(mcpy);
 },tod);
 }
 return;
@@ -52842,49 +43415,49 @@
 marr.last=cur;
 }
 }
-if(_1bc){
-_1bb[_1bc].call(_1bb,to);
+if(_1c0){
+_1bf[_1c0].call(_1bf,to);
 }else{
-if((_1c2)&&((dojo.render.html)||(dojo.render.svg))){
+if((_1c6)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_1b9[_1ba].call(_1b9,to);
+_1bd[_1be].call(_1bd,to);
 }else{
-_1b9[_1ba].apply(_1b9,args);
+_1bd[_1be].apply(_1bd,args);
 }
-},_1c1);
+},_1c5);
 }else{
 if(msg){
-_1b9[_1ba].call(_1b9,to);
+_1bd[_1be].call(_1bd,to);
 }else{
-_1b9[_1ba].apply(_1b9,args);
+_1bd[_1be].apply(_1bd,args);
 }
 }
 }
 };
-var _1c8=function(){
+var _1cc=function(){
 if(this.squelch){
 try{
-return _1b7.apply(this,arguments);
+return _1bb.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _1b7.apply(this,arguments);
+return _1bb.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_1c8);
+dojo.lang.forEach(this.before.concat(new Array()),_1cc);
 }
-var _1c9;
+var _1cd;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_1c9=mi.proceed();
+_1cd=mi.proceed();
 }else{
 if(this.methodfunc){
-_1c9=this.object[this.methodname].apply(this.object,args);
+_1cd=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -52895,9 +43468,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_1c8);
+dojo.lang.forEach(this.after.concat(new Array()),_1cc);
 }
-return (this.methodfunc)?_1c9:null;
+return (this.methodfunc)?_1cd:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -52913,38 +43486,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_1ce,_1cf,_1d0,_1d1,_1d2,_1d3,once,_1d5,rate,_1d7,_1d8){
-var arr=this.getArr(_1d2);
+},addAdvice:function(_1d2,_1d3,_1d4,_1d5,_1d6,_1d7,once,_1d9,rate,_1db,_1dc){
+var arr=this.getArr(_1d6);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_1ce,_1cf,_1d0,_1d1,_1d5,rate,_1d7,_1d8];
+var ao=[_1d2,_1d3,_1d4,_1d5,_1d9,rate,_1db,_1dc];
 if(once){
-if(this.hasAdvice(_1ce,_1cf,_1d2,arr)>=0){
+if(this.hasAdvice(_1d2,_1d3,_1d6,arr)>=0){
 return;
 }
 }
-if(_1d3=="first"){
+if(_1d7=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_1db,_1dc,_1dd,arr){
+},hasAdvice:function(_1df,_1e0,_1e1,arr){
 if(!arr){
-arr=this.getArr(_1dd);
+arr=this.getArr(_1e1);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _1dc=="object")?(new String(_1dc)).toString():_1dc;
+var aao=(typeof _1e0=="object")?(new String(_1e0)).toString():_1e0;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_1db)&&(a1o==aao)){
+if((arr[x][0]==_1df)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_1e3,_1e4,_1e5,once){
-var arr=this.getArr(_1e5);
-var ind=this.hasAdvice(_1e3,_1e4,_1e5,arr);
+},removeAdvice:function(_1e7,_1e8,_1e9,once){
+var arr=this.getArr(_1e9);
+var ind=this.hasAdvice(_1e7,_1e8,_1e9,arr);
 if(ind==-1){
 return false;
 }
@@ -52953,73 +43526,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_1e3,_1e4,_1e5,arr);
+ind=this.hasAdvice(_1e7,_1e8,_1e9,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_1e9){
-if(!this.topics[_1e9]){
-this.topics[_1e9]=new this.TopicImpl(_1e9);
+this.getTopic=function(_1ed){
+if(!this.topics[_1ed]){
+this.topics[_1ed]=new this.TopicImpl(_1ed);
 }
-return this.topics[_1e9];
+return this.topics[_1ed];
 };
-this.registerPublisher=function(_1ea,obj,_1ec){
-var _1ea=this.getTopic(_1ea);
-_1ea.registerPublisher(obj,_1ec);
+this.registerPublisher=function(_1ee,obj,_1f0){
+var _1ee=this.getTopic(_1ee);
+_1ee.registerPublisher(obj,_1f0);
 };
-this.subscribe=function(_1ed,obj,_1ef){
-var _1ed=this.getTopic(_1ed);
-_1ed.subscribe(obj,_1ef);
+this.subscribe=function(_1f1,obj,_1f3){
+var _1f1=this.getTopic(_1f1);
+_1f1.subscribe(obj,_1f3);
 };
-this.unsubscribe=function(_1f0,obj,_1f2){
-var _1f0=this.getTopic(_1f0);
-_1f0.unsubscribe(obj,_1f2);
+this.unsubscribe=function(_1f4,obj,_1f6){
+var _1f4=this.getTopic(_1f4);
+_1f4.unsubscribe(obj,_1f6);
 };
-this.destroy=function(_1f3){
-this.getTopic(_1f3).destroy();
-delete this.topics[_1f3];
+this.destroy=function(_1f7){
+this.getTopic(_1f7).destroy();
+delete this.topics[_1f7];
 };
-this.publishApply=function(_1f4,args){
-var _1f4=this.getTopic(_1f4);
-_1f4.sendMessage.apply(_1f4,args);
+this.publishApply=function(_1f8,args){
+var _1f8=this.getTopic(_1f8);
+_1f8.sendMessage.apply(_1f8,args);
 };
-this.publish=function(_1f6,_1f7){
-var _1f6=this.getTopic(_1f6);
+this.publish=function(_1fa,_1fb){
+var _1fa=this.getTopic(_1fa);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_1f6.sendMessage.apply(_1f6,args);
+_1fa.sendMessage.apply(_1fa,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_1fa){
-this.topicName=_1fa;
-this.subscribe=function(_1fb,_1fc){
-var tf=_1fc||_1fb;
-var to=(!_1fc)?dj_global:_1fb;
+dojo.event.topic.TopicImpl=function(_1fe){
+this.topicName=_1fe;
+this.subscribe=function(_1ff,_200){
+var tf=_200||_1ff;
+var to=(!_200)?dj_global:_1ff;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_1ff,_200){
-var tf=(!_200)?_1ff:_200;
-var to=(!_200)?null:_1ff;
+this.unsubscribe=function(_203,_204){
+var tf=(!_204)?_203:_204;
+var to=(!_204)?null:_203;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_203){
-this._getJoinPoint().squelch=_203;
+this.setSquelch=function(_207){
+this._getJoinPoint().squelch=_207;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_204,_205){
-dojo.event.connect(_204,_205,this,"sendMessage");
+this.registerPublisher=function(_208,_209){
+dojo.event.connect(_208,_209,this,"sendMessage");
 };
-this.sendMessage=function(_206){
+this.sendMessage=function(_20a){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -53042,12 +43615,12 @@
 catch(e){
 }
 }
-this.clobber=function(_209){
+this.clobber=function(_20d){
 var na;
 var tna;
-if(_209){
-tna=_209.all||_209.getElementsByTagName("*");
-na=[_209];
+if(_20d){
+tna=_20d.all||_20d.getElementsByTagName("*");
+na=[_20d];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -53062,7 +43635,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _20d={};
+var _211={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -53113,9 +43686,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _212=0;
-this.normalizedEventName=function(_213){
-switch(_213){
+var _216=0;
+this.normalizedEventName=function(_217){
+switch(_217){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -53124,10 +43697,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _213;
+return _217;
 break;
 default:
-var lcn=_213.toLowerCase();
+var lcn=_217.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -53147,88 +43720,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_218){
+this.addClobberNodeAttrs=function(node,_21c){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_218.length;x++){
-node.__clobberAttrs__.push(_218[x]);
+for(var x=0;x<_21c.length;x++){
+node.__clobberAttrs__.push(_21c[x]);
 }
 };
-this.removeListener=function(node,_21b,fp,_21d){
-if(!_21d){
-var _21d=false;
+this.removeListener=function(node,_21f,fp,_221){
+if(!_221){
+var _221=false;
 }
-_21b=dojo.event.browser.normalizedEventName(_21b);
-if(_21b=="key"){
+_21f=dojo.event.browser.normalizedEventName(_21f);
+if(_21f=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_21d);
+this.removeListener(node,"onkeydown",fp,_221);
 }
-_21b="keypress";
+_21f="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_21b,fp,_21d);
+node.removeEventListener(_21f,fp,_221);
 }
 };
-this.addListener=function(node,_21f,fp,_221,_222){
+this.addListener=function(node,_223,fp,_225,_226){
 if(!node){
 return;
 }
-if(!_221){
-var _221=false;
+if(!_225){
+var _225=false;
 }
-_21f=dojo.event.browser.normalizedEventName(_21f);
-if(_21f=="key"){
+_223=dojo.event.browser.normalizedEventName(_223);
+if(_223=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_221,_222);
+this.addListener(node,"onkeydown",fp,_225,_226);
 }
-_21f="keypress";
+_223="keypress";
 }
-if(!_222){
-var _223=function(evt){
+if(!_226){
+var _227=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_221){
+if(_225){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_223=fp;
+_227=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_21f,_223,_221);
-return _223;
+node.addEventListener(_223,_227,_225);
+return _227;
 }else{
-_21f="on"+_21f;
-if(typeof node[_21f]=="function"){
-var _226=node[_21f];
-node[_21f]=function(e){
-_226(e);
-return _223(e);
+_223="on"+_223;
+if(typeof node[_223]=="function"){
+var _22a=node[_223];
+node[_223]=function(e){
+_22a(e);
+return _227(e);
 };
 }else{
-node[_21f]=_223;
+node[_223]=_227;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_21f]);
+this.addClobberNodeAttrs(node,[_223]);
 }
-return _223;
+return _227;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_229,_22a){
-if(typeof _229!="function"){
-dojo.raise("listener not a function: "+_229);
+this.callListener=function(_22d,_22e){
+if(typeof _22d!="function"){
+dojo.raise("listener not a function: "+_22d);
 }
-dojo.event.browser.currentEvent.currentTarget=_22a;
-return _229.call(_22a,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_22e;
+return _22d.call(_22e,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -53241,7 +43814,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_22d){
+this.fixEvent=function(evt,_231){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -53318,14 +43891,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _22f=evt.keyCode;
-if(_22f>=65&&_22f<=90&&evt.shiftKey==false){
-_22f+=32;
+var _233=evt.keyCode;
+if(_233>=65&&_233<=90&&evt.shiftKey==false){
+_233+=32;
 }
-if(_22f>=1&&_22f<=26&&evt.ctrlKey){
-_22f+=96;
+if(_233>=1&&_233<=26&&evt.ctrlKey){
+_233+=96;
 }
-evt.key=String.fromCharCode(_22f);
+evt.key=String.fromCharCode(_233);
 }
 }
 }else{
@@ -53351,11 +43924,11 @@
 evt.key=evt.which;
 break;
 default:
-var _22f=evt.which;
+var _233=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_22f+=32;
+_233+=32;
 }
-evt.key=String.fromCharCode(_22f);
+evt.key=String.fromCharCode(_233);
 }
 }
 }
@@ -53460,7 +44033,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_22d?_22d:evt.srcElement);
+evt.currentTarget=(_231?_231:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -53469,12 +44042,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _231=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _235=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_231.scrollLeft||0);
+evt.pageX=evt.clientX+(_235.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_231.scrollTop||0);
+evt.pageY=evt.clientY+(_235.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -53518,12 +44091,12 @@
 dojo.string.trimEnd=function(str){
 return dojo.string.trim(str,-1);
 };
-dojo.string.repeat=function(str,_239,_23a){
+dojo.string.repeat=function(str,_23d,_23e){
 var out="";
-for(var i=0;i<_239;i++){
+for(var i=0;i<_23d;i++){
 out+=str;
-if(_23a&&i<_239-1){
-out+=_23a;
+if(_23e&&i<_23d-1){
+out+=_23e;
 }
 }
 return out;
@@ -53553,9 +44126,9 @@
 };
 dojo.provide("dojo.string");
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_248,hash){
+dojo.string.substituteParams=function(_24c,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _248.replace(/\%\{(\w+)\}/g,function(_24b,key){
+return _24c.replace(/\%\{(\w+)\}/g,function(_24f,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -53569,11 +44142,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _24e=str.split(" ");
-for(var i=0;i<_24e.length;i++){
-_24e[i]=_24e[i].charAt(0).toUpperCase()+_24e[i].substring(1);
+var _252=str.split(" ");
+for(var i=0;i<_252.length;i++){
+_252[i]=_252[i].charAt(0).toUpperCase()+_252[i].substring(1);
 }
-return _24e.join(" ");
+return _252.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -53586,15 +44159,15 @@
 return str;
 }
 var ret="";
-var _253=escape(str);
-var _254,re=/%u([0-9A-F]{4})/i;
-while((_254=_253.match(re))){
-var num=Number("0x"+_254[1]);
-var _257=escape("&#"+num+";");
-ret+=_253.substring(0,_254.index)+_257;
-_253=_253.substring(_254.index+_254[0].length);
+var _257=escape(str);
+var _258,re=/%u([0-9A-F]{4})/i;
+while((_258=_257.match(re))){
+var num=Number("0x"+_258[1]);
+var _25b=escape("&#"+num+";");
+ret+=_257.substring(0,_258.index)+_25b;
+_257=_257.substring(_258.index+_258[0].length);
 }
-ret+=_253.replace(/\+/g,"%2B");
+ret+=_257.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -53619,9 +44192,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_25c){
+dojo.string.escapeXml=function(str,_260){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_25c){
+if(!_260){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -53644,8 +44217,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_265){
-if(_265){
+dojo.string.endsWith=function(str,end,_269){
+if(_269){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -53662,12 +44235,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_269,_26a){
-if(_26a){
+dojo.string.startsWith=function(str,_26d,_26e){
+if(_26e){
 str=str.toLowerCase();
-_269=_269.toLowerCase();
+_26d=_26d.toLowerCase();
 }
-return str.indexOf(_269)==0;
+return str.indexOf(_26d)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -53685,12 +44258,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_270){
-if(_270=="\n"){
+dojo.string.normalizeNewlines=function(text,_274){
+if(_274=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_270=="\r"){
+if(_274=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -53699,27 +44272,27 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_272){
-var _273=[];
-for(var i=0,_275=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_276){
+var _277=[];
+for(var i=0,_279=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_272){
-_273.push(str.substring(_275,i));
-_275=i+1;
+if(str.charAt(i)==_276){
+_277.push(str.substring(_279,i));
+_279=i+1;
 }
 }
-_273.push(str.substr(_275));
-return _273;
+_277.push(str.substr(_279));
+return _277;
 };
 dojo.provide("dojo.string.Builder");
 dojo.string.Builder=function(str){
 this.arrConcat=(dojo.render.html.capable&&dojo.render.html["ie"]);
 var a=[];
 var b="";
-var _279=this.length=b.length;
+var _27d=this.length=b.length;
 if(this.arrConcat){
 if(b.length>0){
 a.push(b);
@@ -53740,8 +44313,8 @@
 }else{
 b+=s;
 }
-_279+=s.length;
-this.length=_279;
+_27d+=s.length;
+this.length=_27d;
 }
 }
 return this;
@@ -53749,7 +44322,7 @@
 this.clear=function(){
 a=[];
 b="";
-_279=this.length=0;
+_27d=this.length=0;
 return this;
 };
 this.remove=function(f,l){
@@ -53762,7 +44335,7 @@
 s=b.substring(0,(f-1));
 }
 b=s+b.substring(f+l);
-_279=this.length=b.length;
+_27d=this.length=b.length;
 if(this.arrConcat){
 a.push(b);
 b="";
@@ -53775,7 +44348,7 @@
 }
 a=[];
 b=b.replace(o,n);
-_279=this.length=b.length;
+_27d=this.length=b.length;
 if(this.arrConcat){
 a.push(b);
 b="";
@@ -53794,7 +44367,7 @@
 t.splice(idx,0,s);
 b=t.join("");
 }
-_279=this.length=b.length;
+_27d=this.length=b.length;
 if(this.arrConcat){
 a.push(b);
 b="";
@@ -53810,17 +44383,17 @@
 this.dojoUri=function(uri){
 return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
 };
-this.moduleUri=function(_285,uri){
-var loc=dojo.hostenv.getModuleSymbols(_285).join("/");
+this.moduleUri=function(_289,uri){
+var loc=dojo.hostenv.getModuleSymbols(_289).join("/");
 if(!loc){
 return null;
 }
 if(loc.lastIndexOf("/")!=loc.length-1){
 loc+="/";
 }
-var _288=loc.indexOf(":");
-var _289=loc.indexOf("/");
-if(loc.charAt(0)!="/"&&(_288==-1||_288>_289)){
+var _28c=loc.indexOf(":");
+var _28d=loc.indexOf("/");
+if(loc.charAt(0)!="/"&&(_28c==-1||_28c>_28d)){
 loc=dojo.hostenv.getBaseScriptUri()+loc;
 }
 return new dojo.uri.Uri(loc,uri);
@@ -53831,20 +44404,20 @@
 if(!arguments[i]){
 continue;
 }
-var _28c=new dojo.uri.Uri(arguments[i].toString());
-var _28d=new dojo.uri.Uri(uri.toString());
-if((_28c.path=="")&&(_28c.scheme==null)&&(_28c.authority==null)&&(_28c.query==null)){
-if(_28c.fragment!=null){
-_28d.fragment=_28c.fragment;
+var _290=new dojo.uri.Uri(arguments[i].toString());
+var _291=new dojo.uri.Uri(uri.toString());
+if((_290.path=="")&&(_290.scheme==null)&&(_290.authority==null)&&(_290.query==null)){
+if(_290.fragment!=null){
+_291.fragment=_290.fragment;
 }
-_28c=_28d;
+_290=_291;
 }else{
-if(_28c.scheme==null){
-_28c.scheme=_28d.scheme;
-if(_28c.authority==null){
-_28c.authority=_28d.authority;
-if(_28c.path.charAt(0)!="/"){
-var path=_28d.path.substring(0,_28d.path.lastIndexOf("/")+1)+_28c.path;
+if(_290.scheme==null){
+_290.scheme=_291.scheme;
+if(_290.authority==null){
+_290.authority=_291.authority;
+if(_290.path.charAt(0)!="/"){
+var path=_291.path.substring(0,_291.path.lastIndexOf("/")+1)+_290.path;
 var segs=path.split("/");
 for(var j=0;j<segs.length;j++){
 if(segs[j]=="."){
@@ -53866,37 +44439,37 @@
 }
 }
 }
-_28c.path=segs.join("/");
+_290.path=segs.join("/");
 }
 }
 }
 }
 uri="";
-if(_28c.scheme!=null){
-uri+=_28c.scheme+":";
+if(_290.scheme!=null){
+uri+=_290.scheme+":";
 }
-if(_28c.authority!=null){
-uri+="//"+_28c.authority;
+if(_290.authority!=null){
+uri+="//"+_290.authority;
 }
-uri+=_28c.path;
-if(_28c.query!=null){
-uri+="?"+_28c.query;
+uri+=_290.path;
+if(_290.query!=null){
+uri+="?"+_290.query;
 }
-if(_28c.fragment!=null){
-uri+="#"+_28c.fragment;
+if(_290.fragment!=null){
+uri+="#"+_290.fragment;
 }
 }
 this.uri=uri.toString();
-var _291="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
-var r=this.uri.match(new RegExp(_291));
+var _295="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+var r=this.uri.match(new RegExp(_295));
 this.scheme=r[2]||(r[1]?"":null);
 this.authority=r[4]||(r[3]?"":null);
 this.path=r[5];
 this.query=r[7]||(r[6]?"":null);
 this.fragment=r[9]||(r[8]?"":null);
 if(this.authority!=null){
-_291="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
-r=this.authority.match(new RegExp(_291));
+_295="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
+r=this.authority.match(new RegExp(_295));
 this.user=r[3]||null;
 this.password=r[4]||null;
 this.host=r[5];
@@ -53936,102 +44509,102 @@
 }
 };
 dojo.dom.getUniqueId=function(){
-var _294=dojo.doc();
+var _298=dojo.doc();
 do{
 var id="dj_unique_"+(++arguments.callee._idIncrement);
-}while(_294.getElementById(id));
+}while(_298.getElementById(id));
 return id;
 };
 dojo.dom.getUniqueId._idIncrement=0;
-dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_296,_297){
-var node=_296.firstChild;
+dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_29a,_29b){
+var node=_29a.firstChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.nextSibling;
 }
-if(_297&&node&&node.tagName&&node.tagName.toLowerCase()!=_297.toLowerCase()){
-node=dojo.dom.nextElement(node,_297);
+if(_29b&&node&&node.tagName&&node.tagName.toLowerCase()!=_29b.toLowerCase()){
+node=dojo.dom.nextElement(node,_29b);
 }
 return node;
 };
-dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_299,_29a){
-var node=_299.lastChild;
+dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_29d,_29e){
+var node=_29d.lastChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.previousSibling;
 }
-if(_29a&&node&&node.tagName&&node.tagName.toLowerCase()!=_29a.toLowerCase()){
-node=dojo.dom.prevElement(node,_29a);
+if(_29e&&node&&node.tagName&&node.tagName.toLowerCase()!=_29e.toLowerCase()){
+node=dojo.dom.prevElement(node,_29e);
 }
 return node;
 };
-dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_29d){
+dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_2a1){
 if(!node){
 return null;
 }
 do{
 node=node.nextSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_29d&&_29d.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.nextElement(node,_29d);
+if(node&&_2a1&&_2a1.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.nextElement(node,_2a1);
 }
 return node;
 };
-dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_29f){
+dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_2a3){
 if(!node){
 return null;
 }
-if(_29f){
-_29f=_29f.toLowerCase();
+if(_2a3){
+_2a3=_2a3.toLowerCase();
 }
 do{
 node=node.previousSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_29f&&_29f.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.prevElement(node,_29f);
+if(node&&_2a3&&_2a3.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.prevElement(node,_2a3);
 }
 return node;
 };
-dojo.dom.moveChildren=function(_2a0,_2a1,trim){
-var _2a3=0;
+dojo.dom.moveChildren=function(_2a4,_2a5,trim){
+var _2a7=0;
 if(trim){
-while(_2a0.hasChildNodes()&&_2a0.firstChild.nodeType==dojo.dom.TEXT_NODE){
-_2a0.removeChild(_2a0.firstChild);
+while(_2a4.hasChildNodes()&&_2a4.firstChild.nodeType==dojo.dom.TEXT_NODE){
+_2a4.removeChild(_2a4.firstChild);
 }
-while(_2a0.hasChildNodes()&&_2a0.lastChild.nodeType==dojo.dom.TEXT_NODE){
-_2a0.removeChild(_2a0.lastChild);
+while(_2a4.hasChildNodes()&&_2a4.lastChild.nodeType==dojo.dom.TEXT_NODE){
+_2a4.removeChild(_2a4.lastChild);
 }
 }
-while(_2a0.hasChildNodes()){
-_2a1.appendChild(_2a0.firstChild);
-_2a3++;
+while(_2a4.hasChildNodes()){
+_2a5.appendChild(_2a4.firstChild);
+_2a7++;
 }
-return _2a3;
+return _2a7;
 };
-dojo.dom.copyChildren=function(_2a4,_2a5,trim){
-var _2a7=_2a4.cloneNode(true);
-return this.moveChildren(_2a7,_2a5,trim);
+dojo.dom.copyChildren=function(_2a8,_2a9,trim){
+var _2ab=_2a8.cloneNode(true);
+return this.moveChildren(_2ab,_2a9,trim);
 };
-dojo.dom.replaceChildren=function(node,_2a9){
-var _2aa=[];
+dojo.dom.replaceChildren=function(node,_2ad){
+var _2ae=[];
 if(dojo.render.html.ie){
 for(var i=0;i<node.childNodes.length;i++){
-_2aa.push(node.childNodes[i]);
+_2ae.push(node.childNodes[i]);
 }
 }
 dojo.dom.removeChildren(node);
-node.appendChild(_2a9);
-for(var i=0;i<_2aa.length;i++){
-dojo.dom.destroyNode(_2aa[i]);
+node.appendChild(_2ad);
+for(var i=0;i<_2ae.length;i++){
+dojo.dom.destroyNode(_2ae[i]);
 }
 };
 dojo.dom.removeChildren=function(node){
-var _2ad=node.childNodes.length;
+var _2b1=node.childNodes.length;
 while(node.hasChildNodes()){
 dojo.dom.removeNode(node.firstChild);
 }
-return _2ad;
+return _2b1;
 };
-dojo.dom.replaceNode=function(node,_2af){
-return node.parentNode.replaceChild(_2af,node);
+dojo.dom.replaceNode=function(node,_2b3){
+return node.parentNode.replaceChild(_2b3,node);
 };
 dojo.dom.destroyNode=function(node){
 if(node.parentNode){
@@ -54051,38 +44624,38 @@
 return node.parentNode.removeChild(node);
 }
 };
-dojo.dom.getAncestors=function(node,_2b3,_2b4){
-var _2b5=[];
-var _2b6=(_2b3&&(_2b3 instanceof Function||typeof _2b3=="function"));
+dojo.dom.getAncestors=function(node,_2b7,_2b8){
+var _2b9=[];
+var _2ba=(_2b7&&(_2b7 instanceof Function||typeof _2b7=="function"));
 while(node){
-if(!_2b6||_2b3(node)){
-_2b5.push(node);
+if(!_2ba||_2b7(node)){
+_2b9.push(node);
 }
-if(_2b4&&_2b5.length>0){
-return _2b5[0];
+if(_2b8&&_2b9.length>0){
+return _2b9[0];
 }
 node=node.parentNode;
 }
-if(_2b4){
+if(_2b8){
 return null;
 }
-return _2b5;
+return _2b9;
 };
-dojo.dom.getAncestorsByTag=function(node,tag,_2b9){
+dojo.dom.getAncestorsByTag=function(node,tag,_2bd){
 tag=tag.toLowerCase();
 return dojo.dom.getAncestors(node,function(el){
 return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
-},_2b9);
+},_2bd);
 };
 dojo.dom.getFirstAncestorByTag=function(node,tag){
 return dojo.dom.getAncestorsByTag(node,tag,true);
 };
-dojo.dom.isDescendantOf=function(node,_2be,_2bf){
-if(_2bf&&node){
+dojo.dom.isDescendantOf=function(node,_2c2,_2c3){
+if(_2c3&&node){
 node=node.parentNode;
 }
 while(node){
-if(node==_2be){
+if(node==_2c2){
 return true;
 }
 node=node.parentNode;
@@ -54104,12 +44677,12 @@
 };
 dojo.dom.createDocument=function(){
 var doc=null;
-var _2c2=dojo.doc();
+var _2c6=dojo.doc();
 if(!dj_undef("ActiveXObject")){
-var _2c3=["MSXML2","Microsoft","MSXML","MSXML3"];
-for(var i=0;i<_2c3.length;i++){
+var _2c7=["MSXML2","Microsoft","MSXML","MSXML3"];
+for(var i=0;i<_2c7.length;i++){
 try{
-doc=new ActiveXObject(_2c3[i]+".XMLDOM");
+doc=new ActiveXObject(_2c7[i]+".XMLDOM");
 }
 catch(e){
 }
@@ -54118,40 +44691,40 @@
 }
 }
 }else{
-if((_2c2.implementation)&&(_2c2.implementation.createDocument)){
-doc=_2c2.implementation.createDocument("","",null);
+if((_2c6.implementation)&&(_2c6.implementation.createDocument)){
+doc=_2c6.implementation.createDocument("","",null);
 }
 }
 return doc;
 };
-dojo.dom.createDocumentFromText=function(str,_2c6){
-if(!_2c6){
-_2c6="text/xml";
+dojo.dom.createDocumentFromText=function(str,_2ca){
+if(!_2ca){
+_2ca="text/xml";
 }
 if(!dj_undef("DOMParser")){
-var _2c7=new DOMParser();
-return _2c7.parseFromString(str,_2c6);
+var _2cb=new DOMParser();
+return _2cb.parseFromString(str,_2ca);
 }else{
 if(!dj_undef("ActiveXObject")){
-var _2c8=dojo.dom.createDocument();
-if(_2c8){
-_2c8.async=false;
-_2c8.loadXML(str);
-return _2c8;
+var _2cc=dojo.dom.createDocument();
+if(_2cc){
+_2cc.async=false;
+_2cc.loadXML(str);
+return _2cc;
 }else{
 dojo.debug("toXml didn't work?");
 }
 }else{
-var _2c9=dojo.doc();
-if(_2c9.createElement){
-var tmp=_2c9.createElement("xml");
+var _2cd=dojo.doc();
+if(_2cd.createElement){
+var tmp=_2cd.createElement("xml");
 tmp.innerHTML=str;
-if(_2c9.implementation&&_2c9.implementation.createDocument){
-var _2cb=_2c9.implementation.createDocument("foo","",null);
+if(_2cd.implementation&&_2cd.implementation.createDocument){
+var _2cf=_2cd.implementation.createDocument("foo","",null);
 for(var i=0;i<tmp.childNodes.length;i++){
-_2cb.importNode(tmp.childNodes.item(i),true);
+_2cf.importNode(tmp.childNodes.item(i),true);
 }
-return _2cb;
+return _2cf;
 }
 return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
 }
@@ -54159,39 +44732,39 @@
 }
 return null;
 };
-dojo.dom.prependChild=function(node,_2ce){
-if(_2ce.firstChild){
-_2ce.insertBefore(node,_2ce.firstChild);
+dojo.dom.prependChild=function(node,_2d2){
+if(_2d2.firstChild){
+_2d2.insertBefore(node,_2d2.firstChild);
 }else{
-_2ce.appendChild(node);
+_2d2.appendChild(node);
 }
 return true;
 };
-dojo.dom.insertBefore=function(node,ref,_2d1){
-if((_2d1!=true)&&(node===ref||node.nextSibling===ref)){
+dojo.dom.insertBefore=function(node,ref,_2d5){
+if((_2d5!=true)&&(node===ref||node.nextSibling===ref)){
 return false;
 }
-var _2d2=ref.parentNode;
-_2d2.insertBefore(node,ref);
+var _2d6=ref.parentNode;
+_2d6.insertBefore(node,ref);
 return true;
 };
-dojo.dom.insertAfter=function(node,ref,_2d5){
+dojo.dom.insertAfter=function(node,ref,_2d9){
 var pn=ref.parentNode;
 if(ref==pn.lastChild){
-if((_2d5!=true)&&(node===ref)){
+if((_2d9!=true)&&(node===ref)){
 return false;
 }
 pn.appendChild(node);
 }else{
-return this.insertBefore(node,ref.nextSibling,_2d5);
+return this.insertBefore(node,ref.nextSibling,_2d9);
 }
 return true;
 };
-dojo.dom.insertAtPosition=function(node,ref,_2d9){
-if((!node)||(!ref)||(!_2d9)){
+dojo.dom.insertAtPosition=function(node,ref,_2dd){
+if((!node)||(!ref)||(!_2dd)){
 return false;
 }
-switch(_2d9.toLowerCase()){
+switch(_2dd.toLowerCase()){
 case "before":
 return dojo.dom.insertBefore(node,ref);
 case "after":
@@ -54209,46 +44782,46 @@
 return true;
 }
 };
-dojo.dom.insertAtIndex=function(node,_2db,_2dc){
-var _2dd=_2db.childNodes;
-if(!_2dd.length||_2dd.length==_2dc){
-_2db.appendChild(node);
+dojo.dom.insertAtIndex=function(node,_2df,_2e0){
+var _2e1=_2df.childNodes;
+if(!_2e1.length||_2e1.length==_2e0){
+_2df.appendChild(node);
 return true;
 }
-if(_2dc==0){
-return dojo.dom.prependChild(node,_2db);
+if(_2e0==0){
+return dojo.dom.prependChild(node,_2df);
 }
-return dojo.dom.insertAfter(node,_2dd[_2dc-1]);
+return dojo.dom.insertAfter(node,_2e1[_2e0-1]);
 };
 dojo.dom.textContent=function(node,text){
 if(arguments.length>1){
-var _2e0=dojo.doc();
-dojo.dom.replaceChildren(node,_2e0.createTextNode(text));
+var _2e4=dojo.doc();
+dojo.dom.replaceChildren(node,_2e4.createTextNode(text));
 return text;
 }else{
 if(node.textContent!=undefined){
 return node.textContent;
 }
-var _2e1="";
+var _2e5="";
 if(node==null){
-return _2e1;
+return _2e5;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-_2e1+=dojo.dom.textContent(node.childNodes[i]);
+_2e5+=dojo.dom.textContent(node.childNodes[i]);
 break;
 case 3:
 case 2:
 case 4:
-_2e1+=node.childNodes[i].nodeValue;
+_2e5+=node.childNodes[i].nodeValue;
 break;
 default:
 break;
 }
 }
-return _2e1;
+return _2e5;
 }
 };
 dojo.dom.hasParent=function(node){
@@ -54264,17 +44837,17 @@
 }
 return "";
 };
-dojo.dom.setAttributeNS=function(elem,_2e7,_2e8,_2e9){
+dojo.dom.setAttributeNS=function(elem,_2eb,_2ec,_2ed){
 if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
 dojo.raise("No element given to dojo.dom.setAttributeNS");
 }
 if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
-elem.setAttributeNS(_2e7,_2e8,_2e9);
+elem.setAttributeNS(_2eb,_2ec,_2ed);
 }else{
-var _2ea=elem.ownerDocument;
-var _2eb=_2ea.createNode(2,_2e8,_2e7);
-_2eb.nodeValue=_2e9;
-elem.setAttributeNode(_2eb);
+var _2ee=elem.ownerDocument;
+var _2ef=_2ee.createNode(2,_2ec,_2eb);
+_2ef.nodeValue=_2ed;
+elem.setAttributeNode(_2ef);
 }
 };
 dojo.provide("dojo.html.common");
@@ -54294,24 +44867,24 @@
 return t;
 };
 dojo.html.getViewport=function(){
-var _2ee=dojo.global();
-var _2ef=dojo.doc();
+var _2f2=dojo.global();
+var _2f3=dojo.doc();
 var w=0;
 var h=0;
 if(dojo.render.html.mozilla){
-w=_2ef.documentElement.clientWidth;
-h=_2ee.innerHeight;
+w=_2f3.documentElement.clientWidth;
+h=_2f2.innerHeight;
 }else{
-if(!dojo.render.html.opera&&_2ee.innerWidth){
-w=_2ee.innerWidth;
-h=_2ee.innerHeight;
+if(!dojo.render.html.opera&&_2f2.innerWidth){
+w=_2f2.innerWidth;
+h=_2f2.innerHeight;
 }else{
-if(!dojo.render.html.opera&&dojo.exists(_2ef,"documentElement.clientWidth")){
-var w2=_2ef.documentElement.clientWidth;
+if(!dojo.render.html.opera&&dojo.exists(_2f3,"documentElement.clientWidth")){
+var w2=_2f3.documentElement.clientWidth;
 if(!w||w2&&w2<w){
 w=w2;
 }
-h=_2ef.documentElement.clientHeight;
+h=_2f3.documentElement.clientHeight;
 }else{
 if(dojo.body().clientWidth){
 w=dojo.body().clientWidth;
@@ -54323,23 +44896,23 @@
 return {width:w,height:h};
 };
 dojo.html.getScroll=function(){
-var _2f3=dojo.global();
-var _2f4=dojo.doc();
-var top=_2f3.pageYOffset||_2f4.documentElement.scrollTop||dojo.body().scrollTop||0;
-var left=_2f3.pageXOffset||_2f4.documentElement.scrollLeft||dojo.body().scrollLeft||0;
+var _2f7=dojo.global();
+var _2f8=dojo.doc();
+var top=_2f7.pageYOffset||_2f8.documentElement.scrollTop||dojo.body().scrollTop||0;
+var left=_2f7.pageXOffset||_2f8.documentElement.scrollLeft||dojo.body().scrollLeft||0;
 return {top:top,left:left,offset:{x:left,y:top}};
 };
 dojo.html.getParentByType=function(node,type){
-var _2f9=dojo.doc();
-var _2fa=dojo.byId(node);
+var _2fd=dojo.doc();
+var _2fe=dojo.byId(node);
 type=type.toLowerCase();
-while((_2fa)&&(_2fa.nodeName.toLowerCase()!=type)){
-if(_2fa==(_2f9["body"]||_2f9["documentElement"])){
+while((_2fe)&&(_2fe.nodeName.toLowerCase()!=type)){
+if(_2fe==(_2fd["body"]||_2fd["documentElement"])){
 return null;
 }
-_2fa=_2fa.parentNode;
+_2fe=_2fe.parentNode;
 }
-return _2fa;
+return _2fe;
 };
 dojo.html.getAttribute=function(node,attr){
 node=dojo.byId(node);
@@ -54372,17 +44945,17 @@
 };
 dojo.html.getCursorPosition=function(e){
 e=e||dojo.global().event;
-var _302={x:0,y:0};
+var _306={x:0,y:0};
 if(e.pageX||e.pageY){
-_302.x=e.pageX;
-_302.y=e.pageY;
+_306.x=e.pageX;
+_306.y=e.pageY;
 }else{
 var de=dojo.doc().documentElement;
 var db=dojo.body();
-_302.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
-_302.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
+_306.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
+_306.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
 }
-return _302;
+return _306;
 };
 dojo.html.isTag=function(node){
 node=dojo.byId(node);
@@ -54398,9 +44971,9 @@
 if(dojo.render.html.ie&&!dojo.render.html.ie70){
 if(window.location.href.substr(0,6).toLowerCase()!="https:"){
 (function(){
-var _307=dojo.doc().createElement("script");
-_307.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
-dojo.doc().getElementsByTagName("head")[0].appendChild(_307);
+var _30b=dojo.doc().createElement("script");
+_30b.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
+dojo.doc().getElementsByTagName("head")[0].appendChild(_30b);
 })();
 }
 }else{
@@ -54408,20 +44981,20 @@
 return doc.createElement(tag);
 };
 }
-dojo.html._callDeprecated=function(_30a,_30b,args,_30d,_30e){
-dojo.deprecated("dojo.html."+_30a,"replaced by dojo.html."+_30b+"("+(_30d?"node, {"+_30d+": "+_30d+"}":"")+")"+(_30e?"."+_30e:""),"0.5");
-var _30f=[];
-if(_30d){
-var _310={};
-_310[_30d]=args[1];
-_30f.push(args[0]);
-_30f.push(_310);
+dojo.html._callDeprecated=function(_30e,_30f,args,_311,_312){
+dojo.deprecated("dojo.html."+_30e,"replaced by dojo.html."+_30f+"("+(_311?"node, {"+_311+": "+_311+"}":"")+")"+(_312?"."+_312:""),"0.5");
+var _313=[];
+if(_311){
+var _314={};
+_314[_311]=args[1];
+_313.push(args[0]);
+_313.push(_314);
 }else{
-_30f=args;
+_313=args;
 }
-var ret=dojo.html[_30b].apply(dojo.html,args);
-if(_30e){
-return ret[_30e];
+var ret=dojo.html[_30f].apply(dojo.html,args);
+if(_312){
+return ret[_312];
 }else{
 return ret;
 }
@@ -54447,18 +45020,18 @@
 dojo.provide("dojo.flash");
 dojo.flash=function(){
 };
-dojo.flash={flash6_version:null,flash8_version:null,ready:false,_visible:true,_loadedListeners:new Array(),_installingListeners:new Array(),setSwf:function(_312){
-if(_312==null||dojo.lang.isUndefined(_312)){
+dojo.flash={flash6_version:null,flash8_version:null,ready:false,_visible:true,_loadedListeners:new Array(),_installingListeners:new Array(),setSwf:function(_316){
+if(_316==null||dojo.lang.isUndefined(_316)){
 return;
 }
-if(_312.flash6!=null&&!dojo.lang.isUndefined(_312.flash6)){
-this.flash6_version=_312.flash6;
+if(_316.flash6!=null&&!dojo.lang.isUndefined(_316.flash6)){
+this.flash6_version=_316.flash6;
 }
-if(_312.flash8!=null&&!dojo.lang.isUndefined(_312.flash8)){
-this.flash8_version=_312.flash8;
+if(_316.flash8!=null&&!dojo.lang.isUndefined(_316.flash8)){
+this.flash8_version=_316.flash8;
 }
-if(!dojo.lang.isUndefined(_312.visible)){
-this._visible=_312.visible;
+if(!dojo.lang.isUndefined(_316.visible)){
+this._visible=_316.visible;
 }
 this._initialize();
 },useFlash6:function(){
@@ -54481,10 +45054,10 @@
 return false;
 }
 }
-},addLoadedListener:function(_313){
-this._loadedListeners.push(_313);
-},addInstallingListener:function(_314){
-this._installingListeners.push(_314);
+},addLoadedListener:function(_317){
+this._loadedListeners.push(_317);
+},addInstallingListener:function(_318){
+this._installingListeners.push(_318);
 },loaded:function(){
 dojo.flash.ready=true;
 if(dojo.flash._loadedListeners.length>0){
@@ -54499,10 +45072,10 @@
 }
 }
 },_initialize:function(){
-var _317=new dojo.flash.Install();
-dojo.flash.installer=_317;
-if(_317.needed()==true){
-_317.install();
+var _31b=new dojo.flash.Install();
+dojo.flash.installer=_31b;
+if(_31b.needed()==true){
+_31b.install();
 }else{
 dojo.flash.obj=new dojo.flash.Embed(this._visible);
 dojo.flash.obj.write(dojo.flash.info.commVersion);
@@ -54527,61 +45100,61 @@
 this._detectVersion();
 this._detectCommunicationVersion();
 };
-dojo.flash.Info.prototype={version:-1,versionMajor:-1,versionMinor:-1,versionRevision:-1,capable:false,commVersion:6,installing:false,isVersionOrAbove:function(_318,_319,_31a){
-_31a=parseFloat("."+_31a);
-if(this.versionMajor>=_318&&this.versionMinor>=_319&&this.versionRevision>=_31a){
+dojo.flash.Info.prototype={version:-1,versionMajor:-1,versionMinor:-1,versionRevision:-1,capable:false,commVersion:6,installing:false,isVersionOrAbove:function(_31c,_31d,_31e){
+_31e=parseFloat("."+_31e);
+if(this.versionMajor>=_31c&&this.versionMinor>=_31d&&this.versionRevision>=_31e){
 return true;
 }else{
 return false;
 }
 },_detectVersion:function(){
-var _31b;
-for(var _31c=25;_31c>0;_31c--){
+var _31f;
+for(var _320=25;_320>0;_320--){
 if(dojo.render.html.ie){
-_31b=VBGetSwfVer(_31c);
+_31f=VBGetSwfVer(_320);
 }else{
-_31b=this._JSFlashInfo(_31c);
+_31f=this._JSFlashInfo(_320);
 }
-if(_31b==-1){
+if(_31f==-1){
 this.capable=false;
 return;
 }else{
-if(_31b!=0){
-var _31d;
+if(_31f!=0){
+var _321;
 if(dojo.render.html.ie){
-var _31e=_31b.split(" ");
-var _31f=_31e[1];
-_31d=_31f.split(",");
+var _322=_31f.split(" ");
+var _323=_322[1];
+_321=_323.split(",");
 }else{
-_31d=_31b.split(".");
+_321=_31f.split(".");
 }
-this.versionMajor=_31d[0];
-this.versionMinor=_31d[1];
-this.versionRevision=_31d[2];
-var _320=this.versionMajor+"."+this.versionRevision;
-this.version=parseFloat(_320);
+this.versionMajor=_321[0];
+this.versionMinor=_321[1];
+this.versionRevision=_321[2];
+var _324=this.versionMajor+"."+this.versionRevision;
+this.version=parseFloat(_324);
 this.capable=true;
 break;
 }
 }
 }
-},_JSFlashInfo:function(_321){
+},_JSFlashInfo:function(_325){
 if(navigator.plugins!=null&&navigator.plugins.length>0){
 if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){
-var _322=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";
-var _323=navigator.plugins["Shockwave Flash"+_322].description;
-var _324=_323.split(" ");
-var _325=_324[2].split(".");
-var _326=_325[0];
-var _327=_325[1];
-if(_324[3]!=""){
-var _328=_324[3].split("r");
+var _326=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";
+var _327=navigator.plugins["Shockwave Flash"+_326].description;
+var _328=_327.split(" ");
+var _329=_328[2].split(".");
+var _32a=_329[0];
+var _32b=_329[1];
+if(_328[3]!=""){
+var _32c=_328[3].split("r");
 }else{
-var _328=_324[4].split("r");
+var _32c=_328[4].split("r");
 }
-var _329=_328[1]>0?_328[1]:0;
-var _32a=_326+"."+_327+"."+_329;
-return _32a;
+var _32d=_32c[1]>0?_32c[1]:0;
+var _32e=_32a+"."+_32b+"."+_32d;
+return _32e;
 }
 }
 return -1;
@@ -54600,8 +45173,8 @@
 this.commVersion=6;
 }
 }};
-dojo.flash.Embed=function(_32b){
-this._visible=_32b;
+dojo.flash.Embed=function(_32f){
+this._visible=_32f;
 };
 dojo.flash.Embed.prototype={width:215,height:138,id:"flashObject",_visible:true,protocol:function(){
 switch(window.location.protocol){
@@ -54612,68 +45185,68 @@
 return "http";
 break;
 }
-},write:function(_32c,_32d){
-if(dojo.lang.isUndefined(_32d)){
-_32d=false;
+},write:function(_330,_331){
+if(dojo.lang.isUndefined(_331)){
+_331=false;
 }
-var _32e=new dojo.string.Builder();
-_32e.append("width: "+this.width+"px; ");
-_32e.append("height: "+this.height+"px; ");
+var _332=new dojo.string.Builder();
+_332.append("width: "+this.width+"px; ");
+_332.append("height: "+this.height+"px; ");
 if(this._visible==false){
-_32e.append("position: absolute; ");
-_32e.append("z-index: 10000; ");
-_32e.append("top: -1000px; ");
-_32e.append("left: -1000px; ");
+_332.append("position: absolute; ");
+_332.append("z-index: 10000; ");
+_332.append("top: -1000px; ");
+_332.append("left: -1000px; ");
 }
-_32e=_32e.toString();
-var _32f;
-var _330;
-if(_32c==6){
-_330=dojo.flash.flash6_version;
-var _331=djConfig.baseRelativePath;
-_330=_330+"?baseRelativePath="+escape(_331);
-_32f="<embed id=\""+this.id+"\" src=\""+_330+"\" "+"    quality=\"high\" bgcolor=\"#ffffff\" "+"    width=\""+this.width+"\" height=\""+this.height+"\" "+"    name=\""+this.id+"\" "+"    align=\"middle\" allowScriptAccess=\"sameDomain\" "+"    type=\"application/x-shockwave-flash\" swLiveConnect=\"true\" "+"    pluginspage=\""+this.protocol()+"://www.macromedia.com/go/getflashplayer\">";
+_332=_332.toString();
+var _333;
+var _334;
+if(_330==6){
+_334=dojo.flash.flash6_version;
+var _335=djConfig.baseRelativePath;
+_334=_334+"?baseRelativePath="+escape(_335);
+_333="<embed id=\""+this.id+"\" src=\""+_334+"\" "+"    quality=\"high\" bgcolor=\"#ffffff\" "+"    width=\""+this.width+"\" height=\""+this.height+"\" "+"    name=\""+this.id+"\" "+"    align=\"middle\" allowScriptAccess=\"sameDomain\" "+"    type=\"application/x-shockwave-flash\" swLiveConnect=\"true\" "+"    pluginspage=\""+this.protocol()+"://www.macromedia.com/go/getflashplayer\">";
 }else{
-_330=dojo.flash.flash8_version;
-var _332=_330;
-var _333=_330;
-var _331=djConfig.baseRelativePath;
-if(_32d){
-var _334=escape(window.location);
+_334=dojo.flash.flash8_version;
+var _336=_334;
+var _337=_334;
+var _335=djConfig.baseRelativePath;
+if(_331){
+var _338=escape(window.location);
 document.title=document.title.slice(0,47)+" - Flash Player Installation";
-var _335=escape(document.title);
-_332+="?MMredirectURL="+_334+"&MMplayerType=ActiveX"+"&MMdoctitle="+_335+"&baseRelativePath="+escape(_331);
-_333+="?MMredirectURL="+_334+"&MMplayerType=PlugIn"+"&baseRelativePath="+escape(_331);
+var _339=escape(document.title);
+_336+="?MMredirectURL="+_338+"&MMplayerType=ActiveX"+"&MMdoctitle="+_339+"&baseRelativePath="+escape(_335);
+_337+="?MMredirectURL="+_338+"&MMplayerType=PlugIn"+"&baseRelativePath="+escape(_335);
 }
-if(_333.indexOf("?")==-1){
-_333+="?baseRelativePath="+escape(_331)+"' ";
+if(_337.indexOf("?")==-1){
+_337+="?baseRelativePath="+escape(_335)+"' ";
 }
-_32f="<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" "+"codebase=\""+this.protocol()+"://fpdownload.macromedia.com/pub/shockwave/cabs/flash/"+"swflash.cab#version=8,0,0,0\" "+"width=\""+this.width+"\" "+"height=\""+this.height+"\" "+"id=\""+this.id+"\" "+"align=\"middle\"> "+"<param name=\"allowScriptAccess\" value=\"sameDomain\" /> "+"<param name=\"movie\" value=\""+_332+"\" /> "+"<param name=\"quality\" value=\"high\" /> "+"<param name=\"bgcolor\" value=\"#ffffff\" /> "+"<embed src=\""+_333+"' "+"quality=\"high\" "+"bgcolor=\"#ffffff\" "+"width=\""+this.width+"\" "+"height=\""+this.height+"\" "+"id=\""+this.id+"\" "+"name=\""+this.id+"\" "+"swLiveConnect=\"true\" "+"align=\"middle\" "+"allowScriptAccess=\"sameDomain\" "+"type=\"application/x-shockwave-flash\" "+"pluginspage=\""+this.protocol()+"://www.macromedia.com/go/getflashplayer\" />"+"</object>";
+_333="<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" "+"codebase=\""+this.protocol()+"://fpdownload.macromedia.com/pub/shockwave/cabs/flash/"+"swflash.cab#version=8,0,0,0\" "+"width=\""+this.width+"\" "+"height=\""+this.height+"\" "+"id=\""+this.id+"\" "+"align=\"middle\"> "+"<param name=\"allowScriptAccess\" value=\"sameDomain\" /> "+"<param name=\"movie\" value=\""+_336+"\" /> "+"<param name=\"quality\" value=\"high\" /> "+"<param name=\"bgcolor\" value=\"#ffffff\" /> "+"<embed src=\""+_337+"' "+"quality=\"high\" "+"bgcolor=\"#ffffff\" "+"width=\""+this.width+"\" "+"height=\""+this.height+"\" "+"id=\""+this.id+"\" "+"name=\""+this.id+"\" "+"swLiveConnect=\"true\" "+"align=\"middle\" "+"allowScriptAccess=\"sameDomain\" "+"type=\"application/x-shockwave-flash\" "+"pluginspage=\""+this.protocol()+"://www.macromedia.com/go/getflashplayer\" />"+"</object>";
 }
-_32f="<div id=\""+this.id+"Container\" style=\""+_32e+"\"> "+_32f+"</div>";
-document.writeln(_32f);
+_333="<div id=\""+this.id+"Container\" style=\""+_332+"\"> "+_333+"</div>";
+document.writeln(_333);
 },get:function(){
 return document.getElementById(this.id);
-},setVisible:function(_336){
-var _337=dojo.byId(this.id+"Container");
-if(_336==true){
-_337.style.visibility="visible";
+},setVisible:function(_33a){
+var _33b=dojo.byId(this.id+"Container");
+if(_33a==true){
+_33b.style.visibility="visible";
 }else{
-_337.style.position="absolute";
-_337.style.x="-1000px";
-_337.style.y="-1000px";
-_337.style.visibility="hidden";
+_33b.style.position="absolute";
+_33b.style.x="-1000px";
+_33b.style.y="-1000px";
+_33b.style.visibility="hidden";
 }
 },center:function(){
-var _338=this.width;
-var _339=this.height;
-var _33a=dojo.html.getScroll().offset;
-var _33b=dojo.html.getViewport();
-var x=_33a.x+(_33b.width-_338)/2;
-var y=_33a.y+(_33b.height-_339)/2;
-var _33e=dojo.byId(this.id+"Container");
-_33e.style.top=y+"px";
-_33e.style.left=x+"px";
+var _33c=this.width;
+var _33d=this.height;
+var _33e=dojo.html.getScroll().offset;
+var _33f=dojo.html.getViewport();
+var x=_33e.x+(_33f.width-_33c)/2;
+var y=_33e.y+(_33f.height-_33d)/2;
+var _342=dojo.byId(this.id+"Container");
+_342.style.top=y+"px";
+_342.style.left=x+"px";
 }};
 dojo.flash.Communicator=function(){
 if(dojo.flash.useFlash6()){
@@ -54700,76 +45273,76 @@
 document.writeln("</SCRIPT> ");
 }
 },_writeFlash8:function(){
-},_handleFSCommand:function(_340,args){
-if(_340!=null&&!dojo.lang.isUndefined(_340)&&/^FSCommand:(.*)/.test(_340)==true){
-_340=_340.match(/^FSCommand:(.*)/)[1];
+},_handleFSCommand:function(_344,args){
+if(_344!=null&&!dojo.lang.isUndefined(_344)&&/^FSCommand:(.*)/.test(_344)==true){
+_344=_344.match(/^FSCommand:(.*)/)[1];
 }
-if(_340=="addCallback"){
-this._fscommandAddCallback(_340,args);
+if(_344=="addCallback"){
+this._fscommandAddCallback(_344,args);
 }else{
-if(_340=="call"){
-this._fscommandCall(_340,args);
+if(_344=="call"){
+this._fscommandCall(_344,args);
 }else{
-if(_340=="fscommandReady"){
+if(_344=="fscommandReady"){
 this._fscommandReady();
 }
 }
 }
-},_fscommandAddCallback:function(_342,args){
-var _344=args;
-var _345=function(){
-return dojo.flash.comm._call(_344,arguments);
+},_fscommandAddCallback:function(_346,args){
+var _348=args;
+var _349=function(){
+return dojo.flash.comm._call(_348,arguments);
 };
-dojo.flash.comm[_344]=_345;
+dojo.flash.comm[_348]=_349;
 dojo.flash.obj.get().SetVariable("_succeeded",true);
-},_fscommandCall:function(_346,args){
-var _348=dojo.flash.obj.get();
-var _349=args;
-var _34a=parseInt(_348.GetVariable("_numArgs"));
-var _34b=new Array();
-for(var i=0;i<_34a;i++){
-var _34d=_348.GetVariable("_"+i);
-_34b.push(_34d);
+},_fscommandCall:function(_34a,args){
+var _34c=dojo.flash.obj.get();
+var _34d=args;
+var _34e=parseInt(_34c.GetVariable("_numArgs"));
+var _34f=new Array();
+for(var i=0;i<_34e;i++){
+var _351=_34c.GetVariable("_"+i);
+_34f.push(_351);
 }
-var _34e;
-if(_349.indexOf(".")==-1){
-_34e=window[_349];
+var _352;
+if(_34d.indexOf(".")==-1){
+_352=window[_34d];
 }else{
-_34e=eval(_349);
+_352=eval(_34d);
 }
-var _34f=null;
-if(!dojo.lang.isUndefined(_34e)&&_34e!=null){
-_34f=_34e.apply(null,_34b);
+var _353=null;
+if(!dojo.lang.isUndefined(_352)&&_352!=null){
+_353=_352.apply(null,_34f);
 }
-_348.SetVariable("_returnResult",_34f);
+_34c.SetVariable("_returnResult",_353);
 },_fscommandReady:function(){
-var _350=dojo.flash.obj.get();
-_350.SetVariable("fscommandReady","true");
-},_call:function(_351,args){
-var _353=dojo.flash.obj.get();
-_353.SetVariable("_functionName",_351);
-_353.SetVariable("_numArgs",args.length);
+var _354=dojo.flash.obj.get();
+_354.SetVariable("fscommandReady","true");
+},_call:function(_355,args){
+var _357=dojo.flash.obj.get();
+_357.SetVariable("_functionName",_355);
+_357.SetVariable("_numArgs",args.length);
 for(var i=0;i<args.length;i++){
-var _355=args[i];
-_355=_355.replace(/\0/g,"\\0");
-_353.SetVariable("_"+i,_355);
+var _359=args[i];
+_359=_359.replace(/\0/g,"\\0");
+_357.SetVariable("_"+i,_359);
 }
-_353.TCallLabel("/_flashRunner","execute");
-var _356=_353.GetVariable("_returnResult");
-_356=_356.replace(/\\0/g,"\x00");
-return _356;
-},_addExternalInterfaceCallback:function(_357){
-var _358=function(){
-var _359=new Array(arguments.length);
+_357.TCallLabel("/_flashRunner","execute");
+var _35a=_357.GetVariable("_returnResult");
+_35a=_35a.replace(/\\0/g,"\x00");
+return _35a;
+},_addExternalInterfaceCallback:function(_35b){
+var _35c=function(){
+var _35d=new Array(arguments.length);
 for(var i=0;i<arguments.length;i++){
-_359[i]=arguments[i];
+_35d[i]=arguments[i];
 }
-return dojo.flash.comm._execFlash(_357,_359);
+return dojo.flash.comm._execFlash(_35b,_35d);
 };
-dojo.flash.comm[_357]=_358;
+dojo.flash.comm[_35b]=_35c;
 },_encodeData:function(data){
-var _35c=/\&([^;]*)\;/g;
-data=data.replace(_35c,"&amp;$1;");
+var _360=/\&([^;]*)\;/g;
+data=data.replace(_360,"&amp;$1;");
 data=data.replace(/</g,"&lt;");
 data=data.replace(/>/g,"&gt;");
 data=data.replace("\\","&custom_backslash;&custom_backslash;");
@@ -54788,46 +45361,46 @@
 data=data.replace(/\&custom_gt\;/g,">");
 data=eval("\""+data+"\"");
 return data;
-},_chunkArgumentData:function(_35e,_35f){
-var _360=dojo.flash.obj.get();
-var _361=Math.ceil(_35e.length/1024);
-for(var i=0;i<_361;i++){
-var _363=i*1024;
-var _364=i*1024+1024;
-if(i==(_361-1)){
-_364=i*1024+_35e.length;
+},_chunkArgumentData:function(_362,_363){
+var _364=dojo.flash.obj.get();
+var _365=Math.ceil(_362.length/1024);
+for(var i=0;i<_365;i++){
+var _367=i*1024;
+var _368=i*1024+1024;
+if(i==(_365-1)){
+_368=i*1024+_362.length;
 }
-var _365=_35e.substring(_363,_364);
-_365=this._encodeData(_365);
-_360.CallFunction("<invoke name=\"chunkArgumentData\" "+"returntype=\"javascript\">"+"<arguments>"+"<string>"+_365+"</string>"+"<number>"+_35f+"</number>"+"</arguments>"+"</invoke>");
+var _369=_362.substring(_367,_368);
+_369=this._encodeData(_369);
+_364.CallFunction("<invoke name=\"chunkArgumentData\" "+"returntype=\"javascript\">"+"<arguments>"+"<string>"+_369+"</string>"+"<number>"+_363+"</number>"+"</arguments>"+"</invoke>");
 }
 },_chunkReturnData:function(){
-var _366=dojo.flash.obj.get();
-var _367=_366.getReturnLength();
-var _368=new Array();
-for(var i=0;i<_367;i++){
-var _36a=_366.CallFunction("<invoke name=\"chunkReturnData\" "+"returntype=\"javascript\">"+"<arguments>"+"<number>"+i+"</number>"+"</arguments>"+"</invoke>");
-if(_36a=="\"\""||_36a=="''"){
-_36a="";
+var _36a=dojo.flash.obj.get();
+var _36b=_36a.getReturnLength();
+var _36c=new Array();
+for(var i=0;i<_36b;i++){
+var _36e=_36a.CallFunction("<invoke name=\"chunkReturnData\" "+"returntype=\"javascript\">"+"<arguments>"+"<number>"+i+"</number>"+"</arguments>"+"</invoke>");
+if(_36e=="\"\""||_36e=="''"){
+_36e="";
 }else{
-_36a=_36a.substring(1,_36a.length-1);
+_36e=_36e.substring(1,_36e.length-1);
 }
-_368.push(_36a);
+_36c.push(_36e);
 }
-var _36b=_368.join("");
-return _36b;
-},_execFlash:function(_36c,_36d){
-var _36e=dojo.flash.obj.get();
-_36e.startExec();
-_36e.setNumberArguments(_36d.length);
-for(var i=0;i<_36d.length;i++){
-this._chunkArgumentData(_36d[i],i);
+var _36f=_36c.join("");
+return _36f;
+},_execFlash:function(_370,_371){
+var _372=dojo.flash.obj.get();
+_372.startExec();
+_372.setNumberArguments(_371.length);
+for(var i=0;i<_371.length;i++){
+this._chunkArgumentData(_371[i],i);
 }
-_36e.exec(_36c);
-var _370=this._chunkReturnData();
-_370=this._decodeData(_370);
-_36e.endExec();
-return _370;
+_372.exec(_370);
+var _374=this._chunkReturnData();
+_374=this._decodeData(_374);
+_372.endExec();
+return _374;
 }};
 dojo.flash.Install=function(){
 };
@@ -54846,14 +45419,14 @@
 dojo.flash.info.installing=true;
 dojo.flash.installing();
 if(dojo.flash.info.capable==false){
-var _371=new dojo.flash.Embed(false);
-_371.write(8);
+var _375=new dojo.flash.Embed(false);
+_375.write(8);
 }else{
 if(dojo.flash.info.isVersionOrAbove(6,0,65)){
-var _371=new dojo.flash.Embed(false);
-_371.write(8,true);
-_371.setVisible(true);
-_371.center();
+var _375=new dojo.flash.Embed(false);
+_375.write(8,true);
+_375.setVisible(true);
+_375.center();
 }else{
 alert("This content requires a more recent version of the Macromedia "+" Flash Player.");
 window.location.href=+dojo.flash.Embed.protocol()+"://www.macromedia.com/go/getflashplayer";
@@ -54875,40 +45448,40 @@
 }};
 dojo.flash.info=new dojo.flash.Info();
 dojo.provide("dojo.lang.type");
-dojo.lang.whatAmI=function(_373){
+dojo.lang.whatAmI=function(_377){
 dojo.deprecated("dojo.lang.whatAmI","use dojo.lang.getType instead","0.5");
-return dojo.lang.getType(_373);
+return dojo.lang.getType(_377);
 };
 dojo.lang.whatAmI.custom={};
-dojo.lang.getType=function(_374){
+dojo.lang.getType=function(_378){
 try{
-if(dojo.lang.isArray(_374)){
+if(dojo.lang.isArray(_378)){
 return "array";
 }
-if(dojo.lang.isFunction(_374)){
+if(dojo.lang.isFunction(_378)){
 return "function";
 }
-if(dojo.lang.isString(_374)){
+if(dojo.lang.isString(_378)){
 return "string";
 }
-if(dojo.lang.isNumber(_374)){
+if(dojo.lang.isNumber(_378)){
 return "number";
 }
-if(dojo.lang.isBoolean(_374)){
+if(dojo.lang.isBoolean(_378)){
 return "boolean";
 }
-if(dojo.lang.isAlien(_374)){
+if(dojo.lang.isAlien(_378)){
 return "alien";
 }
-if(dojo.lang.isUndefined(_374)){
+if(dojo.lang.isUndefined(_378)){
 return "undefined";
 }
 for(var name in dojo.lang.whatAmI.custom){
-if(dojo.lang.whatAmI.custom[name](_374)){
+if(dojo.lang.whatAmI.custom[name](_378)){
 return name;
 }
 }
-if(dojo.lang.isObject(_374)){
+if(dojo.lang.isObject(_378)){
 return "object";
 }
 }
@@ -54916,28 +45489,28 @@
 }
 return "unknown";
 };
-dojo.lang.isNumeric=function(_376){
-return (!isNaN(_376)&&isFinite(_376)&&(_376!=null)&&!dojo.lang.isBoolean(_376)&&!dojo.lang.isArray(_376)&&!/^\s*$/.test(_376));
+dojo.lang.isNumeric=function(_37a){
+return (!isNaN(_37a)&&isFinite(_37a)&&(_37a!=null)&&!dojo.lang.isBoolean(_37a)&&!dojo.lang.isArray(_37a)&&!/^\s*$/.test(_37a));
 };
-dojo.lang.isBuiltIn=function(_377){
-return (dojo.lang.isArray(_377)||dojo.lang.isFunction(_377)||dojo.lang.isString(_377)||dojo.lang.isNumber(_377)||dojo.lang.isBoolean(_377)||(_377==null)||(_377 instanceof Error)||(typeof _377=="error"));
+dojo.lang.isBuiltIn=function(_37b){
+return (dojo.lang.isArray(_37b)||dojo.lang.isFunction(_37b)||dojo.lang.isString(_37b)||dojo.lang.isNumber(_37b)||dojo.lang.isBoolean(_37b)||(_37b==null)||(_37b instanceof Error)||(typeof _37b=="error"));
 };
-dojo.lang.isPureObject=function(_378){
-return ((_378!=null)&&dojo.lang.isObject(_378)&&_378.constructor==Object);
+dojo.lang.isPureObject=function(_37c){
+return ((_37c!=null)&&dojo.lang.isObject(_37c)&&_37c.constructor==Object);
 };
-dojo.lang.isOfType=function(_379,type,_37b){
-var _37c=false;
-if(_37b){
-_37c=_37b["optional"];
+dojo.lang.isOfType=function(_37d,type,_37f){
+var _380=false;
+if(_37f){
+_380=_37f["optional"];
 }
-if(_37c&&((_379===null)||dojo.lang.isUndefined(_379))){
+if(_380&&((_37d===null)||dojo.lang.isUndefined(_37d))){
 return true;
 }
 if(dojo.lang.isArray(type)){
-var _37d=type;
-for(var i in _37d){
-var _37f=_37d[i];
-if(dojo.lang.isOfType(_379,_37f)){
+var _381=type;
+for(var i in _381){
+var _383=_381[i];
+if(dojo.lang.isOfType(_37d,_383)){
 return true;
 }
 }
@@ -54949,41 +45522,41 @@
 switch(type){
 case Array:
 case "array":
-return dojo.lang.isArray(_379);
+return dojo.lang.isArray(_37d);
 case Function:
 case "function":
-return dojo.lang.isFunction(_379);
+return dojo.lang.isFunction(_37d);
 case String:
 case "string":
-return dojo.lang.isString(_379);
+return dojo.lang.isString(_37d);
 case Number:
 case "number":
-return dojo.lang.isNumber(_379);
+return dojo.lang.isNumber(_37d);
 case "numeric":
-return dojo.lang.isNumeric(_379);
+return dojo.lang.isNumeric(_37d);
 case Boolean:
 case "boolean":
-return dojo.lang.isBoolean(_379);
+return dojo.lang.isBoolean(_37d);
 case Object:
 case "object":
-return dojo.lang.isObject(_379);
+return dojo.lang.isObject(_37d);
 case "pureobject":
-return dojo.lang.isPureObject(_379);
+return dojo.lang.isPureObject(_37d);
 case "builtin":
-return dojo.lang.isBuiltIn(_379);
+return dojo.lang.isBuiltIn(_37d);
 case "alien":
-return dojo.lang.isAlien(_379);
+return dojo.lang.isAlien(_37d);
 case "undefined":
-return dojo.lang.isUndefined(_379);
+return dojo.lang.isUndefined(_37d);
 case null:
 case "null":
-return (_379===null);
+return (_37d===null);
 case "optional":
 dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])","use dojo.lang.isOfType(value, type, {optional: true} ) instead","0.5");
-return ((_379===null)||dojo.lang.isUndefined(_379));
+return ((_37d===null)||dojo.lang.isUndefined(_37d));
 default:
 if(dojo.lang.isFunction(type)){
-return (_379 instanceof type);
+return (_37d instanceof type);
 }else{
 dojo.raise("dojo.lang.isOfType() was passed an invalid type");
 }
@@ -54992,70 +45565,70 @@
 dojo.raise("If we get here, it means a bug was introduced above.");
 };
 dojo.lang.getObject=function(str){
-var _381=str.split("."),i=0,obj=dj_global;
+var _385=str.split("."),i=0,obj=dj_global;
 do{
-obj=obj[_381[i++]];
-}while(i<_381.length&&obj);
+obj=obj[_385[i++]];
+}while(i<_385.length&&obj);
 return (obj!=dj_global)?obj:null;
 };
 dojo.lang.doesObjectExist=function(str){
-var _385=str.split("."),i=0,obj=dj_global;
+var _389=str.split("."),i=0,obj=dj_global;
 do{
-obj=obj[_385[i++]];
-}while(i<_385.length&&obj);
+obj=obj[_389[i++]];
+}while(i<_389.length&&obj);
 return (obj&&obj!=dj_global);
 };
 dojo.provide("dojo.lang.assert");
-dojo.lang.assert=function(_388,_389){
-if(!_388){
-var _38a="An assert statement failed.\n"+"The method dojo.lang.assert() was called with a 'false' value.\n";
-if(_389){
-_38a+="Here's the assert message:\n"+_389+"\n";
+dojo.lang.assert=function(_38c,_38d){
+if(!_38c){
+var _38e="An assert statement failed.\n"+"The method dojo.lang.assert() was called with a 'false' value.\n";
+if(_38d){
+_38e+="Here's the assert message:\n"+_38d+"\n";
 }
-throw new Error(_38a);
+throw new Error(_38e);
 }
 };
-dojo.lang.assertType=function(_38b,type,_38d){
-if(dojo.lang.isString(_38d)){
+dojo.lang.assertType=function(_38f,type,_391){
+if(dojo.lang.isString(_391)){
 dojo.deprecated("dojo.lang.assertType(value, type, \"message\")","use dojo.lang.assertType(value, type) instead","0.5");
 }
-if(!dojo.lang.isOfType(_38b,type,_38d)){
+if(!dojo.lang.isOfType(_38f,type,_391)){
 if(!dojo.lang.assertType._errorMessage){
 dojo.lang.assertType._errorMessage="Type mismatch: dojo.lang.assertType() failed.";
 }
 dojo.lang.assert(false,dojo.lang.assertType._errorMessage);
 }
 };
-dojo.lang.assertValidKeywords=function(_38e,_38f,_390){
+dojo.lang.assertValidKeywords=function(_392,_393,_394){
 var key;
-if(!_390){
+if(!_394){
 if(!dojo.lang.assertValidKeywords._errorMessage){
 dojo.lang.assertValidKeywords._errorMessage="In dojo.lang.assertValidKeywords(), found invalid keyword:";
 }
-_390=dojo.lang.assertValidKeywords._errorMessage;
+_394=dojo.lang.assertValidKeywords._errorMessage;
 }
-if(dojo.lang.isArray(_38f)){
-for(key in _38e){
-if(!dojo.lang.inArray(_38f,key)){
-dojo.lang.assert(false,_390+" "+key);
+if(dojo.lang.isArray(_393)){
+for(key in _392){
+if(!dojo.lang.inArray(_393,key)){
+dojo.lang.assert(false,_394+" "+key);
 }
 }
 }else{
-for(key in _38e){
-if(!(key in _38f)){
-dojo.lang.assert(false,_390+" "+key);
+for(key in _392){
+if(!(key in _393)){
+dojo.lang.assert(false,_394+" "+key);
 }
 }
 }
 };
 dojo.provide("dojo.AdapterRegistry");
-dojo.AdapterRegistry=function(_392){
+dojo.AdapterRegistry=function(_396){
 this.pairs=[];
-this.returnWrappers=_392||false;
+this.returnWrappers=_396||false;
 };
-dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_394,wrap,_396,_397){
-var type=(_397)?"unshift":"push";
-this.pairs[type]([name,_394,wrap,_396]);
+dojo.lang.extend(dojo.AdapterRegistry,{register:function(name,_398,wrap,_39a,_39b){
+var type=(_39b)?"unshift":"push";
+this.pairs[type]([name,_398,wrap,_39a]);
 },match:function(){
 for(var i=0;i<this.pairs.length;i++){
 var pair=this.pairs[i];
@@ -55080,8 +45653,8 @@
 }});
 dojo.provide("dojo.lang.repr");
 dojo.lang.reprRegistry=new dojo.AdapterRegistry();
-dojo.lang.registerRepr=function(name,_39f,wrap,_3a1){
-dojo.lang.reprRegistry.register(name,_39f,wrap,_3a1);
+dojo.lang.registerRepr=function(name,_3a3,wrap,_3a5){
+dojo.lang.reprRegistry.register(name,_3a3,wrap,_3a5);
 };
 dojo.lang.repr=function(obj){
 if(typeof (obj)=="undefined"){
@@ -55131,48 +45704,48 @@
 m.registerRepr("boolean",m.isBoolean,m.reprNumber);
 })();
 dojo.provide("dojo.lang.declare");
-dojo.lang.declare=function(_3a7,_3a8,init,_3aa){
-if((dojo.lang.isFunction(_3aa))||((!_3aa)&&(!dojo.lang.isFunction(init)))){
-var temp=_3aa;
-_3aa=init;
+dojo.lang.declare=function(_3ab,_3ac,init,_3ae){
+if((dojo.lang.isFunction(_3ae))||((!_3ae)&&(!dojo.lang.isFunction(init)))){
+var temp=_3ae;
+_3ae=init;
 init=temp;
 }
-var _3ac=[];
-if(dojo.lang.isArray(_3a8)){
-_3ac=_3a8;
-_3a8=_3ac.shift();
+var _3b0=[];
+if(dojo.lang.isArray(_3ac)){
+_3b0=_3ac;
+_3ac=_3b0.shift();
 }
 if(!init){
-init=dojo.evalObjPath(_3a7,false);
+init=dojo.evalObjPath(_3ab,false);
 if((init)&&(!dojo.lang.isFunction(init))){
 init=null;
 }
 }
 var ctor=dojo.lang.declare._makeConstructor();
-var scp=(_3a8?_3a8.prototype:null);
+var scp=(_3ac?_3ac.prototype:null);
 if(scp){
 scp.prototyping=true;
-ctor.prototype=new _3a8();
+ctor.prototype=new _3ac();
 scp.prototyping=false;
 }
 ctor.superclass=scp;
-ctor.mixins=_3ac;
-for(var i=0,l=_3ac.length;i<l;i++){
-dojo.lang.extend(ctor,_3ac[i].prototype);
+ctor.mixins=_3b0;
+for(var i=0,l=_3b0.length;i<l;i++){
+dojo.lang.extend(ctor,_3b0[i].prototype);
 }
 ctor.prototype.initializer=null;
-ctor.prototype.declaredClass=_3a7;
-if(dojo.lang.isArray(_3aa)){
-dojo.lang.extend.apply(dojo.lang,[ctor].concat(_3aa));
+ctor.prototype.declaredClass=_3ab;
+if(dojo.lang.isArray(_3ae)){
+dojo.lang.extend.apply(dojo.lang,[ctor].concat(_3ae));
 }else{
-dojo.lang.extend(ctor,(_3aa)||{});
+dojo.lang.extend(ctor,(_3ae)||{});
 }
 dojo.lang.extend(ctor,dojo.lang.declare._common);
 ctor.prototype.constructor=ctor;
 ctor.prototype.initializer=(ctor.prototype.initializer)||(init)||(function(){
 });
-var _3b1=dojo.parseObjPath(_3a7,null,true);
-_3b1.obj[_3b1.prop]=ctor;
+var _3b5=dojo.parseObjPath(_3ab,null,true);
+_3b5.obj[_3b5.prop]=ctor;
 return ctor;
 };
 dojo.lang.declare._makeConstructor=function(){
@@ -55197,19 +45770,19 @@
 };
 dojo.lang.declare._common={_getPropContext:function(){
 return (this.___proto||this);
-},_contextMethod:function(_3b7,_3b8,args){
-var _3ba,_3bb=this.___proto;
-this.___proto=_3b7;
+},_contextMethod:function(_3bb,_3bc,args){
+var _3be,_3bf=this.___proto;
+this.___proto=_3bb;
 try{
-_3ba=_3b7[_3b8].apply(this,(args||[]));
+_3be=_3bb[_3bc].apply(this,(args||[]));
 }
 catch(e){
 throw e;
 }
 finally{
-this.___proto=_3bb;
+this.___proto=_3bf;
 }
-return _3ba;
+return _3be;
 },_inherited:function(prop,args){
 var p=this._getPropContext();
 do{
@@ -55233,7 +45806,7 @@
 dojo.unimplemented("dojo.storage.initialize");
 },isAvailable:function(){
 dojo.unimplemented("dojo.storage.isAvailable");
-},put:function(key,_3c2,_3c3){
+},put:function(key,_3c6,_3c7){
 dojo.unimplemented("dojo.storage.put");
 },get:function(key){
 dojo.unimplemented("dojo.storage.get");
@@ -55257,11 +45830,11 @@
 dojo.unimplemented("dojo.storage.hideSettingsUI");
 },getType:function(){
 dojo.unimplemented("dojo.storage.getType");
-},isValidKey:function(_3c7){
-if((_3c7==null)||(typeof _3c7=="undefined")){
+},isValidKey:function(_3cb){
+if((_3cb==null)||(typeof _3cb=="undefined")){
 return false;
 }
-return /^[0-9A-Za-z_]*$/.test(_3c7);
+return /^[0-9A-Za-z_]*$/.test(_3cb);
 }});
 dojo.storage.manager=new function(){
 this.currentProvider=null;
@@ -55272,37 +45845,37 @@
 this.initialize=function(){
 this.autodetect();
 };
-this.register=function(name,_3c9){
-this._providers[this._providers.length]=_3c9;
-this._providers[name]=_3c9;
+this.register=function(name,_3cd){
+this._providers[this._providers.length]=_3cd;
+this._providers[name]=_3cd;
 };
-this.setProvider=function(_3ca){
+this.setProvider=function(_3ce){
 };
 this.autodetect=function(){
 if(this._initialized==true){
 return;
 }
-var _3cb=null;
+var _3cf=null;
 for(var i=0;i<this._providers.length;i++){
-_3cb=this._providers[i];
-if(dojo.lang.isUndefined(djConfig["forceStorageProvider"])==false&&_3cb.getType()==djConfig["forceStorageProvider"]){
-_3cb.isAvailable();
+_3cf=this._providers[i];
+if(dojo.lang.isUndefined(djConfig["forceStorageProvider"])==false&&_3cf.getType()==djConfig["forceStorageProvider"]){
+_3cf.isAvailable();
 break;
 }else{
-if(dojo.lang.isUndefined(djConfig["forceStorageProvider"])==true&&_3cb.isAvailable()){
+if(dojo.lang.isUndefined(djConfig["forceStorageProvider"])==true&&_3cf.isAvailable()){
 break;
 }
 }
 }
-if(_3cb==null){
+if(_3cf==null){
 this._initialized=true;
 this.available=false;
 this.currentProvider=null;
 dojo.raise("No storage provider found for this platform");
 }
-this.currentProvider=_3cb;
-for(var i in _3cb){
-dojo.storage[i]=_3cb[i];
+this.currentProvider=_3cf;
+for(var i in _3cf){
+dojo.storage[i]=_3cf[i];
 }
 dojo.storage.manager=this;
 dojo.storage.initialize();
@@ -55319,14 +45892,14 @@
 return this._initialized;
 }
 };
-this.supportsProvider=function(_3cd){
+this.supportsProvider=function(_3d1){
 try{
-var _3ce=eval("new "+_3cd+"()");
-var _3cf=_3ce.isAvailable();
-if(_3cf==null||typeof _3cf=="undefined"){
+var _3d2=eval("new "+_3d1+"()");
+var _3d3=_3d2.isAvailable();
+if(_3d3==null||typeof _3d3=="undefined"){
 return false;
 }
-return _3cf;
+return _3d3;
 }
 catch(exception){
 return false;
@@ -55339,8 +45912,8 @@
 };
 };
 dojo.provide("dojo.json");
-dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_3d1,wrap,_3d3){
-dojo.json.jsonRegistry.register(name,_3d1,wrap,_3d3);
+dojo.json={jsonRegistry:new dojo.AdapterRegistry(),register:function(name,_3d5,wrap,_3d7){
+dojo.json.jsonRegistry.register(name,_3d5,wrap,_3d7);
 },evalJson:function(json){
 try{
 return eval("("+json+")");
@@ -55350,11 +45923,11 @@
 return json;
 }
 },serialize:function(o){
-var _3d6=typeof (o);
-if(_3d6=="undefined"){
+var _3da=typeof (o);
+if(_3da=="undefined"){
 return "undefined";
 }else{
-if((_3d6=="number")||(_3d6=="boolean")){
+if((_3da=="number")||(_3da=="boolean")){
 return o+"";
 }else{
 if(o===null){
@@ -55362,24 +45935,24 @@
 }
 }
 }
-if(_3d6=="string"){
+if(_3da=="string"){
 return dojo.string.escapeString(o);
 }
 var me=arguments.callee;
-var _3d8;
+var _3dc;
 if(typeof (o.__json__)=="function"){
-_3d8=o.__json__();
-if(o!==_3d8){
-return me(_3d8);
+_3dc=o.__json__();
+if(o!==_3dc){
+return me(_3dc);
 }
 }
 if(typeof (o.json)=="function"){
-_3d8=o.json();
-if(o!==_3d8){
-return me(_3d8);
+_3dc=o.json();
+if(o!==_3dc){
+return me(_3dc);
 }
 }
-if(_3d6!="function"&&typeof (o.length)=="number"){
+if(_3da!="function"&&typeof (o.length)=="number"){
 var res=[];
 for(var i=0;i<o.length;i++){
 var val=me(o[i]);
@@ -55392,22 +45965,22 @@
 }
 try{
 window.o=o;
-_3d8=dojo.json.jsonRegistry.match(o);
-return me(_3d8);
+_3dc=dojo.json.jsonRegistry.match(o);
+return me(_3dc);
 }
 catch(e){
 }
-if(_3d6=="function"){
+if(_3da=="function"){
 return null;
 }
 res=[];
 for(var k in o){
-var _3dd;
+var _3e1;
 if(typeof (k)=="number"){
-_3dd="\""+k+"\"";
+_3e1="\""+k+"\"";
 }else{
 if(typeof (k)=="string"){
-_3dd=dojo.string.escapeString(k);
+_3e1=dojo.string.escapeString(k);
 }else{
 continue;
 }
@@ -55416,7 +45989,7 @@
 if(typeof (val)!="string"){
 continue;
 }
-res.push(_3dd+":"+val);
+res.push(_3e1+":"+val);
 }
 return "{"+res.join(",")+"}";
 }};
@@ -55435,22 +46008,22 @@
 dojo.storage.manager.loaded();
 },isAvailable:function(){
 this._available=false;
-var _3de=window.location.protocol;
-if(_3de.indexOf("file")!=-1||_3de.indexOf("chrome")!=-1){
+var _3e2=window.location.protocol;
+if(_3e2.indexOf("file")!=-1||_3e2.indexOf("chrome")!=-1){
 this._available=this._isAvailableXPCOM();
 if(this._available==false){
 this._available=this._isAvailableActiveX();
 }
 }
 return this._available;
-},put:function(key,_3e0,_3e1){
+},put:function(key,_3e4,_3e5){
 if(this.isValidKey(key)==false){
 dojo.raise("Invalid key given: "+key);
 }
-this._statusHandler=_3e1;
+this._statusHandler=_3e5;
 try{
-this._save(key,_3e0);
-_3e1.call(null,dojo.storage.SUCCESS,key);
+this._save(key,_3e4);
+_3e5.call(null,dojo.storage.SUCCESS,key);
 }
 catch(e){
 this._statusHandler.call(null,dojo.storage.FAILED,key,e.toString());
@@ -55459,8 +46032,8 @@
 if(this.isValidKey(key)==false){
 dojo.raise("Invalid key given: "+key);
 }
-var _3e3=this._load(key);
-return _3e3;
+var _3e7=this._load(key);
+return _3e7;
 },getKeys:function(){
 return this._keyIndex;
 },hasKey:function(key){
@@ -55468,21 +46041,21 @@
 dojo.raise("Invalid key given: "+key);
 }
 this._loadKeyIndex();
-var _3e5=false;
+var _3e9=false;
 for(var i=0;i<this._keyIndex.length;i++){
 if(this._keyIndex[i]==key){
-_3e5=true;
+_3e9=true;
 }
 }
-return _3e5;
+return _3e9;
 },clear:function(){
 this._loadKeyIndex();
-var _3e7=new Array();
+var _3eb=new Array();
 for(var i=0;i<this._keyIndex.length;i++){
-_3e7[_3e7.length]=new String(this._keyIndex[i]);
+_3eb[_3eb.length]=new String(this._keyIndex[i]);
 }
-for(var i=0;i<_3e7.length;i++){
-this.remove(_3e7[i]);
+for(var i=0;i<_3eb.length;i++){
+this.remove(_3eb[i]);
 }
 },remove:function(key){
 if(this.isValidKey(key)==false){
@@ -55496,12 +46069,12 @@
 }
 }
 this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME,this._keyIndex,false);
-var _3eb=this._getPagePath()+key+".txt";
+var _3ef=this._getPagePath()+key+".txt";
 if(this._isAvailableXPCOM()){
-this._removeXPCOM(_3eb);
+this._removeXPCOM(_3ef);
 }else{
 if(this._isAvailableActiveX()){
-this._removeActiveX(_3eb);
+this._removeActiveX(_3ef);
 }
 }
 },isPermanent:function(){
@@ -55516,75 +46089,75 @@
 dojo.raise(this.getType()+" does not support a storage settings user-interface");
 },getType:function(){
 return "dojo.storage.browser.FileStorageProvider";
-},_save:function(key,_3ed,_3ee){
-if(typeof _3ee=="undefined"){
-_3ee=true;
+},_save:function(key,_3f1,_3f2){
+if(typeof _3f2=="undefined"){
+_3f2=true;
 }
-if(dojo.lang.isString(_3ed)==false){
-_3ed=dojo.json.serialize(_3ed);
-_3ed="/* JavaScript */\n"+_3ed+"\n\n";
+if(dojo.lang.isString(_3f1)==false){
+_3f1=dojo.json.serialize(_3f1);
+_3f1="/* JavaScript */\n"+_3f1+"\n\n";
 }
-var _3ef=this._getPagePath()+key+".txt";
+var _3f3=this._getPagePath()+key+".txt";
 if(this._isAvailableXPCOM()){
-this._saveFileXPCOM(_3ef,_3ed);
+this._saveFileXPCOM(_3f3,_3f1);
 }else{
 if(this._isAvailableActiveX()){
-this._saveFileActiveX(_3ef,_3ed);
+this._saveFileActiveX(_3f3,_3f1);
 }
 }
-if(_3ee){
+if(_3f2){
 this._updateKeyIndex(key);
 }
 },_load:function(key){
-var _3f1=this._getPagePath()+key+".txt";
-var _3f2=null;
+var _3f5=this._getPagePath()+key+".txt";
+var _3f6=null;
 if(this._isAvailableXPCOM()){
-_3f2=this._loadFileXPCOM(_3f1);
+_3f6=this._loadFileXPCOM(_3f5);
 }else{
 if(this._isAvailableActiveX()){
-_3f2=this._loadFileActiveX(_3f1);
+_3f6=this._loadFileActiveX(_3f5);
 }else{
 if(this._isAvailableJava()){
-_3f2=this._loadFileJava(_3f1);
+_3f6=this._loadFileJava(_3f5);
 }
 }
 }
-if(_3f2==null){
+if(_3f6==null){
 return null;
 }
-if(!dojo.lang.isUndefined(_3f2)&&_3f2!=null&&/^\/\* JavaScript \*\//.test(_3f2)){
-_3f2=dojo.json.evalJson(_3f2);
+if(!dojo.lang.isUndefined(_3f6)&&_3f6!=null&&/^\/\* JavaScript \*\//.test(_3f6)){
+_3f6=dojo.json.evalJson(_3f6);
 }
-return _3f2;
+return _3f6;
 },_updateKeyIndex:function(key){
 this._loadKeyIndex();
-var _3f4=false;
+var _3f8=false;
 for(var i=0;i<this._keyIndex.length;i++){
 if(this._keyIndex[i]==key){
-_3f4=true;
+_3f8=true;
 break;
 }
 }
-if(_3f4==false){
+if(_3f8==false){
 this._keyIndex[this._keyIndex.length]=key;
 }
 this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME,this._keyIndex,false);
 },_loadKeyIndex:function(){
-var _3f6=this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME);
-if(_3f6==null){
+var _3fa=this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME);
+if(_3fa==null){
 this._keyIndex=new Array();
 }else{
-this._keyIndex=_3f6;
+this._keyIndex=_3fa;
 }
-},_saveFileXPCOM:function(_3f7,_3f8){
+},_saveFileXPCOM:function(_3fb,_3fc){
 try{
 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 var f=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
-f.initWithPath(_3f7);
-var _3fa=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
-_3fa.init(f,32|4|8,256+128,null);
-_3fa.write(_3f8,_3f8.length);
-_3fa.close();
+f.initWithPath(_3fb);
+var _3fe=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
+_3fe.init(f,32|4|8,256+128,null);
+_3fe.write(_3fc,_3fc.length);
+_3fe.close();
 }
 catch(e){
 var msg=e.toString();
@@ -55593,20 +46166,20 @@
 }
 dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): "+msg);
 }
-},_loadFileXPCOM:function(_3fc){
+},_loadFileXPCOM:function(_400){
 try{
 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 var f=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
-f.initWithPath(_3fc);
+f.initWithPath(_400);
 if(f.exists()==false){
 return null;
 }
 var inp=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
 inp.init(f,1,4,null);
-var _3ff=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
-_3ff.init(inp);
-var _400=_3ff.read(_3ff.available());
-return _400;
+var _403=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
+_403.init(inp);
+var _404=_403.read(_403.available());
+return _404;
 }
 catch(e){
 var msg=e.toString();
@@ -55616,11 +46189,11 @@
 dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): "+msg);
 }
 return null;
-},_saveFileActiveX:function(_402,_403){
+},_saveFileActiveX:function(_406,_407){
 try{
-var _404=new ActiveXObject("Scripting.FileSystemObject");
-var f=_404.OpenTextFile(_402,2,true);
-f.Write(_403);
+var _408=new ActiveXObject("Scripting.FileSystemObject");
+var f=_408.OpenTextFile(_406,2,true);
+f.Write(_407);
 f.Close();
 }
 catch(e){
@@ -55630,16 +46203,16 @@
 }
 dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): "+msg);
 }
-},_loadFileActiveX:function(_407){
+},_loadFileActiveX:function(_40b){
 try{
-var _408=new ActiveXObject("Scripting.FileSystemObject");
-if(_408.FileExists(_407)==false){
+var _40c=new ActiveXObject("Scripting.FileSystemObject");
+if(_40c.FileExists(_40b)==false){
 return null;
 }
-var f=_408.OpenTextFile(_407,1);
-var _40a=f.ReadAll();
+var f=_40c.OpenTextFile(_40b,1);
+var _40e=f.ReadAll();
 f.Close();
-return _40a;
+return _40e;
 }
 catch(e){
 var msg=e.toString();
@@ -55648,10 +46221,10 @@
 }
 dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): "+msg);
 }
-},_saveFileJava:function(_40c,_40d){
+},_saveFileJava:function(_410,_411){
 try{
-var _40e=dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
-_40e.save(_40c,_40d);
+var _412=dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
+_412.save(_410,_411);
 }
 catch(e){
 var msg=e.toString();
@@ -55660,11 +46233,11 @@
 }
 dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): "+msg);
 }
-},_loadFileJava:function(_410){
+},_loadFileJava:function(_414){
 try{
-var _411=dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
-var _412=_411.load(_410);
-return _412;
+var _415=dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
+var _416=_415.load(_414);
+return _416;
 }
 catch(e){
 var msg=e.toString();
@@ -55676,7 +46249,7 @@
 },_isAvailableActiveX:function(){
 try{
 if(window.ActiveXObject){
-var _414=new window.ActiveXObject("Scripting.FileSystemObject");
+var _418=new window.ActiveXObject("Scripting.FileSystemObject");
 return true;
 }
 }
@@ -55732,11 +46305,11 @@
 }
 path=unescape(path);
 return path;
-},_removeXPCOM:function(_416){
+},_removeXPCOM:function(_41a){
 try{
 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 var f=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
-f.initWithPath(_416);
+f.initWithPath(_41a);
 if(f.exists()==false||f.isDirectory()){
 return;
 }
@@ -55747,18 +46320,18 @@
 catch(e){
 dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): "+e.toString());
 }
-},_removeActiveX:function(_418){
+},_removeActiveX:function(_41c){
 try{
-var _419=new ActiveXObject("Scripting.FileSystemObject");
-_419.DeleteFile(_418);
+var _41d=new ActiveXObject("Scripting.FileSystemObject");
+_41d.DeleteFile(_41c);
 }
 catch(e){
 dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): "+e.toString());
 }
-},_removeJava:function(_41a){
+},_removeJava:function(_41e){
 try{
-var _41b=dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
-_41b.remove(_41a);
+var _41f=dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
+_41f.remove(_41e);
 }
 catch(e){
 var msg=e.toString();
@@ -55768,8 +46341,8 @@
 dojo.raise("dojo.storage.browser.FileStorageProvider._removeJava(): "+msg);
 }
 },_writeApplet:function(){
-var _41d=dojo.uri.moduleUri("dojo","../DojoFileStorageProvider.jar").toString();
-var tag="<applet "+"id='"+dojo.storage.browser.FileStorageProvider._APPLET_ID+"' "+"style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' "+"code='DojoFileStorageProvider.class' "+"archive='"+_41d+"' "+"width='1' "+"height='1' "+">"+"</applet>";
+var _421=dojo.uri.moduleUri("dojo","../DojoFileStorageProvider.jar").toString();
+var tag="<applet "+"id='"+dojo.storage.browser.FileStorageProvider._APPLET_ID+"' "+"style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' "+"code='DojoFileStorageProvider.class' "+"archive='"+_421+"' "+"width='1' "+"height='1' "+">"+"</applet>";
 document.writeln(tag);
 }});
 dojo.storage.browser.WhatWGStorageProvider=function(){
@@ -55784,7 +46357,7 @@
 dojo.storage.manager.loaded();
 },isAvailable:function(){
 try{
-var _41f=globalStorage[location.hostname];
+var _423=globalStorage[location.hostname];
 }
 catch(e){
 this._available=false;
@@ -55792,22 +46365,22 @@
 }
 this._available=true;
 return this._available;
-},put:function(key,_421,_422){
+},put:function(key,_425,_426){
 if(this.isValidKey(key)==false){
 dojo.raise("Invalid key given: "+key);
 }
-this._statusHandler=_422;
-if(dojo.lang.isString(_421)){
-_421="string:"+_421;
+this._statusHandler=_426;
+if(dojo.lang.isString(_425)){
+_425="string:"+_425;
 }else{
-_421=dojo.json.serialize(_421);
+_425=dojo.json.serialize(_425);
 }
 window.addEventListener("storage",function(evt){
-_422.call(null,dojo.storage.SUCCESS,key);
+_426.call(null,dojo.storage.SUCCESS,key);
 },false);
 try{
-var _424=globalStorage[this._domain];
-_424.setItem(key,_421);
+var _428=globalStorage[this._domain];
+_428.setItem(key,_425);
 }
 catch(e){
 this._statusHandler.call(null,dojo.storage.FAILED,key,e.toString());
@@ -55816,37 +46389,37 @@
 if(this.isValidKey(key)==false){
 dojo.raise("Invalid key given: "+key);
 }
-var _426=globalStorage[this._domain];
-var _427=_426.getItem(key);
-if(_427==null){
+var _42a=globalStorage[this._domain];
+var _42b=_42a.getItem(key);
+if(_42b==null){
 return null;
 }
-_427=_427.value;
-if(!dojo.lang.isUndefined(_427)&&_427!=null&&/^string:/.test(_427)){
-_427=_427.substring("string:".length);
+_42b=_42b.value;
+if(!dojo.lang.isUndefined(_42b)&&_42b!=null&&/^string:/.test(_42b)){
+_42b=_42b.substring("string:".length);
 }else{
-_427=dojo.json.evalJson(_427);
+_42b=dojo.json.evalJson(_42b);
 }
-return _427;
+return _42b;
 },getKeys:function(){
-var _428=globalStorage[this._domain];
-var _429=new Array();
-for(i=0;i<_428.length;i++){
-_429[i]=_428.key(i);
+var _42c=globalStorage[this._domain];
+var _42d=new Array();
+for(i=0;i<_42c.length;i++){
+_42d[i]=_42c.key(i);
 }
-return _429;
+return _42d;
 },clear:function(){
-var _42a=globalStorage[this._domain];
+var _42e=globalStorage[this._domain];
 var keys=new Array();
-for(var i=0;i<_42a.length;i++){
-keys[keys.length]=_42a.key(i);
+for(var i=0;i<_42e.length;i++){
+keys[keys.length]=_42e.key(i);
 }
 for(var i=0;i<keys.length;i++){
-_42a.removeItem(keys[i]);
+_42e.removeItem(keys[i]);
 }
 },remove:function(key){
-var _42e=globalStorage[this._domain];
-_42e.removeItem(key);
+var _432=globalStorage[this._domain];
+_432.removeItem(key);
 },isPermanent:function(){
 return true;
 },getMaximumSize:function(){
@@ -55867,13 +46440,13 @@
 if(djConfig["disableFlashStorage"]==true){
 return;
 }
-var _42f=function(){
+var _433=function(){
 dojo.storage._flashLoaded();
 };
-dojo.flash.addLoadedListener(_42f);
-var _430=dojo.uri.moduleUri("dojo","../Storage_version6.swf").toString();
-var _431=dojo.uri.moduleUri("dojo","../Storage_version8.swf").toString();
-dojo.flash.setSwf({flash6:_430,flash8:_431,visible:false});
+dojo.flash.addLoadedListener(_433);
+var _434=dojo.uri.moduleUri("dojo","../Storage_version6.swf").toString();
+var _435=dojo.uri.moduleUri("dojo","../Storage_version8.swf").toString();
+dojo.flash.setSwf({flash6:_434,flash8:_435,visible:false});
 },isAvailable:function(){
 if(djConfig["disableFlashStorage"]==true){
 this._available=false;
@@ -55881,37 +46454,37 @@
 this._available=true;
 }
 return this._available;
-},put:function(key,_433,_434){
+},put:function(key,_437,_438){
 if(this.isValidKey(key)==false){
 dojo.raise("Invalid key given: "+key);
 }
-this._statusHandler=_434;
-if(dojo.lang.isString(_433)){
-_433="string:"+_433;
+this._statusHandler=_438;
+if(dojo.lang.isString(_437)){
+_437="string:"+_437;
 }else{
-_433=dojo.json.serialize(_433);
+_437=dojo.json.serialize(_437);
 }
-dojo.flash.comm.put(key,_433,this.namespace);
+dojo.flash.comm.put(key,_437,this.namespace);
 },get:function(key){
 if(this.isValidKey(key)==false){
 dojo.raise("Invalid key given: "+key);
 }
-var _436=dojo.flash.comm.get(key,this.namespace);
-if(_436==""){
+var _43a=dojo.flash.comm.get(key,this.namespace);
+if(_43a==""){
 return null;
 }
-if(!dojo.lang.isUndefined(_436)&&_436!=null&&/^string:/.test(_436)){
-_436=_436.substring("string:".length);
+if(!dojo.lang.isUndefined(_43a)&&_43a!=null&&/^string:/.test(_43a)){
+_43a=_43a.substring("string:".length);
 }else{
-_436=dojo.json.evalJson(_436);
+_43a=dojo.json.evalJson(_43a);
 }
-return _436;
+return _43a;
 },getKeys:function(){
-var _437=dojo.flash.comm.getKeys(this.namespace);
-if(_437==""){
+var _43b=dojo.flash.comm.getKeys(this.namespace);
+if(_43b==""){
 return [];
 }
-return _437.split(",");
+return _43b.split(",");
 },clear:function(){
 dojo.flash.comm.clear(this.namespace);
 },remove:function(key){
@@ -55936,17 +46509,17 @@
 },_flashLoaded:function(){
 this._initialized=true;
 dojo.storage.manager.loaded();
-},_onStatus:function(_439,key){
+},_onStatus:function(_43d,key){
 var ds=dojo.storage;
 var dfo=dojo.flash.obj;
-if(_439==ds.PENDING){
+if(_43d==ds.PENDING){
 dfo.center();
 dfo.setVisible(true);
 }else{
 dfo.setVisible(false);
 }
 if((!dj_undef("_statusHandler",ds))&&(ds._statusHandler!=null)){
-ds._statusHandler.call(null,_439,key);
+ds._statusHandler.call(null,_43d,key);
 }
 }});
 dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider",new dojo.storage.browser.FileStorageProvider());
@@ -55959,6 +46532,8 @@
 
 __CPAN_EDITION__ storage build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -55992,6 +46567,7 @@
 ../src/json.js
 ../src/storage/browser.js
 ../src/storage/__package__.js
+
 __CPAN_EDITION__ widget dojo.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -56028,7 +46604,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -56824,7 +47400,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var _d0=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(_d0!="domcontentloaded"&&_d0!="load")){
 return;
@@ -57662,20 +48240,28 @@
 };
 dojo.provide("dojo.lang.func");
 dojo.lang.hitch=function(_18d,_18e){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
 var fcn=(dojo.lang.isString(_18e)?_18d[_18e]:_18e)||function(){
 };
 return function(){
-return fcn.apply(_18d,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_18d,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_190,_191,_192){
-var nso=(_191||dojo.lang.anon);
-if((_192)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_194,_195,_196){
+var nso=(_195||dojo.lang.anon);
+if((_196)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_190){
+if(nso[x]===_194){
 return x;
 }
 }
@@ -57687,50 +48273,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_190;
+nso[ret]=_194;
 return ret;
 };
-dojo.lang.forward=function(_196){
+dojo.lang.forward=function(_19a){
 return function(){
-return this[_196].apply(this,arguments);
+return this[_19a].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_197,func){
-var _199=[];
-_197=_197||dj_global;
+dojo.lang.curry=function(_19b,func){
+var _19d=[];
+_19b=_19b||dj_global;
 if(dojo.lang.isString(func)){
-func=_197[func];
+func=_19b[func];
 }
 for(var x=2;x<arguments.length;x++){
-_199.push(arguments[x]);
+_19d.push(arguments[x]);
 }
-var _19b=(func["__preJoinArity"]||func.length)-_199.length;
-function gather(_19c,_19d,_19e){
-var _19f=_19e;
-var _1a0=_19d.slice(0);
-for(var x=0;x<_19c.length;x++){
-_1a0.push(_19c[x]);
+var _19f=(func["__preJoinArity"]||func.length)-_19d.length;
+function gather(_1a0,_1a1,_1a2){
+var _1a3=_1a2;
+var _1a4=_1a1.slice(0);
+for(var x=0;x<_1a0.length;x++){
+_1a4.push(_1a0[x]);
 }
-_19e=_19e-_19c.length;
-if(_19e<=0){
-var res=func.apply(_197,_1a0);
-_19e=_19f;
+_1a2=_1a2-_1a0.length;
+if(_1a2<=0){
+var res=func.apply(_19b,_1a4);
+_1a2=_1a3;
 return res;
 }else{
 return function(){
-return gather(arguments,_1a0,_19e);
+return gather(arguments,_1a4,_1a2);
 };
 }
 }
-return gather([],_199,_19b);
+return gather([],_19d,_19f);
 };
-dojo.lang.curryArguments=function(_1a3,func,args,_1a6){
-var _1a7=[];
-var x=_1a6||0;
-for(x=_1a6;x<args.length;x++){
-_1a7.push(args[x]);
+dojo.lang.curryArguments=function(_1a7,func,args,_1aa){
+var _1ab=[];
+var x=_1aa||0;
+for(x=_1aa;x<args.length;x++){
+_1ab.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_1a3,func].concat(_1a7));
+return dojo.lang.curry.apply(dojo.lang,[_1a7,func].concat(_1ab));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -57747,31 +48333,31 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_1ad,_1ae){
+dojo.lang.delayThese=function(farr,cb,_1b1,_1b2){
 if(!farr.length){
-if(typeof _1ae=="function"){
-_1ae();
+if(typeof _1b2=="function"){
+_1b2();
 }
 return;
 }
-if((typeof _1ad=="undefined")&&(typeof cb=="number")){
-_1ad=cb;
+if((typeof _1b1=="undefined")&&(typeof cb=="number")){
+_1b1=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_1ad){
-_1ad=0;
+if(!_1b1){
+_1b1=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_1ad,_1ae);
-},_1ad);
+dojo.lang.delayThese(farr,cb,_1b1,_1b2);
+},_1b1);
 };
 dojo.provide("dojo.lang.array");
 dojo.lang.mixin(dojo.lang,{has:function(obj,name){
@@ -57784,138 +48370,138 @@
 },isEmpty:function(obj){
 if(dojo.lang.isObject(obj)){
 var tmp={};
-var _1b3=0;
+var _1b7=0;
 for(var x in obj){
 if(obj[x]&&(!tmp[x])){
-_1b3++;
+_1b7++;
 break;
 }
 }
-return _1b3==0;
+return _1b7==0;
 }else{
 if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
 return obj.length==0;
 }
 }
-},map:function(arr,obj,_1b7){
-var _1b8=dojo.lang.isString(arr);
-if(_1b8){
+},map:function(arr,obj,_1bb){
+var _1bc=dojo.lang.isString(arr);
+if(_1bc){
 arr=arr.split("");
 }
-if(dojo.lang.isFunction(obj)&&(!_1b7)){
-_1b7=obj;
+if(dojo.lang.isFunction(obj)&&(!_1bb)){
+_1bb=obj;
 obj=dj_global;
 }else{
-if(dojo.lang.isFunction(obj)&&_1b7){
-var _1b9=obj;
-obj=_1b7;
-_1b7=_1b9;
+if(dojo.lang.isFunction(obj)&&_1bb){
+var _1bd=obj;
+obj=_1bb;
+_1bb=_1bd;
 }
 }
 if(Array.map){
-var _1ba=Array.map(arr,_1b7,obj);
+var _1be=Array.map(arr,_1bb,obj);
 }else{
-var _1ba=[];
+var _1be=[];
 for(var i=0;i<arr.length;++i){
-_1ba.push(_1b7.call(obj,arr[i]));
+_1be.push(_1bb.call(obj,arr[i]));
 }
 }
-if(_1b8){
-return _1ba.join("");
+if(_1bc){
+return _1be.join("");
 }else{
-return _1ba;
+return _1be;
 }
-},reduce:function(arr,_1bd,obj,_1bf){
-var _1c0=_1bd;
+},reduce:function(arr,_1c1,obj,_1c3){
+var _1c4=_1c1;
 if(arguments.length==2){
-_1bf=_1bd;
-_1c0=arr[0];
+_1c3=_1c1;
+_1c4=arr[0];
 arr=arr.slice(1);
 }else{
 if(arguments.length==3){
 if(dojo.lang.isFunction(obj)){
-_1bf=obj;
+_1c3=obj;
 obj=null;
 }
 }else{
 if(dojo.lang.isFunction(obj)){
-var tmp=_1bf;
-_1bf=obj;
+var tmp=_1c3;
+_1c3=obj;
 obj=tmp;
 }
 }
 }
 var ob=obj||dj_global;
 dojo.lang.map(arr,function(val){
-_1c0=_1bf.call(ob,_1c0,val);
+_1c4=_1c3.call(ob,_1c4,val);
 });
-return _1c0;
-},forEach:function(_1c4,_1c5,_1c6){
-if(dojo.lang.isString(_1c4)){
-_1c4=_1c4.split("");
+return _1c4;
+},forEach:function(_1c8,_1c9,_1ca){
+if(dojo.lang.isString(_1c8)){
+_1c8=_1c8.split("");
 }
 if(Array.forEach){
-Array.forEach(_1c4,_1c5,_1c6);
+Array.forEach(_1c8,_1c9,_1ca);
 }else{
-if(!_1c6){
-_1c6=dj_global;
+if(!_1ca){
+_1ca=dj_global;
 }
-for(var i=0,l=_1c4.length;i<l;i++){
-_1c5.call(_1c6,_1c4[i],i,_1c4);
+for(var i=0,l=_1c8.length;i<l;i++){
+_1c9.call(_1ca,_1c8[i],i,_1c8);
 }
 }
-},_everyOrSome:function(_1c9,arr,_1cb,_1cc){
+},_everyOrSome:function(_1cd,arr,_1cf,_1d0){
 if(dojo.lang.isString(arr)){
 arr=arr.split("");
 }
 if(Array.every){
-return Array[_1c9?"every":"some"](arr,_1cb,_1cc);
+return Array[_1cd?"every":"some"](arr,_1cf,_1d0);
 }else{
-if(!_1cc){
-_1cc=dj_global;
+if(!_1d0){
+_1d0=dj_global;
 }
 for(var i=0,l=arr.length;i<l;i++){
-var _1cf=_1cb.call(_1cc,arr[i],i,arr);
-if(_1c9&&!_1cf){
+var _1d3=_1cf.call(_1d0,arr[i],i,arr);
+if(_1cd&&!_1d3){
 return false;
 }else{
-if((!_1c9)&&(_1cf)){
+if((!_1cd)&&(_1d3)){
 return true;
 }
 }
 }
-return Boolean(_1c9);
+return Boolean(_1cd);
 }
-},every:function(arr,_1d1,_1d2){
-return this._everyOrSome(true,arr,_1d1,_1d2);
-},some:function(arr,_1d4,_1d5){
-return this._everyOrSome(false,arr,_1d4,_1d5);
-},filter:function(arr,_1d7,_1d8){
-var _1d9=dojo.lang.isString(arr);
-if(_1d9){
+},every:function(arr,_1d5,_1d6){
+return this._everyOrSome(true,arr,_1d5,_1d6);
+},some:function(arr,_1d8,_1d9){
+return this._everyOrSome(false,arr,_1d8,_1d9);
+},filter:function(arr,_1db,_1dc){
+var _1dd=dojo.lang.isString(arr);
+if(_1dd){
 arr=arr.split("");
 }
-var _1da;
+var _1de;
 if(Array.filter){
-_1da=Array.filter(arr,_1d7,_1d8);
+_1de=Array.filter(arr,_1db,_1dc);
 }else{
-if(!_1d8){
+if(!_1dc){
 if(arguments.length>=3){
 dojo.raise("thisObject doesn't exist!");
 }
-_1d8=dj_global;
+_1dc=dj_global;
 }
-_1da=[];
+_1de=[];
 for(var i=0;i<arr.length;i++){
-if(_1d7.call(_1d8,arr[i],i,arr)){
-_1da.push(arr[i]);
+if(_1db.call(_1dc,arr[i],i,arr)){
+_1de.push(arr[i]);
 }
 }
 }
-if(_1d9){
-return _1da.join("");
+if(_1dd){
+return _1de.join("");
 }else{
-return _1da;
+return _1de;
 }
 },unnest:function(){
 var out=[];
@@ -57928,35 +48514,35 @@
 }
 }
 return out;
-},toArray:function(_1df,_1e0){
-var _1e1=[];
-for(var i=_1e0||0;i<_1df.length;i++){
-_1e1.push(_1df[i]);
+},toArray:function(_1e3,_1e4){
+var _1e5=[];
+for(var i=_1e4||0;i<_1e3.length;i++){
+_1e5.push(_1e3[i]);
 }
-return _1e1;
+return _1e5;
 }});
 dojo.provide("dojo.lang.extras");
-dojo.lang.setTimeout=function(func,_1e4){
-var _1e5=window,_1e6=2;
+dojo.lang.setTimeout=function(func,_1e8){
+var _1e9=window,_1ea=2;
 if(!dojo.lang.isFunction(func)){
-_1e5=func;
-func=_1e4;
-_1e4=arguments[2];
-_1e6++;
+_1e9=func;
+func=_1e8;
+_1e8=arguments[2];
+_1ea++;
 }
 if(dojo.lang.isString(func)){
-func=_1e5[func];
+func=_1e9[func];
 }
 var args=[];
-for(var i=_1e6;i<arguments.length;i++){
+for(var i=_1ea;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 return dojo.global().setTimeout(function(){
-func.apply(_1e5,args);
-},_1e4);
+func.apply(_1e9,args);
+},_1e8);
 };
-dojo.lang.clearTimeout=function(_1e9){
-dojo.global().clearTimeout(_1e9);
+dojo.lang.clearTimeout=function(_1ed){
+dojo.global().clearTimeout(_1ed);
 };
 dojo.lang.getNameInObj=function(ns,item){
 if(!ns){
@@ -58001,65 +48587,65 @@
 }
 return undefined;
 };
-dojo.lang.getObjPathValue=function(_1f2,_1f3,_1f4){
-with(dojo.parseObjPath(_1f2,_1f3,_1f4)){
-return dojo.evalProp(prop,obj,_1f4);
+dojo.lang.getObjPathValue=function(_1f6,_1f7,_1f8){
+with(dojo.parseObjPath(_1f6,_1f7,_1f8)){
+return dojo.evalProp(prop,obj,_1f8);
 }
 };
-dojo.lang.setObjPathValue=function(_1f5,_1f6,_1f7,_1f8){
+dojo.lang.setObjPathValue=function(_1f9,_1fa,_1fb,_1fc){
 dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and the '=' operator","0.6");
 if(arguments.length<4){
-_1f8=true;
+_1fc=true;
 }
-with(dojo.parseObjPath(_1f5,_1f7,_1f8)){
-if(obj&&(_1f8||(prop in obj))){
-obj[prop]=_1f6;
+with(dojo.parseObjPath(_1f9,_1fb,_1fc)){
+if(obj&&(_1fc||(prop in obj))){
+obj[prop]=_1fa;
 }
 }
 };
 dojo.provide("dojo.lang.declare");
-dojo.lang.declare=function(_1f9,_1fa,init,_1fc){
-if((dojo.lang.isFunction(_1fc))||((!_1fc)&&(!dojo.lang.isFunction(init)))){
-var temp=_1fc;
-_1fc=init;
+dojo.lang.declare=function(_1fd,_1fe,init,_200){
+if((dojo.lang.isFunction(_200))||((!_200)&&(!dojo.lang.isFunction(init)))){
+var temp=_200;
+_200=init;
 init=temp;
 }
-var _1fe=[];
-if(dojo.lang.isArray(_1fa)){
-_1fe=_1fa;
-_1fa=_1fe.shift();
+var _202=[];
+if(dojo.lang.isArray(_1fe)){
+_202=_1fe;
+_1fe=_202.shift();
 }
 if(!init){
-init=dojo.evalObjPath(_1f9,false);
+init=dojo.evalObjPath(_1fd,false);
 if((init)&&(!dojo.lang.isFunction(init))){
 init=null;
 }
 }
 var ctor=dojo.lang.declare._makeConstructor();
-var scp=(_1fa?_1fa.prototype:null);
+var scp=(_1fe?_1fe.prototype:null);
 if(scp){
 scp.prototyping=true;
-ctor.prototype=new _1fa();
+ctor.prototype=new _1fe();
 scp.prototyping=false;
 }
 ctor.superclass=scp;
-ctor.mixins=_1fe;
-for(var i=0,l=_1fe.length;i<l;i++){
-dojo.lang.extend(ctor,_1fe[i].prototype);
+ctor.mixins=_202;
+for(var i=0,l=_202.length;i<l;i++){
+dojo.lang.extend(ctor,_202[i].prototype);
 }
 ctor.prototype.initializer=null;
-ctor.prototype.declaredClass=_1f9;
-if(dojo.lang.isArray(_1fc)){
-dojo.lang.extend.apply(dojo.lang,[ctor].concat(_1fc));
+ctor.prototype.declaredClass=_1fd;
+if(dojo.lang.isArray(_200)){
+dojo.lang.extend.apply(dojo.lang,[ctor].concat(_200));
 }else{
-dojo.lang.extend(ctor,(_1fc)||{});
+dojo.lang.extend(ctor,(_200)||{});
 }
 dojo.lang.extend(ctor,dojo.lang.declare._common);
 ctor.prototype.constructor=ctor;
 ctor.prototype.initializer=(ctor.prototype.initializer)||(init)||(function(){
 });
-var _203=dojo.parseObjPath(_1f9,null,true);
-_203.obj[_203.prop]=ctor;
+var _207=dojo.parseObjPath(_1fd,null,true);
+_207.obj[_207.prop]=ctor;
 return ctor;
 };
 dojo.lang.declare._makeConstructor=function(){
@@ -58084,19 +48670,19 @@
 };
 dojo.lang.declare._common={_getPropContext:function(){
 return (this.___proto||this);
-},_contextMethod:function(_209,_20a,args){
-var _20c,_20d=this.___proto;
-this.___proto=_209;
+},_contextMethod:function(_20d,_20e,args){
+var _210,_211=this.___proto;
+this.___proto=_20d;
 try{
-_20c=_209[_20a].apply(this,(args||[]));
+_210=_20d[_20e].apply(this,(args||[]));
 }
 catch(e){
 throw e;
 }
 finally{
-this.___proto=_20d;
+this.___proto=_211;
 }
-return _20c;
+return _210;
 },_inherited:function(prop,args){
 var p=this._getPropContext();
 do{
@@ -58112,9 +48698,9 @@
 }};
 dojo.declare=dojo.lang.declare;
 dojo.provide("dojo.ns");
-dojo.ns={namespaces:{},failed:{},loading:{},loaded:{},register:function(name,_214,_215,_216){
-if(!_216||!this.namespaces[name]){
-this.namespaces[name]=new dojo.ns.Ns(name,_214,_215);
+dojo.ns={namespaces:{},failed:{},loading:{},loaded:{},register:function(name,_218,_219,_21a){
+if(!_21a||!this.namespaces[name]){
+this.namespaces[name]=new dojo.ns.Ns(name,_218,_219);
 }
 },allow:function(name){
 if(this.failed[name]){
@@ -58158,50 +48744,50 @@
 }
 return this.namespaces[name];
 }};
-dojo.ns.Ns=function(name,_21d,_21e){
+dojo.ns.Ns=function(name,_221,_222){
 this.name=name;
-this.module=_21d;
-this.resolver=_21e;
+this.module=_221;
+this.resolver=_222;
 this._loaded=[];
 this._failed=[];
 };
-dojo.ns.Ns.prototype.resolve=function(name,_220,_221){
+dojo.ns.Ns.prototype.resolve=function(name,_224,_225){
 if(!this.resolver||djConfig["skipAutoRequire"]){
 return false;
 }
-var _222=this.resolver(name,_220);
-if((_222)&&(!this._loaded[_222])&&(!this._failed[_222])){
+var _226=this.resolver(name,_224);
+if((_226)&&(!this._loaded[_226])&&(!this._failed[_226])){
 var req=dojo.require;
-req(_222,false,true);
-if(dojo.hostenv.findModule(_222,false)){
-this._loaded[_222]=true;
+req(_226,false,true);
+if(dojo.hostenv.findModule(_226,false)){
+this._loaded[_226]=true;
 }else{
-if(!_221){
-dojo.raise("dojo.ns.Ns.resolve: module '"+_222+"' not found after loading via namespace '"+this.name+"'");
+if(!_225){
+dojo.raise("dojo.ns.Ns.resolve: module '"+_226+"' not found after loading via namespace '"+this.name+"'");
 }
-this._failed[_222]=true;
+this._failed[_226]=true;
 }
 }
-return Boolean(this._loaded[_222]);
+return Boolean(this._loaded[_226]);
 };
-dojo.registerNamespace=function(name,_225,_226){
+dojo.registerNamespace=function(name,_229,_22a){
 dojo.ns.register.apply(dojo.ns,arguments);
 };
-dojo.registerNamespaceResolver=function(name,_228){
+dojo.registerNamespaceResolver=function(name,_22c){
 var n=dojo.ns.namespaces[name];
 if(n){
-n.resolver=_228;
+n.resolver=_22c;
 }
 };
-dojo.registerNamespaceManifest=function(_22a,path,name,_22d,_22e){
+dojo.registerNamespaceManifest=function(_22e,path,name,_231,_232){
 dojo.registerModulePath(name,path);
-dojo.registerNamespace(name,_22d,_22e);
+dojo.registerNamespace(name,_231,_232);
 };
 dojo.registerNamespace("dojo","dojo.widget");
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_230){
+function interpolateArgs(args,_234){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -58228,14 +48814,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _233=dl.nameAnonFunc(args[2],ao.adviceObj,_230);
-ao.adviceFunc=_233;
+var _237=dl.nameAnonFunc(args[2],ao.adviceObj,_234);
+ao.adviceFunc=_237;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _233=dl.nameAnonFunc(args[0],ao.srcObj,_230);
-ao.srcFunc=_233;
+var _237=dl.nameAnonFunc(args[0],ao.srcObj,_234);
+ao.srcFunc=_237;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -58261,17 +48847,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _233=dl.nameAnonFunc(args[1],dj_global,_230);
-ao.srcFunc=_233;
+var _237=dl.nameAnonFunc(args[1],dj_global,_234);
+ao.srcFunc=_237;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _233=dl.nameAnonFunc(args[3],dj_global,_230);
+var _237=dl.nameAnonFunc(args[3],dj_global,_234);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_233;
+ao.adviceFunc=_237;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -58319,8 +48905,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _233=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_230);
-ao.aroundFunc=_233;
+var _237=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_234);
+ao.aroundFunc=_237;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -58349,18 +48935,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _235={};
+var _239={};
 for(var x in ao){
-_235[x]=ao[x];
+_239[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_235.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_235));
+_239.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_239));
 });
 return mjps;
 }
@@ -58372,20 +48965,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _23d;
+var _241;
 if((arguments.length==1)&&(typeof a1=="object")){
-_23d=a1;
+_241=a1;
 }else{
-_23d={srcObj:a1,srcFunc:a2};
+_241={srcObj:a1,srcFunc:a2};
 }
-_23d.adviceFunc=function(){
-var _23e=[];
+_241.adviceFunc=function(){
+var _242=[];
 for(var x=0;x<arguments.length;x++){
-_23e.push(arguments[x]);
+_242.push(arguments[x]);
 }
-dojo.debug("("+_23d.srcObj+")."+_23d.srcFunc,":",_23e.join(", "));
+dojo.debug("("+_241.srcObj+")."+_241.srcFunc,":",_242.join(", "));
 };
-this.kwConnect(_23d);
+this.kwConnect(_241);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -58411,25 +49004,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_246,_247){
-var fn=(_247)?"disconnect":"connect";
-if(typeof _246["srcFunc"]=="function"){
-_246.srcObj=_246["srcObj"]||dj_global;
-var _249=dojo.lang.nameAnonFunc(_246.srcFunc,_246.srcObj,true);
-_246.srcFunc=_249;
+this._kwConnectImpl=function(_24a,_24b){
+var fn=(_24b)?"disconnect":"connect";
+if(typeof _24a["srcFunc"]=="function"){
+_24a.srcObj=_24a["srcObj"]||dj_global;
+var _24d=dojo.lang.nameAnonFunc(_24a.srcFunc,_24a.srcObj,true);
+_24a.srcFunc=_24d;
 }
-if(typeof _246["adviceFunc"]=="function"){
-_246.adviceObj=_246["adviceObj"]||dj_global;
-var _249=dojo.lang.nameAnonFunc(_246.adviceFunc,_246.adviceObj,true);
-_246.adviceFunc=_249;
+if(typeof _24a["adviceFunc"]=="function"){
+_24a.adviceObj=_24a["adviceObj"]||dj_global;
+var _24d=dojo.lang.nameAnonFunc(_24a.adviceFunc,_24a.adviceObj,true);
+_24a.adviceFunc=_24d;
 }
-_246.srcObj=_246["srcObj"]||dj_global;
-_246.adviceObj=_246["adviceObj"]||_246["targetObj"]||dj_global;
-_246.adviceFunc=_246["adviceFunc"]||_246["targetFunc"];
-return dojo.event[fn](_246);
+_24a.srcObj=_24a["srcObj"]||dj_global;
+_24a.adviceObj=_24a["adviceObj"]||_24a["targetObj"]||dj_global;
+_24a.adviceFunc=_24a["adviceFunc"]||_24a["targetFunc"];
+return dojo.event[fn](_24a);
 };
-this.kwConnect=function(_24a){
-return this._kwConnectImpl(_24a,false);
+this.kwConnect=function(_24e){
+return this._kwConnectImpl(_24e,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -58454,12 +49047,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_24d){
-return this._kwConnectImpl(_24d,true);
+this.kwDisconnect=function(_251){
+return this._kwConnectImpl(_251,true);
 };
 };
-dojo.event.MethodInvocation=function(_24e,obj,args){
-this.jp_=_24e;
+dojo.event.MethodInvocation=function(_252,obj,args){
+this.jp_=_252;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -58478,48 +49071,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_256){
+dojo.event.MethodJoinPoint=function(obj,_25a){
 this.object=obj||dj_global;
-this.methodname=_256;
-this.methodfunc=this.object[_256];
+this.methodname=_25a;
+this.methodfunc=this.object[_25a];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_258){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_25c){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_258];
+var ofn=obj[_25c];
 if(!ofn){
-ofn=obj[_258]=function(){
+ofn=obj[_25c]=function(){
 };
-if(!obj[_258]){
-dojo.raise("Cannot set do-nothing method on that object "+_258);
+if(!obj[_25c]){
+dojo.raise("Cannot set do-nothing method on that object "+_25c);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _25a=_258+"$joinpoint";
-var _25b=_258+"$joinpoint$method";
-var _25c=obj[_25a];
-if(!_25c){
-var _25d=false;
+var _25e=_25c+"$joinpoint";
+var _25f=_25c+"$joinpoint$method";
+var _260=obj[_25e];
+if(!_260){
+var _261=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_25d=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_25a,_25b,_258]);
+_261=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_25e,_25f,_25c]);
 }
 }
-var _25e=ofn.length;
-obj[_25b]=ofn;
-_25c=obj[_25a]=new dojo.event.MethodJoinPoint(obj,_25b);
-if(!_25d){
-obj[_258]=function(){
-return _25c.run.apply(_25c,arguments);
+var _262=ofn.length;
+obj[_25f]=ofn;
+_260=obj[_25e]=new dojo.event.MethodJoinPoint(obj,_25f);
+if(!_261){
+obj[_25c]=function(){
+return _260.run.apply(_260,arguments);
 };
 }else{
-obj[_258]=function(){
+obj[_25c]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -58553,12 +49146,12 @@
 }
 }
 }
-return _25c.run.apply(_25c,args);
+return _260.run.apply(_260,args);
 };
 }
-obj[_258].__preJoinArity=_25e;
+obj[_25c].__preJoinArity=_262;
 }
-return _25c;
+return _260;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -58568,41 +49161,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _264=[];
+var _268=[];
 for(var x=0;x<args.length;x++){
-_264[x]=args[x];
+_268[x]=args[x];
 }
-var _266=function(marr){
+var _26a=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _268=marr[0]||dj_global;
-var _269=marr[1];
-if(!_268[_269]){
-dojo.raise("function \""+_269+"\" does not exist on \""+_268+"\"");
+var _26c=marr[0]||dj_global;
+var _26d=marr[1];
+if(!_26c[_26d]){
+dojo.raise("function \""+_26d+"\" does not exist on \""+_26c+"\"");
 }
-var _26a=marr[2]||dj_global;
-var _26b=marr[3];
+var _26e=marr[2]||dj_global;
+var _26f=marr[3];
 var msg=marr[6];
-var _26d=marr[7];
-if(_26d>-1){
-if(_26d==0){
+var _271=marr[7];
+if(_271>-1){
+if(_271==0){
 return;
 }
 marr[7]--;
 }
-var _26e;
+var _272;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _268[_269].apply(_268,to.args);
+return _26c[_26d].apply(_26c,to.args);
 }};
-to.args=_264;
-var _270=parseInt(marr[4]);
-var _271=((!isNaN(_270))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_268;
+var _274=parseInt(marr[4]);
+var _275=((!isNaN(_274))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _274=false;
+var _278=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -58612,7 +49205,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_266(mcpy);
+_26a(mcpy);
 },tod);
 }
 return;
@@ -58620,49 +49213,49 @@
 marr.last=cur;
 }
 }
-if(_26b){
-_26a[_26b].call(_26a,to);
+if(_26f){
+_26e[_26f].call(_26e,to);
 }else{
-if((_271)&&((dojo.render.html)||(dojo.render.svg))){
+if((_275)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_268[_269].call(_268,to);
+_26c[_26d].call(_26c,to);
 }else{
-_268[_269].apply(_268,args);
+_26c[_26d].apply(_26c,args);
 }
-},_270);
+},_274);
 }else{
 if(msg){
-_268[_269].call(_268,to);
+_26c[_26d].call(_26c,to);
 }else{
-_268[_269].apply(_268,args);
+_26c[_26d].apply(_26c,args);
 }
 }
 }
 };
-var _277=function(){
+var _27b=function(){
 if(this.squelch){
 try{
-return _266.apply(this,arguments);
+return _26a.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _266.apply(this,arguments);
+return _26a.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_277);
+dojo.lang.forEach(this.before.concat(new Array()),_27b);
 }
-var _278;
+var _27c;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_278=mi.proceed();
+_27c=mi.proceed();
 }else{
 if(this.methodfunc){
-_278=this.object[this.methodname].apply(this.object,args);
+_27c=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -58673,9 +49266,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_277);
+dojo.lang.forEach(this.after.concat(new Array()),_27b);
 }
-return (this.methodfunc)?_278:null;
+return (this.methodfunc)?_27c:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -58691,38 +49284,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_27d,_27e,_27f,_280,_281,_282,once,_284,rate,_286,_287){
-var arr=this.getArr(_281);
+},addAdvice:function(_281,_282,_283,_284,_285,_286,once,_288,rate,_28a,_28b){
+var arr=this.getArr(_285);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_27d,_27e,_27f,_280,_284,rate,_286,_287];
+var ao=[_281,_282,_283,_284,_288,rate,_28a,_28b];
 if(once){
-if(this.hasAdvice(_27d,_27e,_281,arr)>=0){
+if(this.hasAdvice(_281,_282,_285,arr)>=0){
 return;
 }
 }
-if(_282=="first"){
+if(_286=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_28a,_28b,_28c,arr){
+},hasAdvice:function(_28e,_28f,_290,arr){
 if(!arr){
-arr=this.getArr(_28c);
+arr=this.getArr(_290);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _28b=="object")?(new String(_28b)).toString():_28b;
+var aao=(typeof _28f=="object")?(new String(_28f)).toString():_28f;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_28a)&&(a1o==aao)){
+if((arr[x][0]==_28e)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_292,_293,_294,once){
-var arr=this.getArr(_294);
-var ind=this.hasAdvice(_292,_293,_294,arr);
+},removeAdvice:function(_296,_297,_298,once){
+var arr=this.getArr(_298);
+var ind=this.hasAdvice(_296,_297,_298,arr);
 if(ind==-1){
 return false;
 }
@@ -58731,73 +49324,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_292,_293,_294,arr);
+ind=this.hasAdvice(_296,_297,_298,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_298){
-if(!this.topics[_298]){
-this.topics[_298]=new this.TopicImpl(_298);
+this.getTopic=function(_29c){
+if(!this.topics[_29c]){
+this.topics[_29c]=new this.TopicImpl(_29c);
 }
-return this.topics[_298];
+return this.topics[_29c];
 };
-this.registerPublisher=function(_299,obj,_29b){
-var _299=this.getTopic(_299);
-_299.registerPublisher(obj,_29b);
+this.registerPublisher=function(_29d,obj,_29f){
+var _29d=this.getTopic(_29d);
+_29d.registerPublisher(obj,_29f);
 };
-this.subscribe=function(_29c,obj,_29e){
-var _29c=this.getTopic(_29c);
-_29c.subscribe(obj,_29e);
+this.subscribe=function(_2a0,obj,_2a2){
+var _2a0=this.getTopic(_2a0);
+_2a0.subscribe(obj,_2a2);
 };
-this.unsubscribe=function(_29f,obj,_2a1){
-var _29f=this.getTopic(_29f);
-_29f.unsubscribe(obj,_2a1);
+this.unsubscribe=function(_2a3,obj,_2a5){
+var _2a3=this.getTopic(_2a3);
+_2a3.unsubscribe(obj,_2a5);
 };
-this.destroy=function(_2a2){
-this.getTopic(_2a2).destroy();
-delete this.topics[_2a2];
+this.destroy=function(_2a6){
+this.getTopic(_2a6).destroy();
+delete this.topics[_2a6];
 };
-this.publishApply=function(_2a3,args){
-var _2a3=this.getTopic(_2a3);
-_2a3.sendMessage.apply(_2a3,args);
+this.publishApply=function(_2a7,args){
+var _2a7=this.getTopic(_2a7);
+_2a7.sendMessage.apply(_2a7,args);
 };
-this.publish=function(_2a5,_2a6){
-var _2a5=this.getTopic(_2a5);
+this.publish=function(_2a9,_2aa){
+var _2a9=this.getTopic(_2a9);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_2a5.sendMessage.apply(_2a5,args);
+_2a9.sendMessage.apply(_2a9,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_2a9){
-this.topicName=_2a9;
-this.subscribe=function(_2aa,_2ab){
-var tf=_2ab||_2aa;
-var to=(!_2ab)?dj_global:_2aa;
+dojo.event.topic.TopicImpl=function(_2ad){
+this.topicName=_2ad;
+this.subscribe=function(_2ae,_2af){
+var tf=_2af||_2ae;
+var to=(!_2af)?dj_global:_2ae;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_2ae,_2af){
-var tf=(!_2af)?_2ae:_2af;
-var to=(!_2af)?null:_2ae;
+this.unsubscribe=function(_2b2,_2b3){
+var tf=(!_2b3)?_2b2:_2b3;
+var to=(!_2b3)?null:_2b2;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_2b2){
-this._getJoinPoint().squelch=_2b2;
+this.setSquelch=function(_2b6){
+this._getJoinPoint().squelch=_2b6;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_2b3,_2b4){
-dojo.event.connect(_2b3,_2b4,this,"sendMessage");
+this.registerPublisher=function(_2b7,_2b8){
+dojo.event.connect(_2b7,_2b8,this,"sendMessage");
 };
-this.sendMessage=function(_2b5){
+this.sendMessage=function(_2b9){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -58820,12 +49413,12 @@
 catch(e){
 }
 }
-this.clobber=function(_2b8){
+this.clobber=function(_2bc){
 var na;
 var tna;
-if(_2b8){
-tna=_2b8.all||_2b8.getElementsByTagName("*");
-na=[_2b8];
+if(_2bc){
+tna=_2bc.all||_2bc.getElementsByTagName("*");
+na=[_2bc];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -58840,7 +49433,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _2bc={};
+var _2c0={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -58891,9 +49484,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _2c1=0;
-this.normalizedEventName=function(_2c2){
-switch(_2c2){
+var _2c5=0;
+this.normalizedEventName=function(_2c6){
+switch(_2c6){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -58902,10 +49495,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _2c2;
+return _2c6;
 break;
 default:
-var lcn=_2c2.toLowerCase();
+var lcn=_2c6.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -58925,88 +49518,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_2c7){
+this.addClobberNodeAttrs=function(node,_2cb){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_2c7.length;x++){
-node.__clobberAttrs__.push(_2c7[x]);
+for(var x=0;x<_2cb.length;x++){
+node.__clobberAttrs__.push(_2cb[x]);
 }
 };
-this.removeListener=function(node,_2ca,fp,_2cc){
-if(!_2cc){
-var _2cc=false;
+this.removeListener=function(node,_2ce,fp,_2d0){
+if(!_2d0){
+var _2d0=false;
 }
-_2ca=dojo.event.browser.normalizedEventName(_2ca);
-if(_2ca=="key"){
+_2ce=dojo.event.browser.normalizedEventName(_2ce);
+if(_2ce=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_2cc);
+this.removeListener(node,"onkeydown",fp,_2d0);
 }
-_2ca="keypress";
+_2ce="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_2ca,fp,_2cc);
+node.removeEventListener(_2ce,fp,_2d0);
 }
 };
-this.addListener=function(node,_2ce,fp,_2d0,_2d1){
+this.addListener=function(node,_2d2,fp,_2d4,_2d5){
 if(!node){
 return;
 }
-if(!_2d0){
-var _2d0=false;
+if(!_2d4){
+var _2d4=false;
 }
-_2ce=dojo.event.browser.normalizedEventName(_2ce);
-if(_2ce=="key"){
+_2d2=dojo.event.browser.normalizedEventName(_2d2);
+if(_2d2=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_2d0,_2d1);
+this.addListener(node,"onkeydown",fp,_2d4,_2d5);
 }
-_2ce="keypress";
+_2d2="keypress";
 }
-if(!_2d1){
-var _2d2=function(evt){
+if(!_2d5){
+var _2d6=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_2d0){
+if(_2d4){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_2d2=fp;
+_2d6=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_2ce,_2d2,_2d0);
-return _2d2;
+node.addEventListener(_2d2,_2d6,_2d4);
+return _2d6;
 }else{
-_2ce="on"+_2ce;
-if(typeof node[_2ce]=="function"){
-var _2d5=node[_2ce];
-node[_2ce]=function(e){
-_2d5(e);
-return _2d2(e);
+_2d2="on"+_2d2;
+if(typeof node[_2d2]=="function"){
+var _2d9=node[_2d2];
+node[_2d2]=function(e){
+_2d9(e);
+return _2d6(e);
 };
 }else{
-node[_2ce]=_2d2;
+node[_2d2]=_2d6;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_2ce]);
+this.addClobberNodeAttrs(node,[_2d2]);
 }
-return _2d2;
+return _2d6;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_2d8,_2d9){
-if(typeof _2d8!="function"){
-dojo.raise("listener not a function: "+_2d8);
+this.callListener=function(_2dc,_2dd){
+if(typeof _2dc!="function"){
+dojo.raise("listener not a function: "+_2dc);
 }
-dojo.event.browser.currentEvent.currentTarget=_2d9;
-return _2d8.call(_2d9,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_2dd;
+return _2dc.call(_2dd,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -59019,7 +49612,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_2dc){
+this.fixEvent=function(evt,_2e0){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -59096,14 +49689,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _2de=evt.keyCode;
-if(_2de>=65&&_2de<=90&&evt.shiftKey==false){
-_2de+=32;
+var _2e2=evt.keyCode;
+if(_2e2>=65&&_2e2<=90&&evt.shiftKey==false){
+_2e2+=32;
 }
-if(_2de>=1&&_2de<=26&&evt.ctrlKey){
-_2de+=96;
+if(_2e2>=1&&_2e2<=26&&evt.ctrlKey){
+_2e2+=96;
 }
-evt.key=String.fromCharCode(_2de);
+evt.key=String.fromCharCode(_2e2);
 }
 }
 }else{
@@ -59129,11 +49722,11 @@
 evt.key=evt.which;
 break;
 default:
-var _2de=evt.which;
+var _2e2=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_2de+=32;
+_2e2+=32;
 }
-evt.key=String.fromCharCode(_2de);
+evt.key=String.fromCharCode(_2e2);
 }
 }
 }
@@ -59238,7 +49831,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_2dc?_2dc:evt.srcElement);
+evt.currentTarget=(_2e0?_2e0:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -59247,12 +49840,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _2e0=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _2e4=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_2e0.scrollLeft||0);
+evt.pageX=evt.clientX+(_2e4.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_2e0.scrollTop||0);
+evt.pageY=evt.clientY+(_2e4.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -59284,35 +49877,35 @@
 this.widgets=[];
 this.widgetIds=[];
 this.topWidgets={};
-var _2e2={};
-var _2e3=[];
-this.getUniqueId=function(_2e4){
-var _2e5;
+var _2e6={};
+var _2e7=[];
+this.getUniqueId=function(_2e8){
+var _2e9;
 do{
-_2e5=_2e4+"_"+(_2e2[_2e4]!=undefined?++_2e2[_2e4]:_2e2[_2e4]=0);
-}while(this.getWidgetById(_2e5));
-return _2e5;
+_2e9=_2e8+"_"+(_2e6[_2e8]!=undefined?++_2e6[_2e8]:_2e6[_2e8]=0);
+}while(this.getWidgetById(_2e9));
+return _2e9;
 };
-this.add=function(_2e6){
-this.widgets.push(_2e6);
-if(!_2e6.extraArgs["id"]){
-_2e6.extraArgs["id"]=_2e6.extraArgs["ID"];
+this.add=function(_2ea){
+this.widgets.push(_2ea);
+if(!_2ea.extraArgs["id"]){
+_2ea.extraArgs["id"]=_2ea.extraArgs["ID"];
 }
-if(_2e6.widgetId==""){
-if(_2e6["id"]){
-_2e6.widgetId=_2e6["id"];
+if(_2ea.widgetId==""){
+if(_2ea["id"]){
+_2ea.widgetId=_2ea["id"];
 }else{
-if(_2e6.extraArgs["id"]){
-_2e6.widgetId=_2e6.extraArgs["id"];
+if(_2ea.extraArgs["id"]){
+_2ea.widgetId=_2ea.extraArgs["id"];
 }else{
-_2e6.widgetId=this.getUniqueId(_2e6.ns+"_"+_2e6.widgetType);
+_2ea.widgetId=this.getUniqueId(_2ea.ns+"_"+_2ea.widgetType);
 }
 }
 }
-if(this.widgetIds[_2e6.widgetId]){
-dojo.debug("widget ID collision on ID: "+_2e6.widgetId);
+if(this.widgetIds[_2ea.widgetId]){
+dojo.debug("widget ID collision on ID: "+_2ea.widgetId);
 }
-this.widgetIds[_2e6.widgetId]=_2e6;
+this.widgetIds[_2ea.widgetId]=_2ea;
 };
 this.destroyAll=function(){
 for(var x=this.widgets.length-1;x>=0;x--){
@@ -59324,14 +49917,14 @@
 }
 }
 };
-this.remove=function(_2e8){
-if(dojo.lang.isNumber(_2e8)){
-var tw=this.widgets[_2e8].widgetId;
+this.remove=function(_2ec){
+if(dojo.lang.isNumber(_2ec)){
+var tw=this.widgets[_2ec].widgetId;
 delete this.topWidgets[tw];
 delete this.widgetIds[tw];
-this.widgets.splice(_2e8,1);
+this.widgets.splice(_2ec,1);
 }else{
-this.removeById(_2e8);
+this.removeById(_2ec);
 }
 };
 this.removeById=function(id){
@@ -59357,31 +49950,31 @@
 };
 this.getWidgetsByType=function(type){
 var lt=type.toLowerCase();
-var _2ef=(type.indexOf(":")<0?function(x){
+var _2f3=(type.indexOf(":")<0?function(x){
 return x.widgetType.toLowerCase();
 }:function(x){
 return x.getNamespacedType();
 });
 var ret=[];
 dojo.lang.forEach(this.widgets,function(x){
-if(_2ef(x)==lt){
+if(_2f3(x)==lt){
 ret.push(x);
 }
 });
 return ret;
 };
-this.getWidgetsByFilter=function(_2f4,_2f5){
+this.getWidgetsByFilter=function(_2f8,_2f9){
 var ret=[];
 dojo.lang.every(this.widgets,function(x){
-if(_2f4(x)){
+if(_2f8(x)){
 ret.push(x);
-if(_2f5){
+if(_2f9){
 return false;
 }
 }
 return true;
 });
-return (_2f5?ret[0]:ret);
+return (_2f9?ret[0]:ret);
 };
 this.getAllWidgets=function(){
 return this.widgets.concat();
@@ -59400,99 +49993,99 @@
 this.byType=this.getWidgetsByType;
 this.byFilter=this.getWidgetsByFilter;
 this.byNode=this.getWidgetByNode;
-var _2fb={};
-var _2fc=["dojo.widget"];
-for(var i=0;i<_2fc.length;i++){
-_2fc[_2fc[i]]=true;
+var _2ff={};
+var _300=["dojo.widget"];
+for(var i=0;i<_300.length;i++){
+_300[_300[i]]=true;
 }
-this.registerWidgetPackage=function(_2fe){
-if(!_2fc[_2fe]){
-_2fc[_2fe]=true;
-_2fc.push(_2fe);
+this.registerWidgetPackage=function(_302){
+if(!_300[_302]){
+_300[_302]=true;
+_300.push(_302);
 }
 };
 this.getWidgetPackageList=function(){
-return dojo.lang.map(_2fc,function(elt){
+return dojo.lang.map(_300,function(elt){
 return (elt!==true?elt:undefined);
 });
 };
-this.getImplementation=function(_300,_301,_302,ns){
-var impl=this.getImplementationName(_300,ns);
+this.getImplementation=function(_304,_305,_306,ns){
+var impl=this.getImplementationName(_304,ns);
 if(impl){
-var ret=_301?new impl(_301):new impl();
+var ret=_305?new impl(_305):new impl();
 return ret;
 }
 };
 function buildPrefixCache(){
-for(var _306 in dojo.render){
-if(dojo.render[_306]["capable"]===true){
-var _307=dojo.render[_306].prefixes;
-for(var i=0;i<_307.length;i++){
-_2e3.push(_307[i].toLowerCase());
+for(var _30a in dojo.render){
+if(dojo.render[_30a]["capable"]===true){
+var _30b=dojo.render[_30a].prefixes;
+for(var i=0;i<_30b.length;i++){
+_2e7.push(_30b[i].toLowerCase());
 }
 }
 }
 }
-var _309=function(_30a,_30b){
-if(!_30b){
+var _30d=function(_30e,_30f){
+if(!_30f){
 return null;
 }
-for(var i=0,l=_2e3.length,_30e;i<=l;i++){
-_30e=(i<l?_30b[_2e3[i]]:_30b);
-if(!_30e){
+for(var i=0,l=_2e7.length,_312;i<=l;i++){
+_312=(i<l?_30f[_2e7[i]]:_30f);
+if(!_312){
 continue;
 }
-for(var name in _30e){
-if(name.toLowerCase()==_30a){
-return _30e[name];
+for(var name in _312){
+if(name.toLowerCase()==_30e){
+return _312[name];
 }
 }
 }
 return null;
 };
-var _310=function(_311,_312){
-var _313=dojo.evalObjPath(_312,false);
-return (_313?_309(_311,_313):null);
+var _314=function(_315,_316){
+var _317=dojo.evalObjPath(_316,false);
+return (_317?_30d(_315,_317):null);
 };
-this.getImplementationName=function(_314,ns){
-var _316=_314.toLowerCase();
+this.getImplementationName=function(_318,ns){
+var _31a=_318.toLowerCase();
 ns=ns||"dojo";
-var imps=_2fb[ns]||(_2fb[ns]={});
-var impl=imps[_316];
+var imps=_2ff[ns]||(_2ff[ns]={});
+var impl=imps[_31a];
 if(impl){
 return impl;
 }
-if(!_2e3.length){
+if(!_2e7.length){
 buildPrefixCache();
 }
-var _319=dojo.ns.get(ns);
-if(!_319){
+var _31d=dojo.ns.get(ns);
+if(!_31d){
 dojo.ns.register(ns,ns+".widget");
-_319=dojo.ns.get(ns);
+_31d=dojo.ns.get(ns);
 }
-if(_319){
-_319.resolve(_314);
+if(_31d){
+_31d.resolve(_318);
 }
-impl=_310(_316,_319.module);
+impl=_314(_31a,_31d.module);
 if(impl){
-return (imps[_316]=impl);
+return (imps[_31a]=impl);
 }
-_319=dojo.ns.require(ns);
-if((_319)&&(_319.resolver)){
-_319.resolve(_314);
-impl=_310(_316,_319.module);
+_31d=dojo.ns.require(ns);
+if((_31d)&&(_31d.resolver)){
+_31d.resolve(_318);
+impl=_314(_31a,_31d.module);
 if(impl){
-return (imps[_316]=impl);
+return (imps[_31a]=impl);
 }
 }
-dojo.deprecated("dojo.widget.Manager.getImplementationName","Could not locate widget implementation for \""+_314+"\" in \""+_319.module+"\" registered to namespace \""+_319.name+"\". "+"Developers must specify correct namespaces for all non-Dojo widgets","0.5");
-for(var i=0;i<_2fc.length;i++){
-impl=_310(_316,_2fc[i]);
+dojo.deprecated("dojo.widget.Manager.getImplementationName","Could not locate widget implementation for \""+_318+"\" in \""+_31d.module+"\" registered to namespace \""+_31d.name+"\". "+"Developers must specify correct namespaces for all non-Dojo widgets","0.5");
+for(var i=0;i<_300.length;i++){
+impl=_314(_31a,_300[i]);
 if(impl){
-return (imps[_316]=impl);
+return (imps[_31a]=impl);
 }
 }
-throw new Error("Could not locate widget implementation for \""+_314+"\" in \""+_319.module+"\" registered to namespace \""+_319.name+"\"");
+throw new Error("Could not locate widget implementation for \""+_318+"\" in \""+_31d.module+"\" registered to namespace \""+_31d.name+"\"");
 };
 this.resizing=false;
 this.onWindowResized=function(){
@@ -59502,9 +50095,9 @@
 try{
 this.resizing=true;
 for(var id in this.topWidgets){
-var _31c=this.topWidgets[id];
-if(_31c.checkSize){
-_31c.checkSize();
+var _320=this.topWidgets[id];
+if(_320.checkSize){
+_320.checkSize();
 }
 }
 }
@@ -59523,8 +50116,8 @@
 var dw=dojo.widget;
 var dwm=dw.manager;
 var h=dojo.lang.curry(dojo.lang,"hitch",dwm);
-var g=function(_321,_322){
-dw[(_322||_321)]=h(_321);
+var g=function(_325,_326){
+dw[(_326||_325)]=h(_325);
 };
 g("add","addWidget");
 g("destroyAll","destroyAllWidgets");
@@ -59538,11 +50131,11 @@
 g("getWidgetsByFilter","byFilter");
 g("getWidgetByNode","byNode");
 dw.all=function(n){
-var _324=dwm.getAllWidgets.apply(dwm,arguments);
+var _328=dwm.getAllWidgets.apply(dwm,arguments);
 if(arguments.length>0){
-return _324[n];
+return _328[n];
 }
-return _324;
+return _328;
 };
 g("registerWidgetPackage");
 g("getImplementation","getWidgetImplementation");
@@ -59556,17 +50149,17 @@
 this.dojoUri=function(uri){
 return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
 };
-this.moduleUri=function(_326,uri){
-var loc=dojo.hostenv.getModuleSymbols(_326).join("/");
+this.moduleUri=function(_32a,uri){
+var loc=dojo.hostenv.getModuleSymbols(_32a).join("/");
 if(!loc){
 return null;
 }
 if(loc.lastIndexOf("/")!=loc.length-1){
 loc+="/";
 }
-var _329=loc.indexOf(":");
-var _32a=loc.indexOf("/");
-if(loc.charAt(0)!="/"&&(_329==-1||_329>_32a)){
+var _32d=loc.indexOf(":");
+var _32e=loc.indexOf("/");
+if(loc.charAt(0)!="/"&&(_32d==-1||_32d>_32e)){
 loc=dojo.hostenv.getBaseScriptUri()+loc;
 }
 return new dojo.uri.Uri(loc,uri);
@@ -59577,20 +50170,20 @@
 if(!arguments[i]){
 continue;
 }
-var _32d=new dojo.uri.Uri(arguments[i].toString());
-var _32e=new dojo.uri.Uri(uri.toString());
-if((_32d.path=="")&&(_32d.scheme==null)&&(_32d.authority==null)&&(_32d.query==null)){
-if(_32d.fragment!=null){
-_32e.fragment=_32d.fragment;
+var _331=new dojo.uri.Uri(arguments[i].toString());
+var _332=new dojo.uri.Uri(uri.toString());
+if((_331.path=="")&&(_331.scheme==null)&&(_331.authority==null)&&(_331.query==null)){
+if(_331.fragment!=null){
+_332.fragment=_331.fragment;
 }
-_32d=_32e;
+_331=_332;
 }else{
-if(_32d.scheme==null){
-_32d.scheme=_32e.scheme;
-if(_32d.authority==null){
-_32d.authority=_32e.authority;
-if(_32d.path.charAt(0)!="/"){
-var path=_32e.path.substring(0,_32e.path.lastIndexOf("/")+1)+_32d.path;
+if(_331.scheme==null){
+_331.scheme=_332.scheme;
+if(_331.authority==null){
+_331.authority=_332.authority;
+if(_331.path.charAt(0)!="/"){
+var path=_332.path.substring(0,_332.path.lastIndexOf("/")+1)+_331.path;
 var segs=path.split("/");
 for(var j=0;j<segs.length;j++){
 if(segs[j]=="."){
@@ -59612,37 +50205,37 @@
 }
 }
 }
-_32d.path=segs.join("/");
+_331.path=segs.join("/");
 }
 }
 }
 }
 uri="";
-if(_32d.scheme!=null){
-uri+=_32d.scheme+":";
+if(_331.scheme!=null){
+uri+=_331.scheme+":";
 }
-if(_32d.authority!=null){
-uri+="//"+_32d.authority;
+if(_331.authority!=null){
+uri+="//"+_331.authority;
 }
-uri+=_32d.path;
-if(_32d.query!=null){
-uri+="?"+_32d.query;
+uri+=_331.path;
+if(_331.query!=null){
+uri+="?"+_331.query;
 }
-if(_32d.fragment!=null){
-uri+="#"+_32d.fragment;
+if(_331.fragment!=null){
+uri+="#"+_331.fragment;
 }
 }
 this.uri=uri.toString();
-var _332="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
-var r=this.uri.match(new RegExp(_332));
+var _336="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+var r=this.uri.match(new RegExp(_336));
 this.scheme=r[2]||(r[1]?"":null);
 this.authority=r[4]||(r[3]?"":null);
 this.path=r[5];
 this.query=r[7]||(r[6]?"":null);
 this.fragment=r[9]||(r[8]?"":null);
 if(this.authority!=null){
-_332="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
-r=this.authority.match(new RegExp(_332));
+_336="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
+r=this.authority.match(new RegExp(_336));
 this.user=r[3]||null;
 this.password=r[4]||null;
 this.host=r[5];
@@ -59672,24 +50265,24 @@
 return t;
 };
 dojo.html.getViewport=function(){
-var _336=dojo.global();
-var _337=dojo.doc();
+var _33a=dojo.global();
+var _33b=dojo.doc();
 var w=0;
 var h=0;
 if(dojo.render.html.mozilla){
-w=_337.documentElement.clientWidth;
-h=_336.innerHeight;
+w=_33b.documentElement.clientWidth;
+h=_33a.innerHeight;
 }else{
-if(!dojo.render.html.opera&&_336.innerWidth){
-w=_336.innerWidth;
-h=_336.innerHeight;
+if(!dojo.render.html.opera&&_33a.innerWidth){
+w=_33a.innerWidth;
+h=_33a.innerHeight;
 }else{
-if(!dojo.render.html.opera&&dojo.exists(_337,"documentElement.clientWidth")){
-var w2=_337.documentElement.clientWidth;
+if(!dojo.render.html.opera&&dojo.exists(_33b,"documentElement.clientWidth")){
+var w2=_33b.documentElement.clientWidth;
 if(!w||w2&&w2<w){
 w=w2;
 }
-h=_337.documentElement.clientHeight;
+h=_33b.documentElement.clientHeight;
 }else{
 if(dojo.body().clientWidth){
 w=dojo.body().clientWidth;
@@ -59701,23 +50294,23 @@
 return {width:w,height:h};
 };
 dojo.html.getScroll=function(){
-var _33b=dojo.global();
-var _33c=dojo.doc();
-var top=_33b.pageYOffset||_33c.documentElement.scrollTop||dojo.body().scrollTop||0;
-var left=_33b.pageXOffset||_33c.documentElement.scrollLeft||dojo.body().scrollLeft||0;
+var _33f=dojo.global();
+var _340=dojo.doc();
+var top=_33f.pageYOffset||_340.documentElement.scrollTop||dojo.body().scrollTop||0;
+var left=_33f.pageXOffset||_340.documentElement.scrollLeft||dojo.body().scrollLeft||0;
 return {top:top,left:left,offset:{x:left,y:top}};
 };
 dojo.html.getParentByType=function(node,type){
-var _341=dojo.doc();
-var _342=dojo.byId(node);
+var _345=dojo.doc();
+var _346=dojo.byId(node);
 type=type.toLowerCase();
-while((_342)&&(_342.nodeName.toLowerCase()!=type)){
-if(_342==(_341["body"]||_341["documentElement"])){
+while((_346)&&(_346.nodeName.toLowerCase()!=type)){
+if(_346==(_345["body"]||_345["documentElement"])){
 return null;
 }
-_342=_342.parentNode;
+_346=_346.parentNode;
 }
-return _342;
+return _346;
 };
 dojo.html.getAttribute=function(node,attr){
 node=dojo.byId(node);
@@ -59750,17 +50343,17 @@
 };
 dojo.html.getCursorPosition=function(e){
 e=e||dojo.global().event;
-var _34a={x:0,y:0};
+var _34e={x:0,y:0};
 if(e.pageX||e.pageY){
-_34a.x=e.pageX;
-_34a.y=e.pageY;
+_34e.x=e.pageX;
+_34e.y=e.pageY;
 }else{
 var de=dojo.doc().documentElement;
 var db=dojo.body();
-_34a.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
-_34a.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
+_34e.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
+_34e.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
 }
-return _34a;
+return _34e;
 };
 dojo.html.isTag=function(node){
 node=dojo.byId(node);
@@ -59776,9 +50369,9 @@
 if(dojo.render.html.ie&&!dojo.render.html.ie70){
 if(window.location.href.substr(0,6).toLowerCase()!="https:"){
 (function(){
-var _34f=dojo.doc().createElement("script");
-_34f.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
-dojo.doc().getElementsByTagName("head")[0].appendChild(_34f);
+var _353=dojo.doc().createElement("script");
+_353.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
+dojo.doc().getElementsByTagName("head")[0].appendChild(_353);
 })();
 }
 }else{
@@ -59786,20 +50379,20 @@
 return doc.createElement(tag);
 };
 }
-dojo.html._callDeprecated=function(_352,_353,args,_355,_356){
-dojo.deprecated("dojo.html."+_352,"replaced by dojo.html."+_353+"("+(_355?"node, {"+_355+": "+_355+"}":"")+")"+(_356?"."+_356:""),"0.5");
-var _357=[];
-if(_355){
-var _358={};
-_358[_355]=args[1];
-_357.push(args[0]);
-_357.push(_358);
+dojo.html._callDeprecated=function(_356,_357,args,_359,_35a){
+dojo.deprecated("dojo.html."+_356,"replaced by dojo.html."+_357+"("+(_359?"node, {"+_359+": "+_359+"}":"")+")"+(_35a?"."+_35a:""),"0.5");
+var _35b=[];
+if(_359){
+var _35c={};
+_35c[_359]=args[1];
+_35b.push(args[0]);
+_35b.push(_35c);
 }else{
-_357=args;
+_35b=args;
 }
-var ret=dojo.html[_353].apply(dojo.html,args);
-if(_356){
-return ret[_356];
+var ret=dojo.html[_357].apply(dojo.html,args);
+if(_35a){
+return ret[_35a];
 }else{
 return ret;
 }
@@ -59837,22 +50430,22 @@
 var div=document.createElement("div");
 div.style.backgroundImage="url(\""+this.imgPath+"/tab_close.gif\")";
 dojo.body().appendChild(div);
-var _35b=null;
+var _35f=null;
 if(window.getComputedStyle){
-var _35c=getComputedStyle(div,"");
-_35b=_35c.getPropertyValue("background-image");
+var _360=getComputedStyle(div,"");
+_35f=_360.getPropertyValue("background-image");
 }else{
-_35b=div.currentStyle.backgroundImage;
+_35f=div.currentStyle.backgroundImage;
 }
-var _35d=false;
-if(_35b!=null&&(_35b=="none"||_35b=="url(invalid-url:)")){
+var _361=false;
+if(_35f!=null&&(_35f=="none"||_35f=="url(invalid-url:)")){
 this.accessible=true;
 }
 dojo.body().removeChild(div);
 }
 return this.accessible;
-},setCheckAccessible:function(_35e){
-this.doAccessibleCheck=_35e;
+},setCheckAccessible:function(_362){
+this.doAccessibleCheck=_362;
 },setAccessibleMode:function(){
 if(this.accessible===null){
 if(this.checkAccessible()){
@@ -59879,52 +50472,52 @@
 this.notifyChildrenOfResize();
 },notifyChildrenOfResize:function(){
 for(var i=0;i<this.children.length;i++){
-var _360=this.children[i];
-if(_360.onResized){
-_360.onResized();
+var _364=this.children[i];
+if(_364.onResized){
+_364.onResized();
 }
 }
-},create:function(args,_362,_363,ns){
+},create:function(args,_366,_367,ns){
 if(ns){
 this.ns=ns;
 }
-this.satisfyPropertySets(args,_362,_363);
-this.mixInProperties(args,_362,_363);
-this.postMixInProperties(args,_362,_363);
+this.satisfyPropertySets(args,_366,_367);
+this.mixInProperties(args,_366,_367);
+this.postMixInProperties(args,_366,_367);
 dojo.widget.manager.add(this);
-this.buildRendering(args,_362,_363);
-this.initialize(args,_362,_363);
-this.postInitialize(args,_362,_363);
-this.postCreate(args,_362,_363);
+this.buildRendering(args,_366,_367);
+this.initialize(args,_366,_367);
+this.postInitialize(args,_366,_367);
+this.postCreate(args,_366,_367);
 return this;
-},destroy:function(_365){
+},destroy:function(_369){
 if(this.parent){
 this.parent.removeChild(this);
 }
 this.destroyChildren();
 this.uninitialize();
-this.destroyRendering(_365);
+this.destroyRendering(_369);
 dojo.widget.manager.removeById(this.widgetId);
 },destroyChildren:function(){
-var _366;
+var _36a;
 var i=0;
 while(this.children.length>i){
-_366=this.children[i];
-if(_366 instanceof dojo.widget.Widget){
-this.removeChild(_366);
-_366.destroy();
+_36a=this.children[i];
+if(_36a instanceof dojo.widget.Widget){
+this.removeChild(_36a);
+_36a.destroy();
 continue;
 }
 i++;
 }
-},getChildrenOfType:function(type,_369){
+},getChildrenOfType:function(type,_36d){
 var ret=[];
-var _36b=dojo.lang.isFunction(type);
-if(!_36b){
+var _36f=dojo.lang.isFunction(type);
+if(!_36f){
 type=type.toLowerCase();
 }
 for(var x=0;x<this.children.length;x++){
-if(_36b){
+if(_36f){
 if(this.children[x] instanceof type){
 ret.push(this.children[x]);
 }
@@ -59933,24 +50526,24 @@
 ret.push(this.children[x]);
 }
 }
-if(_369){
-ret=ret.concat(this.children[x].getChildrenOfType(type,_369));
+if(_36d){
+ret=ret.concat(this.children[x].getChildrenOfType(type,_36d));
 }
 }
 return ret;
 },getDescendants:function(){
-var _36d=[];
-var _36e=[this];
+var _371=[];
+var _372=[this];
 var elem;
-while((elem=_36e.pop())){
-_36d.push(elem);
+while((elem=_372.pop())){
+_371.push(elem);
 if(elem.children){
 dojo.lang.forEach(elem.children,function(elem){
-_36e.push(elem);
+_372.push(elem);
 });
 }
 }
-return _36d;
+return _371;
 },isFirstChild:function(){
 return this===this.parent.children[0];
 },isLastChild:function(){
@@ -59964,29 +50557,29 @@
 }
 return;
 }
-var _375;
-var _376=dojo.widget.lcArgsCache[this.widgetType];
-if(_376==null){
-_376={};
+var _379;
+var _37a=dojo.widget.lcArgsCache[this.widgetType];
+if(_37a==null){
+_37a={};
 for(var y in this){
-_376[((new String(y)).toLowerCase())]=y;
+_37a[((new String(y)).toLowerCase())]=y;
 }
-dojo.widget.lcArgsCache[this.widgetType]=_376;
+dojo.widget.lcArgsCache[this.widgetType]=_37a;
 }
-var _378={};
+var _37c={};
 for(var x in args){
 if(!this[x]){
-var y=_376[(new String(x)).toLowerCase()];
+var y=_37a[(new String(x)).toLowerCase()];
 if(y){
 args[y]=args[x];
 x=y;
 }
 }
-if(_378[x]){
+if(_37c[x]){
 continue;
 }
-_378[x]=true;
-if((typeof this[x])!=(typeof _375)){
+_37c[x]=true;
+if((typeof this[x])!=(typeof _379)){
 if(typeof args[x]!="string"){
 this[x]=args[x];
 }else{
@@ -60017,11 +50610,11 @@
 if(this[x] instanceof dojo.uri.Uri){
 this[x]=dojo.uri.dojoUri(args[x]);
 }else{
-var _37a=args[x].split(";");
-for(var y=0;y<_37a.length;y++){
-var si=_37a[y].indexOf(":");
-if((si!=-1)&&(_37a[y].length>si)){
-this[x][_37a[y].substr(0,si).replace(/^\s+|\s+$/g,"")]=_37a[y].substr(si+1);
+var _37e=args[x].split(";");
+for(var y=0;y<_37e.length;y++){
+var si=_37e[y].indexOf(":");
+if((si!=-1)&&(_37e[y].length>si)){
+this[x][_37e[y].substr(0,si).replace(/^\s+|\s+$/g,"")]=_37e[y].substr(si+1);
 }
 }
 }
@@ -60039,34 +50632,34 @@
 this.extraArgs[x.toLowerCase()]=args[x];
 }
 }
-},postMixInProperties:function(args,frag,_37e){
-},initialize:function(args,frag,_381){
+},postMixInProperties:function(args,frag,_382){
+},initialize:function(args,frag,_385){
 return false;
-},postInitialize:function(args,frag,_384){
+},postInitialize:function(args,frag,_388){
 return false;
-},postCreate:function(args,frag,_387){
+},postCreate:function(args,frag,_38b){
 return false;
 },uninitialize:function(){
 return false;
-},buildRendering:function(args,frag,_38a){
+},buildRendering:function(args,frag,_38e){
 dojo.unimplemented("dojo.widget.Widget.buildRendering, on "+this.toString()+", ");
 return false;
 },destroyRendering:function(){
 dojo.unimplemented("dojo.widget.Widget.destroyRendering");
 return false;
-},addedTo:function(_38b){
-},addChild:function(_38c){
+},addedTo:function(_38f){
+},addChild:function(_390){
 dojo.unimplemented("dojo.widget.Widget.addChild");
 return false;
-},removeChild:function(_38d){
+},removeChild:function(_391){
 for(var x=0;x<this.children.length;x++){
-if(this.children[x]===_38d){
+if(this.children[x]===_391){
 this.children.splice(x,1);
-_38d.parent=null;
+_391.parent=null;
 break;
 }
 }
-return _38d;
+return _391;
 },getPreviousSibling:function(){
 var idx=this.getParentIndex();
 if(idx<=0){
@@ -60092,30 +50685,30 @@
 dojo.widget.tags.addParseTreeHandler=function(type){
 dojo.deprecated("addParseTreeHandler",". ParseTreeHandlers are now reserved for components. Any unfiltered DojoML tag without a ParseTreeHandler is assumed to be a widget","0.5");
 };
-dojo.widget.tags["dojo:propertyset"]=function(_392,_393,_394){
-var _395=_393.parseProperties(_392["dojo:propertyset"]);
+dojo.widget.tags["dojo:propertyset"]=function(_396,_397,_398){
+var _399=_397.parseProperties(_396["dojo:propertyset"]);
 };
-dojo.widget.tags["dojo:connect"]=function(_396,_397,_398){
-var _399=_397.parseProperties(_396["dojo:connect"]);
+dojo.widget.tags["dojo:connect"]=function(_39a,_39b,_39c){
+var _39d=_39b.parseProperties(_39a["dojo:connect"]);
 };
-dojo.widget.buildWidgetFromParseTree=function(type,frag,_39c,_39d,_39e,_39f){
+dojo.widget.buildWidgetFromParseTree=function(type,frag,_3a0,_3a1,_3a2,_3a3){
 dojo.a11y.setAccessibleMode();
-var _3a0=type.split(":");
-_3a0=(_3a0.length==2)?_3a0[1]:type;
-var _3a1=_39f||_39c.parseProperties(frag[frag["ns"]+":"+_3a0]);
-var _3a2=dojo.widget.manager.getImplementation(_3a0,null,null,frag["ns"]);
-if(!_3a2){
+var _3a4=type.split(":");
+_3a4=(_3a4.length==2)?_3a4[1]:type;
+var _3a5=_3a3||_3a0.parseProperties(frag[frag["ns"]+":"+_3a4]);
+var _3a6=dojo.widget.manager.getImplementation(_3a4,null,null,frag["ns"]);
+if(!_3a6){
 throw new Error("cannot find \""+type+"\" widget");
 }else{
-if(!_3a2.create){
+if(!_3a6.create){
 throw new Error("\""+type+"\" widget object has no \"create\" method and does not appear to implement *Widget");
 }
 }
-_3a1["dojoinsertionindex"]=_39e;
-var ret=_3a2.create(_3a1,frag,_39d,frag["ns"]);
+_3a5["dojoinsertionindex"]=_3a2;
+var ret=_3a6.create(_3a5,frag,_3a1,frag["ns"]);
 return ret;
 };
-dojo.widget.defineWidget=function(_3a4,_3a5,_3a6,init,_3a8){
+dojo.widget.defineWidget=function(_3a8,_3a9,_3aa,init,_3ac){
 if(dojo.lang.isString(arguments[3])){
 dojo.widget._defineWidget(arguments[0],arguments[3],arguments[1],arguments[4],arguments[2]);
 }else{
@@ -60135,50 +50728,50 @@
 }
 };
 dojo.widget.defineWidget.renderers="html|svg|vml";
-dojo.widget._defineWidget=function(_3ab,_3ac,_3ad,init,_3af){
-var _3b0=_3ab.split(".");
-var type=_3b0.pop();
-var regx="\\.("+(_3ac?_3ac+"|":"")+dojo.widget.defineWidget.renderers+")\\.";
-var r=_3ab.search(new RegExp(regx));
-_3b0=(r<0?_3b0.join("."):_3ab.substr(0,r));
-dojo.widget.manager.registerWidgetPackage(_3b0);
-var pos=_3b0.indexOf(".");
-var _3b5=(pos>-1)?_3b0.substring(0,pos):_3b0;
-_3af=(_3af)||{};
-_3af.widgetType=type;
-if((!init)&&(_3af["classConstructor"])){
-init=_3af.classConstructor;
-delete _3af.classConstructor;
+dojo.widget._defineWidget=function(_3af,_3b0,_3b1,init,_3b3){
+var _3b4=_3af.split(".");
+var type=_3b4.pop();
+var regx="\\.("+(_3b0?_3b0+"|":"")+dojo.widget.defineWidget.renderers+")\\.";
+var r=_3af.search(new RegExp(regx));
+_3b4=(r<0?_3b4.join("."):_3af.substr(0,r));
+dojo.widget.manager.registerWidgetPackage(_3b4);
+var pos=_3b4.indexOf(".");
+var _3b9=(pos>-1)?_3b4.substring(0,pos):_3b4;
+_3b3=(_3b3)||{};
+_3b3.widgetType=type;
+if((!init)&&(_3b3["classConstructor"])){
+init=_3b3.classConstructor;
+delete _3b3.classConstructor;
 }
-dojo.declare(_3ab,_3ad,init,_3af);
+dojo.declare(_3af,_3b1,init,_3b3);
 };
 dojo.provide("dojo.widget.Parse");
-dojo.widget.Parse=function(_3b6){
+dojo.widget.Parse=function(_3ba){
 this.propertySetsList=[];
-this.fragment=_3b6;
-this.createComponents=function(frag,_3b8){
-var _3b9=[];
-var _3ba=false;
+this.fragment=_3ba;
+this.createComponents=function(frag,_3bc){
+var _3bd=[];
+var _3be=false;
 try{
 if(frag&&frag.tagName&&(frag!=frag.nodeRef)){
-var _3bb=dojo.widget.tags;
+var _3bf=dojo.widget.tags;
 var tna=String(frag.tagName).split(";");
 for(var x=0;x<tna.length;x++){
 var ltn=tna[x].replace(/^\s+|\s+$/g,"").toLowerCase();
 frag.tagName=ltn;
 var ret;
-if(_3bb[ltn]){
-_3ba=true;
-ret=_3bb[ltn](frag,this,_3b8,frag.index);
-_3b9.push(ret);
+if(_3bf[ltn]){
+_3be=true;
+ret=_3bf[ltn](frag,this,_3bc,frag.index);
+_3bd.push(ret);
 }else{
 if(ltn.indexOf(":")==-1){
 ltn="dojo:"+ltn;
 }
-ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,_3b8,frag.index);
+ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,_3bc,frag.index);
 if(ret){
-_3ba=true;
-_3b9.push(ret);
+_3be=true;
+_3bd.push(ret);
 }
 }
 }
@@ -60187,43 +50780,43 @@
 catch(e){
 dojo.debug("dojo.widget.Parse: error:",e);
 }
-if(!_3ba){
-_3b9=_3b9.concat(this.createSubComponents(frag,_3b8));
+if(!_3be){
+_3bd=_3bd.concat(this.createSubComponents(frag,_3bc));
 }
-return _3b9;
+return _3bd;
 };
-this.createSubComponents=function(_3c0,_3c1){
-var frag,_3c3=[];
-for(var item in _3c0){
-frag=_3c0[item];
-if(frag&&typeof frag=="object"&&(frag!=_3c0.nodeRef)&&(frag!=_3c0.tagName)&&(!dojo.dom.isNode(frag))){
-_3c3=_3c3.concat(this.createComponents(frag,_3c1));
+this.createSubComponents=function(_3c4,_3c5){
+var frag,_3c7=[];
+for(var item in _3c4){
+frag=_3c4[item];
+if(frag&&typeof frag=="object"&&(frag!=_3c4.nodeRef)&&(frag!=_3c4.tagName)&&(!dojo.dom.isNode(frag))){
+_3c7=_3c7.concat(this.createComponents(frag,_3c5));
 }
 }
-return _3c3;
+return _3c7;
 };
-this.parsePropertySets=function(_3c5){
+this.parsePropertySets=function(_3c9){
 return [];
 };
-this.parseProperties=function(_3c6){
-var _3c7={};
-for(var item in _3c6){
-if((_3c6[item]==_3c6.tagName)||(_3c6[item]==_3c6.nodeRef)){
+this.parseProperties=function(_3ca){
+var _3cb={};
+for(var item in _3ca){
+if((_3ca[item]==_3ca.tagName)||(_3ca[item]==_3ca.nodeRef)){
 }else{
-var frag=_3c6[item];
+var frag=_3ca[item];
 if(frag.tagName&&dojo.widget.tags[frag.tagName.toLowerCase()]){
 }else{
 if(frag[0]&&frag[0].value!=""&&frag[0].value!=null){
 try{
 if(item.toLowerCase()=="dataprovider"){
-var _3ca=this;
-this.getDataProvider(_3ca,frag[0].value);
-_3c7.dataProvider=this.dataProvider;
+var _3ce=this;
+this.getDataProvider(_3ce,frag[0].value);
+_3cb.dataProvider=this.dataProvider;
 }
-_3c7[item]=frag[0].value;
-var _3cb=this.parseProperties(frag);
-for(var _3cc in _3cb){
-_3c7[_3cc]=_3cb[_3cc];
+_3cb[item]=frag[0].value;
+var _3cf=this.parseProperties(frag);
+for(var _3d0 in _3cf){
+_3cb[_3d0]=_3cf[_3d0];
 }
 }
 catch(e){
@@ -60234,67 +50827,67 @@
 switch(item.toLowerCase()){
 case "checked":
 case "disabled":
-if(typeof _3c7[item]!="boolean"){
-_3c7[item]=true;
+if(typeof _3cb[item]!="boolean"){
+_3cb[item]=true;
 }
 break;
 }
 }
 }
-return _3c7;
+return _3cb;
 };
-this.getDataProvider=function(_3cd,_3ce){
-dojo.io.bind({url:_3ce,load:function(type,_3d0){
+this.getDataProvider=function(_3d1,_3d2){
+dojo.io.bind({url:_3d2,load:function(type,_3d4){
 if(type=="load"){
-_3cd.dataProvider=_3d0;
+_3d1.dataProvider=_3d4;
 }
 },mimetype:"text/javascript",sync:true});
 };
-this.getPropertySetById=function(_3d1){
+this.getPropertySetById=function(_3d5){
 for(var x=0;x<this.propertySetsList.length;x++){
-if(_3d1==this.propertySetsList[x]["id"][0].value){
+if(_3d5==this.propertySetsList[x]["id"][0].value){
 return this.propertySetsList[x];
 }
 }
 return "";
 };
-this.getPropertySetsByType=function(_3d3){
-var _3d4=[];
+this.getPropertySetsByType=function(_3d7){
+var _3d8=[];
 for(var x=0;x<this.propertySetsList.length;x++){
 var cpl=this.propertySetsList[x];
 var cpcc=cpl.componentClass||cpl.componentType||null;
-var _3d8=this.propertySetsList[x]["id"][0].value;
-if(cpcc&&(_3d8==cpcc[0].value)){
-_3d4.push(cpl);
+var _3dc=this.propertySetsList[x]["id"][0].value;
+if(cpcc&&(_3dc==cpcc[0].value)){
+_3d8.push(cpl);
 }
 }
-return _3d4;
+return _3d8;
 };
-this.getPropertySets=function(_3d9){
+this.getPropertySets=function(_3dd){
 var ppl="dojo:propertyproviderlist";
-var _3db=[];
-var _3dc=_3d9.tagName;
-if(_3d9[ppl]){
-var _3dd=_3d9[ppl].value.split(" ");
-for(var _3de in _3dd){
-if((_3de.indexOf("..")==-1)&&(_3de.indexOf("://")==-1)){
-var _3df=this.getPropertySetById(_3de);
-if(_3df!=""){
-_3db.push(_3df);
+var _3df=[];
+var _3e0=_3dd.tagName;
+if(_3dd[ppl]){
+var _3e1=_3dd[ppl].value.split(" ");
+for(var _3e2 in _3e1){
+if((_3e2.indexOf("..")==-1)&&(_3e2.indexOf("://")==-1)){
+var _3e3=this.getPropertySetById(_3e2);
+if(_3e3!=""){
+_3df.push(_3e3);
 }
 }else{
 }
 }
 }
-return this.getPropertySetsByType(_3dc).concat(_3db);
+return this.getPropertySetsByType(_3e0).concat(_3df);
 };
-this.createComponentFromScript=function(_3e0,_3e1,_3e2,ns){
-_3e2.fastMixIn=true;
-var ltn=(ns||"dojo")+":"+_3e1.toLowerCase();
+this.createComponentFromScript=function(_3e4,_3e5,_3e6,ns){
+_3e6.fastMixIn=true;
+var ltn=(ns||"dojo")+":"+_3e5.toLowerCase();
 if(dojo.widget.tags[ltn]){
-return [dojo.widget.tags[ltn](_3e2,this,null,null,_3e2)];
+return [dojo.widget.tags[ltn](_3e6,this,null,null,_3e6)];
 }
-return [dojo.widget.buildWidgetFromParseTree(ltn,_3e2,this,null,null,_3e2)];
+return [dojo.widget.buildWidgetFromParseTree(ltn,_3e6,this,null,null,_3e6)];
 };
 };
 dojo.widget._parser_collection={"dojo":new dojo.widget.Parse()};
@@ -60307,62 +50900,62 @@
 }
 return this._parser_collection[name];
 };
-dojo.widget.createWidget=function(name,_3e7,_3e8,_3e9){
-var _3ea=false;
-var _3eb=(typeof name=="string");
-if(_3eb){
+dojo.widget.createWidget=function(name,_3eb,_3ec,_3ed){
+var _3ee=false;
+var _3ef=(typeof name=="string");
+if(_3ef){
 var pos=name.indexOf(":");
 var ns=(pos>-1)?name.substring(0,pos):"dojo";
 if(pos>-1){
 name=name.substring(pos+1);
 }
-var _3ee=name.toLowerCase();
-var _3ef=ns+":"+_3ee;
-_3ea=(dojo.byId(name)&&!dojo.widget.tags[_3ef]);
+var _3f2=name.toLowerCase();
+var _3f3=ns+":"+_3f2;
+_3ee=(dojo.byId(name)&&!dojo.widget.tags[_3f3]);
 }
-if((arguments.length==1)&&(_3ea||!_3eb)){
+if((arguments.length==1)&&(_3ee||!_3ef)){
 var xp=new dojo.xml.Parse();
-var tn=_3ea?dojo.byId(name):name;
+var tn=_3ee?dojo.byId(name):name;
 return dojo.widget.getParser().createComponents(xp.parseElement(tn,null,true))[0];
 }
-function fromScript(_3f2,name,_3f4,ns){
-_3f4[_3ef]={dojotype:[{value:_3ee}],nodeRef:_3f2,fastMixIn:true};
-_3f4.ns=ns;
-return dojo.widget.getParser().createComponentFromScript(_3f2,name,_3f4,ns);
+function fromScript(_3f6,name,_3f8,ns){
+_3f8[_3f3]={dojotype:[{value:_3f2}],nodeRef:_3f6,fastMixIn:true};
+_3f8.ns=ns;
+return dojo.widget.getParser().createComponentFromScript(_3f6,name,_3f8,ns);
 }
-_3e7=_3e7||{};
-var _3f6=false;
+_3eb=_3eb||{};
+var _3fa=false;
 var tn=null;
 var h=dojo.render.html.capable;
 if(h){
 tn=document.createElement("span");
 }
-if(!_3e8){
-_3f6=true;
-_3e8=tn;
+if(!_3ec){
+_3fa=true;
+_3ec=tn;
 if(h){
-dojo.body().appendChild(_3e8);
+dojo.body().appendChild(_3ec);
 }
 }else{
-if(_3e9){
-dojo.dom.insertAtPosition(tn,_3e8,_3e9);
+if(_3ed){
+dojo.dom.insertAtPosition(tn,_3ec,_3ed);
 }else{
-tn=_3e8;
+tn=_3ec;
 }
 }
-var _3f8=fromScript(tn,name.toLowerCase(),_3e7,ns);
-if((!_3f8)||(!_3f8[0])||(typeof _3f8[0].widgetType=="undefined")){
+var _3fc=fromScript(tn,name.toLowerCase(),_3eb,ns);
+if((!_3fc)||(!_3fc[0])||(typeof _3fc[0].widgetType=="undefined")){
 throw new Error("createWidget: Creation of \""+name+"\" widget failed.");
 }
 try{
-if(_3f6&&_3f8[0].domNode.parentNode){
-_3f8[0].domNode.parentNode.removeChild(_3f8[0].domNode);
+if(_3fa&&_3fc[0].domNode.parentNode){
+_3fc[0].domNode.parentNode.removeChild(_3fc[0].domNode);
 }
 }
 catch(e){
 dojo.debug(e);
 }
-return _3f8[0];
+return _3fc[0];
 };
 dojo.provide("dojo.html.style");
 dojo.html.getClass=function(node){
@@ -60384,29 +50977,29 @@
 var c=dojo.html.getClass(node);
 return (c=="")?[]:c.split(/\s+/g);
 };
-dojo.html.hasClass=function(node,_3fe){
-return (new RegExp("(^|\\s+)"+_3fe+"(\\s+|$)")).test(dojo.html.getClass(node));
+dojo.html.hasClass=function(node,_402){
+return (new RegExp("(^|\\s+)"+_402+"(\\s+|$)")).test(dojo.html.getClass(node));
 };
-dojo.html.prependClass=function(node,_400){
-_400+=" "+dojo.html.getClass(node);
-return dojo.html.setClass(node,_400);
+dojo.html.prependClass=function(node,_404){
+_404+=" "+dojo.html.getClass(node);
+return dojo.html.setClass(node,_404);
 };
-dojo.html.addClass=function(node,_402){
-if(dojo.html.hasClass(node,_402)){
+dojo.html.addClass=function(node,_406){
+if(dojo.html.hasClass(node,_406)){
 return false;
 }
-_402=(dojo.html.getClass(node)+" "+_402).replace(/^\s+|\s+$/g,"");
-return dojo.html.setClass(node,_402);
+_406=(dojo.html.getClass(node)+" "+_406).replace(/^\s+|\s+$/g,"");
+return dojo.html.setClass(node,_406);
 };
-dojo.html.setClass=function(node,_404){
+dojo.html.setClass=function(node,_408){
 node=dojo.byId(node);
-var cs=new String(_404);
+var cs=new String(_408);
 try{
 if(typeof node.className=="string"){
 node.className=cs;
 }else{
 if(node.setAttribute){
-node.setAttribute("class",_404);
+node.setAttribute("class",_408);
 node.className=cs;
 }else{
 return false;
@@ -60418,220 +51011,220 @@
 }
 return true;
 };
-dojo.html.removeClass=function(node,_407,_408){
+dojo.html.removeClass=function(node,_40b,_40c){
 try{
-if(!_408){
-var _409=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_407+"(\\s+|$)"),"$1$2");
+if(!_40c){
+var _40d=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_40b+"(\\s+|$)"),"$1$2");
 }else{
-var _409=dojo.html.getClass(node).replace(_407,"");
+var _40d=dojo.html.getClass(node).replace(_40b,"");
 }
-dojo.html.setClass(node,_409);
+dojo.html.setClass(node,_40d);
 }
 catch(e){
 dojo.debug("dojo.html.removeClass() failed",e);
 }
 return true;
 };
-dojo.html.replaceClass=function(node,_40b,_40c){
-dojo.html.removeClass(node,_40c);
-dojo.html.addClass(node,_40b);
+dojo.html.replaceClass=function(node,_40f,_410){
+dojo.html.removeClass(node,_410);
+dojo.html.addClass(node,_40f);
 };
 dojo.html.classMatchType={ContainsAll:0,ContainsAny:1,IsOnly:2};
-dojo.html.getElementsByClass=function(_40d,_40e,_40f,_410,_411){
-_411=false;
-var _412=dojo.doc();
-_40e=dojo.byId(_40e)||_412;
-var _413=_40d.split(/\s+/g);
-var _414=[];
-if(_410!=1&&_410!=2){
-_410=0;
+dojo.html.getElementsByClass=function(_411,_412,_413,_414,_415){
+_415=false;
+var _416=dojo.doc();
+_412=dojo.byId(_412)||_416;
+var _417=_411.split(/\s+/g);
+var _418=[];
+if(_414!=1&&_414!=2){
+_414=0;
 }
-var _415=new RegExp("(\\s|^)(("+_413.join(")|(")+"))(\\s|$)");
-var _416=_413.join(" ").length;
-var _417=[];
-if(!_411&&_412.evaluate){
-var _418=".//"+(_40f||"*")+"[contains(";
-if(_410!=dojo.html.classMatchType.ContainsAny){
-_418+="concat(' ', at class,' '), ' "+_413.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
-if(_410==2){
-_418+=" and string-length(@class)="+_416+"]";
+var _419=new RegExp("(\\s|^)(("+_417.join(")|(")+"))(\\s|$)");
+var _41a=_417.join(" ").length;
+var _41b=[];
+if(!_415&&_416.evaluate){
+var _41c=".//"+(_413||"*")+"[contains(";
+if(_414!=dojo.html.classMatchType.ContainsAny){
+_41c+="concat(' ', at class,' '), ' "+_417.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
+if(_414==2){
+_41c+=" and string-length(@class)="+_41a+"]";
 }else{
-_418+="]";
+_41c+="]";
 }
 }else{
-_418+="concat(' ', at class,' '), ' "+_413.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
+_41c+="concat(' ', at class,' '), ' "+_417.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
 }
-var _419=_412.evaluate(_418,_40e,null,XPathResult.ANY_TYPE,null);
-var _41a=_419.iterateNext();
-while(_41a){
+var _41d=_416.evaluate(_41c,_412,null,XPathResult.ANY_TYPE,null);
+var _41e=_41d.iterateNext();
+while(_41e){
 try{
-_417.push(_41a);
-_41a=_419.iterateNext();
+_41b.push(_41e);
+_41e=_41d.iterateNext();
 }
 catch(e){
 break;
 }
 }
-return _417;
+return _41b;
 }else{
-if(!_40f){
-_40f="*";
+if(!_413){
+_413="*";
 }
-_417=_40e.getElementsByTagName(_40f);
+_41b=_412.getElementsByTagName(_413);
 var node,i=0;
 outer:
-while(node=_417[i++]){
-var _41d=dojo.html.getClasses(node);
-if(_41d.length==0){
+while(node=_41b[i++]){
+var _421=dojo.html.getClasses(node);
+if(_421.length==0){
 continue outer;
 }
-var _41e=0;
-for(var j=0;j<_41d.length;j++){
-if(_415.test(_41d[j])){
-if(_410==dojo.html.classMatchType.ContainsAny){
-_414.push(node);
+var _422=0;
+for(var j=0;j<_421.length;j++){
+if(_419.test(_421[j])){
+if(_414==dojo.html.classMatchType.ContainsAny){
+_418.push(node);
 continue outer;
 }else{
-_41e++;
+_422++;
 }
 }else{
-if(_410==dojo.html.classMatchType.IsOnly){
+if(_414==dojo.html.classMatchType.IsOnly){
 continue outer;
 }
 }
 }
-if(_41e==_413.length){
-if((_410==dojo.html.classMatchType.IsOnly)&&(_41e==_41d.length)){
-_414.push(node);
+if(_422==_417.length){
+if((_414==dojo.html.classMatchType.IsOnly)&&(_422==_421.length)){
+_418.push(node);
 }else{
-if(_410==dojo.html.classMatchType.ContainsAll){
-_414.push(node);
+if(_414==dojo.html.classMatchType.ContainsAll){
+_418.push(node);
 }
 }
 }
 }
-return _414;
+return _418;
 }
 };
 dojo.html.getElementsByClassName=dojo.html.getElementsByClass;
-dojo.html.toCamelCase=function(_420){
-var arr=_420.split("-"),cc=arr[0];
+dojo.html.toCamelCase=function(_424){
+var arr=_424.split("-"),cc=arr[0];
 for(var i=1;i<arr.length;i++){
 cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
 }
 return cc;
 };
-dojo.html.toSelectorCase=function(_424){
-return _424.replace(/([A-Z])/g,"-$1").toLowerCase();
+dojo.html.toSelectorCase=function(_428){
+return _428.replace(/([A-Z])/g,"-$1").toLowerCase();
 };
 if(dojo.render.html.ie){
-dojo.html.getComputedStyle=function(node,_426,_427){
+dojo.html.getComputedStyle=function(node,_42a,_42b){
 node=dojo.byId(node);
-if(!node||!node.style){
-return _427;
+if(!node||!node.currentStyle){
+return _42b;
 }
-return node.currentStyle[dojo.html.toCamelCase(_426)];
+return node.currentStyle[dojo.html.toCamelCase(_42a)];
 };
 dojo.html.getComputedStyles=function(node){
 return node.currentStyle;
 };
 }else{
-dojo.html.getComputedStyle=function(node,_42a,_42b){
+dojo.html.getComputedStyle=function(node,_42e,_42f){
 node=dojo.byId(node);
 if(!node||!node.style){
-return _42b;
+return _42f;
 }
 var s=document.defaultView.getComputedStyle(node,null);
-return (s&&s[dojo.html.toCamelCase(_42a)])||"";
+return (s&&s[dojo.html.toCamelCase(_42e)])||"";
 };
 dojo.html.getComputedStyles=function(node){
 return document.defaultView.getComputedStyle(node,null);
 };
 }
-dojo.html.getStyleProperty=function(node,_42f){
+dojo.html.getStyleProperty=function(node,_433){
 node=dojo.byId(node);
-return (node&&node.style?node.style[dojo.html.toCamelCase(_42f)]:undefined);
+return (node&&node.style?node.style[dojo.html.toCamelCase(_433)]:undefined);
 };
-dojo.html.getStyle=function(node,_431){
-var _432=dojo.html.getStyleProperty(node,_431);
-return (_432?_432:dojo.html.getComputedStyle(node,_431));
+dojo.html.getStyle=function(node,_435){
+var _436=dojo.html.getStyleProperty(node,_435);
+return (_436?_436:dojo.html.getComputedStyle(node,_435));
 };
-dojo.html.setStyle=function(node,_434,_435){
+dojo.html.setStyle=function(node,_438,_439){
 node=dojo.byId(node);
 if(node&&node.style){
-var _436=dojo.html.toCamelCase(_434);
-node.style[_436]=_435;
+var _43a=dojo.html.toCamelCase(_438);
+node.style[_43a]=_439;
 }
 };
-dojo.html.setStyleText=function(_437,text){
+dojo.html.setStyleText=function(_43b,text){
 try{
-_437.style.cssText=text;
+_43b.style.cssText=text;
 }
 catch(e){
-_437.setAttribute("style",text);
+_43b.setAttribute("style",text);
 }
 };
-dojo.html.copyStyle=function(_439,_43a){
-if(!_43a.style.cssText){
-_439.setAttribute("style",_43a.getAttribute("style"));
+dojo.html.copyStyle=function(_43d,_43e){
+if(!_43e.style.cssText){
+_43d.setAttribute("style",_43e.getAttribute("style"));
 }else{
-_439.style.cssText=_43a.style.cssText;
+_43d.style.cssText=_43e.style.cssText;
 }
-dojo.html.addClass(_439,dojo.html.getClass(_43a));
+dojo.html.addClass(_43d,dojo.html.getClass(_43e));
 };
-dojo.html.getUnitValue=function(node,_43c,_43d){
-var s=dojo.html.getComputedStyle(node,_43c);
-if((!s)||((s=="auto")&&(_43d))){
+dojo.html.getUnitValue=function(node,_440,_441){
+var s=dojo.html.getComputedStyle(node,_440);
+if((!s)||((s=="auto")&&(_441))){
 return {value:0,units:"px"};
 }
-var _43f=s.match(/(\-?[\d.]+)([a-z%]*)/i);
-if(!_43f){
+var _443=s.match(/(\-?[\d.]+)([a-z%]*)/i);
+if(!_443){
 return dojo.html.getUnitValue.bad;
 }
-return {value:Number(_43f[1]),units:_43f[2].toLowerCase()};
+return {value:Number(_443[1]),units:_443[2].toLowerCase()};
 };
 dojo.html.getUnitValue.bad={value:NaN,units:""};
 if(dojo.render.html.ie){
-dojo.html.toPixelValue=function(_440,_441){
-if(!_441){
+dojo.html.toPixelValue=function(_444,_445){
+if(!_445){
 return 0;
 }
-if(_441.slice(-2)=="px"){
-return parseFloat(_441);
+if(_445.slice(-2)=="px"){
+return parseFloat(_445);
 }
-var _442=0;
-with(_440){
-var _443=style.left;
-var _444=runtimeStyle.left;
+var _446=0;
+with(_444){
+var _447=style.left;
+var _448=runtimeStyle.left;
 runtimeStyle.left=currentStyle.left;
 try{
-style.left=_441||0;
-_442=style.pixelLeft;
-style.left=_443;
-runtimeStyle.left=_444;
+style.left=_445||0;
+_446=style.pixelLeft;
+style.left=_447;
+runtimeStyle.left=_448;
 }
 catch(e){
 }
 }
-return _442;
+return _446;
 };
 }else{
-dojo.html.toPixelValue=function(_445,_446){
-return (_446&&(_446.slice(-2)=="px")?parseFloat(_446):0);
+dojo.html.toPixelValue=function(_449,_44a){
+return (_44a&&(_44a.slice(-2)=="px")?parseFloat(_44a):0);
 };
 }
-dojo.html.getPixelValue=function(node,_448,_449){
-return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_448));
+dojo.html.getPixelValue=function(node,_44c,_44d){
+return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_44c));
 };
-dojo.html.setPositivePixelValue=function(node,_44b,_44c){
-if(isNaN(_44c)){
+dojo.html.setPositivePixelValue=function(node,_44f,_450){
+if(isNaN(_450)){
 return false;
 }
-node.style[_44b]=Math.max(0,_44c)+"px";
+node.style[_44f]=Math.max(0,_450)+"px";
 return true;
 };
 dojo.html.styleSheet=null;
-dojo.html.insertCssRule=function(_44d,_44e,_44f){
+dojo.html.insertCssRule=function(_451,_452,_453){
 if(!dojo.html.styleSheet){
 if(document.createStyleSheet){
 dojo.html.styleSheet=document.createStyleSheet();
@@ -60645,161 +51238,161 @@
 }
 if(arguments.length<3){
 if(dojo.html.styleSheet.cssRules){
-_44f=dojo.html.styleSheet.cssRules.length;
+_453=dojo.html.styleSheet.cssRules.length;
 }else{
 if(dojo.html.styleSheet.rules){
-_44f=dojo.html.styleSheet.rules.length;
+_453=dojo.html.styleSheet.rules.length;
 }else{
 return null;
 }
 }
 }
 if(dojo.html.styleSheet.insertRule){
-var rule=_44d+" { "+_44e+" }";
-return dojo.html.styleSheet.insertRule(rule,_44f);
+var rule=_451+" { "+_452+" }";
+return dojo.html.styleSheet.insertRule(rule,_453);
 }else{
 if(dojo.html.styleSheet.addRule){
-return dojo.html.styleSheet.addRule(_44d,_44e,_44f);
+return dojo.html.styleSheet.addRule(_451,_452,_453);
 }else{
 return null;
 }
 }
 };
-dojo.html.removeCssRule=function(_451){
+dojo.html.removeCssRule=function(_455){
 if(!dojo.html.styleSheet){
 dojo.debug("no stylesheet defined for removing rules");
 return false;
 }
 if(dojo.render.html.ie){
-if(!_451){
-_451=dojo.html.styleSheet.rules.length;
-dojo.html.styleSheet.removeRule(_451);
+if(!_455){
+_455=dojo.html.styleSheet.rules.length;
+dojo.html.styleSheet.removeRule(_455);
 }
 }else{
 if(document.styleSheets[0]){
-if(!_451){
-_451=dojo.html.styleSheet.cssRules.length;
+if(!_455){
+_455=dojo.html.styleSheet.cssRules.length;
 }
-dojo.html.styleSheet.deleteRule(_451);
+dojo.html.styleSheet.deleteRule(_455);
 }
 }
 return true;
 };
 dojo.html._insertedCssFiles=[];
-dojo.html.insertCssFile=function(URI,doc,_454,_455){
+dojo.html.insertCssFile=function(URI,doc,_458,_459){
 if(!URI){
 return;
 }
 if(!doc){
 doc=document;
 }
-var _456=dojo.hostenv.getText(URI,false,_455);
-if(_456===null){
+var _45a=dojo.hostenv.getText(URI,false,_459);
+if(_45a===null){
 return;
 }
-_456=dojo.html.fixPathsInCssText(_456,URI);
-if(_454){
+_45a=dojo.html.fixPathsInCssText(_45a,URI);
+if(_458){
 var idx=-1,node,ent=dojo.html._insertedCssFiles;
 for(var i=0;i<ent.length;i++){
-if((ent[i].doc==doc)&&(ent[i].cssText==_456)){
+if((ent[i].doc==doc)&&(ent[i].cssText==_45a)){
 idx=i;
 node=ent[i].nodeRef;
 break;
 }
 }
 if(node){
-var _45b=doc.getElementsByTagName("style");
-for(var i=0;i<_45b.length;i++){
-if(_45b[i]==node){
+var _45f=doc.getElementsByTagName("style");
+for(var i=0;i<_45f.length;i++){
+if(_45f[i]==node){
 return;
 }
 }
 dojo.html._insertedCssFiles.shift(idx,1);
 }
 }
-var _45c=dojo.html.insertCssText(_456,doc);
-dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_456,"nodeRef":_45c});
-if(_45c&&djConfig.isDebug){
-_45c.setAttribute("dbgHref",URI);
+var _460=dojo.html.insertCssText(_45a,doc);
+dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_45a,"nodeRef":_460});
+if(_460&&djConfig.isDebug){
+_460.setAttribute("dbgHref",URI);
 }
-return _45c;
+return _460;
 };
-dojo.html.insertCssText=function(_45d,doc,URI){
-if(!_45d){
+dojo.html.insertCssText=function(_461,doc,URI){
+if(!_461){
 return;
 }
 if(!doc){
 doc=document;
 }
 if(URI){
-_45d=dojo.html.fixPathsInCssText(_45d,URI);
+_461=dojo.html.fixPathsInCssText(_461,URI);
 }
-var _460=doc.createElement("style");
-_460.setAttribute("type","text/css");
+var _464=doc.createElement("style");
+_464.setAttribute("type","text/css");
 var head=doc.getElementsByTagName("head")[0];
 if(!head){
 dojo.debug("No head tag in document, aborting styles");
 return;
 }else{
-head.appendChild(_460);
+head.appendChild(_464);
 }
-if(_460.styleSheet){
-var _462=function(){
+if(_464.styleSheet){
+var _466=function(){
 try{
-_460.styleSheet.cssText=_45d;
+_464.styleSheet.cssText=_461;
 }
 catch(e){
 dojo.debug(e);
 }
 };
-if(_460.styleSheet.disabled){
-setTimeout(_462,10);
+if(_464.styleSheet.disabled){
+setTimeout(_466,10);
 }else{
-_462();
+_466();
 }
 }else{
-var _463=doc.createTextNode(_45d);
-_460.appendChild(_463);
+var _467=doc.createTextNode(_461);
+_464.appendChild(_467);
 }
-return _460;
+return _464;
 };
-dojo.html.fixPathsInCssText=function(_464,URI){
-if(!_464||!URI){
+dojo.html.fixPathsInCssText=function(_468,URI){
+if(!_468||!URI){
 return;
 }
-var _466,str="",url="",_469="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
-var _46a=new RegExp("url\\(\\s*("+_469+")\\s*\\)");
-var _46b=/(file|https?|ftps?):\/\//;
-regexTrim=new RegExp("^[\\s]*(['\"]?)("+_469+")\\1[\\s]*?$");
+var _46a,str="",url="",_46d="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
+var _46e=new RegExp("url\\(\\s*("+_46d+")\\s*\\)");
+var _46f=/(file|https?|ftps?):\/\//;
+regexTrim=new RegExp("^[\\s]*(['\"]?)("+_46d+")\\1[\\s]*?$");
 if(dojo.render.html.ie55||dojo.render.html.ie60){
-var _46c=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_469+")['\"]");
-while(_466=_46c.exec(_464)){
-url=_466[2].replace(regexTrim,"$2");
-if(!_46b.exec(url)){
+var _470=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_46d+")['\"]");
+while(_46a=_470.exec(_468)){
+url=_46a[2].replace(regexTrim,"$2");
+if(!_46f.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_464.substring(0,_466.index)+"AlphaImageLoader("+_466[1]+"src='"+url+"'";
-_464=_464.substr(_466.index+_466[0].length);
+str+=_468.substring(0,_46a.index)+"AlphaImageLoader("+_46a[1]+"src='"+url+"'";
+_468=_468.substr(_46a.index+_46a[0].length);
 }
-_464=str+_464;
+_468=str+_468;
 str="";
 }
-while(_466=_46a.exec(_464)){
-url=_466[1].replace(regexTrim,"$2");
-if(!_46b.exec(url)){
+while(_46a=_46e.exec(_468)){
+url=_46a[1].replace(regexTrim,"$2");
+if(!_46f.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_464.substring(0,_466.index)+"url("+url+")";
-_464=_464.substr(_466.index+_466[0].length);
+str+=_468.substring(0,_46a.index)+"url("+url+")";
+_468=_468.substr(_46a.index+_46a[0].length);
 }
-return str+_464;
+return str+_468;
 };
-dojo.html.setActiveStyleSheet=function(_46d){
+dojo.html.setActiveStyleSheet=function(_471){
 var i=0,a,els=dojo.doc().getElementsByTagName("link");
 while(a=els[i++]){
 if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){
 a.disabled=true;
-if(a.getAttribute("title")==_46d){
+if(a.getAttribute("title")==_471){
 a.disabled=false;
 }
 }
@@ -60825,9 +51418,9 @@
 };
 dojo.html.applyBrowserClass=function(node){
 var drh=dojo.render.html;
-var _479={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
-for(var p in _479){
-if(_479[p]){
+var _47d={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
+for(var p in _47d){
+if(_47d[p]){
 dojo.html.addClass(node,p);
 }
 }
@@ -60837,67 +51430,67 @@
 dojo.widget._cssStrings={};
 dojo.widget._templateCache={};
 dojo.widget.defaultStrings={dojoRoot:dojo.hostenv.getBaseScriptUri(),dojoWidgetModuleUri:dojo.uri.moduleUri("dojo.widget"),baseScriptUri:dojo.hostenv.getBaseScriptUri()};
-dojo.widget.fillFromTemplateCache=function(obj,_47c,_47d,_47e){
-var _47f=_47c||obj.templatePath;
-var _480=dojo.widget._templateCache;
-if(!_47f&&!obj["widgetType"]){
+dojo.widget.fillFromTemplateCache=function(obj,_480,_481,_482){
+var _483=_480||obj.templatePath;
+var _484=dojo.widget._templateCache;
+if(!_483&&!obj["widgetType"]){
 do{
-var _481="__dummyTemplate__"+dojo.widget._templateCache.dummyCount++;
-}while(_480[_481]);
-obj.widgetType=_481;
+var _485="__dummyTemplate__"+dojo.widget._templateCache.dummyCount++;
+}while(_484[_485]);
+obj.widgetType=_485;
 }
-var wt=_47f?_47f.toString():obj.widgetType;
-var ts=_480[wt];
+var wt=_483?_483.toString():obj.widgetType;
+var ts=_484[wt];
 if(!ts){
-_480[wt]={"string":null,"node":null};
-if(_47e){
+_484[wt]={"string":null,"node":null};
+if(_482){
 ts={};
 }else{
-ts=_480[wt];
+ts=_484[wt];
 }
 }
-if((!obj.templateString)&&(!_47e)){
-obj.templateString=_47d||ts["string"];
+if((!obj.templateString)&&(!_482)){
+obj.templateString=_481||ts["string"];
 }
 if(obj.templateString){
 obj.templateString=this._sanitizeTemplateString(obj.templateString);
 }
-if((!obj.templateNode)&&(!_47e)){
+if((!obj.templateNode)&&(!_482)){
 obj.templateNode=ts["node"];
 }
-if((!obj.templateNode)&&(!obj.templateString)&&(_47f)){
-var _484=this._sanitizeTemplateString(dojo.hostenv.getText(_47f));
-obj.templateString=_484;
-if(!_47e){
-_480[wt]["string"]=_484;
+if((!obj.templateNode)&&(!obj.templateString)&&(_483)){
+var _488=this._sanitizeTemplateString(dojo.hostenv.getText(_483));
+obj.templateString=_488;
+if(!_482){
+_484[wt]["string"]=_488;
 }
 }
-if((!ts["string"])&&(!_47e)){
+if((!ts["string"])&&(!_482)){
 ts.string=obj.templateString;
 }
 };
-dojo.widget._sanitizeTemplateString=function(_485){
-if(_485){
-_485=_485.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
-var _486=_485.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
-if(_486){
-_485=_486[1];
+dojo.widget._sanitizeTemplateString=function(_489){
+if(_489){
+_489=_489.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
+var _48a=_489.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+if(_48a){
+_489=_48a[1];
 }
 }else{
-_485="";
+_489="";
 }
-return _485;
+return _489;
 };
 dojo.widget._templateCache.dummyCount=0;
 dojo.widget.attachProperties=["dojoAttachPoint","id"];
 dojo.widget.eventAttachProperty="dojoAttachEvent";
 dojo.widget.onBuildProperty="dojoOnBuild";
 dojo.widget.waiNames=["waiRole","waiState"];
-dojo.widget.wai={waiRole:{name:"waiRole","namespace":"http://www.w3.org/TR/xhtml2",alias:"x2",prefix:"wairole:"},waiState:{name:"waiState","namespace":"http://www.w3.org/2005/07/aaa",alias:"aaa",prefix:""},setAttr:function(node,ns,attr,_48a){
+dojo.widget.wai={waiRole:{name:"waiRole","namespace":"http://www.w3.org/TR/xhtml2",alias:"x2",prefix:"wairole:"},waiState:{name:"waiState","namespace":"http://www.w3.org/2005/07/aaa",alias:"aaa",prefix:""},setAttr:function(node,ns,attr,_48e){
 if(dojo.render.html.ie){
-node.setAttribute(this[ns].alias+":"+attr,this[ns].prefix+_48a);
+node.setAttribute(this[ns].alias+":"+attr,this[ns].prefix+_48e);
 }else{
-node.setAttributeNS(this[ns]["namespace"],attr,this[ns].prefix+_48a);
+node.setAttributeNS(this[ns]["namespace"],attr,this[ns].prefix+_48e);
 }
 },getAttr:function(node,ns,attr){
 if(dojo.render.html.ie){
@@ -60906,119 +51499,119 @@
 return node.getAttributeNS(this[ns]["namespace"],attr);
 }
 },removeAttr:function(node,ns,attr){
-var _491=true;
+var _495=true;
 if(dojo.render.html.ie){
-_491=node.removeAttribute(this[ns].alias+":"+attr);
+_495=node.removeAttribute(this[ns].alias+":"+attr);
 }else{
 node.removeAttributeNS(this[ns]["namespace"],attr);
 }
-return _491;
+return _495;
 }};
-dojo.widget.attachTemplateNodes=function(_492,_493,_494){
-var _495=dojo.dom.ELEMENT_NODE;
+dojo.widget.attachTemplateNodes=function(_496,_497,_498){
+var _499=dojo.dom.ELEMENT_NODE;
 function trim(str){
 return str.replace(/^\s+|\s+$/g,"");
 }
-if(!_492){
-_492=_493.domNode;
+if(!_496){
+_496=_497.domNode;
 }
-if(_492.nodeType!=_495){
+if(_496.nodeType!=_499){
 return;
 }
-var _497=_492.all||_492.getElementsByTagName("*");
-var _498=_493;
-for(var x=-1;x<_497.length;x++){
-var _49a=(x==-1)?_492:_497[x];
-var _49b=[];
-if(!_493.widgetsInTemplate||!_49a.getAttribute("dojoType")){
+var _49b=_496.all||_496.getElementsByTagName("*");
+var _49c=_497;
+for(var x=-1;x<_49b.length;x++){
+var _49e=(x==-1)?_496:_49b[x];
+var _49f=[];
+if(!_497.widgetsInTemplate||!_49e.getAttribute("dojoType")){
 for(var y=0;y<this.attachProperties.length;y++){
-var _49d=_49a.getAttribute(this.attachProperties[y]);
-if(_49d){
-_49b=_49d.split(";");
-for(var z=0;z<_49b.length;z++){
-if(dojo.lang.isArray(_493[_49b[z]])){
-_493[_49b[z]].push(_49a);
+var _4a1=_49e.getAttribute(this.attachProperties[y]);
+if(_4a1){
+_49f=_4a1.split(";");
+for(var z=0;z<_49f.length;z++){
+if(dojo.lang.isArray(_497[_49f[z]])){
+_497[_49f[z]].push(_49e);
 }else{
-_493[_49b[z]]=_49a;
+_497[_49f[z]]=_49e;
 }
 }
 break;
 }
 }
-var _49f=_49a.getAttribute(this.eventAttachProperty);
-if(_49f){
-var evts=_49f.split(";");
+var _4a3=_49e.getAttribute(this.eventAttachProperty);
+if(_4a3){
+var evts=_4a3.split(";");
 for(var y=0;y<evts.length;y++){
 if((!evts[y])||(!evts[y].length)){
 continue;
 }
-var _4a1=null;
+var _4a5=null;
 var tevt=trim(evts[y]);
 if(evts[y].indexOf(":")>=0){
-var _4a3=tevt.split(":");
-tevt=trim(_4a3[0]);
-_4a1=trim(_4a3[1]);
+var _4a7=tevt.split(":");
+tevt=trim(_4a7[0]);
+_4a5=trim(_4a7[1]);
 }
-if(!_4a1){
-_4a1=tevt;
+if(!_4a5){
+_4a5=tevt;
 }
 var tf=function(){
-var ntf=new String(_4a1);
+var ntf=new String(_4a5);
 return function(evt){
-if(_498[ntf]){
-_498[ntf](dojo.event.browser.fixEvent(evt,this));
+if(_49c[ntf]){
+_49c[ntf](dojo.event.browser.fixEvent(evt,this));
 }
 };
 }();
-dojo.event.browser.addListener(_49a,tevt,tf,false,true);
+dojo.event.browser.addListener(_49e,tevt,tf,false,true);
 }
 }
-for(var y=0;y<_494.length;y++){
-var _4a7=_49a.getAttribute(_494[y]);
-if((_4a7)&&(_4a7.length)){
-var _4a1=null;
-var _4a8=_494[y].substr(4);
-_4a1=trim(_4a7);
-var _4a9=[_4a1];
-if(_4a1.indexOf(";")>=0){
-_4a9=dojo.lang.map(_4a1.split(";"),trim);
+for(var y=0;y<_498.length;y++){
+var _4ab=_49e.getAttribute(_498[y]);
+if((_4ab)&&(_4ab.length)){
+var _4a5=null;
+var _4ac=_498[y].substr(4);
+_4a5=trim(_4ab);
+var _4ad=[_4a5];
+if(_4a5.indexOf(";")>=0){
+_4ad=dojo.lang.map(_4a5.split(";"),trim);
 }
-for(var z=0;z<_4a9.length;z++){
-if(!_4a9[z].length){
+for(var z=0;z<_4ad.length;z++){
+if(!_4ad[z].length){
 continue;
 }
 var tf=function(){
-var ntf=new String(_4a9[z]);
+var ntf=new String(_4ad[z]);
 return function(evt){
-if(_498[ntf]){
-_498[ntf](dojo.event.browser.fixEvent(evt,this));
+if(_49c[ntf]){
+_49c[ntf](dojo.event.browser.fixEvent(evt,this));
 }
 };
 }();
-dojo.event.browser.addListener(_49a,_4a8,tf,false,true);
+dojo.event.browser.addListener(_49e,_4ac,tf,false,true);
 }
 }
 }
 }
-var _4ac=_49a.getAttribute(this.templateProperty);
-if(_4ac){
-_493[_4ac]=_49a;
+var _4b0=_49e.getAttribute(this.templateProperty);
+if(_4b0){
+_497[_4b0]=_49e;
 }
 dojo.lang.forEach(dojo.widget.waiNames,function(name){
 var wai=dojo.widget.wai[name];
-var val=_49a.getAttribute(wai.name);
+var val=_49e.getAttribute(wai.name);
 if(val){
 if(val.indexOf("-")==-1){
-dojo.widget.wai.setAttr(_49a,wai.name,"role",val);
+dojo.widget.wai.setAttr(_49e,wai.name,"role",val);
 }else{
-var _4b0=val.split("-");
-dojo.widget.wai.setAttr(_49a,wai.name,_4b0[0],_4b0[1]);
+var _4b4=val.split("-");
+dojo.widget.wai.setAttr(_49e,wai.name,_4b4[0],_4b4[1]);
 }
 }
 },this);
-var _4b1=_49a.getAttribute(this.onBuildProperty);
-if(_4b1){
-eval("var node = baseNode; var widget = targetObj; "+_4b1);
+var _4b5=_49e.getAttribute(this.onBuildProperty);
+if(_4b5){
+eval("var node = baseNode; var widget = targetObj; "+_4b5);
 }
 }
 };
@@ -61044,23 +51637,23 @@
 if((arguments.length>0)&&(typeof arguments[0]=="object")){
 this.create(arguments[0]);
 }
-},{templateNode:null,templateString:null,templateCssString:null,preventClobber:false,domNode:null,containerNode:null,widgetsInTemplate:false,addChild:function(_4b9,_4ba,pos,ref,_4bd){
+},{templateNode:null,templateString:null,templateCssString:null,preventClobber:false,domNode:null,containerNode:null,widgetsInTemplate:false,addChild:function(_4bd,_4be,pos,ref,_4c1){
 if(!this.isContainer){
 dojo.debug("dojo.widget.DomWidget.addChild() attempted on non-container widget");
 return null;
 }else{
-if(_4bd==undefined){
-_4bd=this.children.length;
+if(_4c1==undefined){
+_4c1=this.children.length;
 }
-this.addWidgetAsDirectChild(_4b9,_4ba,pos,ref,_4bd);
-this.registerChild(_4b9,_4bd);
+this.addWidgetAsDirectChild(_4bd,_4be,pos,ref,_4c1);
+this.registerChild(_4bd,_4c1);
 }
-return _4b9;
-},addWidgetAsDirectChild:function(_4be,_4bf,pos,ref,_4c2){
-if((!this.containerNode)&&(!_4bf)){
+return _4bd;
+},addWidgetAsDirectChild:function(_4c2,_4c3,pos,ref,_4c6){
+if((!this.containerNode)&&(!_4c3)){
 this.containerNode=this.domNode;
 }
-var cn=(_4bf)?_4bf:this.containerNode;
+var cn=(_4c3)?_4c3:this.containerNode;
 if(!pos){
 pos="after";
 }
@@ -61070,38 +51663,38 @@
 }
 ref=cn.lastChild;
 }
-if(!_4c2){
-_4c2=0;
+if(!_4c6){
+_4c6=0;
 }
-_4be.domNode.setAttribute("dojoinsertionindex",_4c2);
+_4c2.domNode.setAttribute("dojoinsertionindex",_4c6);
 if(!ref){
-cn.appendChild(_4be.domNode);
+cn.appendChild(_4c2.domNode);
 }else{
 if(pos=="insertAtIndex"){
-dojo.dom.insertAtIndex(_4be.domNode,ref.parentNode,_4c2);
+dojo.dom.insertAtIndex(_4c2.domNode,ref.parentNode,_4c6);
 }else{
 if((pos=="after")&&(ref===cn.lastChild)){
-cn.appendChild(_4be.domNode);
+cn.appendChild(_4c2.domNode);
 }else{
-dojo.dom.insertAtPosition(_4be.domNode,cn,pos);
+dojo.dom.insertAtPosition(_4c2.domNode,cn,pos);
 }
 }
 }
-},registerChild:function(_4c4,_4c5){
-_4c4.dojoInsertionIndex=_4c5;
+},registerChild:function(_4c8,_4c9){
+_4c8.dojoInsertionIndex=_4c9;
 var idx=-1;
 for(var i=0;i<this.children.length;i++){
-if(this.children[i].dojoInsertionIndex<=_4c5){
+if(this.children[i].dojoInsertionIndex<=_4c9){
 idx=i;
 }
 }
-this.children.splice(idx+1,0,_4c4);
-_4c4.parent=this;
-_4c4.addedTo(this,idx+1);
-delete dojo.widget.manager.topWidgets[_4c4.widgetId];
-},removeChild:function(_4c8){
-dojo.dom.removeNode(_4c8.domNode);
-return dojo.widget.DomWidget.superclass.removeChild.call(this,_4c8);
+this.children.splice(idx+1,0,_4c8);
+_4c8.parent=this;
+_4c8.addedTo(this,idx+1);
+delete dojo.widget.manager.topWidgets[_4c8.widgetId];
+},removeChild:function(_4cc){
+dojo.dom.removeNode(_4cc.domNode);
+return dojo.widget.DomWidget.superclass.removeChild.call(this,_4cc);
 },getFragNodeRef:function(frag){
 if(!frag){
 return null;
@@ -61110,91 +51703,91 @@
 dojo.raise("Error: no frag for widget type "+this.getNamespacedType()+", id "+this.widgetId+" (maybe a widget has set it's type incorrectly)");
 }
 return frag[this.getNamespacedType()]["nodeRef"];
-},postInitialize:function(args,frag,_4cc){
-var _4cd=this.getFragNodeRef(frag);
-if(_4cc&&(_4cc.snarfChildDomOutput||!_4cd)){
-_4cc.addWidgetAsDirectChild(this,"","insertAtIndex","",args["dojoinsertionindex"],_4cd);
+},postInitialize:function(args,frag,_4d0){
+var _4d1=this.getFragNodeRef(frag);
+if(_4d0&&(_4d0.snarfChildDomOutput||!_4d1)){
+_4d0.addWidgetAsDirectChild(this,"","insertAtIndex","",args["dojoinsertionindex"],_4d1);
 }else{
-if(_4cd){
-if(this.domNode&&(this.domNode!==_4cd)){
-this._sourceNodeRef=dojo.dom.replaceNode(_4cd,this.domNode);
+if(_4d1){
+if(this.domNode&&(this.domNode!==_4d1)){
+this._sourceNodeRef=dojo.dom.replaceNode(_4d1,this.domNode);
 }
 }
 }
-if(_4cc){
-_4cc.registerChild(this,args.dojoinsertionindex);
+if(_4d0){
+_4d0.registerChild(this,args.dojoinsertionindex);
 }else{
 dojo.widget.manager.topWidgets[this.widgetId]=this;
 }
 if(this.widgetsInTemplate){
-var _4ce=new dojo.xml.Parse();
-var _4cf;
-var _4d0=this.domNode.getElementsByTagName("*");
-for(var i=0;i<_4d0.length;i++){
-if(_4d0[i].getAttribute("dojoAttachPoint")=="subContainerWidget"){
-_4cf=_4d0[i];
+var _4d2=new dojo.xml.Parse();
+var _4d3;
+var _4d4=this.domNode.getElementsByTagName("*");
+for(var i=0;i<_4d4.length;i++){
+if(_4d4[i].getAttribute("dojoAttachPoint")=="subContainerWidget"){
+_4d3=_4d4[i];
 }
-if(_4d0[i].getAttribute("dojoType")){
-_4d0[i].setAttribute("isSubWidget",true);
+if(_4d4[i].getAttribute("dojoType")){
+_4d4[i].setAttribute("isSubWidget",true);
 }
 }
 if(this.isContainer&&!this.containerNode){
-if(_4cf){
+if(_4d3){
 var src=this.getFragNodeRef(frag);
 if(src){
-dojo.dom.moveChildren(src,_4cf);
+dojo.dom.moveChildren(src,_4d3);
 frag["dojoDontFollow"]=true;
 }
 }else{
 dojo.debug("No subContainerWidget node can be found in template file for widget "+this);
 }
 }
-var _4d3=_4ce.parseElement(this.domNode,null,true);
-dojo.widget.getParser().createSubComponents(_4d3,this);
-var _4d4=[];
-var _4d5=[this];
+var _4d7=_4d2.parseElement(this.domNode,null,true);
+dojo.widget.getParser().createSubComponents(_4d7,this);
+var _4d8=[];
+var _4d9=[this];
 var w;
-while((w=_4d5.pop())){
+while((w=_4d9.pop())){
 for(var i=0;i<w.children.length;i++){
-var _4d7=w.children[i];
-if(_4d7._processedSubWidgets||!_4d7.extraArgs["issubwidget"]){
+var _4db=w.children[i];
+if(_4db._processedSubWidgets||!_4db.extraArgs["issubwidget"]){
 continue;
 }
-_4d4.push(_4d7);
-if(_4d7.isContainer){
-_4d5.push(_4d7);
+_4d8.push(_4db);
+if(_4db.isContainer){
+_4d9.push(_4db);
 }
 }
 }
-for(var i=0;i<_4d4.length;i++){
-var _4d8=_4d4[i];
-if(_4d8._processedSubWidgets){
+for(var i=0;i<_4d8.length;i++){
+var _4dc=_4d8[i];
+if(_4dc._processedSubWidgets){
 dojo.debug("This should not happen: widget._processedSubWidgets is already true!");
 return;
 }
-_4d8._processedSubWidgets=true;
-if(_4d8.extraArgs["dojoattachevent"]){
-var evts=_4d8.extraArgs["dojoattachevent"].split(";");
+_4dc._processedSubWidgets=true;
+if(_4dc.extraArgs["dojoattachevent"]){
+var evts=_4dc.extraArgs["dojoattachevent"].split(";");
 for(var j=0;j<evts.length;j++){
-var _4db=null;
+var _4df=null;
 var tevt=dojo.string.trim(evts[j]);
 if(tevt.indexOf(":")>=0){
-var _4dd=tevt.split(":");
-tevt=dojo.string.trim(_4dd[0]);
-_4db=dojo.string.trim(_4dd[1]);
+var _4e1=tevt.split(":");
+tevt=dojo.string.trim(_4e1[0]);
+_4df=dojo.string.trim(_4e1[1]);
 }
-if(!_4db){
-_4db=tevt;
+if(!_4df){
+_4df=tevt;
 }
-if(dojo.lang.isFunction(_4d8[tevt])){
-dojo.event.kwConnect({srcObj:_4d8,srcFunc:tevt,targetObj:this,targetFunc:_4db});
+if(dojo.lang.isFunction(_4dc[tevt])){
+dojo.event.kwConnect({srcObj:_4dc,srcFunc:tevt,targetObj:this,targetFunc:_4df});
 }else{
-alert(tevt+" is not a function in widget "+_4d8);
+alert(tevt+" is not a function in widget "+_4dc);
 }
 }
 }
-if(_4d8.extraArgs["dojoattachpoint"]){
-this[_4d8.extraArgs["dojoattachpoint"]]=_4d8;
+if(_4dc.extraArgs["dojoattachpoint"]){
+this[_4dc.extraArgs["dojoattachpoint"]]=_4dc;
 }
 }
 }
@@ -61206,16 +51799,16 @@
 if(args["templatecsspath"]){
 args["templateCssPath"]=args["templatecsspath"];
 }
-var _4e1=args["templateCssPath"]||this.templateCssPath;
-if(_4e1&&!dojo.widget._cssFiles[_4e1.toString()]){
-if((!this.templateCssString)&&(_4e1)){
-this.templateCssString=dojo.hostenv.getText(_4e1);
+var _4e5=args["templateCssPath"]||this.templateCssPath;
+if(_4e5&&!dojo.widget._cssFiles[_4e5.toString()]){
+if((!this.templateCssString)&&(_4e5)){
+this.templateCssString=dojo.hostenv.getText(_4e5);
 this.templateCssPath=null;
 }
-dojo.widget._cssFiles[_4e1.toString()]=true;
+dojo.widget._cssFiles[_4e5.toString()]=true;
 }
 if((this["templateCssString"])&&(!dojo.widget._cssStrings[this.templateCssString])){
-dojo.html.insertCssText(this.templateCssString,null,_4e1);
+dojo.html.insertCssText(this.templateCssString,null,_4e5);
 dojo.widget._cssStrings[this.templateCssString]=true;
 }
 if((!this.preventClobber)&&((this.templatePath)||(this.templateNode)||((this["templateString"])&&(this.templateString.length))||((typeof ts!="undefined")&&((ts["string"])||(ts["node"]))))){
@@ -61225,13 +51818,13 @@
 }
 this.fillInTemplate(args,frag);
 },buildFromTemplate:function(args,frag){
-var _4e4=false;
+var _4e8=false;
 if(args["templatepath"]){
 args["templatePath"]=args["templatepath"];
 }
-dojo.widget.fillFromTemplateCache(this,args["templatePath"],null,_4e4);
+dojo.widget.fillFromTemplateCache(this,args["templatePath"],null,_4e8);
 var ts=dojo.widget._templateCache[this.templatePath?this.templatePath.toString():this.widgetType];
-if((ts)&&(!_4e4)){
+if((ts)&&(!_4e8)){
 if(!this.templateString.length){
 this.templateString=ts["string"];
 }
@@ -61239,43 +51832,43 @@
 this.templateNode=ts["node"];
 }
 }
-var _4e6=false;
+var _4ea=false;
 var node=null;
 var tstr=this.templateString;
 if((!this.templateNode)&&(this.templateString)){
-_4e6=this.templateString.match(/\$\{([^\}]+)\}/g);
-if(_4e6){
+_4ea=this.templateString.match(/\$\{([^\}]+)\}/g);
+if(_4ea){
 var hash=this.strings||{};
 for(var key in dojo.widget.defaultStrings){
 if(dojo.lang.isUndefined(hash[key])){
 hash[key]=dojo.widget.defaultStrings[key];
 }
 }
-for(var i=0;i<_4e6.length;i++){
-var key=_4e6[i];
+for(var i=0;i<_4ea.length;i++){
+var key=_4ea[i];
 key=key.substring(2,key.length-1);
 var kval=(key.substring(0,5)=="this.")?dojo.lang.getObjPathValue(key.substring(5),this):hash[key];
-var _4ed;
+var _4f1;
 if((kval)||(dojo.lang.isString(kval))){
-_4ed=new String((dojo.lang.isFunction(kval))?kval.call(this,key,this.templateString):kval);
-while(_4ed.indexOf("\"")>-1){
-_4ed=_4ed.replace("\"","&quot;");
+_4f1=new String((dojo.lang.isFunction(kval))?kval.call(this,key,this.templateString):kval);
+while(_4f1.indexOf("\"")>-1){
+_4f1=_4f1.replace("\"","&quot;");
 }
-tstr=tstr.replace(_4e6[i],_4ed);
+tstr=tstr.replace(_4ea[i],_4f1);
 }
 }
 }else{
 this.templateNode=this.createNodesFromText(this.templateString,true)[0];
-if(!_4e4){
+if(!_4e8){
 ts.node=this.templateNode;
 }
 }
 }
-if((!this.templateNode)&&(!_4e6)){
+if((!this.templateNode)&&(!_4ea)){
 dojo.debug("DomWidget.buildFromTemplate: could not create template");
 return false;
 }else{
-if(!_4e6){
+if(!_4ea){
 node=this.templateNode.cloneNode(true);
 if(!node){
 return false;
@@ -61292,14 +51885,14 @@
 dojo.dom.moveChildren(src,this.containerNode);
 }
 }
-},attachTemplateNodes:function(_4ef,_4f0){
-if(!_4ef){
-_4ef=this.domNode;
+},attachTemplateNodes:function(_4f3,_4f4){
+if(!_4f3){
+_4f3=this.domNode;
 }
-if(!_4f0){
-_4f0=this;
+if(!_4f4){
+_4f4=this;
 }
-return dojo.widget.attachTemplateNodes(_4ef,_4f0,dojo.widget.getDojoEventsFromStr(this.templateString));
+return dojo.widget.attachTemplateNodes(_4f3,_4f4,dojo.widget.getDojoEventsFromStr(this.templateString));
 },fillInTemplate:function(){
 },destroyRendering:function(){
 try{
@@ -61319,10 +51912,10 @@
 dojo.unimplemented("dojo.widget.DomWidget.createNodesFromText");
 }});
 dojo.provide("dojo.html.display");
-dojo.html._toggle=function(node,_4f2,_4f3){
+dojo.html._toggle=function(node,_4f6,_4f7){
 node=dojo.byId(node);
-_4f3(node,!_4f2(node));
-return _4f2(node);
+_4f7(node,!_4f6(node));
+return _4f6(node);
 };
 dojo.html.show=function(node){
 node=dojo.byId(node);
@@ -61341,8 +51934,8 @@
 }
 dojo.html.setStyle(node,"display","none");
 };
-dojo.html.setShowing=function(node,_4f8){
-dojo.html[(_4f8?"show":"hide")](node);
+dojo.html.setShowing=function(node,_4fc){
+dojo.html[(_4fc?"show":"hide")](node);
 };
 dojo.html.isShowing=function(node){
 return (dojo.html.getStyleProperty(node,"display")!="none");
@@ -61358,8 +51951,8 @@
 return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
 }
 };
-dojo.html.setDisplay=function(node,_4fe){
-dojo.html.setStyle(node,"display",((_4fe instanceof String||typeof _4fe=="string")?_4fe:(_4fe?dojo.html.suggestDisplayByTagName(node):"none")));
+dojo.html.setDisplay=function(node,_502){
+dojo.html.setStyle(node,"display",((_502 instanceof String||typeof _502=="string")?_502:(_502?dojo.html.suggestDisplayByTagName(node):"none")));
 };
 dojo.html.isDisplayed=function(node){
 return (dojo.html.getComputedStyle(node,"display")!="none");
@@ -61367,8 +51960,8 @@
 dojo.html.toggleDisplay=function(node){
 return dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
 };
-dojo.html.setVisibility=function(node,_502){
-dojo.html.setStyle(node,"visibility",((_502 instanceof String||typeof _502=="string")?_502:(_502?"visible":"hidden")));
+dojo.html.setVisibility=function(node,_506){
+dojo.html.setStyle(node,"visibility",((_506 instanceof String||typeof _506=="string")?_506:(_506?"visible":"hidden")));
 };
 dojo.html.isVisible=function(node){
 return (dojo.html.getComputedStyle(node,"visibility")!="hidden");
@@ -61376,20 +51969,20 @@
 dojo.html.toggleVisibility=function(node){
 return dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
 };
-dojo.html.setOpacity=function(node,_506,_507){
+dojo.html.setOpacity=function(node,_50a,_50b){
 node=dojo.byId(node);
 var h=dojo.render.html;
-if(!_507){
-if(_506>=1){
+if(!_50b){
+if(_50a>=1){
 if(h.ie){
 dojo.html.clearOpacity(node);
 return;
 }else{
-_506=0.999999;
+_50a=0.999999;
 }
 }else{
-if(_506<0){
-_506=0;
+if(_50a<0){
+_50a=0;
 }
 }
 }
@@ -61397,20 +51990,20 @@
 if(node.nodeName.toLowerCase()=="tr"){
 var tds=node.getElementsByTagName("td");
 for(var x=0;x<tds.length;x++){
-tds[x].style.filter="Alpha(Opacity="+_506*100+")";
+tds[x].style.filter="Alpha(Opacity="+_50a*100+")";
 }
 }
-node.style.filter="Alpha(Opacity="+_506*100+")";
+node.style.filter="Alpha(Opacity="+_50a*100+")";
 }else{
 if(h.moz){
-node.style.opacity=_506;
-node.style.MozOpacity=_506;
+node.style.opacity=_50a;
+node.style.MozOpacity=_50a;
 }else{
 if(h.safari){
-node.style.opacity=_506;
-node.style.KhtmlOpacity=_506;
+node.style.opacity=_50a;
+node.style.KhtmlOpacity=_50a;
 }else{
-node.style.opacity=_506;
+node.style.opacity=_50a;
 }
 }
 }
@@ -61457,73 +52050,73 @@
 if(!node){
 return 0;
 }
-var _513=0;
+var _517=0;
 while(node){
 if(dojo.html.getComputedStyle(node,"position")=="fixed"){
 return 0;
 }
 var val=node[prop];
 if(val){
-_513+=val-0;
+_517+=val-0;
 if(node==dojo.body()){
 break;
 }
 }
 node=node.parentNode;
 }
-return _513;
+return _517;
 };
-dojo.html.setStyleAttributes=function(node,_516){
+dojo.html.setStyleAttributes=function(node,_51a){
 node=dojo.byId(node);
-var _517=_516.replace(/(;)?\s*$/,"").split(";");
-for(var i=0;i<_517.length;i++){
-var _519=_517[i].split(":");
-var name=_519[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
-var _51b=_519[1].replace(/\s*$/,"").replace(/^\s*/,"");
+var _51b=_51a.replace(/(;)?\s*$/,"").split(";");
+for(var i=0;i<_51b.length;i++){
+var _51d=_51b[i].split(":");
+var name=_51d[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
+var _51f=_51d[1].replace(/\s*$/,"").replace(/^\s*/,"");
 switch(name){
 case "opacity":
-dojo.html.setOpacity(node,_51b);
+dojo.html.setOpacity(node,_51f);
 break;
 case "content-height":
-dojo.html.setContentBox(node,{height:_51b});
+dojo.html.setContentBox(node,{height:_51f});
 break;
 case "content-width":
-dojo.html.setContentBox(node,{width:_51b});
+dojo.html.setContentBox(node,{width:_51f});
 break;
 case "outer-height":
-dojo.html.setMarginBox(node,{height:_51b});
+dojo.html.setMarginBox(node,{height:_51f});
 break;
 case "outer-width":
-dojo.html.setMarginBox(node,{width:_51b});
+dojo.html.setMarginBox(node,{width:_51f});
 break;
 default:
-node.style[dojo.html.toCamelCase(name)]=_51b;
+node.style[dojo.html.toCamelCase(name)]=_51f;
 }
 }
 };
 dojo.html.boxSizing={MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PADDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
-dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_51d,_51e){
+dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_521,_522){
 node=dojo.byId(node,node.ownerDocument);
 var ret={x:0,y:0};
 var bs=dojo.html.boxSizing;
-if(!_51e){
-_51e=bs.CONTENT_BOX;
+if(!_522){
+_522=bs.CONTENT_BOX;
 }
-var _521=2;
-var _522;
-switch(_51e){
+var _525=2;
+var _526;
+switch(_522){
 case bs.MARGIN_BOX:
-_522=3;
+_526=3;
 break;
 case bs.BORDER_BOX:
-_522=2;
+_526=2;
 break;
 case bs.PADDING_BOX:
 default:
-_522=1;
+_526=1;
 break;
 case bs.CONTENT_BOX:
-_522=0;
+_526=0;
 break;
 }
 var h=dojo.render.html;
@@ -61535,7 +52128,7 @@
 }
 }else{
 if(document.getBoxObjectFor){
-_521=1;
+_525=1;
 try{
 var bo=document.getBoxObjectFor(node);
 ret.x=bo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
@@ -61545,11 +52138,11 @@
 }
 }else{
 if(node["offsetParent"]){
-var _526;
+var _52a;
 if((h.safari)&&(node.style.getPropertyValue("position")=="absolute")&&(node.parentNode==db)){
-_526=db;
+_52a=db;
 }else{
-_526=db.parentNode;
+_52a=db.parentNode;
 }
 if(node.parentNode!=db){
 var nd=node;
@@ -61559,16 +52152,16 @@
 ret.x-=dojo.html.sumAncestorProperties(nd,"scrollLeft");
 ret.y-=dojo.html.sumAncestorProperties(nd,"scrollTop");
 }
-var _528=node;
+var _52c=node;
 do{
-var n=_528["offsetLeft"];
+var n=_52c["offsetLeft"];
 if(!h.opera||n>0){
 ret.x+=isNaN(n)?0:n;
 }
-var m=_528["offsetTop"];
+var m=_52c["offsetTop"];
 ret.y+=isNaN(m)?0:m;
-_528=_528.offsetParent;
-}while((_528!=_526)&&(_528!=null));
+_52c=_52c.offsetParent;
+}while((_52c!=_52a)&&(_52c!=null));
 }else{
 if(node["x"]&&node["y"]){
 ret.x+=isNaN(node.x)?0:node.x;
@@ -61577,22 +52170,22 @@
 }
 }
 }
-if(_51d){
-var _52b=dojo.html.getScroll();
-ret.y+=_52b.top;
-ret.x+=_52b.left;
+if(_521){
+var _52f=dojo.html.getScroll();
+ret.y+=_52f.top;
+ret.x+=_52f.left;
 }
-var _52c=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
-if(_521>_522){
-for(var i=_522;i<_521;++i){
-ret.y+=_52c[i](node,"top");
-ret.x+=_52c[i](node,"left");
+var _530=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
+if(_525>_526){
+for(var i=_526;i<_525;++i){
+ret.y+=_530[i](node,"top");
+ret.x+=_530[i](node,"left");
 }
 }else{
-if(_521<_522){
-for(var i=_522;i>_521;--i){
-ret.y-=_52c[i-1](node,"top");
-ret.x-=_52c[i-1](node,"left");
+if(_525<_526){
+for(var i=_526;i>_525;--i){
+ret.y-=_530[i-1](node,"top");
+ret.x-=_530[i-1](node,"left");
 }
 }
 }
@@ -61603,12 +52196,12 @@
 dojo.html.isPositionAbsolute=function(node){
 return (dojo.html.getComputedStyle(node,"position")=="absolute");
 };
-dojo.html._sumPixelValues=function(node,_530,_531){
-var _532=0;
-for(var x=0;x<_530.length;x++){
-_532+=dojo.html.getPixelValue(node,_530[x],_531);
+dojo.html._sumPixelValues=function(node,_534,_535){
+var _536=0;
+for(var x=0;x<_534.length;x++){
+_536+=dojo.html.getPixelValue(node,_534[x],_535);
 }
-return _532;
+return _536;
 };
 dojo.html.getMargin=function(node){
 return {width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(dojo.html.getComputedStyle(node,"position")=="absolute")),height:dojo.html._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComputedStyle(node,"position")=="absolute"))};
@@ -61630,8 +52223,8 @@
 };
 dojo.html.getPadBorder=function(node){
 var pad=dojo.html.getPadding(node);
-var _53f=dojo.html.getBorder(node);
-return {width:pad.width+_53f.width,height:pad.height+_53f.height};
+var _543=dojo.html.getBorder(node);
+return {width:pad.width+_543.width,height:pad.height+_543.height};
 };
 dojo.html.getBoxSizing=function(node){
 var h=dojo.render.html;
@@ -61647,14 +52240,14 @@
 if(arguments.length==0){
 node=document.documentElement;
 }
-var _544;
+var _548;
 if(!h.ie){
-_544=dojo.html.getStyle(node,"-moz-box-sizing");
-if(!_544){
-_544=dojo.html.getStyle(node,"box-sizing");
+_548=dojo.html.getStyle(node,"-moz-box-sizing");
+if(!_548){
+_548=dojo.html.getStyle(node,"box-sizing");
 }
 }
-return (_544?_544:bs.CONTENT_BOX);
+return (_548?_548:bs.CONTENT_BOX);
 }
 };
 dojo.html.isBorderBox=function(node){
@@ -61666,53 +52259,53 @@
 };
 dojo.html.getPaddingBox=function(node){
 var box=dojo.html.getBorderBox(node);
-var _549=dojo.html.getBorder(node);
-return {width:box.width-_549.width,height:box.height-_549.height};
+var _54d=dojo.html.getBorder(node);
+return {width:box.width-_54d.width,height:box.height-_54d.height};
 };
 dojo.html.getContentBox=function(node){
 node=dojo.byId(node);
-var _54b=dojo.html.getPadBorder(node);
-return {width:node.offsetWidth-_54b.width,height:node.offsetHeight-_54b.height};
+var _54f=dojo.html.getPadBorder(node);
+return {width:node.offsetWidth-_54f.width,height:node.offsetHeight-_54f.height};
 };
 dojo.html.setContentBox=function(node,args){
 node=dojo.byId(node);
-var _54e=0;
-var _54f=0;
+var _552=0;
+var _553=0;
 var isbb=dojo.html.isBorderBox(node);
-var _551=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _555=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
 var ret={};
 if(typeof args.width!="undefined"){
-_54e=args.width+_551.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_54e);
+_552=args.width+_555.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_552);
 }
 if(typeof args.height!="undefined"){
-_54f=args.height+_551.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_54f);
+_553=args.height+_555.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_553);
 }
 return ret;
 };
 dojo.html.getMarginBox=function(node){
-var _554=dojo.html.getBorderBox(node);
-var _555=dojo.html.getMargin(node);
-return {width:_554.width+_555.width,height:_554.height+_555.height};
+var _558=dojo.html.getBorderBox(node);
+var _559=dojo.html.getMargin(node);
+return {width:_558.width+_559.width,height:_558.height+_559.height};
 };
 dojo.html.setMarginBox=function(node,args){
 node=dojo.byId(node);
-var _558=0;
-var _559=0;
+var _55c=0;
+var _55d=0;
 var isbb=dojo.html.isBorderBox(node);
-var _55b=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
-var _55c=dojo.html.getMargin(node);
+var _55f=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _560=dojo.html.getMargin(node);
 var ret={};
 if(typeof args.width!="undefined"){
-_558=args.width-_55b.width;
-_558-=_55c.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_558);
+_55c=args.width-_55f.width;
+_55c-=_560.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_55c);
 }
 if(typeof args.height!="undefined"){
-_559=args.height-_55b.height;
-_559-=_55c.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_559);
+_55d=args.height-_55f.height;
+_55d-=_560.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_55d);
 }
 return ret;
 };
@@ -61730,31 +52323,31 @@
 return dojo.html.getContentBox(node);
 }
 };
-dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_561,_562,_563){
-if(_561 instanceof Array||typeof _561=="array"){
+dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_565,_566,_567){
+if(_565 instanceof Array||typeof _565=="array"){
 dojo.deprecated("dojo.html.toCoordinateArray","use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead","0.5");
-while(_561.length<4){
-_561.push(0);
+while(_565.length<4){
+_565.push(0);
 }
-while(_561.length>4){
-_561.pop();
+while(_565.length>4){
+_565.pop();
 }
-var ret={left:_561[0],top:_561[1],width:_561[2],height:_561[3]};
+var ret={left:_565[0],top:_565[1],width:_565[2],height:_565[3]};
 }else{
-if(!_561.nodeType&&!(_561 instanceof String||typeof _561=="string")&&("width" in _561||"height" in _561||"left" in _561||"x" in _561||"top" in _561||"y" in _561)){
-var ret={left:_561.left||_561.x||0,top:_561.top||_561.y||0,width:_561.width||0,height:_561.height||0};
+if(!_565.nodeType&&!(_565 instanceof String||typeof _565=="string")&&("width" in _565||"height" in _565||"left" in _565||"x" in _565||"top" in _565||"y" in _565)){
+var ret={left:_565.left||_565.x||0,top:_565.top||_565.y||0,width:_565.width||0,height:_565.height||0};
 }else{
-var node=dojo.byId(_561);
-var pos=dojo.html.abs(node,_562,_563);
-var _567=dojo.html.getMarginBox(node);
-var ret={left:pos.left,top:pos.top,width:_567.width,height:_567.height};
+var node=dojo.byId(_565);
+var pos=dojo.html.abs(node,_566,_567);
+var _56b=dojo.html.getMarginBox(node);
+var ret={left:pos.left,top:pos.top,width:_56b.width,height:_56b.height};
 }
 }
 ret.x=ret.left;
 ret.y=ret.top;
 return ret;
 };
-dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_569){
+dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_56d){
 return dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"width");
 };
 dojo.html.setMarginBoxHeight=dojo.html.setOuterHeight=function(){
@@ -61766,19 +52359,19 @@
 dojo.html.getMarginBoxHeight=dojo.html.getOuterHeight=function(){
 return dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,null,"height");
 };
-dojo.html.getTotalOffset=function(node,type,_56c){
+dojo.html.getTotalOffset=function(node,type,_570){
 return dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",arguments,null,type);
 };
-dojo.html.getAbsoluteX=function(node,_56e){
+dojo.html.getAbsoluteX=function(node,_572){
 return dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,null,"x");
 };
-dojo.html.getAbsoluteY=function(node,_570){
+dojo.html.getAbsoluteY=function(node,_574){
 return dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,null,"y");
 };
-dojo.html.totalOffsetLeft=function(node,_572){
+dojo.html.totalOffsetLeft=function(node,_576){
 return dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",arguments,null,"left");
 };
-dojo.html.totalOffsetTop=function(node,_574){
+dojo.html.totalOffsetTop=function(node,_578){
 return dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",arguments,null,"top");
 };
 dojo.html.getMarginWidth=function(node){
@@ -61817,15 +52410,15 @@
 dojo.html.getContentBoxHeight=dojo.html.getContentHeight=function(){
 return dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments,null,"height");
 };
-dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_57e){
+dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_582){
 return dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,"width");
 };
-dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_580){
+dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_584){
 return dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments,"height");
 };
 dojo.provide("dojo.html.util");
-dojo.html.getElementWindow=function(_581){
-return dojo.html.getDocumentWindow(_581.ownerDocument);
+dojo.html.getElementWindow=function(_585){
+return dojo.html.getDocumentWindow(_585.ownerDocument);
 };
 dojo.html.getDocumentWindow=function(doc){
 if(dojo.render.html.safari&&!doc._parentWindow){
@@ -61847,49 +52440,49 @@
 };
 dojo.html.gravity=function(node,e){
 node=dojo.byId(node);
-var _589=dojo.html.getCursorPosition(e);
+var _58d=dojo.html.getCursorPosition(e);
 with(dojo.html){
-var _58a=getAbsolutePosition(node,true);
+var _58e=getAbsolutePosition(node,true);
 var bb=getBorderBox(node);
-var _58c=_58a.x+(bb.width/2);
-var _58d=_58a.y+(bb.height/2);
+var _590=_58e.x+(bb.width/2);
+var _591=_58e.y+(bb.height/2);
 }
 with(dojo.html.gravity){
-return ((_589.x<_58c?WEST:EAST)|(_589.y<_58d?NORTH:SOUTH));
+return ((_58d.x<_590?WEST:EAST)|(_58d.y<_591?NORTH:SOUTH));
 }
 };
 dojo.html.gravity.NORTH=1;
 dojo.html.gravity.SOUTH=1<<1;
 dojo.html.gravity.EAST=1<<2;
 dojo.html.gravity.WEST=1<<3;
-dojo.html.overElement=function(_58e,e){
-_58e=dojo.byId(_58e);
-var _590=dojo.html.getCursorPosition(e);
-var bb=dojo.html.getBorderBox(_58e);
-var _592=dojo.html.getAbsolutePosition(_58e,true,dojo.html.boxSizing.BORDER_BOX);
-var top=_592.y;
-var _594=top+bb.height;
-var left=_592.x;
-var _596=left+bb.width;
-return (_590.x>=left&&_590.x<=_596&&_590.y>=top&&_590.y<=_594);
+dojo.html.overElement=function(_592,e){
+_592=dojo.byId(_592);
+var _594=dojo.html.getCursorPosition(e);
+var bb=dojo.html.getBorderBox(_592);
+var _596=dojo.html.getAbsolutePosition(_592,true,dojo.html.boxSizing.BORDER_BOX);
+var top=_596.y;
+var _598=top+bb.height;
+var left=_596.x;
+var _59a=left+bb.width;
+return (_594.x>=left&&_594.x<=_59a&&_594.y>=top&&_594.y<=_598);
 };
 dojo.html.renderedTextContent=function(node){
 node=dojo.byId(node);
-var _598="";
+var _59c="";
 if(node==null){
-return _598;
+return _59c;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-var _59a="unknown";
+var _59e="unknown";
 try{
-_59a=dojo.html.getStyle(node.childNodes[i],"display");
+_59e=dojo.html.getStyle(node.childNodes[i],"display");
 }
 catch(E){
 }
-switch(_59a){
+switch(_59e){
 case "block":
 case "list-item":
 case "run-in":
@@ -61902,17 +52495,17 @@
 case "table-column":
 case "table-cell":
 case "table-caption":
-_598+="\n";
-_598+=dojo.html.renderedTextContent(node.childNodes[i]);
-_598+="\n";
+_59c+="\n";
+_59c+=dojo.html.renderedTextContent(node.childNodes[i]);
+_59c+="\n";
 break;
 case "none":
 break;
 default:
 if(node.childNodes[i].tagName&&node.childNodes[i].tagName.toLowerCase()=="br"){
-_598+="\n";
+_59c+="\n";
 }else{
-_598+=dojo.html.renderedTextContent(node.childNodes[i]);
+_59c+=dojo.html.renderedTextContent(node.childNodes[i]);
 }
 break;
 }
@@ -61921,19 +52514,19 @@
 case 2:
 case 4:
 var text=node.childNodes[i].nodeValue;
-var _59c="unknown";
+var _5a0="unknown";
 try{
-_59c=dojo.html.getStyle(node,"text-transform");
+_5a0=dojo.html.getStyle(node,"text-transform");
 }
 catch(E){
 }
-switch(_59c){
+switch(_5a0){
 case "capitalize":
-var _59d=text.split(" ");
-for(var i=0;i<_59d.length;i++){
-_59d[i]=_59d[i].charAt(0).toUpperCase()+_59d[i].substring(1);
+var _5a1=text.split(" ");
+for(var i=0;i<_5a1.length;i++){
+_5a1[i]=_5a1[i].charAt(0).toUpperCase()+_5a1[i].substring(1);
 }
-text=_59d.join(" ");
+text=_5a1.join(" ");
 break;
 case "uppercase":
 text=text.toUpperCase();
@@ -61944,7 +52537,7 @@
 default:
 break;
 }
-switch(_59c){
+switch(_5a0){
 case "nowrap":
 break;
 case "pre-wrap":
@@ -61955,18 +52548,18 @@
 break;
 default:
 text=text.replace(/\s+/," ");
-if(/\s$/.test(_598)){
+if(/\s$/.test(_59c)){
 text.replace(/^\s/,"");
 }
 break;
 }
-_598+=text;
+_59c+=text;
 break;
 default:
 break;
 }
 }
-return _598;
+return _59c;
 };
 dojo.html.createNodesFromText=function(txt,trim){
 if(trim){
@@ -61975,18 +52568,18 @@
 var tn=dojo.doc().createElement("div");
 tn.style.visibility="hidden";
 dojo.body().appendChild(tn);
-var _5a1="none";
+var _5a5="none";
 if((/^<t[dh][\s\r\n>]/i).test(txt.replace(/^\s+/))){
 txt="<table><tbody><tr>"+txt+"</tr></tbody></table>";
-_5a1="cell";
+_5a5="cell";
 }else{
 if((/^<tr[\s\r\n>]/i).test(txt.replace(/^\s+/))){
 txt="<table><tbody>"+txt+"</tbody></table>";
-_5a1="row";
+_5a5="row";
 }else{
 if((/^<(thead|tbody|tfoot)[\s\r\n>]/i).test(txt.replace(/^\s+/))){
 txt="<table>"+txt+"</table>";
-_5a1="section";
+_5a5="section";
 }
 }
 }
@@ -61994,147 +52587,147 @@
 if(tn["normalize"]){
 tn.normalize();
 }
-var _5a2=null;
-switch(_5a1){
+var _5a6=null;
+switch(_5a5){
 case "cell":
-_5a2=tn.getElementsByTagName("tr")[0];
+_5a6=tn.getElementsByTagName("tr")[0];
 break;
 case "row":
-_5a2=tn.getElementsByTagName("tbody")[0];
+_5a6=tn.getElementsByTagName("tbody")[0];
 break;
 case "section":
-_5a2=tn.getElementsByTagName("table")[0];
+_5a6=tn.getElementsByTagName("table")[0];
 break;
 default:
-_5a2=tn;
+_5a6=tn;
 break;
 }
-var _5a3=[];
-for(var x=0;x<_5a2.childNodes.length;x++){
-_5a3.push(_5a2.childNodes[x].cloneNode(true));
+var _5a7=[];
+for(var x=0;x<_5a6.childNodes.length;x++){
+_5a7.push(_5a6.childNodes[x].cloneNode(true));
 }
 tn.style.display="none";
 dojo.html.destroyNode(tn);
-return _5a3;
+return _5a7;
 };
-dojo.html.placeOnScreen=function(node,_5a6,_5a7,_5a8,_5a9,_5aa,_5ab){
-if(_5a6 instanceof Array||typeof _5a6=="array"){
-_5ab=_5aa;
-_5aa=_5a9;
-_5a9=_5a8;
-_5a8=_5a7;
-_5a7=_5a6[1];
-_5a6=_5a6[0];
+dojo.html.placeOnScreen=function(node,_5aa,_5ab,_5ac,_5ad,_5ae,_5af){
+if(_5aa instanceof Array||typeof _5aa=="array"){
+_5af=_5ae;
+_5ae=_5ad;
+_5ad=_5ac;
+_5ac=_5ab;
+_5ab=_5aa[1];
+_5aa=_5aa[0];
 }
-if(_5aa instanceof String||typeof _5aa=="string"){
-_5aa=_5aa.split(",");
+if(_5ae instanceof String||typeof _5ae=="string"){
+_5ae=_5ae.split(",");
 }
-if(!isNaN(_5a8)){
-_5a8=[Number(_5a8),Number(_5a8)];
+if(!isNaN(_5ac)){
+_5ac=[Number(_5ac),Number(_5ac)];
 }else{
-if(!(_5a8 instanceof Array||typeof _5a8=="array")){
-_5a8=[0,0];
+if(!(_5ac instanceof Array||typeof _5ac=="array")){
+_5ac=[0,0];
 }
 }
-var _5ac=dojo.html.getScroll().offset;
+var _5b0=dojo.html.getScroll().offset;
 var view=dojo.html.getViewport();
 node=dojo.byId(node);
-var _5ae=node.style.display;
+var _5b2=node.style.display;
 node.style.display="";
 var bb=dojo.html.getBorderBox(node);
 var w=bb.width;
 var h=bb.height;
-node.style.display=_5ae;
-if(!(_5aa instanceof Array||typeof _5aa=="array")){
-_5aa=["TL"];
+node.style.display=_5b2;
+if(!(_5ae instanceof Array||typeof _5ae=="array")){
+_5ae=["TL"];
 }
-var _5b2,_5b3,_5b4=Infinity,_5b5;
-for(var _5b6=0;_5b6<_5aa.length;++_5b6){
-var _5b7=_5aa[_5b6];
-var _5b8=true;
-var tryX=_5a6-(_5b7.charAt(1)=="L"?0:w)+_5a8[0]*(_5b7.charAt(1)=="L"?1:-1);
-var tryY=_5a7-(_5b7.charAt(0)=="T"?0:h)+_5a8[1]*(_5b7.charAt(0)=="T"?1:-1);
-if(_5a9){
-tryX-=_5ac.x;
-tryY-=_5ac.y;
+var _5b6,_5b7,_5b8=Infinity,_5b9;
+for(var _5ba=0;_5ba<_5ae.length;++_5ba){
+var _5bb=_5ae[_5ba];
+var _5bc=true;
+var tryX=_5aa-(_5bb.charAt(1)=="L"?0:w)+_5ac[0]*(_5bb.charAt(1)=="L"?1:-1);
+var tryY=_5ab-(_5bb.charAt(0)=="T"?0:h)+_5ac[1]*(_5bb.charAt(0)=="T"?1:-1);
+if(_5ad){
+tryX-=_5b0.x;
+tryY-=_5b0.y;
 }
 if(tryX<0){
 tryX=0;
-_5b8=false;
+_5bc=false;
 }
 if(tryY<0){
 tryY=0;
-_5b8=false;
+_5bc=false;
 }
 var x=tryX+w;
 if(x>view.width){
 x=view.width-w;
-_5b8=false;
+_5bc=false;
 }else{
 x=tryX;
 }
-x=Math.max(_5a8[0],x)+_5ac.x;
+x=Math.max(_5ac[0],x)+_5b0.x;
 var y=tryY+h;
 if(y>view.height){
 y=view.height-h;
-_5b8=false;
+_5bc=false;
 }else{
 y=tryY;
 }
-y=Math.max(_5a8[1],y)+_5ac.y;
-if(_5b8){
-_5b2=x;
-_5b3=y;
-_5b4=0;
-_5b5=_5b7;
+y=Math.max(_5ac[1],y)+_5b0.y;
+if(_5bc){
+_5b6=x;
+_5b7=y;
+_5b8=0;
+_5b9=_5bb;
 break;
 }else{
-var dist=Math.pow(x-tryX-_5ac.x,2)+Math.pow(y-tryY-_5ac.y,2);
-if(_5b4>dist){
-_5b4=dist;
-_5b2=x;
-_5b3=y;
-_5b5=_5b7;
+var dist=Math.pow(x-tryX-_5b0.x,2)+Math.pow(y-tryY-_5b0.y,2);
+if(_5b8>dist){
+_5b8=dist;
+_5b6=x;
+_5b7=y;
+_5b9=_5bb;
 }
 }
 }
-if(!_5ab){
-node.style.left=_5b2+"px";
-node.style.top=_5b3+"px";
+if(!_5af){
+node.style.left=_5b6+"px";
+node.style.top=_5b7+"px";
 }
-return {left:_5b2,top:_5b3,x:_5b2,y:_5b3,dist:_5b4,corner:_5b5};
+return {left:_5b6,top:_5b7,x:_5b6,y:_5b7,dist:_5b8,corner:_5b9};
 };
-dojo.html.placeOnScreenPoint=function(node,_5bf,_5c0,_5c1,_5c2){
+dojo.html.placeOnScreenPoint=function(node,_5c3,_5c4,_5c5,_5c6){
 dojo.deprecated("dojo.html.placeOnScreenPoint","use dojo.html.placeOnScreen() instead","0.5");
-return dojo.html.placeOnScreen(node,_5bf,_5c0,_5c1,_5c2,["TL","TR","BL","BR"]);
+return dojo.html.placeOnScreen(node,_5c3,_5c4,_5c5,_5c6,["TL","TR","BL","BR"]);
 };
-dojo.html.placeOnScreenAroundElement=function(node,_5c4,_5c5,_5c6,_5c7,_5c8){
-var best,_5ca=Infinity;
-_5c4=dojo.byId(_5c4);
-var _5cb=_5c4.style.display;
-_5c4.style.display="";
-var mb=dojo.html.getElementBox(_5c4,_5c6);
-var _5cd=mb.width;
-var _5ce=mb.height;
-var _5cf=dojo.html.getAbsolutePosition(_5c4,true,_5c6);
-_5c4.style.display=_5cb;
-for(var _5d0 in _5c7){
-var pos,_5d2,_5d3;
-var _5d4=_5c7[_5d0];
-_5d2=_5cf.x+(_5d0.charAt(1)=="L"?0:_5cd);
-_5d3=_5cf.y+(_5d0.charAt(0)=="T"?0:_5ce);
-pos=dojo.html.placeOnScreen(node,_5d2,_5d3,_5c5,true,_5d4,true);
+dojo.html.placeOnScreenAroundElement=function(node,_5c8,_5c9,_5ca,_5cb,_5cc){
+var best,_5ce=Infinity;
+_5c8=dojo.byId(_5c8);
+var _5cf=_5c8.style.display;
+_5c8.style.display="";
+var mb=dojo.html.getElementBox(_5c8,_5ca);
+var _5d1=mb.width;
+var _5d2=mb.height;
+var _5d3=dojo.html.getAbsolutePosition(_5c8,true,_5ca);
+_5c8.style.display=_5cf;
+for(var _5d4 in _5cb){
+var pos,_5d6,_5d7;
+var _5d8=_5cb[_5d4];
+_5d6=_5d3.x+(_5d4.charAt(1)=="L"?0:_5d1);
+_5d7=_5d3.y+(_5d4.charAt(0)=="T"?0:_5d2);
+pos=dojo.html.placeOnScreen(node,_5d6,_5d7,_5c9,true,_5d8,true);
 if(pos.dist==0){
 best=pos;
 break;
 }else{
-if(_5ca>pos.dist){
-_5ca=pos.dist;
+if(_5ce>pos.dist){
+_5ce=pos.dist;
 best=pos;
 }
 }
 }
-if(!_5c8){
+if(!_5cc){
 node.style.left=best.left+"px";
 node.style.top=best.top+"px";
 }
@@ -62152,14 +52745,14 @@
 if(dojo.render.html.mozilla){
 node.scrollIntoView(false);
 }else{
-var _5d6=node.parentNode;
-var _5d7=_5d6.scrollTop+dojo.html.getBorderBox(_5d6).height;
-var _5d8=node.offsetTop+dojo.html.getMarginBox(node).height;
-if(_5d7<_5d8){
-_5d6.scrollTop+=(_5d8-_5d7);
+var _5da=node.parentNode;
+var _5db=_5da.scrollTop+dojo.html.getBorderBox(_5da).height;
+var _5dc=node.offsetTop+dojo.html.getMarginBox(node).height;
+if(_5db<_5dc){
+_5da.scrollTop+=(_5dc-_5db);
 }else{
-if(_5d6.scrollTop>node.offsetTop){
-_5d6.scrollTop-=(_5d6.scrollTop-node.offsetTop);
+if(_5da.scrollTop>node.offsetTop){
+_5da.scrollTop-=(_5da.scrollTop-node.offsetTop);
 }
 }
 }
@@ -62197,8 +52790,8 @@
 dojo.gfx.color.Color.fromArray=function(arr){
 return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
 };
-dojo.extend(dojo.gfx.color.Color,{toRgb:function(_5df){
-if(_5df){
+dojo.extend(dojo.gfx.color.Color,{toRgb:function(_5e3){
+if(_5e3){
 return this.toRgba();
 }else{
 return [this.r,this.g,this.b];
@@ -62211,62 +52804,62 @@
 return "rgb("+this.toRgb().join()+")";
 },toString:function(){
 return this.toHex();
-},blend:function(_5e0,_5e1){
+},blend:function(_5e4,_5e5){
 var rgb=null;
-if(dojo.lang.isArray(_5e0)){
-rgb=_5e0;
+if(dojo.lang.isArray(_5e4)){
+rgb=_5e4;
 }else{
-if(_5e0 instanceof dojo.gfx.color.Color){
-rgb=_5e0.toRgb();
+if(_5e4 instanceof dojo.gfx.color.Color){
+rgb=_5e4.toRgb();
 }else{
-rgb=new dojo.gfx.color.Color(_5e0).toRgb();
+rgb=new dojo.gfx.color.Color(_5e4).toRgb();
 }
 }
-return dojo.gfx.color.blend(this.toRgb(),rgb,_5e1);
+return dojo.gfx.color.blend(this.toRgb(),rgb,_5e5);
 }});
 dojo.gfx.color.named={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128,128],silver:[192,192,192]};
-dojo.gfx.color.blend=function(a,b,_5e5){
+dojo.gfx.color.blend=function(a,b,_5e9){
 if(typeof a=="string"){
-return dojo.gfx.color.blendHex(a,b,_5e5);
+return dojo.gfx.color.blendHex(a,b,_5e9);
 }
-if(!_5e5){
-_5e5=0;
+if(!_5e9){
+_5e9=0;
 }
-_5e5=Math.min(Math.max(-1,_5e5),1);
-_5e5=((_5e5+1)/2);
+_5e9=Math.min(Math.max(-1,_5e9),1);
+_5e9=((_5e9+1)/2);
 var c=[];
 for(var x=0;x<3;x++){
-c[x]=parseInt(b[x]+((a[x]-b[x])*_5e5));
+c[x]=parseInt(b[x]+((a[x]-b[x])*_5e9));
 }
 return c;
 };
-dojo.gfx.color.blendHex=function(a,b,_5ea){
-return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_5ea));
+dojo.gfx.color.blendHex=function(a,b,_5ee){
+return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_5ee));
 };
-dojo.gfx.color.extractRGB=function(_5eb){
+dojo.gfx.color.extractRGB=function(_5ef){
 var hex="0123456789abcdef";
-_5eb=_5eb.toLowerCase();
-if(_5eb.indexOf("rgb")==0){
-var _5ed=_5eb.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
-var ret=_5ed.splice(1,3);
+_5ef=_5ef.toLowerCase();
+if(_5ef.indexOf("rgb")==0){
+var _5f1=_5ef.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
+var ret=_5f1.splice(1,3);
 return ret;
 }else{
-var _5ef=dojo.gfx.color.hex2rgb(_5eb);
-if(_5ef){
-return _5ef;
+var _5f3=dojo.gfx.color.hex2rgb(_5ef);
+if(_5f3){
+return _5f3;
 }else{
-return dojo.gfx.color.named[_5eb]||[255,255,255];
+return dojo.gfx.color.named[_5ef]||[255,255,255];
 }
 }
 };
 dojo.gfx.color.hex2rgb=function(hex){
-var _5f1="0123456789ABCDEF";
+var _5f5="0123456789ABCDEF";
 var rgb=new Array(3);
 if(hex.indexOf("#")==0){
 hex=hex.substring(1);
 }
 hex=hex.toUpperCase();
-if(hex.replace(new RegExp("["+_5f1+"]","g"),"")!=""){
+if(hex.replace(new RegExp("["+_5f5+"]","g"),"")!=""){
 return null;
 }
 if(hex.length==3){
@@ -62279,7 +52872,7 @@
 rgb[2]=hex.substring(4);
 }
 for(var i=0;i<rgb.length;i++){
-rgb[i]=_5f1.indexOf(rgb[i].charAt(0))*16+_5f1.indexOf(rgb[i].charAt(1));
+rgb[i]=_5f5.indexOf(rgb[i].charAt(0))*16+_5f5.indexOf(rgb[i].charAt(1));
 }
 return rgb;
 };
@@ -62301,10 +52894,10 @@
 return ret.join("");
 };
 dojo.provide("dojo.lfx.Animation");
-dojo.lfx.Line=function(_5fa,end){
-this.start=_5fa;
+dojo.lfx.Line=function(_5fe,end){
+this.start=_5fe;
 this.end=end;
-if(dojo.lang.isArray(_5fa)){
+if(dojo.lang.isArray(_5fe)){
 var diff=[];
 dojo.lang.forEach(this.start,function(s,i){
 diff[i]=this.end[i]-s;
@@ -62317,7 +52910,7 @@
 return res;
 };
 }else{
-var diff=end-_5fa;
+var diff=end-_5fe;
 this.getValue=function(n){
 return (diff*n)+this.start;
 };
@@ -62343,17 +52936,17 @@
 };
 dojo.lfx.IAnimation=function(){
 };
-dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_60a,_60b){
-if(!_60b){
-_60b=_60a;
-_60a=this;
+dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_60e,_60f){
+if(!_60f){
+_60f=_60e;
+_60e=this;
 }
-_60b=dojo.lang.hitch(_60a,_60b);
-var _60c=this[evt]||function(){
+_60f=dojo.lang.hitch(_60e,_60f);
+var _610=this[evt]||function(){
 };
 this[evt]=function(){
-var ret=_60c.apply(this,arguments);
-_60b.apply(this,arguments);
+var ret=_610.apply(this,arguments);
+_60f.apply(this,arguments);
 return ret;
 };
 return this;
@@ -62362,57 +52955,57 @@
 this[evt].apply(this,(args||[]));
 }
 return this;
-},repeat:function(_610){
-this.repeatCount=_610;
+},repeat:function(_614){
+this.repeatCount=_614;
 return this;
 },_active:false,_paused:false});
-dojo.lfx.Animation=function(_611,_612,_613,_614,_615,rate){
+dojo.lfx.Animation=function(_615,_616,_617,_618,_619,rate){
 dojo.lfx.IAnimation.call(this);
-if(dojo.lang.isNumber(_611)||(!_611&&_612.getValue)){
-rate=_615;
-_615=_614;
-_614=_613;
-_613=_612;
-_612=_611;
-_611=null;
+if(dojo.lang.isNumber(_615)||(!_615&&_616.getValue)){
+rate=_619;
+_619=_618;
+_618=_617;
+_617=_616;
+_616=_615;
+_615=null;
 }else{
-if(_611.getValue||dojo.lang.isArray(_611)){
-rate=_614;
-_615=_613;
-_614=_612;
-_613=_611;
-_612=null;
-_611=null;
+if(_615.getValue||dojo.lang.isArray(_615)){
+rate=_618;
+_619=_617;
+_618=_616;
+_617=_615;
+_616=null;
+_615=null;
 }
 }
-if(dojo.lang.isArray(_613)){
-this.curve=new dojo.lfx.Line(_613[0],_613[1]);
+if(dojo.lang.isArray(_617)){
+this.curve=new dojo.lfx.Line(_617[0],_617[1]);
 }else{
-this.curve=_613;
+this.curve=_617;
 }
-if(_612!=null&&_612>0){
-this.duration=_612;
+if(_616!=null&&_616>0){
+this.duration=_616;
 }
-if(_615){
-this.repeatCount=_615;
+if(_619){
+this.repeatCount=_619;
 }
 if(rate){
 this.rate=rate;
 }
-if(_611){
+if(_615){
 dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","onStop","onAnimate"],function(item){
-if(_611[item]){
-this.connect(item,_611[item]);
+if(_615[item]){
+this.connect(item,_615[item]);
 }
 },this);
 }
-if(_614&&dojo.lang.isFunction(_614)){
-this.easing=_614;
+if(_618&&dojo.lang.isFunction(_618)){
+this.easing=_618;
 }
 };
 dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_618,_619){
-if(_619){
+dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_61c,_61d){
+if(_61d){
 clearTimeout(this._timer);
 this._active=false;
 this._paused=false;
@@ -62424,10 +53017,10 @@
 }
 this.fire("handler",["beforeBegin"]);
 this.fire("beforeBegin");
-if(_618>0){
+if(_61c>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_619);
-}),_618);
+this.play(null,_61d);
+}),_61c);
 return this;
 }
 this._startTime=new Date().valueOf();
@@ -62438,16 +53031,16 @@
 this._active=true;
 this._paused=false;
 var step=this._percent/100;
-var _61b=this.curve.getValue(step);
+var _61f=this.curve.getValue(step);
 if(this._percent==0){
 if(!this._startRepeatCount){
 this._startRepeatCount=this.repeatCount;
 }
-this.fire("handler",["begin",_61b]);
-this.fire("onBegin",[_61b]);
+this.fire("handler",["begin",_61f]);
+this.fire("onBegin",[_61f]);
 }
-this.fire("handler",["play",_61b]);
-this.fire("onPlay",[_61b]);
+this.fire("handler",["play",_61f]);
+this.fire("onPlay",[_61f]);
 this._cycle();
 return this;
 },pause:function(){
@@ -62456,28 +53049,28 @@
 return this;
 }
 this._paused=true;
-var _61c=this.curve.getValue(this._percent/100);
-this.fire("handler",["pause",_61c]);
-this.fire("onPause",[_61c]);
+var _620=this.curve.getValue(this._percent/100);
+this.fire("handler",["pause",_620]);
+this.fire("onPause",[_620]);
 return this;
-},gotoPercent:function(pct,_61e){
+},gotoPercent:function(pct,_622){
 clearTimeout(this._timer);
 this._active=true;
 this._paused=true;
 this._percent=pct;
-if(_61e){
+if(_622){
 this.play();
 }
 return this;
-},stop:function(_61f){
+},stop:function(_623){
 clearTimeout(this._timer);
 var step=this._percent/100;
-if(_61f){
+if(_623){
 step=1;
 }
-var _621=this.curve.getValue(step);
-this.fire("handler",["stop",_621]);
-this.fire("onStop",[_621]);
+var _625=this.curve.getValue(step);
+this.fire("handler",["stop",_625]);
+this.fire("onStop",[_625]);
 this._active=false;
 this._paused=false;
 return this;
@@ -62502,9 +53095,9 @@
 if((this.easing)&&(dojo.lang.isFunction(this.easing))){
 step=this.easing(step);
 }
-var _624=this.curve.getValue(step);
-this.fire("handler",["animate",_624]);
-this.fire("onAnimate",[_624]);
+var _628=this.curve.getValue(step);
+this.fire("handler",["animate",_628]);
+this.fire("onAnimate",[_628]);
 if(step<1){
 this._timer=setTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
 }else{
@@ -62528,44 +53121,44 @@
 }
 return this;
 }});
-dojo.lfx.Combine=function(_625){
+dojo.lfx.Combine=function(_629){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._animsEnded=0;
-var _626=arguments;
-if(_626.length==1&&(dojo.lang.isArray(_626[0])||dojo.lang.isArrayLike(_626[0]))){
-_626=_626[0];
+var _62a=arguments;
+if(_62a.length==1&&(dojo.lang.isArray(_62a[0])||dojo.lang.isArrayLike(_62a[0]))){
+_62a=_62a[0];
 }
-dojo.lang.forEach(_626,function(anim){
+dojo.lang.forEach(_62a,function(anim){
 this._anims.push(anim);
 anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
 },this);
 };
 dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_628,_629){
+dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_62c,_62d){
 if(!this._anims.length){
 return this;
 }
 this.fire("beforeBegin");
-if(_628>0){
+if(_62c>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_629);
-}),_628);
+this.play(null,_62d);
+}),_62c);
 return this;
 }
-if(_629||this._anims[0].percent==0){
+if(_62d||this._anims[0].percent==0){
 this.fire("onBegin");
 }
 this.fire("onPlay");
-this._animsCall("play",null,_629);
+this._animsCall("play",null,_62d);
 return this;
 },pause:function(){
 this.fire("onPause");
 this._animsCall("pause");
 return this;
-},stop:function(_62a){
+},stop:function(_62e){
 this.fire("onStop");
-this._animsCall("stop",_62a);
+this._animsCall("stop",_62e);
 return this;
 },_onAnimsEnded:function(){
 this._animsEnded++;
@@ -62573,31 +53166,31 @@
 this.fire("onEnd");
 }
 return this;
-},_animsCall:function(_62b){
+},_animsCall:function(_62f){
 var args=[];
 if(arguments.length>1){
 for(var i=1;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 }
-var _62e=this;
+var _632=this;
 dojo.lang.forEach(this._anims,function(anim){
-anim[_62b](args);
-},_62e);
+anim[_62f](args);
+},_632);
 return this;
 }});
-dojo.lfx.Chain=function(_630){
+dojo.lfx.Chain=function(_634){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._currAnim=-1;
-var _631=arguments;
-if(_631.length==1&&(dojo.lang.isArray(_631[0])||dojo.lang.isArrayLike(_631[0]))){
-_631=_631[0];
+var _635=arguments;
+if(_635.length==1&&(dojo.lang.isArray(_635[0])||dojo.lang.isArrayLike(_635[0]))){
+_635=_635[0];
 }
-var _632=this;
-dojo.lang.forEach(_631,function(anim,i,_635){
+var _636=this;
+dojo.lang.forEach(_635,function(anim,i,_639){
 this._anims.push(anim);
-if(i<_635.length-1){
+if(i<_639.length-1){
 anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
 }else{
 anim.connect("onEnd",dojo.lang.hitch(this,function(){
@@ -62607,28 +53200,28 @@
 },this);
 };
 dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_636,_637){
+dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_63a,_63b){
 if(!this._anims.length){
 return this;
 }
-if(_637||!this._anims[this._currAnim]){
+if(_63b||!this._anims[this._currAnim]){
 this._currAnim=0;
 }
-var _638=this._anims[this._currAnim];
+var _63c=this._anims[this._currAnim];
 this.fire("beforeBegin");
-if(_636>0){
+if(_63a>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_637);
-}),_636);
+this.play(null,_63b);
+}),_63a);
 return this;
 }
-if(_638){
+if(_63c){
 if(this._currAnim==0){
 this.fire("handler",["begin",this._currAnim]);
 this.fire("onBegin",[this._currAnim]);
 }
 this.fire("onPlay",[this._currAnim]);
-_638.play(null,_637);
+_63c.play(null,_63b);
 }
 return this;
 },pause:function(){
@@ -62644,9 +53237,9 @@
 if(this._currAnim==-1){
 this._currAnim=0;
 }
-var _639=this._anims[this._currAnim];
-if(_639){
-if(!_639._active||_639._paused){
+var _63d=this._anims[this._currAnim];
+if(_63d){
+if(!_63d._active||_63d._paused){
 this.play();
 }else{
 this.pause();
@@ -62654,12 +53247,12 @@
 }
 return this;
 },stop:function(){
-var _63a=this._anims[this._currAnim];
-if(_63a){
-_63a.stop();
+var _63e=this._anims[this._currAnim];
+if(_63e){
+_63e.stop();
 this.fire("onStop",[this._currAnim]);
 }
-return _63a;
+return _63e;
 },_playNext:function(){
 if(this._currAnim==-1||this._anims.length==0){
 return this;
@@ -62670,82 +53263,82 @@
 }
 return this;
 }});
-dojo.lfx.combine=function(_63b){
-var _63c=arguments;
+dojo.lfx.combine=function(_63f){
+var _640=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_63c=arguments[0];
+_640=arguments[0];
 }
-if(_63c.length==1){
-return _63c[0];
+if(_640.length==1){
+return _640[0];
 }
-return new dojo.lfx.Combine(_63c);
+return new dojo.lfx.Combine(_640);
 };
-dojo.lfx.chain=function(_63d){
-var _63e=arguments;
+dojo.lfx.chain=function(_641){
+var _642=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_63e=arguments[0];
+_642=arguments[0];
 }
-if(_63e.length==1){
-return _63e[0];
+if(_642.length==1){
+return _642[0];
 }
-return new dojo.lfx.Chain(_63e);
+return new dojo.lfx.Chain(_642);
 };
 dojo.provide("dojo.html.color");
 dojo.html.getBackgroundColor=function(node){
 node=dojo.byId(node);
-var _640;
+var _644;
 do{
-_640=dojo.html.getStyle(node,"background-color");
-if(_640.toLowerCase()=="rgba(0, 0, 0, 0)"){
-_640="transparent";
+_644=dojo.html.getStyle(node,"background-color");
+if(_644.toLowerCase()=="rgba(0, 0, 0, 0)"){
+_644="transparent";
 }
 if(node==document.getElementsByTagName("body")[0]){
 node=null;
 break;
 }
 node=node.parentNode;
-}while(node&&dojo.lang.inArray(["transparent",""],_640));
-if(_640=="transparent"){
-_640=[255,255,255,0];
+}while(node&&dojo.lang.inArray(["transparent",""],_644));
+if(_644=="transparent"){
+_644=[255,255,255,0];
 }else{
-_640=dojo.gfx.color.extractRGB(_640);
+_644=dojo.gfx.color.extractRGB(_644);
 }
-return _640;
+return _644;
 };
 dojo.provide("dojo.lfx.html");
-dojo.lfx.html._byId=function(_641){
-if(!_641){
+dojo.lfx.html._byId=function(_645){
+if(!_645){
 return [];
 }
-if(dojo.lang.isArrayLike(_641)){
-if(!_641.alreadyChecked){
+if(dojo.lang.isArrayLike(_645)){
+if(!_645.alreadyChecked){
 var n=[];
-dojo.lang.forEach(_641,function(node){
+dojo.lang.forEach(_645,function(node){
 n.push(dojo.byId(node));
 });
 n.alreadyChecked=true;
 return n;
 }else{
-return _641;
+return _645;
 }
 }else{
 var n=[];
-n.push(dojo.byId(_641));
+n.push(dojo.byId(_645));
 n.alreadyChecked=true;
 return n;
 }
 };
-dojo.lfx.html.propertyAnimation=function(_644,_645,_646,_647,_648){
-_644=dojo.lfx.html._byId(_644);
-var _649={"propertyMap":_645,"nodes":_644,"duration":_646,"easing":_647||dojo.lfx.easeDefault};
-var _64a=function(args){
+dojo.lfx.html.propertyAnimation=function(_648,_649,_64a,_64b,_64c){
+_648=dojo.lfx.html._byId(_648);
+var _64d={"propertyMap":_649,"nodes":_648,"duration":_64a,"easing":_64b||dojo.lfx.easeDefault};
+var _64e=function(args){
 if(args.nodes.length==1){
 var pm=args.propertyMap;
 if(!dojo.lang.isArray(args.propertyMap)){
 var parr=[];
-for(var _64e in pm){
-pm[_64e].property=_64e;
-parr.push(pm[_64e]);
+for(var _652 in pm){
+pm[_652].property=_652;
+parr.push(pm[_652]);
 }
 pm=args.propertyMap=parr;
 }
@@ -62760,24 +53353,24 @@
 });
 }
 };
-var _650=function(_651){
-var _652=[];
-dojo.lang.forEach(_651,function(c){
-_652.push(Math.round(c));
+var _654=function(_655){
+var _656=[];
+dojo.lang.forEach(_655,function(c){
+_656.push(Math.round(c));
 });
-return _652;
+return _656;
 };
-var _654=function(n,_656){
+var _658=function(n,_65a){
 n=dojo.byId(n);
 if(!n||!n.style){
 return;
 }
-for(var s in _656){
+for(var s in _65a){
 try{
 if(s=="opacity"){
-dojo.html.setOpacity(n,_656[s]);
+dojo.html.setOpacity(n,_65a[s]);
 }else{
-n.style[s]=_656[s];
+n.style[s]=_65a[s];
 }
 }
 catch(e){
@@ -62785,10 +53378,10 @@
 }
 }
 };
-var _658=function(_659){
-this._properties=_659;
-this.diffs=new Array(_659.length);
-dojo.lang.forEach(_659,function(prop,i){
+var _65c=function(_65d){
+this._properties=_65d;
+this.diffs=new Array(_65d.length);
+dojo.lang.forEach(_65d,function(prop,i){
 if(dojo.lang.isFunction(prop.start)){
 prop.start=prop.start(prop,i);
 }
@@ -62809,43 +53402,43 @@
 this.getValue=function(n){
 var ret={};
 dojo.lang.forEach(this._properties,function(prop,i){
-var _660=null;
+var _664=null;
 if(dojo.lang.isArray(prop.start)){
 }else{
 if(prop.start instanceof dojo.gfx.color.Color){
-_660=(prop.units||"rgb")+"(";
+_664=(prop.units||"rgb")+"(";
 for(var j=0;j<prop.startRgb.length;j++){
-_660+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
+_664+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
 }
-_660+=")";
+_664+=")";
 }else{
-_660=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
+_664=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
 }
 }
-ret[dojo.html.toCamelCase(prop.property)]=_660;
+ret[dojo.html.toCamelCase(prop.property)]=_664;
 },this);
 return ret;
 };
 };
 var anim=new dojo.lfx.Animation({beforeBegin:function(){
-_64a(_649);
-anim.curve=new _658(_649.propertyMap);
-},onAnimate:function(_663){
-dojo.lang.forEach(_649.nodes,function(node){
-_654(node,_663);
+_64e(_64d);
+anim.curve=new _65c(_64d.propertyMap);
+},onAnimate:function(_667){
+dojo.lang.forEach(_64d.nodes,function(node){
+_658(node,_667);
 });
-}},_649.duration,null,_649.easing);
-if(_648){
-for(var x in _648){
-if(dojo.lang.isFunction(_648[x])){
-anim.connect(x,anim,_648[x]);
+}},_64d.duration,null,_64d.easing);
+if(_64c){
+for(var x in _64c){
+if(dojo.lang.isFunction(_64c[x])){
+anim.connect(x,anim,_64c[x]);
 }
 }
 }
 return anim;
 };
-dojo.lfx.html._makeFadeable=function(_666){
-var _667=function(node){
+dojo.lfx.html._makeFadeable=function(_66a){
+var _66b=function(node){
 if(dojo.render.html.ie){
 if((node.style.zoom.length==0)&&(dojo.html.getStyle(node,"zoom")=="normal")){
 node.style.zoom="1";
@@ -62855,100 +53448,100 @@
 }
 }
 };
-if(dojo.lang.isArrayLike(_666)){
-dojo.lang.forEach(_666,_667);
+if(dojo.lang.isArrayLike(_66a)){
+dojo.lang.forEach(_66a,_66b);
 }else{
-_667(_666);
+_66b(_66a);
 }
 };
-dojo.lfx.html.fade=function(_669,_66a,_66b,_66c,_66d){
-_669=dojo.lfx.html._byId(_669);
-var _66e={property:"opacity"};
-if(!dj_undef("start",_66a)){
-_66e.start=_66a.start;
+dojo.lfx.html.fade=function(_66d,_66e,_66f,_670,_671){
+_66d=dojo.lfx.html._byId(_66d);
+var _672={property:"opacity"};
+if(!dj_undef("start",_66e)){
+_672.start=_66e.start;
 }else{
-_66e.start=function(){
-return dojo.html.getOpacity(_669[0]);
+_672.start=function(){
+return dojo.html.getOpacity(_66d[0]);
 };
 }
-if(!dj_undef("end",_66a)){
-_66e.end=_66a.end;
+if(!dj_undef("end",_66e)){
+_672.end=_66e.end;
 }else{
 dojo.raise("dojo.lfx.html.fade needs an end value");
 }
-var anim=dojo.lfx.propertyAnimation(_669,[_66e],_66b,_66c);
+var anim=dojo.lfx.propertyAnimation(_66d,[_672],_66f,_670);
 anim.connect("beforeBegin",function(){
-dojo.lfx.html._makeFadeable(_669);
+dojo.lfx.html._makeFadeable(_66d);
 });
-if(_66d){
+if(_671){
 anim.connect("onEnd",function(){
-_66d(_669,anim);
+_671(_66d,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.fadeIn=function(_670,_671,_672,_673){
-return dojo.lfx.html.fade(_670,{end:1},_671,_672,_673);
+dojo.lfx.html.fadeIn=function(_674,_675,_676,_677){
+return dojo.lfx.html.fade(_674,{end:1},_675,_676,_677);
 };
-dojo.lfx.html.fadeOut=function(_674,_675,_676,_677){
-return dojo.lfx.html.fade(_674,{end:0},_675,_676,_677);
+dojo.lfx.html.fadeOut=function(_678,_679,_67a,_67b){
+return dojo.lfx.html.fade(_678,{end:0},_679,_67a,_67b);
 };
-dojo.lfx.html.fadeShow=function(_678,_679,_67a,_67b){
-_678=dojo.lfx.html._byId(_678);
-dojo.lang.forEach(_678,function(node){
+dojo.lfx.html.fadeShow=function(_67c,_67d,_67e,_67f){
+_67c=dojo.lfx.html._byId(_67c);
+dojo.lang.forEach(_67c,function(node){
 dojo.html.setOpacity(node,0);
 });
-var anim=dojo.lfx.html.fadeIn(_678,_679,_67a,_67b);
+var anim=dojo.lfx.html.fadeIn(_67c,_67d,_67e,_67f);
 anim.connect("beforeBegin",function(){
-if(dojo.lang.isArrayLike(_678)){
-dojo.lang.forEach(_678,dojo.html.show);
+if(dojo.lang.isArrayLike(_67c)){
+dojo.lang.forEach(_67c,dojo.html.show);
 }else{
-dojo.html.show(_678);
+dojo.html.show(_67c);
 }
 });
 return anim;
 };
-dojo.lfx.html.fadeHide=function(_67e,_67f,_680,_681){
-var anim=dojo.lfx.html.fadeOut(_67e,_67f,_680,function(){
-if(dojo.lang.isArrayLike(_67e)){
-dojo.lang.forEach(_67e,dojo.html.hide);
+dojo.lfx.html.fadeHide=function(_682,_683,_684,_685){
+var anim=dojo.lfx.html.fadeOut(_682,_683,_684,function(){
+if(dojo.lang.isArrayLike(_682)){
+dojo.lang.forEach(_682,dojo.html.hide);
 }else{
-dojo.html.hide(_67e);
+dojo.html.hide(_682);
 }
-if(_681){
-_681(_67e,anim);
+if(_685){
+_685(_682,anim);
 }
 });
 return anim;
 };
-dojo.lfx.html.wipeIn=function(_683,_684,_685,_686){
-_683=dojo.lfx.html._byId(_683);
-var _687=[];
-dojo.lang.forEach(_683,function(node){
-var _689={};
-var _68a,_68b,_68c;
+dojo.lfx.html.wipeIn=function(_687,_688,_689,_68a){
+_687=dojo.lfx.html._byId(_687);
+var _68b=[];
+dojo.lang.forEach(_687,function(node){
+var _68d={};
+var _68e,_68f,_690;
 with(node.style){
-_68a=top;
-_68b=left;
-_68c=position;
+_68e=top;
+_68f=left;
+_690=position;
 top="-9999px";
 left="-9999px";
 position="absolute";
 display="";
 }
-var _68d=dojo.html.getBorderBox(node).height;
+var _691=dojo.html.getBorderBox(node).height;
 with(node.style){
-top=_68a;
-left=_68b;
-position=_68c;
+top=_68e;
+left=_68f;
+position=_690;
 display="none";
 }
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){
-return _68d;
-}}},_684,_685);
+return _691;
+}}},_688,_689);
 anim.connect("beforeBegin",function(){
-_689.overflow=node.style.overflow;
-_689.height=node.style.height;
+_68d.overflow=node.style.overflow;
+_68d.height=node.style.height;
 with(node.style){
 overflow="hidden";
 height="1px";
@@ -62957,27 +53550,27 @@
 });
 anim.connect("onEnd",function(){
 with(node.style){
-overflow=_689.overflow;
-height=_689.height;
+overflow=_68d.overflow;
+height=_68d.height;
 }
-if(_686){
-_686(node,anim);
+if(_68a){
+_68a(node,anim);
 }
 });
-_687.push(anim);
+_68b.push(anim);
 });
-return dojo.lfx.combine(_687);
+return dojo.lfx.combine(_68b);
 };
-dojo.lfx.html.wipeOut=function(_68f,_690,_691,_692){
-_68f=dojo.lfx.html._byId(_68f);
-var _693=[];
-dojo.lang.forEach(_68f,function(node){
-var _695={};
+dojo.lfx.html.wipeOut=function(_693,_694,_695,_696){
+_693=dojo.lfx.html._byId(_693);
+var _697=[];
+dojo.lang.forEach(_693,function(node){
+var _699={};
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:function(){
 return dojo.html.getContentBox(node).height;
-},end:1}},_690,_691,{"beforeBegin":function(){
-_695.overflow=node.style.overflow;
-_695.height=node.style.height;
+},end:1}},_694,_695,{"beforeBegin":function(){
+_699.overflow=node.style.overflow;
+_699.height=node.style.height;
 with(node.style){
 overflow="hidden";
 }
@@ -62985,251 +53578,251 @@
 },"onEnd":function(){
 dojo.html.hide(node);
 with(node.style){
-overflow=_695.overflow;
-height=_695.height;
+overflow=_699.overflow;
+height=_699.height;
 }
-if(_692){
-_692(node,anim);
+if(_696){
+_696(node,anim);
 }
 }});
-_693.push(anim);
+_697.push(anim);
 });
-return dojo.lfx.combine(_693);
+return dojo.lfx.combine(_697);
 };
-dojo.lfx.html.slideTo=function(_697,_698,_699,_69a,_69b){
-_697=dojo.lfx.html._byId(_697);
-var _69c=[];
-var _69d=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_698)){
+dojo.lfx.html.slideTo=function(_69b,_69c,_69d,_69e,_69f){
+_69b=dojo.lfx.html._byId(_69b);
+var _6a0=[];
+var _6a1=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_69c)){
 dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
-_698={top:_698[0],left:_698[1]};
+_69c={top:_69c[0],left:_69c[1]};
 }
-dojo.lang.forEach(_697,function(node){
+dojo.lang.forEach(_69b,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _6a2=node;
+var _6a6=node;
 return function(){
-var pos=_69d(_6a2,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_69d(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_69d(node,"left"))||0);
+var pos=_6a1(_6a6,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_6a1(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_6a1(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_6a2,true);
-dojo.html.setStyleAttributes(_6a2,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_6a6,true);
+dojo.html.setStyleAttributes(_6a6,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_698.top||0)},"left":{start:left,end:(_698.left||0)}},_699,_69a,{"beforeBegin":init});
-if(_69b){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_69c.top||0)},"left":{start:left,end:(_69c.left||0)}},_69d,_69e,{"beforeBegin":init});
+if(_69f){
 anim.connect("onEnd",function(){
-_69b(_697,anim);
+_69f(_69b,anim);
 });
 }
-_69c.push(anim);
+_6a0.push(anim);
 });
-return dojo.lfx.combine(_69c);
+return dojo.lfx.combine(_6a0);
 };
-dojo.lfx.html.slideBy=function(_6a6,_6a7,_6a8,_6a9,_6aa){
-_6a6=dojo.lfx.html._byId(_6a6);
-var _6ab=[];
-var _6ac=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_6a7)){
+dojo.lfx.html.slideBy=function(_6aa,_6ab,_6ac,_6ad,_6ae){
+_6aa=dojo.lfx.html._byId(_6aa);
+var _6af=[];
+var _6b0=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_6ab)){
 dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
-_6a7={top:_6a7[0],left:_6a7[1]};
+_6ab={top:_6ab[0],left:_6ab[1]};
 }
-dojo.lang.forEach(_6a6,function(node){
+dojo.lang.forEach(_6aa,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _6b1=node;
+var _6b5=node;
 return function(){
-var pos=_6ac(_6b1,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_6ac(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_6ac(node,"left"))||0);
+var pos=_6b0(_6b5,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_6b0(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_6b0(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_6b1,true);
-dojo.html.setStyleAttributes(_6b1,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_6b5,true);
+dojo.html.setStyleAttributes(_6b5,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_6a7.top||0)},"left":{start:left,end:left+(_6a7.left||0)}},_6a8,_6a9).connect("beforeBegin",init);
-if(_6aa){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_6ab.top||0)},"left":{start:left,end:left+(_6ab.left||0)}},_6ac,_6ad).connect("beforeBegin",init);
+if(_6ae){
 anim.connect("onEnd",function(){
-_6aa(_6a6,anim);
+_6ae(_6aa,anim);
 });
 }
-_6ab.push(anim);
+_6af.push(anim);
 });
-return dojo.lfx.combine(_6ab);
+return dojo.lfx.combine(_6af);
 };
-dojo.lfx.html.explode=function(_6b5,_6b6,_6b7,_6b8,_6b9){
+dojo.lfx.html.explode=function(_6b9,_6ba,_6bb,_6bc,_6bd){
 var h=dojo.html;
-_6b5=dojo.byId(_6b5);
-_6b6=dojo.byId(_6b6);
-var _6bb=h.toCoordinateObject(_6b5,true);
-var _6bc=document.createElement("div");
-h.copyStyle(_6bc,_6b6);
-if(_6b6.explodeClassName){
-_6bc.className=_6b6.explodeClassName;
+_6b9=dojo.byId(_6b9);
+_6ba=dojo.byId(_6ba);
+var _6bf=h.toCoordinateObject(_6b9,true);
+var _6c0=document.createElement("div");
+h.copyStyle(_6c0,_6ba);
+if(_6ba.explodeClassName){
+_6c0.className=_6ba.explodeClassName;
 }
-with(_6bc.style){
+with(_6c0.style){
 position="absolute";
 display="none";
-var _6bd=h.getStyle(_6b5,"background-color");
-backgroundColor=_6bd?_6bd.toLowerCase():"transparent";
+var _6c1=h.getStyle(_6b9,"background-color");
+backgroundColor=_6c1?_6c1.toLowerCase():"transparent";
 backgroundColor=(backgroundColor=="transparent")?"rgb(221, 221, 221)":backgroundColor;
 }
-dojo.body().appendChild(_6bc);
-with(_6b6.style){
+dojo.body().appendChild(_6c0);
+with(_6ba.style){
 visibility="hidden";
 display="block";
 }
-var _6be=h.toCoordinateObject(_6b6,true);
-with(_6b6.style){
+var _6c2=h.toCoordinateObject(_6ba,true);
+with(_6ba.style){
 display="none";
 visibility="visible";
 }
-var _6bf={opacity:{start:0.5,end:1}};
+var _6c3={opacity:{start:0.5,end:1}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_6bf[type]={start:_6bb[type],end:_6be[type]};
+_6c3[type]={start:_6bf[type],end:_6c2[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_6bc,_6bf,_6b7,_6b8,{"beforeBegin":function(){
-h.setDisplay(_6bc,"block");
+var anim=new dojo.lfx.propertyAnimation(_6c0,_6c3,_6bb,_6bc,{"beforeBegin":function(){
+h.setDisplay(_6c0,"block");
 },"onEnd":function(){
-h.setDisplay(_6b6,"block");
-_6bc.parentNode.removeChild(_6bc);
+h.setDisplay(_6ba,"block");
+_6c0.parentNode.removeChild(_6c0);
 }});
-if(_6b9){
+if(_6bd){
 anim.connect("onEnd",function(){
-_6b9(_6b6,anim);
+_6bd(_6ba,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.implode=function(_6c2,end,_6c4,_6c5,_6c6){
+dojo.lfx.html.implode=function(_6c6,end,_6c8,_6c9,_6ca){
 var h=dojo.html;
-_6c2=dojo.byId(_6c2);
+_6c6=dojo.byId(_6c6);
 end=dojo.byId(end);
-var _6c8=dojo.html.toCoordinateObject(_6c2,true);
-var _6c9=dojo.html.toCoordinateObject(end,true);
-var _6ca=document.createElement("div");
-dojo.html.copyStyle(_6ca,_6c2);
-if(_6c2.explodeClassName){
-_6ca.className=_6c2.explodeClassName;
+var _6cc=dojo.html.toCoordinateObject(_6c6,true);
+var _6cd=dojo.html.toCoordinateObject(end,true);
+var _6ce=document.createElement("div");
+dojo.html.copyStyle(_6ce,_6c6);
+if(_6c6.explodeClassName){
+_6ce.className=_6c6.explodeClassName;
 }
-dojo.html.setOpacity(_6ca,0.3);
-with(_6ca.style){
+dojo.html.setOpacity(_6ce,0.3);
+with(_6ce.style){
 position="absolute";
 display="none";
-backgroundColor=h.getStyle(_6c2,"background-color").toLowerCase();
+backgroundColor=h.getStyle(_6c6,"background-color").toLowerCase();
 }
-dojo.body().appendChild(_6ca);
-var _6cb={opacity:{start:1,end:0.5}};
+dojo.body().appendChild(_6ce);
+var _6cf={opacity:{start:1,end:0.5}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_6cb[type]={start:_6c8[type],end:_6c9[type]};
+_6cf[type]={start:_6cc[type],end:_6cd[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_6ca,_6cb,_6c4,_6c5,{"beforeBegin":function(){
-dojo.html.hide(_6c2);
-dojo.html.show(_6ca);
+var anim=new dojo.lfx.propertyAnimation(_6ce,_6cf,_6c8,_6c9,{"beforeBegin":function(){
+dojo.html.hide(_6c6);
+dojo.html.show(_6ce);
 },"onEnd":function(){
-_6ca.parentNode.removeChild(_6ca);
+_6ce.parentNode.removeChild(_6ce);
 }});
-if(_6c6){
+if(_6ca){
 anim.connect("onEnd",function(){
-_6c6(_6c2,anim);
+_6ca(_6c6,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.highlight=function(_6ce,_6cf,_6d0,_6d1,_6d2){
-_6ce=dojo.lfx.html._byId(_6ce);
-var _6d3=[];
-dojo.lang.forEach(_6ce,function(node){
-var _6d5=dojo.html.getBackgroundColor(node);
+dojo.lfx.html.highlight=function(_6d2,_6d3,_6d4,_6d5,_6d6){
+_6d2=dojo.lfx.html._byId(_6d2);
+var _6d7=[];
+dojo.lang.forEach(_6d2,function(node){
+var _6d9=dojo.html.getBackgroundColor(node);
 var bg=dojo.html.getStyle(node,"background-color").toLowerCase();
-var _6d7=dojo.html.getStyle(node,"background-image");
-var _6d8=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
-while(_6d5.length>3){
-_6d5.pop();
+var _6db=dojo.html.getStyle(node,"background-image");
+var _6dc=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
+while(_6d9.length>3){
+_6d9.pop();
 }
-var rgb=new dojo.gfx.color.Color(_6cf);
-var _6da=new dojo.gfx.color.Color(_6d5);
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_6da}},_6d0,_6d1,{"beforeBegin":function(){
-if(_6d7){
+var rgb=new dojo.gfx.color.Color(_6d3);
+var _6de=new dojo.gfx.color.Color(_6d9);
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_6de}},_6d4,_6d5,{"beforeBegin":function(){
+if(_6db){
 node.style.backgroundImage="none";
 }
 node.style.backgroundColor="rgb("+rgb.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_6d7){
-node.style.backgroundImage=_6d7;
+if(_6db){
+node.style.backgroundImage=_6db;
 }
-if(_6d8){
+if(_6dc){
 node.style.backgroundColor="transparent";
 }
-if(_6d2){
-_6d2(node,anim);
+if(_6d6){
+_6d6(node,anim);
 }
 }});
-_6d3.push(anim);
+_6d7.push(anim);
 });
-return dojo.lfx.combine(_6d3);
+return dojo.lfx.combine(_6d7);
 };
-dojo.lfx.html.unhighlight=function(_6dc,_6dd,_6de,_6df,_6e0){
-_6dc=dojo.lfx.html._byId(_6dc);
-var _6e1=[];
-dojo.lang.forEach(_6dc,function(node){
-var _6e3=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
-var rgb=new dojo.gfx.color.Color(_6dd);
-var _6e5=dojo.html.getStyle(node,"background-image");
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_6e3,end:rgb}},_6de,_6df,{"beforeBegin":function(){
-if(_6e5){
+dojo.lfx.html.unhighlight=function(_6e0,_6e1,_6e2,_6e3,_6e4){
+_6e0=dojo.lfx.html._byId(_6e0);
+var _6e5=[];
+dojo.lang.forEach(_6e0,function(node){
+var _6e7=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
+var rgb=new dojo.gfx.color.Color(_6e1);
+var _6e9=dojo.html.getStyle(node,"background-image");
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_6e7,end:rgb}},_6e2,_6e3,{"beforeBegin":function(){
+if(_6e9){
 node.style.backgroundImage="none";
 }
-node.style.backgroundColor="rgb("+_6e3.toRgb().join(",")+")";
+node.style.backgroundColor="rgb("+_6e7.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_6e0){
-_6e0(node,anim);
+if(_6e4){
+_6e4(node,anim);
 }
 }});
-_6e1.push(anim);
+_6e5.push(anim);
 });
-return dojo.lfx.combine(_6e1);
+return dojo.lfx.combine(_6e5);
 };
 dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
 dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.html"]});
 dojo.provide("dojo.lfx.*");
 dojo.provide("dojo.lfx.toggle");
-dojo.lfx.toggle.plain={show:function(node,_6e8,_6e9,_6ea){
+dojo.lfx.toggle.plain={show:function(node,_6ec,_6ed,_6ee){
 dojo.html.show(node);
-if(dojo.lang.isFunction(_6ea)){
-_6ea();
-}
-},hide:function(node,_6ec,_6ed,_6ee){
-dojo.html.hide(node);
 if(dojo.lang.isFunction(_6ee)){
 _6ee();
 }
+},hide:function(node,_6f0,_6f1,_6f2){
+dojo.html.hide(node);
+if(dojo.lang.isFunction(_6f2)){
+_6f2();
+}
 }};
-dojo.lfx.toggle.fade={show:function(node,_6f0,_6f1,_6f2){
-dojo.lfx.fadeShow(node,_6f0,_6f1,_6f2).play();
-},hide:function(node,_6f4,_6f5,_6f6){
-dojo.lfx.fadeHide(node,_6f4,_6f5,_6f6).play();
+dojo.lfx.toggle.fade={show:function(node,_6f4,_6f5,_6f6){
+dojo.lfx.fadeShow(node,_6f4,_6f5,_6f6).play();
+},hide:function(node,_6f8,_6f9,_6fa){
+dojo.lfx.fadeHide(node,_6f8,_6f9,_6fa).play();
 }};
-dojo.lfx.toggle.wipe={show:function(node,_6f8,_6f9,_6fa){
-dojo.lfx.wipeIn(node,_6f8,_6f9,_6fa).play();
-},hide:function(node,_6fc,_6fd,_6fe){
-dojo.lfx.wipeOut(node,_6fc,_6fd,_6fe).play();
+dojo.lfx.toggle.wipe={show:function(node,_6fc,_6fd,_6fe){
+dojo.lfx.wipeIn(node,_6fc,_6fd,_6fe).play();
+},hide:function(node,_700,_701,_702){
+dojo.lfx.wipeOut(node,_700,_701,_702).play();
 }};
-dojo.lfx.toggle.explode={show:function(node,_700,_701,_702,_703){
-dojo.lfx.explode(_703||{x:0,y:0,width:0,height:0},node,_700,_701,_702).play();
-},hide:function(node,_705,_706,_707,_708){
-dojo.lfx.implode(node,_708||{x:0,y:0,width:0,height:0},_705,_706,_707).play();
+dojo.lfx.toggle.explode={show:function(node,_704,_705,_706,_707){
+dojo.lfx.explode(_707||{x:0,y:0,width:0,height:0},node,_704,_705,_706).play();
+},hide:function(node,_709,_70a,_70b,_70c){
+dojo.lfx.implode(node,_70c||{x:0,y:0,width:0,height:0},_709,_70a,_70b).play();
 }};
 dojo.provide("dojo.widget.HtmlWidget");
 dojo.declare("dojo.widget.HtmlWidget",dojo.widget.DomWidget,{templateCssPath:null,templatePath:null,lang:"",toggle:"plain",toggleDuration:150,initialize:function(args,frag){
@@ -63240,13 +53833,13 @@
 this.toggleObj=dojo.lfx.toggle[this.toggle.toLowerCase()]||dojo.lfx.toggle.plain;
 },createNodesFromText:function(txt,wrap){
 return dojo.html.createNodesFromText(txt,wrap);
-},destroyRendering:function(_70f){
+},destroyRendering:function(_713){
 try{
 if(this.bgIframe){
 this.bgIframe.remove();
 delete this.bgIframe;
 }
-if(!_70f&&this.domNode){
+if(!_713&&this.domNode){
 dojo.event.browser.clean(this.domNode);
 }
 dojo.widget.HtmlWidget.superclass.destroyRendering.call(this);
@@ -63283,13 +53876,13 @@
 return false;
 }
 var wh=dojo.html.getMarginBox(this.domNode);
-var _713=w||wh.width;
-var _714=h||wh.height;
-if(this.width==_713&&this.height==_714){
+var _717=w||wh.width;
+var _718=h||wh.height;
+if(this.width==_717&&this.height==_718){
 return false;
 }
-this.width=_713;
-this.height=_714;
+this.width=_717;
+this.height=_718;
 return true;
 },checkSize:function(){
 if(!this._isResized()){
@@ -63306,9 +53899,9 @@
 dojo.lang.setTimeout(this,this.onResized,0);
 }
 },onResized:function(){
-dojo.lang.forEach(this.children,function(_717){
-if(_717.checkSize){
-_717.checkSize();
+dojo.lang.forEach(this.children,function(_71b){
+if(_71b.checkSize){
+_71b.checkSize();
 }
 });
 }});
@@ -63331,12 +53924,12 @@
 dojo.string.trimEnd=function(str){
 return dojo.string.trim(str,-1);
 };
-dojo.string.repeat=function(str,_71e,_71f){
+dojo.string.repeat=function(str,_722,_723){
 var out="";
-for(var i=0;i<_71e;i++){
+for(var i=0;i<_722;i++){
 out+=str;
-if(_71f&&i<_71e-1){
-out+=_71f;
+if(_723&&i<_722-1){
+out+=_723;
 }
 }
 return out;
@@ -63368,59 +53961,71 @@
 dojo.provide("dojo.io.common");
 dojo.io.transports=[];
 dojo.io.hdlrFuncNames=["load","error","timeout"];
-dojo.io.Request=function(url,_72e,_72f,_730){
+dojo.io.Request=function(url,_732,_733,_734){
 if((arguments.length==1)&&(arguments[0].constructor==Object)){
 this.fromKwArgs(arguments[0]);
 }else{
 this.url=url;
-if(_72e){
-this.mimetype=_72e;
+if(_732){
+this.mimetype=_732;
 }
-if(_72f){
-this.transport=_72f;
+if(_733){
+this.transport=_733;
 }
 if(arguments.length>=4){
-this.changeUrl=_730;
+this.changeUrl=_734;
 }
 }
 };
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_733,_734){
-},error:function(type,_736,_737,_738){
-},timeout:function(type,_73a,_73b,_73c){
-},handle:function(type,data,_73f,_740){
+dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jsonFilter:function(_735){
+if((this.mimetype=="text/json-comment-filtered")||(this.mimetype=="application/json-comment-filtered")){
+var _736=_735.indexOf("/*");
+var _737=_735.lastIndexOf("*/");
+if((_736==-1)||(_737==-1)){
+dojo.debug("your JSON wasn't comment filtered!");
+return "";
+}
+return _735.substring(_736+2,_737);
+}
+dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+return _735;
+},load:function(type,data,_73a,_73b){
+},error:function(type,_73d,_73e,_73f){
+},timeout:function(type,_741,_742,_743){
+},handle:function(type,data,_746,_747){
 },timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_741){
-if(_741["url"]){
-_741.url=_741.url.toString();
+},fromKwArgs:function(_748){
+if(_748["url"]){
+_748.url=_748.url.toString();
 }
-if(_741["formNode"]){
-_741.formNode=dojo.byId(_741.formNode);
+if(_748["formNode"]){
+_748.formNode=dojo.byId(_748.formNode);
 }
-if(!_741["method"]&&_741["formNode"]&&_741["formNode"].method){
-_741.method=_741["formNode"].method;
+if(!_748["method"]&&_748["formNode"]&&_748["formNode"].method){
+_748.method=_748["formNode"].method;
 }
-if(!_741["handle"]&&_741["handler"]){
-_741.handle=_741.handler;
+if(!_748["handle"]&&_748["handler"]){
+_748.handle=_748.handler;
 }
-if(!_741["load"]&&_741["loaded"]){
-_741.load=_741.loaded;
+if(!_748["load"]&&_748["loaded"]){
+_748.load=_748.loaded;
 }
-if(!_741["changeUrl"]&&_741["changeURL"]){
-_741.changeUrl=_741.changeURL;
+if(!_748["changeUrl"]&&_748["changeURL"]){
+_748.changeUrl=_748.changeURL;
 }
-_741.encoding=dojo.lang.firstValued(_741["encoding"],djConfig["bindEncoding"],"");
-_741.sendTransport=dojo.lang.firstValued(_741["sendTransport"],djConfig["ioSendTransport"],false);
-var _742=dojo.lang.isFunction;
+_748.encoding=dojo.lang.firstValued(_748["encoding"],djConfig["bindEncoding"],"");
+_748.sendTransport=dojo.lang.firstValued(_748["sendTransport"],djConfig["ioSendTransport"],false);
+var _749=dojo.lang.isFunction;
 for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
 var fn=dojo.io.hdlrFuncNames[x];
-if(_741[fn]&&_742(_741[fn])){
+if(_748[fn]&&_749(_748[fn])){
 continue;
 }
-if(_741["handle"]&&_742(_741["handle"])){
-_741[fn]=_741.handle;
+if(_748["handle"]&&_749(_748["handle"])){
+_748[fn]=_748.handle;
 }
 }
-dojo.lang.mixin(this,_741);
+dojo.lang.mixin(this,_748);
 }});
 dojo.io.Error=function(msg,type,num){
 this.message=msg;
@@ -63431,79 +54036,79 @@
 this.push(name);
 this[name]=dojo.io[name];
 };
-dojo.io.bind=function(_749){
-if(!(_749 instanceof dojo.io.Request)){
+dojo.io.bind=function(_750){
+if(!(_750 instanceof dojo.io.Request)){
 try{
-_749=new dojo.io.Request(_749);
+_750=new dojo.io.Request(_750);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _74a="";
-if(_749["transport"]){
-_74a=_749["transport"];
-if(!this[_74a]){
-dojo.io.sendBindError(_749,"No dojo.io.bind() transport with name '"+_749["transport"]+"'.");
-return _749;
+var _751="";
+if(_750["transport"]){
+_751=_750["transport"];
+if(!this[_751]){
+dojo.io.sendBindError(_750,"No dojo.io.bind() transport with name '"+_750["transport"]+"'.");
+return _750;
 }
-if(!this[_74a].canHandle(_749)){
-dojo.io.sendBindError(_749,"dojo.io.bind() transport with name '"+_749["transport"]+"' cannot handle this type of request.");
-return _749;
+if(!this[_751].canHandle(_750)){
+dojo.io.sendBindError(_750,"dojo.io.bind() transport with name '"+_750["transport"]+"' cannot handle this type of request.");
+return _750;
 }
 }else{
 for(var x=0;x<dojo.io.transports.length;x++){
 var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_749))){
-_74a=tmp;
+if((this[tmp])&&(this[tmp].canHandle(_750))){
+_751=tmp;
 break;
 }
 }
-if(_74a==""){
-dojo.io.sendBindError(_749,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _749;
+if(_751==""){
+dojo.io.sendBindError(_750,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
+return _750;
 }
 }
-this[_74a].bind(_749);
-_749.bindSuccess=true;
-return _749;
+this[_751].bind(_750);
+_750.bindSuccess=true;
+return _750;
 };
-dojo.io.sendBindError=function(_74d,_74e){
-if((typeof _74d.error=="function"||typeof _74d.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _74f=new dojo.io.Error(_74e);
+dojo.io.sendBindError=function(_754,_755){
+if((typeof _754.error=="function"||typeof _754.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
+var _756=new dojo.io.Error(_755);
 setTimeout(function(){
-_74d[(typeof _74d.error=="function")?"error":"handle"]("error",_74f,null,_74d);
+_754[(typeof _754.error=="function")?"error":"handle"]("error",_756,null,_754);
 },50);
 }else{
-dojo.raise(_74e);
+dojo.raise(_755);
 }
 };
-dojo.io.queueBind=function(_750){
-if(!(_750 instanceof dojo.io.Request)){
+dojo.io.queueBind=function(_757){
+if(!(_757 instanceof dojo.io.Request)){
 try{
-_750=new dojo.io.Request(_750);
+_757=new dojo.io.Request(_757);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _751=_750.load;
-_750.load=function(){
+var _758=_757.load;
+_757.load=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_751.apply(this,arguments);
+var ret=_758.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-var _753=_750.error;
-_750.error=function(){
+var _75a=_757.error;
+_757.error=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_753.apply(this,arguments);
+var ret=_75a.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-dojo.io._bindQueue.push(_750);
+dojo.io._bindQueue.push(_757);
 dojo.io._dispatchNextQueueBind();
-return _750;
+return _757;
 };
 dojo.io._dispatchNextQueueBind=function(){
 if(!dojo.io._queueBindInFlight){
@@ -63517,48 +54122,48 @@
 };
 dojo.io._bindQueue=[];
 dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_756,last){
-var enc=/utf/i.test(_756||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _759=[];
-var _75a=new Object();
+dojo.io.argsFromMap=function(map,_75d,last){
+var enc=/utf/i.test(_75d||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _760=[];
+var _761=new Object();
 for(var name in map){
-var _75c=function(elt){
+var _763=function(elt){
 var val=enc(name)+"="+enc(elt);
-_759[(last==name)?"push":"unshift"](val);
+_760[(last==name)?"push":"unshift"](val);
 };
-if(!_75a[name]){
-var _75f=map[name];
-if(dojo.lang.isArray(_75f)){
-dojo.lang.forEach(_75f,_75c);
+if(!_761[name]){
+var _766=map[name];
+if(dojo.lang.isArray(_766)){
+dojo.lang.forEach(_766,_763);
 }else{
-_75c(_75f);
+_763(_766);
 }
 }
 }
-return _759.join("&");
+return _760.join("&");
 };
-dojo.io.setIFrameSrc=function(_760,src,_762){
+dojo.io.setIFrameSrc=function(_767,src,_769){
 try{
 var r=dojo.render.html;
-if(!_762){
+if(!_769){
 if(r.safari){
-_760.location=src;
+_767.location=src;
 }else{
-frames[_760.name].location=src;
+frames[_767.name].location=src;
 }
 }else{
 var idoc;
 if(r.ie){
-idoc=_760.contentWindow.document;
+idoc=_767.contentWindow.document;
 }else{
 if(r.safari){
-idoc=_760.document;
+idoc=_767.document;
 }else{
-idoc=_760.contentWindow;
+idoc=_767.contentWindow;
 }
 }
 if(!idoc){
-_760.location=src;
+_767.location=src;
 return;
 }else{
 idoc.location.replace(src);
@@ -63571,9 +54176,9 @@
 }
 };
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_765,hash){
+dojo.string.substituteParams=function(_76c,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _765.replace(/\%\{(\w+)\}/g,function(_768,key){
+return _76c.replace(/\%\{(\w+)\}/g,function(_76f,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -63587,11 +54192,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _76b=str.split(" ");
-for(var i=0;i<_76b.length;i++){
-_76b[i]=_76b[i].charAt(0).toUpperCase()+_76b[i].substring(1);
+var _772=str.split(" ");
+for(var i=0;i<_772.length;i++){
+_772[i]=_772[i].charAt(0).toUpperCase()+_772[i].substring(1);
 }
-return _76b.join(" ");
+return _772.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -63604,15 +54209,15 @@
 return str;
 }
 var ret="";
-var _770=escape(str);
-var _771,re=/%u([0-9A-F]{4})/i;
-while((_771=_770.match(re))){
-var num=Number("0x"+_771[1]);
-var _774=escape("&#"+num+";");
-ret+=_770.substring(0,_771.index)+_774;
-_770=_770.substring(_771.index+_771[0].length);
+var _777=escape(str);
+var _778,re=/%u([0-9A-F]{4})/i;
+while((_778=_777.match(re))){
+var num=Number("0x"+_778[1]);
+var _77b=escape("&#"+num+";");
+ret+=_777.substring(0,_778.index)+_77b;
+_777=_777.substring(_778.index+_778[0].length);
 }
-ret+=_770.replace(/\+/g,"%2B");
+ret+=_777.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -63637,9 +54242,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_779){
+dojo.string.escapeXml=function(str,_780){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_779){
+if(!_780){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -63662,8 +54267,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_782){
-if(_782){
+dojo.string.endsWith=function(str,end,_789){
+if(_789){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -63680,12 +54285,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_786,_787){
-if(_787){
+dojo.string.startsWith=function(str,_78d,_78e){
+if(_78e){
 str=str.toLowerCase();
-_786=_786.toLowerCase();
+_78d=_78d.toLowerCase();
 }
-return str.indexOf(_786)==0;
+return str.indexOf(_78d)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -63703,12 +54308,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_78d){
-if(_78d=="\n"){
+dojo.string.normalizeNewlines=function(text,_794){
+if(_794=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_78d=="\r"){
+if(_794=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -63717,20 +54322,20 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_78f){
-var _790=[];
-for(var i=0,_792=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_796){
+var _797=[];
+for(var i=0,_799=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_78f){
-_790.push(str.substring(_792,i));
-_792=i+1;
+if(str.charAt(i)==_796){
+_797.push(str.substring(_799,i));
+_799=i+1;
 }
 }
-_790.push(str.substr(_792));
-return _790;
+_797.push(str.substr(_799));
+return _797;
 };
 dojo.provide("dojo.undo.browser");
 try{
@@ -63776,12 +54381,12 @@
 this.bookmarkAnchor.href=hash;
 if(dojo.render.html.ie){
 url=this._loadIframeHistory();
-var _797=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_799){
+var _79e=args["back"]||args["backButton"]||args["handle"];
+var tcb=function(_7a0){
 if(window.location.hash!=""){
 setTimeout("window.location.href = '"+hash+"';",1);
 }
-_797.apply(this,[_799]);
+_79e.apply(this,[_7a0]);
 };
 if(args["back"]){
 args.back=tcb;
@@ -63794,13 +54399,13 @@
 }
 }
 }
-var _79a=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_79c){
+var _7a1=args["forward"]||args["forwardButton"]||args["handle"];
+var tfw=function(_7a3){
 if(window.location.hash!=""){
 window.location.href=hash;
 }
-if(_79a){
-_79a.apply(this,[_79c]);
+if(_7a1){
+_7a1.apply(this,[_7a3]);
 }
 };
 if(args["forward"]){
@@ -63845,10 +54450,10 @@
 }
 }
 }
-},iframeLoaded:function(evt,_79f){
+},iframeLoaded:function(evt,_7a6){
 if(!dojo.render.html.opera){
-var _7a0=this._getUrlQuery(_79f.href);
-if(_7a0==null){
+var _7a7=this._getUrlQuery(_7a6.href);
+if(_7a7==null){
 if(this.historyStack.length==1){
 this.handleBackButton();
 }
@@ -63858,17 +54463,17 @@
 this.moveForward=false;
 return;
 }
-if(this.historyStack.length>=2&&_7a0==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
+if(this.historyStack.length>=2&&_7a7==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
 this.handleBackButton();
 }else{
-if(this.forwardStack.length>0&&_7a0==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
+if(this.forwardStack.length>0&&_7a7==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
 this.handleForwardButton();
 }
 }
 }
 },handleBackButton:function(){
-var _7a1=this.historyStack.pop();
-if(!_7a1){
+var _7a8=this.historyStack.pop();
+if(!_7a8){
 return;
 }
 var last=this.historyStack[this.historyStack.length-1];
@@ -63888,7 +54493,7 @@
 }
 }
 }
-this.forwardStack.push(_7a1);
+this.forwardStack.push(_7a8);
 },handleForwardButton:function(){
 var last=this.forwardStack.pop();
 if(!last){
@@ -63909,11 +54514,11 @@
 },_createState:function(url,args,hash){
 return {"url":url,"kwArgs":args,"urlHash":hash};
 },_getUrlQuery:function(url){
-var _7a8=url.split("?");
-if(_7a8.length<2){
+var _7af=url.split("?");
+if(_7af.length<2){
 return null;
 }else{
-return _7a8[1];
+return _7af[1];
 }
 },_loadIframeHistory:function(){
 var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
@@ -63924,26 +54529,26 @@
 dojo.provide("dojo.io.BrowserIO");
 if(!dj_undef("window")){
 dojo.io.checkChildrenForFile=function(node){
-var _7ab=false;
-var _7ac=node.getElementsByTagName("input");
-dojo.lang.forEach(_7ac,function(_7ad){
-if(_7ab){
+var _7b2=false;
+var _7b3=node.getElementsByTagName("input");
+dojo.lang.forEach(_7b3,function(_7b4){
+if(_7b2){
 return;
 }
-if(_7ad.getAttribute("type")=="file"){
-_7ab=true;
+if(_7b4.getAttribute("type")=="file"){
+_7b2=true;
 }
 });
-return _7ab;
+return _7b2;
 };
-dojo.io.formHasFile=function(_7ae){
-return dojo.io.checkChildrenForFile(_7ae);
+dojo.io.formHasFile=function(_7b5){
+return dojo.io.checkChildrenForFile(_7b5);
 };
-dojo.io.updateNode=function(node,_7b0){
+dojo.io.updateNode=function(node,_7b7){
 node=dojo.byId(node);
-var args=_7b0;
-if(dojo.lang.isString(_7b0)){
-args={url:_7b0};
+var args=_7b7;
+if(dojo.lang.isString(_7b7)){
+args={url:_7b7};
 }
 args.mimetype="text/html";
 args.load=function(t,d,e){
@@ -63958,18 +54563,18 @@
 var type=(node.type||"").toLowerCase();
 return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
 };
-dojo.io.encodeForm=function(_7b7,_7b8,_7b9){
-if((!_7b7)||(!_7b7.tagName)||(!_7b7.tagName.toLowerCase()=="form")){
+dojo.io.encodeForm=function(_7be,_7bf,_7c0){
+if((!_7be)||(!_7be.tagName)||(!_7be.tagName.toLowerCase()=="form")){
 dojo.raise("Attempted to encode a non-form element.");
 }
-if(!_7b9){
-_7b9=dojo.io.formFilter;
+if(!_7c0){
+_7c0=dojo.io.formFilter;
 }
-var enc=/utf/i.test(_7b8||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _7bb=[];
-for(var i=0;i<_7b7.elements.length;i++){
-var elm=_7b7.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_7b9(elm)){
+var enc=/utf/i.test(_7bf||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _7c2=[];
+for(var i=0;i<_7be.elements.length;i++){
+var elm=_7be.elements[i];
+if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_7c0(elm)){
 continue;
 }
 var name=enc(elm.name);
@@ -63977,30 +54582,30 @@
 if(type=="select-multiple"){
 for(var j=0;j<elm.options.length;j++){
 if(elm.options[j].selected){
-_7bb.push(name+"="+enc(elm.options[j].value));
+_7c2.push(name+"="+enc(elm.options[j].value));
 }
 }
 }else{
 if(dojo.lang.inArray(["radio","checkbox"],type)){
 if(elm.checked){
-_7bb.push(name+"="+enc(elm.value));
+_7c2.push(name+"="+enc(elm.value));
 }
 }else{
-_7bb.push(name+"="+enc(elm.value));
+_7c2.push(name+"="+enc(elm.value));
 }
 }
 }
-var _7c1=_7b7.getElementsByTagName("input");
-for(var i=0;i<_7c1.length;i++){
-var _7c2=_7c1[i];
-if(_7c2.type.toLowerCase()=="image"&&_7c2.form==_7b7&&_7b9(_7c2)){
-var name=enc(_7c2.name);
-_7bb.push(name+"="+enc(_7c2.value));
-_7bb.push(name+".x=0");
-_7bb.push(name+".y=0");
+var _7c8=_7be.getElementsByTagName("input");
+for(var i=0;i<_7c8.length;i++){
+var _7c9=_7c8[i];
+if(_7c9.type.toLowerCase()=="image"&&_7c9.form==_7be&&_7c0(_7c9)){
+var name=enc(_7c9.name);
+_7c2.push(name+"="+enc(_7c9.value));
+_7c2.push(name+".x=0");
+_7c2.push(name+".y=0");
 }
 }
-return _7bb.join("&")+"&";
+return _7c2.join("&")+"&";
 };
 dojo.io.FormBind=function(args){
 this.bindArgs={};
@@ -64034,11 +54639,11 @@
 this.connect(node,"onclick","click");
 }
 }
-var _7c8=form.getElementsByTagName("input");
-for(var i=0;i<_7c8.length;i++){
-var _7c9=_7c8[i];
-if(_7c9.type.toLowerCase()=="image"&&_7c9.form==form){
-this.connect(_7c9,"onclick","click");
+var _7cf=form.getElementsByTagName("input");
+for(var i=0;i<_7cf.length;i++){
+var _7d0=_7cf[i];
+if(_7d0.type.toLowerCase()=="image"&&_7d0.form==form){
+this.connect(_7d0,"onclick","click");
 }
 }
 },onSubmit:function(form){
@@ -64056,26 +54661,26 @@
 this.clickedButton=node;
 },formFilter:function(node){
 var type=(node.type||"").toLowerCase();
-var _7d0=false;
+var _7d7=false;
 if(node.disabled||!node.name){
-_7d0=false;
+_7d7=false;
 }else{
 if(dojo.lang.inArray(["submit","button","image"],type)){
 if(!this.clickedButton){
 this.clickedButton=node;
 }
-_7d0=node==this.clickedButton;
+_7d7=node==this.clickedButton;
 }else{
-_7d0=!dojo.lang.inArray(["file","submit","reset","button"],type);
+_7d7=!dojo.lang.inArray(["file","submit","reset","button"],type);
 }
 }
-return _7d0;
-},connect:function(_7d1,_7d2,_7d3){
+return _7d7;
+},connect:function(_7d8,_7d9,_7da){
 if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_7d1,_7d2,this,_7d3);
+dojo.event.connect(_7d8,_7d9,this,_7da);
 }else{
-var fcn=dojo.lang.hitch(this,_7d3);
-_7d1[_7d2]=function(e){
+var fcn=dojo.lang.hitch(this,_7da);
+_7d8[_7d9]=function(e){
 if(!e){
 e=window.event;
 }
@@ -64092,40 +54697,40 @@
 }
 }});
 dojo.io.XMLHTTPTransport=new function(){
-var _7d6=this;
-var _7d7={};
+var _7dd=this;
+var _7de={};
 this.useCache=false;
 this.preventCache=false;
-function getCacheKey(url,_7d9,_7da){
-return url+"|"+_7d9+"|"+_7da.toLowerCase();
+function getCacheKey(url,_7e0,_7e1){
+return url+"|"+_7e0+"|"+_7e1.toLowerCase();
 }
-function addToCache(url,_7dc,_7dd,http){
-_7d7[getCacheKey(url,_7dc,_7dd)]=http;
+function addToCache(url,_7e3,_7e4,http){
+_7de[getCacheKey(url,_7e3,_7e4)]=http;
 }
-function getFromCache(url,_7e0,_7e1){
-return _7d7[getCacheKey(url,_7e0,_7e1)];
+function getFromCache(url,_7e7,_7e8){
+return _7de[getCacheKey(url,_7e7,_7e8)];
 }
 this.clearCache=function(){
-_7d7={};
+_7de={};
 };
-function doLoad(_7e2,http,url,_7e5,_7e6){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
+function doLoad(_7e9,http,url,_7ec,_7ed){
+if(((http.status>=200)&&(http.status<300))||(http.status==304)||(http.status==1223)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
 var ret;
-if(_7e2.method.toLowerCase()=="head"){
-var _7e8=http.getAllResponseHeaders();
+if(_7e9.method.toLowerCase()=="head"){
+var _7ef=http.getAllResponseHeaders();
 ret={};
 ret.toString=function(){
-return _7e8;
+return _7ef;
 };
-var _7e9=_7e8.split(/[\r\n]+/g);
-for(var i=0;i<_7e9.length;i++){
-var pair=_7e9[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+var _7f0=_7ef.split(/[\r\n]+/g);
+for(var i=0;i<_7f0.length;i++){
+var pair=_7f0[i].match(/^([^:]+)\s*:\s*(.+)$/i);
 if(pair){
 ret[pair[1]]=pair[2];
 }
 }
 }else{
-if(_7e2.mimetype=="text/javascript"){
+if(_7e9.mimetype=="text/javascript"){
 try{
 ret=dj_eval(http.responseText);
 }
@@ -64135,9 +54740,9 @@
 ret=null;
 }
 }else{
-if(_7e2.mimetype=="text/json"||_7e2.mimetype=="application/json"){
+if(_7e9.mimetype.substr(0,9)=="text/json"||_7e9.mimetype.substr(0,16)=="application/json"){
 try{
-ret=dj_eval("("+http.responseText+")");
+ret=dj_eval("("+_7e9.jsonFilter(http.responseText)+")");
 }
 catch(e){
 dojo.debug(e);
@@ -64145,7 +54750,7 @@
 ret=false;
 }
 }else{
-if((_7e2.mimetype=="application/xml")||(_7e2.mimetype=="text/xml")){
+if((_7e9.mimetype=="application/xml")||(_7e9.mimetype=="text/xml")){
 ret=http.responseXML;
 if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
 ret=dojo.dom.createDocumentFromText(http.responseText);
@@ -64156,22 +54761,22 @@
 }
 }
 }
-if(_7e6){
-addToCache(url,_7e5,_7e2.method,http);
+if(_7ed){
+addToCache(url,_7ec,_7e9.method,http);
 }
-_7e2[(typeof _7e2.load=="function")?"load":"handle"]("load",ret,http,_7e2);
+_7e9[(typeof _7e9.load=="function")?"load":"handle"]("load",ret,http,_7e9);
 }else{
-var _7ec=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_7e2[(typeof _7e2.error=="function")?"error":"handle"]("error",_7ec,http,_7e2);
+var _7f3=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
+_7e9[(typeof _7e9.error=="function")?"error":"handle"]("error",_7f3,http,_7e9);
 }
 }
-function setHeaders(http,_7ee){
-if(_7ee["headers"]){
-for(var _7ef in _7ee["headers"]){
-if(_7ef.toLowerCase()=="content-type"&&!_7ee["contentType"]){
-_7ee["contentType"]=_7ee["headers"][_7ef];
+function setHeaders(http,_7f5){
+if(_7f5["headers"]){
+for(var _7f6 in _7f5["headers"]){
+if(_7f6.toLowerCase()=="content-type"&&!_7f5["contentType"]){
+_7f5["contentType"]=_7f5["headers"][_7f6];
 }else{
-http.setRequestHeader(_7ef,_7ee["headers"][_7ef]);
+http.setRequestHeader(_7f6,_7f5["headers"][_7f6]);
 }
 }
 }
@@ -64185,7 +54790,7 @@
 };
 this.watchInFlight=function(){
 var now=null;
-if(!dojo.hostenv._blockAsync&&!_7d6._blockAsync){
+if(!dojo.hostenv._blockAsync&&!_7dd._blockAsync){
 for(var x=this.inFlight.length-1;x>=0;x--){
 try{
 var tif=this.inFlight[x];
@@ -64213,8 +54818,8 @@
 }
 catch(e){
 try{
-var _7f3=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_7f3,tif.http,tif.req);
+var _7fa=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
+tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_7fa,tif.http,tif.req);
 }
 catch(e2){
 dojo.debug("XMLHttpTransport error callback failed: "+e2);
@@ -64229,74 +54834,75 @@
 }
 this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
 };
-var _7f4=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_7f5){
-return _7f4&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_7f5["mimetype"].toLowerCase()||""))&&!(_7f5["formNode"]&&dojo.io.formHasFile(_7f5["formNode"]));
+var _7fb=dojo.hostenv.getXmlhttpObject()?true:false;
+this.canHandle=function(_7fc){
+var mlc=_7fc["mimetype"].toLowerCase()||"";
+return _7fb&&((dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript"],mlc))||(mlc.substr(0,9)=="text/json"||mlc.substr(0,16)=="application/json"))&&!(_7fc["formNode"]&&dojo.io.formHasFile(_7fc["formNode"]));
 };
 this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_7f6){
-if(!_7f6["url"]){
-if(!_7f6["formNode"]&&(_7f6["backButton"]||_7f6["back"]||_7f6["changeUrl"]||_7f6["watchForURL"])&&(!djConfig.preventBackButtonFix)){
+this.bind=function(_7fe){
+if(!_7fe["url"]){
+if(!_7fe["formNode"]&&(_7fe["backButton"]||_7fe["back"]||_7fe["changeUrl"]||_7fe["watchForURL"])&&(!djConfig.preventBackButtonFix)){
 dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_7f6);
+dojo.undo.browser.addToHistory(_7fe);
 return true;
 }
 }
-var url=_7f6.url;
-var _7f8="";
-if(_7f6["formNode"]){
-var ta=_7f6.formNode.getAttribute("action");
-if((ta)&&(!_7f6["url"])){
+var url=_7fe.url;
+var _800="";
+if(_7fe["formNode"]){
+var ta=_7fe.formNode.getAttribute("action");
+if((ta)&&(!_7fe["url"])){
 url=ta;
 }
-var tp=_7f6.formNode.getAttribute("method");
-if((tp)&&(!_7f6["method"])){
-_7f6.method=tp;
+var tp=_7fe.formNode.getAttribute("method");
+if((tp)&&(!_7fe["method"])){
+_7fe.method=tp;
 }
-_7f8+=dojo.io.encodeForm(_7f6.formNode,_7f6.encoding,_7f6["formFilter"]);
+_800+=dojo.io.encodeForm(_7fe.formNode,_7fe.encoding,_7fe["formFilter"]);
 }
 if(url.indexOf("#")>-1){
 dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
 url=url.split("#")[0];
 }
-if(_7f6["file"]){
-_7f6.method="post";
+if(_7fe["file"]){
+_7fe.method="post";
 }
-if(!_7f6["method"]){
-_7f6.method="get";
+if(!_7fe["method"]){
+_7fe.method="get";
 }
-if(_7f6.method.toLowerCase()=="get"){
-_7f6.multipart=false;
+if(_7fe.method.toLowerCase()=="get"){
+_7fe.multipart=false;
 }else{
-if(_7f6["file"]){
-_7f6.multipart=true;
+if(_7fe["file"]){
+_7fe.multipart=true;
 }else{
-if(!_7f6["multipart"]){
-_7f6.multipart=false;
+if(!_7fe["multipart"]){
+_7fe.multipart=false;
 }
 }
 }
-if(_7f6["backButton"]||_7f6["back"]||_7f6["changeUrl"]){
-dojo.undo.browser.addToHistory(_7f6);
+if(_7fe["backButton"]||_7fe["back"]||_7fe["changeUrl"]){
+dojo.undo.browser.addToHistory(_7fe);
 }
-var _7fb=_7f6["content"]||{};
-if(_7f6.sendTransport){
-_7fb["dojo.transport"]="xmlhttp";
+var _803=_7fe["content"]||{};
+if(_7fe.sendTransport){
+_803["dojo.transport"]="xmlhttp";
 }
 do{
-if(_7f6.postContent){
-_7f8=_7f6.postContent;
+if(_7fe.postContent){
+_800=_7fe.postContent;
 break;
 }
-if(_7fb){
-_7f8+=dojo.io.argsFromMap(_7fb,_7f6.encoding);
+if(_803){
+_800+=dojo.io.argsFromMap(_803,_7fe.encoding);
 }
-if(_7f6.method.toLowerCase()=="get"||!_7f6.multipart){
+if(_7fe.method.toLowerCase()=="get"||!_7fe.multipart){
 break;
 }
 var t=[];
-if(_7f8.length){
-var q=_7f8.split("&");
+if(_800.length){
+var q=_800.split("&");
 for(var i=0;i<q.length;++i){
 if(q[i].length){
 var p=q[i].split("=");
@@ -64304,71 +54910,71 @@
 }
 }
 }
-if(_7f6.file){
-if(dojo.lang.isArray(_7f6.file)){
-for(var i=0;i<_7f6.file.length;++i){
-var o=_7f6.file[i];
+if(_7fe.file){
+if(dojo.lang.isArray(_7fe.file)){
+for(var i=0;i<_7fe.file.length;++i){
+var o=_7fe.file[i];
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }else{
-var o=_7f6.file;
+var o=_7fe.file;
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }
 if(t.length){
 t.push("--"+this.multipartBoundary+"--","");
-_7f8=t.join("\r\n");
+_800=t.join("\r\n");
 }
 }while(false);
-var _801=_7f6["sync"]?false:true;
-var _802=_7f6["preventCache"]||(this.preventCache==true&&_7f6["preventCache"]!=false);
-var _803=_7f6["useCache"]==true||(this.useCache==true&&_7f6["useCache"]!=false);
-if(!_802&&_803){
-var _804=getFromCache(url,_7f8,_7f6.method);
-if(_804){
-doLoad(_7f6,_804,url,_7f8,false);
+var _809=_7fe["sync"]?false:true;
+var _80a=_7fe["preventCache"]||(this.preventCache==true&&_7fe["preventCache"]!=false);
+var _80b=_7fe["useCache"]==true||(this.useCache==true&&_7fe["useCache"]!=false);
+if(!_80a&&_80b){
+var _80c=getFromCache(url,_800,_7fe.method);
+if(_80c){
+doLoad(_7fe,_80c,url,_800,false);
 return;
 }
 }
-var http=dojo.hostenv.getXmlhttpObject(_7f6);
-var _806=false;
-if(_801){
-var _807=this.inFlight.push({"req":_7f6,"http":http,"url":url,"query":_7f8,"useCache":_803,"startTime":_7f6.timeoutSeconds?(new Date()).getTime():0});
+var http=dojo.hostenv.getXmlhttpObject(_7fe);
+var _80e=false;
+if(_809){
+var _80f=this.inFlight.push({"req":_7fe,"http":http,"url":url,"query":_800,"useCache":_80b,"startTime":_7fe.timeoutSeconds?(new Date()).getTime():0});
 this.startWatchingInFlight();
 }else{
-_7d6._blockAsync=true;
+_7dd._blockAsync=true;
 }
-if(_7f6.method.toLowerCase()=="post"){
-if(!_7f6.user){
-http.open("POST",url,_801);
+if(_7fe.method.toLowerCase()=="post"){
+if(!_7fe.user){
+http.open("POST",url,_809);
 }else{
-http.open("POST",url,_801,_7f6.user,_7f6.password);
+http.open("POST",url,_809,_7fe.user,_7fe.password);
 }
-setHeaders(http,_7f6);
-http.setRequestHeader("Content-Type",_7f6.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_7f6.contentType||"application/x-www-form-urlencoded"));
+setHeaders(http,_7fe);
+http.setRequestHeader("Content-Type",_7fe.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_7fe.contentType||"application/x-www-form-urlencoded"));
 try{
-http.send(_7f8);
+http.send(_800);
 }
 catch(e){
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_7f6,{status:404},url,_7f8,_803);
+doLoad(_7fe,{status:404},url,_800,_80b);
 }
 }else{
-var _808=url;
-if(_7f8!=""){
-_808+=(_808.indexOf("?")>-1?"&":"?")+_7f8;
+var _810=url;
+if(_800!=""){
+_810+=(_810.indexOf("?")>-1?"&":"?")+_800;
 }
-if(_802){
-_808+=(dojo.string.endsWithAny(_808,"?","&")?"":(_808.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
+if(_80a){
+_810+=(dojo.string.endsWithAny(_810,"?","&")?"":(_810.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
 }
-if(!_7f6.user){
-http.open(_7f6.method.toUpperCase(),_808,_801);
+if(!_7fe.user){
+http.open(_7fe.method.toUpperCase(),_810,_809);
 }else{
-http.open(_7f6.method.toUpperCase(),_808,_801,_7f6.user,_7f6.password);
+http.open(_7fe.method.toUpperCase(),_810,_809,_7fe.user,_7fe.password);
 }
-setHeaders(http,_7f6);
+setHeaders(http,_7fe);
 try{
 http.send(null);
 }
@@ -64376,14 +54982,14 @@
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_7f6,{status:404},url,_7f8,_803);
+doLoad(_7fe,{status:404},url,_800,_80b);
 }
 }
-if(!_801){
-doLoad(_7f6,http,url,_7f8,_803);
-_7d6._blockAsync=false;
+if(!_809){
+doLoad(_7fe,http,url,_800,_80b);
+_7dd._blockAsync=false;
 }
-_7f6.abort=function(){
+_7fe.abort=function(){
 try{
 http._aborted=true;
 }
@@ -64397,15 +55003,15 @@
 };
 }
 dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_80a,days,path,_80d,_80e){
-var _80f=-1;
+dojo.io.cookie.setCookie=function(name,_812,days,path,_815,_816){
+var _817=-1;
 if((typeof days=="number")&&(days>=0)){
 var d=new Date();
 d.setTime(d.getTime()+(days*24*60*60*1000));
-_80f=d.toGMTString();
+_817=d.toGMTString();
 }
-_80a=escape(_80a);
-document.cookie=name+"="+_80a+";"+(_80f!=-1?" expires="+_80f+";":"")+(path?"path="+path:"")+(_80d?"; domain="+_80d:"")+(_80e?"; secure":"");
+_812=escape(_812);
+document.cookie=name+"="+_812+";"+(_817!=-1?" expires="+_817+";":"")+(path?"path="+path:"")+(_815?"; domain="+_815:"")+(_816?"; secure":"");
 };
 dojo.io.cookie.set=dojo.io.cookie.setCookie;
 dojo.io.cookie.getCookie=function(name){
@@ -64413,71 +55019,71 @@
 if(idx==-1){
 return null;
 }
-var _813=document.cookie.substring(idx+name.length+1);
-var end=_813.indexOf(";");
+var _81b=document.cookie.substring(idx+name.length+1);
+var end=_81b.indexOf(";");
 if(end==-1){
-end=_813.length;
+end=_81b.length;
 }
-_813=_813.substring(0,end);
-_813=unescape(_813);
-return _813;
+_81b=_81b.substring(0,end);
+_81b=unescape(_81b);
+return _81b;
 };
 dojo.io.cookie.get=dojo.io.cookie.getCookie;
 dojo.io.cookie.deleteCookie=function(name){
 dojo.io.cookie.setCookie(name,"-",0);
 };
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_81a,_81b,_81c){
+dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_822,_823,_824){
 if(arguments.length==5){
-_81c=_81a;
-_81a=null;
-_81b=null;
+_824=_822;
+_822=null;
+_823=null;
 }
-var _81d=[],_81e,_81f="";
-if(!_81c){
-_81e=dojo.io.cookie.getObjectCookie(name);
+var _825=[],_826,_827="";
+if(!_824){
+_826=dojo.io.cookie.getObjectCookie(name);
 }
 if(days>=0){
-if(!_81e){
-_81e={};
+if(!_826){
+_826={};
 }
 for(var prop in obj){
 if(obj[prop]==null){
-delete _81e[prop];
+delete _826[prop];
 }else{
 if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_81e[prop]=obj[prop];
+_826[prop]=obj[prop];
 }
 }
 }
 prop=null;
-for(var prop in _81e){
-_81d.push(escape(prop)+"="+escape(_81e[prop]));
+for(var prop in _826){
+_825.push(escape(prop)+"="+escape(_826[prop]));
 }
-_81f=_81d.join("&");
+_827=_825.join("&");
 }
-dojo.io.cookie.setCookie(name,_81f,days,path,_81a,_81b);
+dojo.io.cookie.setCookie(name,_827,days,path,_822,_823);
 };
 dojo.io.cookie.getObjectCookie=function(name){
-var _822=null,_823=dojo.io.cookie.getCookie(name);
-if(_823){
-_822={};
-var _824=_823.split("&");
-for(var i=0;i<_824.length;i++){
-var pair=_824[i].split("=");
-var _827=pair[1];
-if(isNaN(_827)){
-_827=unescape(pair[1]);
+var _82a=null,_82b=dojo.io.cookie.getCookie(name);
+if(_82b){
+_82a={};
+var _82c=_82b.split("&");
+for(var i=0;i<_82c.length;i++){
+var pair=_82c[i].split("=");
+var _82f=pair[1];
+if(isNaN(_82f)){
+_82f=unescape(pair[1]);
 }
-_822[unescape(pair[0])]=_827;
+_82a[unescape(pair[0])]=_82f;
 }
 }
-return _822;
+return _82a;
 };
 dojo.io.cookie.isSupported=function(){
 if(typeof navigator.cookieEnabled!="boolean"){
 dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _828=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_828=="CookiesAllowed");
+var _830=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+navigator.cookieEnabled=(_830=="CookiesAllowed");
 if(navigator.cookieEnabled){
 this.deleteCookie("__TestingYourBrowserForCookieSupport__");
 }
@@ -64493,6 +55099,8 @@
 
 __CPAN_EDITION__ widget build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -64538,6 +55146,7 @@
 ../src/io/BrowserIO.js
 ../src/io/cookie.js
 ../src/io/__package__.js
+
 __CPAN_EDITION__ ajax dojo.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -64574,7 +55183,7 @@
 return dj_currentContext;
 };
 dojo.locale=djConfig.locale;
-dojo.version={major:0,minor:4,patch:2,flag:"xdomain",revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]),toString:function(){
+dojo.version={major:0,minor:4,patch:3,flag:"xdomain",revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]),toString:function(){
 with(dojo.version){
 return major+"."+minor+"."+patch+flag+" ("+revision+")";
 }
@@ -65153,11 +55762,15 @@
 dojo.hostenv.resetXd();
 dojo.hostenv.createXdPackage=function(_9f,_a0,_a1){
 var _a2=[];
-var _a3=/dojo.(require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv\.conditionalLoadModule|.hostenv\.loadModule|hostenv\.moduleLoaded)\(([\w\W]*?)\)/mg;
+var _a3=/dojo.(requireLocalization|require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv\.conditionalLoadModule|.hostenv\.loadModule|hostenv\.moduleLoaded)\(([\w\W]*?)\)/mg;
 var _a4;
 while((_a4=_a3.exec(_9f))!=null){
+if(_a4[1]=="requireLocalization"){
+eval(_a4[0]);
+}else{
 _a2.push("\""+_a4[1]+"\", "+_a4[2]);
 }
+}
 var _a5=[];
 _a5.push("dojo.hostenv.packageLoaded({\n");
 if(_a2.length>0){
@@ -65206,12 +55819,12 @@
 if(this.loadedUris[uri]){
 return 1;
 }
-if(this.isXDomain){
+if(this.isXDomain&&_b1){
 if(uri.indexOf("__package__")!=-1){
 _b1+=".*";
 }
 this.xdOrderedReqs.push(_b1);
-if(_b0){
+if(_b0||uri.indexOf("/nls/")==-1){
 this.xdInFlight[_b1]=true;
 this.inFlightCount++;
 }
@@ -65502,7 +56115,9 @@
 };
 dojo.hostenv.xdNotifyLoaded=function(){
 this.inFlightCount=0;
+if(this._djInitFired&&!this.loadNotifying){
 this.callLoaded();
+}
 };
 dojo.hostenv.flattenRequireArray=function(_f8){
 if(_f8){
@@ -65520,7 +56135,6 @@
 dojo.hostenv.callLoaded=function(){
 if(this.xdHasCalledPreload||dojo.hostenv.getModulePrefix("dojo")=="src"||!this.localesGenerated){
 this.xdRealCallLoaded();
-this.xdHasCalledPreload=true;
 }else{
 if(this.localesGenerated){
 this.registerNlsPrefix=function(){
@@ -65528,8 +56142,8 @@
 };
 this.preloadLocalizations();
 }
-this.xdHasCalledPreload=true;
 }
+this.xdHasCalledPreload=true;
 };
 }
 if(typeof window!="undefined"){
@@ -65760,7 +56374,9 @@
 };
 return true;
 }
+dojo.hostenv._djInitFired=false;
 function dj_load_init(e){
+dojo.hostenv._djInitFired=true;
 var type=(e&&e.type)?e.type.toLowerCase():"load";
 if(arguments.callee.initialized||(type!="domcontentloaded"&&type!="load")){
 return;
@@ -66229,43 +56845,55 @@
 }
 }
 };
-dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,load:function(type,data,_1a0,_1a1){
-},error:function(type,_1a3,_1a4,_1a5){
-},timeout:function(type,_1a7,_1a8,_1a9){
-},handle:function(type,data,_1ac,_1ad){
+dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GET",content:undefined,transport:undefined,changeUrl:undefined,formNode:undefined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jsonFilter:function(_19e){
+if((this.mimetype=="text/json-comment-filtered")||(this.mimetype=="application/json-comment-filtered")){
+var _19f=_19e.indexOf("/*");
+var _1a0=_19e.lastIndexOf("*/");
+if((_19f==-1)||(_1a0==-1)){
+dojo.debug("your JSON wasn't comment filtered!");
+return "";
+}
+return _19e.substring(_19f+2,_1a0);
+}
+dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+return _19e;
+},load:function(type,data,_1a3,_1a4){
+},error:function(type,_1a6,_1a7,_1a8){
+},timeout:function(type,_1aa,_1ab,_1ac){
+},handle:function(type,data,_1af,_1b0){
 },timeoutSeconds:0,abort:function(){
-},fromKwArgs:function(_1ae){
-if(_1ae["url"]){
-_1ae.url=_1ae.url.toString();
+},fromKwArgs:function(_1b1){
+if(_1b1["url"]){
+_1b1.url=_1b1.url.toString();
 }
-if(_1ae["formNode"]){
-_1ae.formNode=dojo.byId(_1ae.formNode);
+if(_1b1["formNode"]){
+_1b1.formNode=dojo.byId(_1b1.formNode);
 }
-if(!_1ae["method"]&&_1ae["formNode"]&&_1ae["formNode"].method){
-_1ae.method=_1ae["formNode"].method;
+if(!_1b1["method"]&&_1b1["formNode"]&&_1b1["formNode"].method){
+_1b1.method=_1b1["formNode"].method;
 }
-if(!_1ae["handle"]&&_1ae["handler"]){
-_1ae.handle=_1ae.handler;
+if(!_1b1["handle"]&&_1b1["handler"]){
+_1b1.handle=_1b1.handler;
 }
-if(!_1ae["load"]&&_1ae["loaded"]){
-_1ae.load=_1ae.loaded;
+if(!_1b1["load"]&&_1b1["loaded"]){
+_1b1.load=_1b1.loaded;
 }
-if(!_1ae["changeUrl"]&&_1ae["changeURL"]){
-_1ae.changeUrl=_1ae.changeURL;
+if(!_1b1["changeUrl"]&&_1b1["changeURL"]){
+_1b1.changeUrl=_1b1.changeURL;
 }
-_1ae.encoding=dojo.lang.firstValued(_1ae["encoding"],djConfig["bindEncoding"],"");
-_1ae.sendTransport=dojo.lang.firstValued(_1ae["sendTransport"],djConfig["ioSendTransport"],false);
-var _1af=dojo.lang.isFunction;
+_1b1.encoding=dojo.lang.firstValued(_1b1["encoding"],djConfig["bindEncoding"],"");
+_1b1.sendTransport=dojo.lang.firstValued(_1b1["sendTransport"],djConfig["ioSendTransport"],false);
+var _1b2=dojo.lang.isFunction;
 for(var x=0;x<dojo.io.hdlrFuncNames.length;x++){
 var fn=dojo.io.hdlrFuncNames[x];
-if(_1ae[fn]&&_1af(_1ae[fn])){
+if(_1b1[fn]&&_1b2(_1b1[fn])){
 continue;
 }
-if(_1ae["handle"]&&_1af(_1ae["handle"])){
-_1ae[fn]=_1ae.handle;
+if(_1b1["handle"]&&_1b2(_1b1["handle"])){
+_1b1[fn]=_1b1.handle;
 }
 }
-dojo.lang.mixin(this,_1ae);
+dojo.lang.mixin(this,_1b1);
 }});
 dojo.io.Error=function(msg,type,num){
 this.message=msg;
@@ -66276,79 +56904,79 @@
 this.push(name);
 this[name]=dojo.io[name];
 };
-dojo.io.bind=function(_1b6){
-if(!(_1b6 instanceof dojo.io.Request)){
+dojo.io.bind=function(_1b9){
+if(!(_1b9 instanceof dojo.io.Request)){
 try{
-_1b6=new dojo.io.Request(_1b6);
+_1b9=new dojo.io.Request(_1b9);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _1b7="";
-if(_1b6["transport"]){
-_1b7=_1b6["transport"];
-if(!this[_1b7]){
-dojo.io.sendBindError(_1b6,"No dojo.io.bind() transport with name '"+_1b6["transport"]+"'.");
-return _1b6;
+var _1ba="";
+if(_1b9["transport"]){
+_1ba=_1b9["transport"];
+if(!this[_1ba]){
+dojo.io.sendBindError(_1b9,"No dojo.io.bind() transport with name '"+_1b9["transport"]+"'.");
+return _1b9;
 }
-if(!this[_1b7].canHandle(_1b6)){
-dojo.io.sendBindError(_1b6,"dojo.io.bind() transport with name '"+_1b6["transport"]+"' cannot handle this type of request.");
-return _1b6;
+if(!this[_1ba].canHandle(_1b9)){
+dojo.io.sendBindError(_1b9,"dojo.io.bind() transport with name '"+_1b9["transport"]+"' cannot handle this type of request.");
+return _1b9;
 }
 }else{
 for(var x=0;x<dojo.io.transports.length;x++){
 var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_1b6))){
-_1b7=tmp;
+if((this[tmp])&&(this[tmp].canHandle(_1b9))){
+_1ba=tmp;
 break;
 }
 }
-if(_1b7==""){
-dojo.io.sendBindError(_1b6,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
-return _1b6;
+if(_1ba==""){
+dojo.io.sendBindError(_1b9,"None of the loaded transports for dojo.io.bind()"+" can handle the request.");
+return _1b9;
 }
 }
-this[_1b7].bind(_1b6);
-_1b6.bindSuccess=true;
-return _1b6;
+this[_1ba].bind(_1b9);
+_1b9.bindSuccess=true;
+return _1b9;
 };
-dojo.io.sendBindError=function(_1ba,_1bb){
-if((typeof _1ba.error=="function"||typeof _1ba.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
-var _1bc=new dojo.io.Error(_1bb);
+dojo.io.sendBindError=function(_1bd,_1be){
+if((typeof _1bd.error=="function"||typeof _1bd.handle=="function")&&(typeof setTimeout=="function"||typeof setTimeout=="object")){
+var _1bf=new dojo.io.Error(_1be);
 setTimeout(function(){
-_1ba[(typeof _1ba.error=="function")?"error":"handle"]("error",_1bc,null,_1ba);
+_1bd[(typeof _1bd.error=="function")?"error":"handle"]("error",_1bf,null,_1bd);
 },50);
 }else{
-dojo.raise(_1bb);
+dojo.raise(_1be);
 }
 };
-dojo.io.queueBind=function(_1bd){
-if(!(_1bd instanceof dojo.io.Request)){
+dojo.io.queueBind=function(_1c0){
+if(!(_1c0 instanceof dojo.io.Request)){
 try{
-_1bd=new dojo.io.Request(_1bd);
+_1c0=new dojo.io.Request(_1c0);
 }
 catch(e){
 dojo.debug(e);
 }
 }
-var _1be=_1bd.load;
-_1bd.load=function(){
+var _1c1=_1c0.load;
+_1c0.load=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_1be.apply(this,arguments);
+var ret=_1c1.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-var _1c0=_1bd.error;
-_1bd.error=function(){
+var _1c3=_1c0.error;
+_1c0.error=function(){
 dojo.io._queueBindInFlight=false;
-var ret=_1c0.apply(this,arguments);
+var ret=_1c3.apply(this,arguments);
 dojo.io._dispatchNextQueueBind();
 return ret;
 };
-dojo.io._bindQueue.push(_1bd);
+dojo.io._bindQueue.push(_1c0);
 dojo.io._dispatchNextQueueBind();
-return _1bd;
+return _1c0;
 };
 dojo.io._dispatchNextQueueBind=function(){
 if(!dojo.io._queueBindInFlight){
@@ -66362,48 +56990,48 @@
 };
 dojo.io._bindQueue=[];
 dojo.io._queueBindInFlight=false;
-dojo.io.argsFromMap=function(map,_1c3,last){
-var enc=/utf/i.test(_1c3||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _1c6=[];
-var _1c7=new Object();
+dojo.io.argsFromMap=function(map,_1c6,last){
+var enc=/utf/i.test(_1c6||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _1c9=[];
+var _1ca=new Object();
 for(var name in map){
-var _1c9=function(elt){
+var _1cc=function(elt){
 var val=enc(name)+"="+enc(elt);
-_1c6[(last==name)?"push":"unshift"](val);
+_1c9[(last==name)?"push":"unshift"](val);
 };
-if(!_1c7[name]){
-var _1cc=map[name];
-if(dojo.lang.isArray(_1cc)){
-dojo.lang.forEach(_1cc,_1c9);
+if(!_1ca[name]){
+var _1cf=map[name];
+if(dojo.lang.isArray(_1cf)){
+dojo.lang.forEach(_1cf,_1cc);
 }else{
-_1c9(_1cc);
+_1cc(_1cf);
 }
 }
 }
-return _1c6.join("&");
+return _1c9.join("&");
 };
-dojo.io.setIFrameSrc=function(_1cd,src,_1cf){
+dojo.io.setIFrameSrc=function(_1d0,src,_1d2){
 try{
 var r=dojo.render.html;
-if(!_1cf){
+if(!_1d2){
 if(r.safari){
-_1cd.location=src;
+_1d0.location=src;
 }else{
-frames[_1cd.name].location=src;
+frames[_1d0.name].location=src;
 }
 }else{
 var idoc;
 if(r.ie){
-idoc=_1cd.contentWindow.document;
+idoc=_1d0.contentWindow.document;
 }else{
 if(r.safari){
-idoc=_1cd.document;
+idoc=_1d0.document;
 }else{
-idoc=_1cd.contentWindow;
+idoc=_1d0.contentWindow;
 }
 }
 if(!idoc){
-_1cd.location=src;
+_1d0.location=src;
 return;
 }else{
 idoc.location.replace(src);
@@ -66426,138 +57054,138 @@
 },isEmpty:function(obj){
 if(dojo.lang.isObject(obj)){
 var tmp={};
-var _1d6=0;
+var _1d9=0;
 for(var x in obj){
 if(obj[x]&&(!tmp[x])){
-_1d6++;
+_1d9++;
 break;
 }
 }
-return _1d6==0;
+return _1d9==0;
 }else{
 if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
 return obj.length==0;
 }
 }
-},map:function(arr,obj,_1da){
-var _1db=dojo.lang.isString(arr);
-if(_1db){
+},map:function(arr,obj,_1dd){
+var _1de=dojo.lang.isString(arr);
+if(_1de){
 arr=arr.split("");
 }
-if(dojo.lang.isFunction(obj)&&(!_1da)){
-_1da=obj;
+if(dojo.lang.isFunction(obj)&&(!_1dd)){
+_1dd=obj;
 obj=dj_global;
 }else{
-if(dojo.lang.isFunction(obj)&&_1da){
-var _1dc=obj;
-obj=_1da;
-_1da=_1dc;
+if(dojo.lang.isFunction(obj)&&_1dd){
+var _1df=obj;
+obj=_1dd;
+_1dd=_1df;
 }
 }
 if(Array.map){
-var _1dd=Array.map(arr,_1da,obj);
+var _1e0=Array.map(arr,_1dd,obj);
 }else{
-var _1dd=[];
+var _1e0=[];
 for(var i=0;i<arr.length;++i){
-_1dd.push(_1da.call(obj,arr[i]));
+_1e0.push(_1dd.call(obj,arr[i]));
 }
 }
-if(_1db){
-return _1dd.join("");
+if(_1de){
+return _1e0.join("");
 }else{
-return _1dd;
+return _1e0;
 }
-},reduce:function(arr,_1e0,obj,_1e2){
-var _1e3=_1e0;
+},reduce:function(arr,_1e3,obj,_1e5){
+var _1e6=_1e3;
 if(arguments.length==2){
-_1e2=_1e0;
-_1e3=arr[0];
+_1e5=_1e3;
+_1e6=arr[0];
 arr=arr.slice(1);
 }else{
 if(arguments.length==3){
 if(dojo.lang.isFunction(obj)){
-_1e2=obj;
+_1e5=obj;
 obj=null;
 }
 }else{
 if(dojo.lang.isFunction(obj)){
-var tmp=_1e2;
-_1e2=obj;
+var tmp=_1e5;
+_1e5=obj;
 obj=tmp;
 }
 }
 }
 var ob=obj||dj_global;
 dojo.lang.map(arr,function(val){
-_1e3=_1e2.call(ob,_1e3,val);
+_1e6=_1e5.call(ob,_1e6,val);
 });
-return _1e3;
-},forEach:function(_1e7,_1e8,_1e9){
-if(dojo.lang.isString(_1e7)){
-_1e7=_1e7.split("");
+return _1e6;
+},forEach:function(_1ea,_1eb,_1ec){
+if(dojo.lang.isString(_1ea)){
+_1ea=_1ea.split("");
 }
 if(Array.forEach){
-Array.forEach(_1e7,_1e8,_1e9);
+Array.forEach(_1ea,_1eb,_1ec);
 }else{
-if(!_1e9){
-_1e9=dj_global;
+if(!_1ec){
+_1ec=dj_global;
 }
-for(var i=0,l=_1e7.length;i<l;i++){
-_1e8.call(_1e9,_1e7[i],i,_1e7);
+for(var i=0,l=_1ea.length;i<l;i++){
+_1eb.call(_1ec,_1ea[i],i,_1ea);
 }
 }
-},_everyOrSome:function(_1ec,arr,_1ee,_1ef){
+},_everyOrSome:function(_1ef,arr,_1f1,_1f2){
 if(dojo.lang.isString(arr)){
 arr=arr.split("");
 }
 if(Array.every){
-return Array[_1ec?"every":"some"](arr,_1ee,_1ef);
+return Array[_1ef?"every":"some"](arr,_1f1,_1f2);
 }else{
-if(!_1ef){
-_1ef=dj_global;
+if(!_1f2){
+_1f2=dj_global;
 }
 for(var i=0,l=arr.length;i<l;i++){
-var _1f2=_1ee.call(_1ef,arr[i],i,arr);
-if(_1ec&&!_1f2){
+var _1f5=_1f1.call(_1f2,arr[i],i,arr);
+if(_1ef&&!_1f5){
 return false;
 }else{
-if((!_1ec)&&(_1f2)){
+if((!_1ef)&&(_1f5)){
 return true;
 }
 }
 }
-return Boolean(_1ec);
+return Boolean(_1ef);
 }
-},every:function(arr,_1f4,_1f5){
-return this._everyOrSome(true,arr,_1f4,_1f5);
-},some:function(arr,_1f7,_1f8){
-return this._everyOrSome(false,arr,_1f7,_1f8);
-},filter:function(arr,_1fa,_1fb){
-var _1fc=dojo.lang.isString(arr);
-if(_1fc){
+},every:function(arr,_1f7,_1f8){
+return this._everyOrSome(true,arr,_1f7,_1f8);
+},some:function(arr,_1fa,_1fb){
+return this._everyOrSome(false,arr,_1fa,_1fb);
+},filter:function(arr,_1fd,_1fe){
+var _1ff=dojo.lang.isString(arr);
+if(_1ff){
 arr=arr.split("");
 }
-var _1fd;
+var _200;
 if(Array.filter){
-_1fd=Array.filter(arr,_1fa,_1fb);
+_200=Array.filter(arr,_1fd,_1fe);
 }else{
-if(!_1fb){
+if(!_1fe){
 if(arguments.length>=3){
 dojo.raise("thisObject doesn't exist!");
 }
-_1fb=dj_global;
+_1fe=dj_global;
 }
-_1fd=[];
+_200=[];
 for(var i=0;i<arr.length;i++){
-if(_1fa.call(_1fb,arr[i],i,arr)){
-_1fd.push(arr[i]);
+if(_1fd.call(_1fe,arr[i],i,arr)){
+_200.push(arr[i]);
 }
 }
 }
-if(_1fc){
-return _1fd.join("");
+if(_1ff){
+return _200.join("");
 }else{
-return _1fd;
+return _200;
 }
 },unnest:function(){
 var out=[];
@@ -66570,29 +57198,37 @@
 }
 }
 return out;
-},toArray:function(_202,_203){
-var _204=[];
-for(var i=_203||0;i<_202.length;i++){
-_204.push(_202[i]);
+},toArray:function(_205,_206){
+var _207=[];
+for(var i=_206||0;i<_205.length;i++){
+_207.push(_205[i]);
 }
-return _204;
+return _207;
 }});
 dojo.provide("dojo.lang.func");
-dojo.lang.hitch=function(_206,_207){
-var fcn=(dojo.lang.isString(_207)?_206[_207]:_207)||function(){
+dojo.lang.hitch=function(_209,_20a){
+var args=[];
+for(var x=2;x<arguments.length;x++){
+args.push(arguments[x]);
+}
+var fcn=(dojo.lang.isString(_20a)?_209[_20a]:_20a)||function(){
 };
 return function(){
-return fcn.apply(_206,arguments);
+var ta=args.concat([]);
+for(var x=0;x<arguments.length;x++){
+ta.push(arguments[x]);
+}
+return fcn.apply(_209,ta);
 };
 };
 dojo.lang.anonCtr=0;
 dojo.lang.anon={};
-dojo.lang.nameAnonFunc=function(_209,_20a,_20b){
-var nso=(_20a||dojo.lang.anon);
-if((_20b)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
+dojo.lang.nameAnonFunc=function(_210,_211,_212){
+var nso=(_211||dojo.lang.anon);
+if((_212)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]==true))){
 for(var x in nso){
 try{
-if(nso[x]===_209){
+if(nso[x]===_210){
 return x;
 }
 }
@@ -66604,50 +57240,50 @@
 while(typeof nso[ret]!="undefined"){
 ret="__"+dojo.lang.anonCtr++;
 }
-nso[ret]=_209;
+nso[ret]=_210;
 return ret;
 };
-dojo.lang.forward=function(_20f){
+dojo.lang.forward=function(_216){
 return function(){
-return this[_20f].apply(this,arguments);
+return this[_216].apply(this,arguments);
 };
 };
-dojo.lang.curry=function(_210,func){
-var _212=[];
-_210=_210||dj_global;
+dojo.lang.curry=function(_217,func){
+var _219=[];
+_217=_217||dj_global;
 if(dojo.lang.isString(func)){
-func=_210[func];
+func=_217[func];
 }
 for(var x=2;x<arguments.length;x++){
-_212.push(arguments[x]);
+_219.push(arguments[x]);
 }
-var _214=(func["__preJoinArity"]||func.length)-_212.length;
-function gather(_215,_216,_217){
-var _218=_217;
-var _219=_216.slice(0);
-for(var x=0;x<_215.length;x++){
-_219.push(_215[x]);
+var _21b=(func["__preJoinArity"]||func.length)-_219.length;
+function gather(_21c,_21d,_21e){
+var _21f=_21e;
+var _220=_21d.slice(0);
+for(var x=0;x<_21c.length;x++){
+_220.push(_21c[x]);
 }
-_217=_217-_215.length;
-if(_217<=0){
-var res=func.apply(_210,_219);
-_217=_218;
+_21e=_21e-_21c.length;
+if(_21e<=0){
+var res=func.apply(_217,_220);
+_21e=_21f;
 return res;
 }else{
 return function(){
-return gather(arguments,_219,_217);
+return gather(arguments,_220,_21e);
 };
 }
 }
-return gather([],_212,_214);
+return gather([],_219,_21b);
 };
-dojo.lang.curryArguments=function(_21c,func,args,_21f){
-var _220=[];
-var x=_21f||0;
-for(x=_21f;x<args.length;x++){
-_220.push(args[x]);
+dojo.lang.curryArguments=function(_223,func,args,_226){
+var _227=[];
+var x=_226||0;
+for(x=_226;x<args.length;x++){
+_227.push(args[x]);
 }
-return dojo.lang.curry.apply(dojo.lang,[_21c,func].concat(_220));
+return dojo.lang.curry.apply(dojo.lang,[_223,func].concat(_227));
 };
 dojo.lang.tryThese=function(){
 for(var x=0;x<arguments.length;x++){
@@ -66664,36 +57300,36 @@
 }
 }
 };
-dojo.lang.delayThese=function(farr,cb,_226,_227){
+dojo.lang.delayThese=function(farr,cb,_22d,_22e){
 if(!farr.length){
-if(typeof _227=="function"){
-_227();
+if(typeof _22e=="function"){
+_22e();
 }
 return;
 }
-if((typeof _226=="undefined")&&(typeof cb=="number")){
-_226=cb;
+if((typeof _22d=="undefined")&&(typeof cb=="number")){
+_22d=cb;
 cb=function(){
 };
 }else{
 if(!cb){
 cb=function(){
 };
-if(!_226){
-_226=0;
+if(!_22d){
+_22d=0;
 }
 }
 }
 setTimeout(function(){
 (farr.shift())();
 cb();
-dojo.lang.delayThese(farr,cb,_226,_227);
-},_226);
+dojo.lang.delayThese(farr,cb,_22d,_22e);
+},_22d);
 };
 dojo.provide("dojo.string.extras");
-dojo.string.substituteParams=function(_228,hash){
+dojo.string.substituteParams=function(_22f,hash){
 var map=(typeof hash=="object")?hash:dojo.lang.toArray(arguments,1);
-return _228.replace(/\%\{(\w+)\}/g,function(_22b,key){
+return _22f.replace(/\%\{(\w+)\}/g,function(_232,key){
 if(typeof (map[key])!="undefined"&&map[key]!=null){
 return map[key];
 }
@@ -66707,11 +57343,11 @@
 if(arguments.length==0){
 str=this;
 }
-var _22e=str.split(" ");
-for(var i=0;i<_22e.length;i++){
-_22e[i]=_22e[i].charAt(0).toUpperCase()+_22e[i].substring(1);
+var _235=str.split(" ");
+for(var i=0;i<_235.length;i++){
+_235[i]=_235[i].charAt(0).toUpperCase()+_235[i].substring(1);
 }
-return _22e.join(" ");
+return _235.join(" ");
 };
 dojo.string.isBlank=function(str){
 if(!dojo.lang.isString(str)){
@@ -66724,15 +57360,15 @@
 return str;
 }
 var ret="";
-var _233=escape(str);
-var _234,re=/%u([0-9A-F]{4})/i;
-while((_234=_233.match(re))){
-var num=Number("0x"+_234[1]);
-var _237=escape("&#"+num+";");
-ret+=_233.substring(0,_234.index)+_237;
-_233=_233.substring(_234.index+_234[0].length);
+var _23a=escape(str);
+var _23b,re=/%u([0-9A-F]{4})/i;
+while((_23b=_23a.match(re))){
+var num=Number("0x"+_23b[1]);
+var _23e=escape("&#"+num+";");
+ret+=_23a.substring(0,_23b.index)+_23e;
+_23a=_23a.substring(_23b.index+_23b[0].length);
 }
-ret+=_233.replace(/\+/g,"%2B");
+ret+=_23a.replace(/\+/g,"%2B");
 return ret;
 };
 dojo.string.escape=function(type,str){
@@ -66757,9 +57393,9 @@
 return str;
 }
 };
-dojo.string.escapeXml=function(str,_23c){
+dojo.string.escapeXml=function(str,_243){
 str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
-if(!_23c){
+if(!_243){
 str=str.replace(/'/gm,"&#39;");
 }
 return str;
@@ -66782,8 +57418,8 @@
 }
 return str.substring(0,len).replace(/\.+$/,"")+"...";
 };
-dojo.string.endsWith=function(str,end,_245){
-if(_245){
+dojo.string.endsWith=function(str,end,_24c){
+if(_24c){
 str=str.toLowerCase();
 end=end.toLowerCase();
 }
@@ -66800,12 +57436,12 @@
 }
 return false;
 };
-dojo.string.startsWith=function(str,_249,_24a){
-if(_24a){
+dojo.string.startsWith=function(str,_250,_251){
+if(_251){
 str=str.toLowerCase();
-_249=_249.toLowerCase();
+_250=_250.toLowerCase();
 }
-return str.indexOf(_249)==0;
+return str.indexOf(_250)==0;
 };
 dojo.string.startsWithAny=function(str){
 for(var i=1;i<arguments.length;i++){
@@ -66823,12 +57459,12 @@
 }
 return false;
 };
-dojo.string.normalizeNewlines=function(text,_250){
-if(_250=="\n"){
+dojo.string.normalizeNewlines=function(text,_257){
+if(_257=="\n"){
 text=text.replace(/\r\n/g,"\n");
 text=text.replace(/\r/g,"\n");
 }else{
-if(_250=="\r"){
+if(_257=="\r"){
 text=text.replace(/\r\n/g,"\r");
 text=text.replace(/\n/g,"\r");
 }else{
@@ -66837,20 +57473,20 @@
 }
 return text;
 };
-dojo.string.splitEscaped=function(str,_252){
-var _253=[];
-for(var i=0,_255=0;i<str.length;i++){
+dojo.string.splitEscaped=function(str,_259){
+var _25a=[];
+for(var i=0,_25c=0;i<str.length;i++){
 if(str.charAt(i)=="\\"){
 i++;
 continue;
 }
-if(str.charAt(i)==_252){
-_253.push(str.substring(_255,i));
-_255=i+1;
+if(str.charAt(i)==_259){
+_25a.push(str.substring(_25c,i));
+_25c=i+1;
 }
 }
-_253.push(str.substr(_255));
-return _253;
+_25a.push(str.substr(_25c));
+return _25a;
 };
 dojo.provide("dojo.dom");
 dojo.dom.ELEMENT_NODE=1;
@@ -66879,102 +57515,102 @@
 }
 };
 dojo.dom.getUniqueId=function(){
-var _257=dojo.doc();
+var _25e=dojo.doc();
 do{
 var id="dj_unique_"+(++arguments.callee._idIncrement);
-}while(_257.getElementById(id));
+}while(_25e.getElementById(id));
 return id;
 };
 dojo.dom.getUniqueId._idIncrement=0;
-dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_259,_25a){
-var node=_259.firstChild;
+dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_260,_261){
+var node=_260.firstChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.nextSibling;
 }
-if(_25a&&node&&node.tagName&&node.tagName.toLowerCase()!=_25a.toLowerCase()){
-node=dojo.dom.nextElement(node,_25a);
+if(_261&&node&&node.tagName&&node.tagName.toLowerCase()!=_261.toLowerCase()){
+node=dojo.dom.nextElement(node,_261);
 }
 return node;
 };
-dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_25c,_25d){
-var node=_25c.lastChild;
+dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_263,_264){
+var node=_263.lastChild;
 while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE){
 node=node.previousSibling;
 }
-if(_25d&&node&&node.tagName&&node.tagName.toLowerCase()!=_25d.toLowerCase()){
-node=dojo.dom.prevElement(node,_25d);
+if(_264&&node&&node.tagName&&node.tagName.toLowerCase()!=_264.toLowerCase()){
+node=dojo.dom.prevElement(node,_264);
 }
 return node;
 };
-dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_260){
+dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(node,_267){
 if(!node){
 return null;
 }
 do{
 node=node.nextSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_260&&_260.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.nextElement(node,_260);
+if(node&&_267&&_267.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.nextElement(node,_267);
 }
 return node;
 };
-dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_262){
+dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(node,_269){
 if(!node){
 return null;
 }
-if(_262){
-_262=_262.toLowerCase();
+if(_269){
+_269=_269.toLowerCase();
 }
 do{
 node=node.previousSibling;
 }while(node&&node.nodeType!=dojo.dom.ELEMENT_NODE);
-if(node&&_262&&_262.toLowerCase()!=node.tagName.toLowerCase()){
-return dojo.dom.prevElement(node,_262);
+if(node&&_269&&_269.toLowerCase()!=node.tagName.toLowerCase()){
+return dojo.dom.prevElement(node,_269);
 }
 return node;
 };
-dojo.dom.moveChildren=function(_263,_264,trim){
-var _266=0;
+dojo.dom.moveChildren=function(_26a,_26b,trim){
+var _26d=0;
 if(trim){
-while(_263.hasChildNodes()&&_263.firstChild.nodeType==dojo.dom.TEXT_NODE){
-_263.removeChild(_263.firstChild);
+while(_26a.hasChildNodes()&&_26a.firstChild.nodeType==dojo.dom.TEXT_NODE){
+_26a.removeChild(_26a.firstChild);
 }
-while(_263.hasChildNodes()&&_263.lastChild.nodeType==dojo.dom.TEXT_NODE){
-_263.removeChild(_263.lastChild);
+while(_26a.hasChildNodes()&&_26a.lastChild.nodeType==dojo.dom.TEXT_NODE){
+_26a.removeChild(_26a.lastChild);
 }
 }
-while(_263.hasChildNodes()){
-_264.appendChild(_263.firstChild);
-_266++;
+while(_26a.hasChildNodes()){
+_26b.appendChild(_26a.firstChild);
+_26d++;
 }
-return _266;
+return _26d;
 };
-dojo.dom.copyChildren=function(_267,_268,trim){
-var _26a=_267.cloneNode(true);
-return this.moveChildren(_26a,_268,trim);
+dojo.dom.copyChildren=function(_26e,_26f,trim){
+var _271=_26e.cloneNode(true);
+return this.moveChildren(_271,_26f,trim);
 };
-dojo.dom.replaceChildren=function(node,_26c){
-var _26d=[];
+dojo.dom.replaceChildren=function(node,_273){
+var _274=[];
 if(dojo.render.html.ie){
 for(var i=0;i<node.childNodes.length;i++){
-_26d.push(node.childNodes[i]);
+_274.push(node.childNodes[i]);
 }
 }
 dojo.dom.removeChildren(node);
-node.appendChild(_26c);
-for(var i=0;i<_26d.length;i++){
-dojo.dom.destroyNode(_26d[i]);
+node.appendChild(_273);
+for(var i=0;i<_274.length;i++){
+dojo.dom.destroyNode(_274[i]);
 }
 };
 dojo.dom.removeChildren=function(node){
-var _270=node.childNodes.length;
+var _277=node.childNodes.length;
 while(node.hasChildNodes()){
 dojo.dom.removeNode(node.firstChild);
 }
-return _270;
+return _277;
 };
-dojo.dom.replaceNode=function(node,_272){
-return node.parentNode.replaceChild(_272,node);
+dojo.dom.replaceNode=function(node,_279){
+return node.parentNode.replaceChild(_279,node);
 };
 dojo.dom.destroyNode=function(node){
 if(node.parentNode){
@@ -66994,38 +57630,38 @@
 return node.parentNode.removeChild(node);
 }
 };
-dojo.dom.getAncestors=function(node,_276,_277){
-var _278=[];
-var _279=(_276&&(_276 instanceof Function||typeof _276=="function"));
+dojo.dom.getAncestors=function(node,_27d,_27e){
+var _27f=[];
+var _280=(_27d&&(_27d instanceof Function||typeof _27d=="function"));
 while(node){
-if(!_279||_276(node)){
-_278.push(node);
+if(!_280||_27d(node)){
+_27f.push(node);
 }
-if(_277&&_278.length>0){
-return _278[0];
+if(_27e&&_27f.length>0){
+return _27f[0];
 }
 node=node.parentNode;
 }
-if(_277){
+if(_27e){
 return null;
 }
-return _278;
+return _27f;
 };
-dojo.dom.getAncestorsByTag=function(node,tag,_27c){
+dojo.dom.getAncestorsByTag=function(node,tag,_283){
 tag=tag.toLowerCase();
 return dojo.dom.getAncestors(node,function(el){
 return ((el.tagName)&&(el.tagName.toLowerCase()==tag));
-},_27c);
+},_283);
 };
 dojo.dom.getFirstAncestorByTag=function(node,tag){
 return dojo.dom.getAncestorsByTag(node,tag,true);
 };
-dojo.dom.isDescendantOf=function(node,_281,_282){
-if(_282&&node){
+dojo.dom.isDescendantOf=function(node,_288,_289){
+if(_289&&node){
 node=node.parentNode;
 }
 while(node){
-if(node==_281){
+if(node==_288){
 return true;
 }
 node=node.parentNode;
@@ -67047,12 +57683,12 @@
 };
 dojo.dom.createDocument=function(){
 var doc=null;
-var _285=dojo.doc();
+var _28c=dojo.doc();
 if(!dj_undef("ActiveXObject")){
-var _286=["MSXML2","Microsoft","MSXML","MSXML3"];
-for(var i=0;i<_286.length;i++){
+var _28d=["MSXML2","Microsoft","MSXML","MSXML3"];
+for(var i=0;i<_28d.length;i++){
 try{
-doc=new ActiveXObject(_286[i]+".XMLDOM");
+doc=new ActiveXObject(_28d[i]+".XMLDOM");
 }
 catch(e){
 }
@@ -67061,40 +57697,40 @@
 }
 }
 }else{
-if((_285.implementation)&&(_285.implementation.createDocument)){
-doc=_285.implementation.createDocument("","",null);
+if((_28c.implementation)&&(_28c.implementation.createDocument)){
+doc=_28c.implementation.createDocument("","",null);
 }
 }
 return doc;
 };
-dojo.dom.createDocumentFromText=function(str,_289){
-if(!_289){
-_289="text/xml";
+dojo.dom.createDocumentFromText=function(str,_290){
+if(!_290){
+_290="text/xml";
 }
 if(!dj_undef("DOMParser")){
-var _28a=new DOMParser();
-return _28a.parseFromString(str,_289);
+var _291=new DOMParser();
+return _291.parseFromString(str,_290);
 }else{
 if(!dj_undef("ActiveXObject")){
-var _28b=dojo.dom.createDocument();
-if(_28b){
-_28b.async=false;
-_28b.loadXML(str);
-return _28b;
+var _292=dojo.dom.createDocument();
+if(_292){
+_292.async=false;
+_292.loadXML(str);
+return _292;
 }else{
 dojo.debug("toXml didn't work?");
 }
 }else{
-var _28c=dojo.doc();
-if(_28c.createElement){
-var tmp=_28c.createElement("xml");
+var _293=dojo.doc();
+if(_293.createElement){
+var tmp=_293.createElement("xml");
 tmp.innerHTML=str;
-if(_28c.implementation&&_28c.implementation.createDocument){
-var _28e=_28c.implementation.createDocument("foo","",null);
+if(_293.implementation&&_293.implementation.createDocument){
+var _295=_293.implementation.createDocument("foo","",null);
 for(var i=0;i<tmp.childNodes.length;i++){
-_28e.importNode(tmp.childNodes.item(i),true);
+_295.importNode(tmp.childNodes.item(i),true);
 }
-return _28e;
+return _295;
 }
 return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
 }
@@ -67102,39 +57738,39 @@
 }
 return null;
 };
-dojo.dom.prependChild=function(node,_291){
-if(_291.firstChild){
-_291.insertBefore(node,_291.firstChild);
+dojo.dom.prependChild=function(node,_298){
+if(_298.firstChild){
+_298.insertBefore(node,_298.firstChild);
 }else{
-_291.appendChild(node);
+_298.appendChild(node);
 }
 return true;
 };
-dojo.dom.insertBefore=function(node,ref,_294){
-if((_294!=true)&&(node===ref||node.nextSibling===ref)){
+dojo.dom.insertBefore=function(node,ref,_29b){
+if((_29b!=true)&&(node===ref||node.nextSibling===ref)){
 return false;
 }
-var _295=ref.parentNode;
-_295.insertBefore(node,ref);
+var _29c=ref.parentNode;
+_29c.insertBefore(node,ref);
 return true;
 };
-dojo.dom.insertAfter=function(node,ref,_298){
+dojo.dom.insertAfter=function(node,ref,_29f){
 var pn=ref.parentNode;
 if(ref==pn.lastChild){
-if((_298!=true)&&(node===ref)){
+if((_29f!=true)&&(node===ref)){
 return false;
 }
 pn.appendChild(node);
 }else{
-return this.insertBefore(node,ref.nextSibling,_298);
+return this.insertBefore(node,ref.nextSibling,_29f);
 }
 return true;
 };
-dojo.dom.insertAtPosition=function(node,ref,_29c){
-if((!node)||(!ref)||(!_29c)){
+dojo.dom.insertAtPosition=function(node,ref,_2a3){
+if((!node)||(!ref)||(!_2a3)){
 return false;
 }
-switch(_29c.toLowerCase()){
+switch(_2a3.toLowerCase()){
 case "before":
 return dojo.dom.insertBefore(node,ref);
 case "after":
@@ -67152,46 +57788,46 @@
 return true;
 }
 };
-dojo.dom.insertAtIndex=function(node,_29e,_29f){
-var _2a0=_29e.childNodes;
-if(!_2a0.length||_2a0.length==_29f){
-_29e.appendChild(node);
+dojo.dom.insertAtIndex=function(node,_2a5,_2a6){
+var _2a7=_2a5.childNodes;
+if(!_2a7.length||_2a7.length==_2a6){
+_2a5.appendChild(node);
 return true;
 }
-if(_29f==0){
-return dojo.dom.prependChild(node,_29e);
+if(_2a6==0){
+return dojo.dom.prependChild(node,_2a5);
 }
-return dojo.dom.insertAfter(node,_2a0[_29f-1]);
+return dojo.dom.insertAfter(node,_2a7[_2a6-1]);
 };
 dojo.dom.textContent=function(node,text){
 if(arguments.length>1){
-var _2a3=dojo.doc();
-dojo.dom.replaceChildren(node,_2a3.createTextNode(text));
+var _2aa=dojo.doc();
+dojo.dom.replaceChildren(node,_2aa.createTextNode(text));
 return text;
 }else{
 if(node.textContent!=undefined){
 return node.textContent;
 }
-var _2a4="";
+var _2ab="";
 if(node==null){
-return _2a4;
+return _2ab;
 }
 for(var i=0;i<node.childNodes.length;i++){
 switch(node.childNodes[i].nodeType){
 case 1:
 case 5:
-_2a4+=dojo.dom.textContent(node.childNodes[i]);
+_2ab+=dojo.dom.textContent(node.childNodes[i]);
 break;
 case 3:
 case 2:
 case 4:
-_2a4+=node.childNodes[i].nodeValue;
+_2ab+=node.childNodes[i].nodeValue;
 break;
 default:
 break;
 }
 }
-return _2a4;
+return _2ab;
 }
 };
 dojo.dom.hasParent=function(node){
@@ -67207,17 +57843,17 @@
 }
 return "";
 };
-dojo.dom.setAttributeNS=function(elem,_2aa,_2ab,_2ac){
+dojo.dom.setAttributeNS=function(elem,_2b1,_2b2,_2b3){
 if(elem==null||((elem==undefined)&&(typeof elem=="undefined"))){
 dojo.raise("No element given to dojo.dom.setAttributeNS");
 }
 if(!((elem.setAttributeNS==undefined)&&(typeof elem.setAttributeNS=="undefined"))){
-elem.setAttributeNS(_2aa,_2ab,_2ac);
+elem.setAttributeNS(_2b1,_2b2,_2b3);
 }else{
-var _2ad=elem.ownerDocument;
-var _2ae=_2ad.createNode(2,_2ab,_2aa);
-_2ae.nodeValue=_2ac;
-elem.setAttributeNode(_2ae);
+var _2b4=elem.ownerDocument;
+var _2b5=_2b4.createNode(2,_2b2,_2b1);
+_2b5.nodeValue=_2b3;
+elem.setAttributeNode(_2b5);
 }
 };
 dojo.provide("dojo.undo.browser");
@@ -67264,12 +57900,12 @@
 this.bookmarkAnchor.href=hash;
 if(dojo.render.html.ie){
 url=this._loadIframeHistory();
-var _2b3=args["back"]||args["backButton"]||args["handle"];
-var tcb=function(_2b5){
+var _2ba=args["back"]||args["backButton"]||args["handle"];
+var tcb=function(_2bc){
 if(window.location.hash!=""){
 setTimeout("window.location.href = '"+hash+"';",1);
 }
-_2b3.apply(this,[_2b5]);
+_2ba.apply(this,[_2bc]);
 };
 if(args["back"]){
 args.back=tcb;
@@ -67282,13 +57918,13 @@
 }
 }
 }
-var _2b6=args["forward"]||args["forwardButton"]||args["handle"];
-var tfw=function(_2b8){
+var _2bd=args["forward"]||args["forwardButton"]||args["handle"];
+var tfw=function(_2bf){
 if(window.location.hash!=""){
 window.location.href=hash;
 }
-if(_2b6){
-_2b6.apply(this,[_2b8]);
+if(_2bd){
+_2bd.apply(this,[_2bf]);
 }
 };
 if(args["forward"]){
@@ -67333,10 +57969,10 @@
 }
 }
 }
-},iframeLoaded:function(evt,_2bb){
+},iframeLoaded:function(evt,_2c2){
 if(!dojo.render.html.opera){
-var _2bc=this._getUrlQuery(_2bb.href);
-if(_2bc==null){
+var _2c3=this._getUrlQuery(_2c2.href);
+if(_2c3==null){
 if(this.historyStack.length==1){
 this.handleBackButton();
 }
@@ -67346,17 +57982,17 @@
 this.moveForward=false;
 return;
 }
-if(this.historyStack.length>=2&&_2bc==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
+if(this.historyStack.length>=2&&_2c3==this._getUrlQuery(this.historyStack[this.historyStack.length-2].url)){
 this.handleBackButton();
 }else{
-if(this.forwardStack.length>0&&_2bc==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
+if(this.forwardStack.length>0&&_2c3==this._getUrlQuery(this.forwardStack[this.forwardStack.length-1].url)){
 this.handleForwardButton();
 }
 }
 }
 },handleBackButton:function(){
-var _2bd=this.historyStack.pop();
-if(!_2bd){
+var _2c4=this.historyStack.pop();
+if(!_2c4){
 return;
 }
 var last=this.historyStack[this.historyStack.length-1];
@@ -67376,7 +58012,7 @@
 }
 }
 }
-this.forwardStack.push(_2bd);
+this.forwardStack.push(_2c4);
 },handleForwardButton:function(){
 var last=this.forwardStack.pop();
 if(!last){
@@ -67397,11 +58033,11 @@
 },_createState:function(url,args,hash){
 return {"url":url,"kwArgs":args,"urlHash":hash};
 },_getUrlQuery:function(url){
-var _2c4=url.split("?");
-if(_2c4.length<2){
+var _2cb=url.split("?");
+if(_2cb.length<2){
 return null;
 }else{
-return _2c4[1];
+return _2cb[1];
 }
 },_loadIframeHistory:function(){
 var url=(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+"iframe_history.html")+"?"+(new Date()).getTime();
@@ -67412,26 +58048,26 @@
 dojo.provide("dojo.io.BrowserIO");
 if(!dj_undef("window")){
 dojo.io.checkChildrenForFile=function(node){
-var _2c7=false;
-var _2c8=node.getElementsByTagName("input");
-dojo.lang.forEach(_2c8,function(_2c9){
-if(_2c7){
+var _2ce=false;
+var _2cf=node.getElementsByTagName("input");
+dojo.lang.forEach(_2cf,function(_2d0){
+if(_2ce){
 return;
 }
-if(_2c9.getAttribute("type")=="file"){
-_2c7=true;
+if(_2d0.getAttribute("type")=="file"){
+_2ce=true;
 }
 });
-return _2c7;
+return _2ce;
 };
-dojo.io.formHasFile=function(_2ca){
-return dojo.io.checkChildrenForFile(_2ca);
+dojo.io.formHasFile=function(_2d1){
+return dojo.io.checkChildrenForFile(_2d1);
 };
-dojo.io.updateNode=function(node,_2cc){
+dojo.io.updateNode=function(node,_2d3){
 node=dojo.byId(node);
-var args=_2cc;
-if(dojo.lang.isString(_2cc)){
-args={url:_2cc};
+var args=_2d3;
+if(dojo.lang.isString(_2d3)){
+args={url:_2d3};
 }
 args.mimetype="text/html";
 args.load=function(t,d,e){
@@ -67446,18 +58082,18 @@
 var type=(node.type||"").toLowerCase();
 return !node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","reset","button"],type);
 };
-dojo.io.encodeForm=function(_2d3,_2d4,_2d5){
-if((!_2d3)||(!_2d3.tagName)||(!_2d3.tagName.toLowerCase()=="form")){
+dojo.io.encodeForm=function(_2da,_2db,_2dc){
+if((!_2da)||(!_2da.tagName)||(!_2da.tagName.toLowerCase()=="form")){
 dojo.raise("Attempted to encode a non-form element.");
 }
-if(!_2d5){
-_2d5=dojo.io.formFilter;
+if(!_2dc){
+_2dc=dojo.io.formFilter;
 }
-var enc=/utf/i.test(_2d4||"")?encodeURIComponent:dojo.string.encodeAscii;
-var _2d7=[];
-for(var i=0;i<_2d3.elements.length;i++){
-var elm=_2d3.elements[i];
-if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_2d5(elm)){
+var enc=/utf/i.test(_2db||"")?encodeURIComponent:dojo.string.encodeAscii;
+var _2de=[];
+for(var i=0;i<_2da.elements.length;i++){
+var elm=_2da.elements[i];
+if(!elm||elm.tagName.toLowerCase()=="fieldset"||!_2dc(elm)){
 continue;
 }
 var name=enc(elm.name);
@@ -67465,30 +58101,30 @@
 if(type=="select-multiple"){
 for(var j=0;j<elm.options.length;j++){
 if(elm.options[j].selected){
-_2d7.push(name+"="+enc(elm.options[j].value));
+_2de.push(name+"="+enc(elm.options[j].value));
 }
 }
 }else{
 if(dojo.lang.inArray(["radio","checkbox"],type)){
 if(elm.checked){
-_2d7.push(name+"="+enc(elm.value));
+_2de.push(name+"="+enc(elm.value));
 }
 }else{
-_2d7.push(name+"="+enc(elm.value));
+_2de.push(name+"="+enc(elm.value));
 }
 }
 }
-var _2dd=_2d3.getElementsByTagName("input");
-for(var i=0;i<_2dd.length;i++){
-var _2de=_2dd[i];
-if(_2de.type.toLowerCase()=="image"&&_2de.form==_2d3&&_2d5(_2de)){
-var name=enc(_2de.name);
-_2d7.push(name+"="+enc(_2de.value));
-_2d7.push(name+".x=0");
-_2d7.push(name+".y=0");
+var _2e4=_2da.getElementsByTagName("input");
+for(var i=0;i<_2e4.length;i++){
+var _2e5=_2e4[i];
+if(_2e5.type.toLowerCase()=="image"&&_2e5.form==_2da&&_2dc(_2e5)){
+var name=enc(_2e5.name);
+_2de.push(name+"="+enc(_2e5.value));
+_2de.push(name+".x=0");
+_2de.push(name+".y=0");
 }
 }
-return _2d7.join("&")+"&";
+return _2de.join("&")+"&";
 };
 dojo.io.FormBind=function(args){
 this.bindArgs={};
@@ -67522,11 +58158,11 @@
 this.connect(node,"onclick","click");
 }
 }
-var _2e4=form.getElementsByTagName("input");
-for(var i=0;i<_2e4.length;i++){
-var _2e5=_2e4[i];
-if(_2e5.type.toLowerCase()=="image"&&_2e5.form==form){
-this.connect(_2e5,"onclick","click");
+var _2eb=form.getElementsByTagName("input");
+for(var i=0;i<_2eb.length;i++){
+var _2ec=_2eb[i];
+if(_2ec.type.toLowerCase()=="image"&&_2ec.form==form){
+this.connect(_2ec,"onclick","click");
 }
 }
 },onSubmit:function(form){
@@ -67544,26 +58180,26 @@
 this.clickedButton=node;
 },formFilter:function(node){
 var type=(node.type||"").toLowerCase();
-var _2ec=false;
+var _2f3=false;
 if(node.disabled||!node.name){
-_2ec=false;
+_2f3=false;
 }else{
 if(dojo.lang.inArray(["submit","button","image"],type)){
 if(!this.clickedButton){
 this.clickedButton=node;
 }
-_2ec=node==this.clickedButton;
+_2f3=node==this.clickedButton;
 }else{
-_2ec=!dojo.lang.inArray(["file","submit","reset","button"],type);
+_2f3=!dojo.lang.inArray(["file","submit","reset","button"],type);
 }
 }
-return _2ec;
-},connect:function(_2ed,_2ee,_2ef){
+return _2f3;
+},connect:function(_2f4,_2f5,_2f6){
 if(dojo.evalObjPath("dojo.event.connect")){
-dojo.event.connect(_2ed,_2ee,this,_2ef);
+dojo.event.connect(_2f4,_2f5,this,_2f6);
 }else{
-var fcn=dojo.lang.hitch(this,_2ef);
-_2ed[_2ee]=function(e){
+var fcn=dojo.lang.hitch(this,_2f6);
+_2f4[_2f5]=function(e){
 if(!e){
 e=window.event;
 }
@@ -67580,40 +58216,40 @@
 }
 }});
 dojo.io.XMLHTTPTransport=new function(){
-var _2f2=this;
-var _2f3={};
+var _2f9=this;
+var _2fa={};
 this.useCache=false;
 this.preventCache=false;
-function getCacheKey(url,_2f5,_2f6){
-return url+"|"+_2f5+"|"+_2f6.toLowerCase();
+function getCacheKey(url,_2fc,_2fd){
+return url+"|"+_2fc+"|"+_2fd.toLowerCase();
 }
-function addToCache(url,_2f8,_2f9,http){
-_2f3[getCacheKey(url,_2f8,_2f9)]=http;
+function addToCache(url,_2ff,_300,http){
+_2fa[getCacheKey(url,_2ff,_300)]=http;
 }
-function getFromCache(url,_2fc,_2fd){
-return _2f3[getCacheKey(url,_2fc,_2fd)];
+function getFromCache(url,_303,_304){
+return _2fa[getCacheKey(url,_303,_304)];
 }
 this.clearCache=function(){
-_2f3={};
+_2fa={};
 };
-function doLoad(_2fe,http,url,_301,_302){
-if(((http.status>=200)&&(http.status<300))||(http.status==304)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
+function doLoad(_305,http,url,_308,_309){
+if(((http.status>=200)&&(http.status<300))||(http.status==304)||(http.status==1223)||(location.protocol=="file:"&&(http.status==0||http.status==undefined))||(location.protocol=="chrome:"&&(http.status==0||http.status==undefined))){
 var ret;
-if(_2fe.method.toLowerCase()=="head"){
-var _304=http.getAllResponseHeaders();
+if(_305.method.toLowerCase()=="head"){
+var _30b=http.getAllResponseHeaders();
 ret={};
 ret.toString=function(){
-return _304;
+return _30b;
 };
-var _305=_304.split(/[\r\n]+/g);
-for(var i=0;i<_305.length;i++){
-var pair=_305[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+var _30c=_30b.split(/[\r\n]+/g);
+for(var i=0;i<_30c.length;i++){
+var pair=_30c[i].match(/^([^:]+)\s*:\s*(.+)$/i);
 if(pair){
 ret[pair[1]]=pair[2];
 }
 }
 }else{
-if(_2fe.mimetype=="text/javascript"){
+if(_305.mimetype=="text/javascript"){
 try{
 ret=dj_eval(http.responseText);
 }
@@ -67623,9 +58259,9 @@
 ret=null;
 }
 }else{
-if(_2fe.mimetype=="text/json"||_2fe.mimetype=="application/json"){
+if(_305.mimetype.substr(0,9)=="text/json"||_305.mimetype.substr(0,16)=="application/json"){
 try{
-ret=dj_eval("("+http.responseText+")");
+ret=dj_eval("("+_305.jsonFilter(http.responseText)+")");
 }
 catch(e){
 dojo.debug(e);
@@ -67633,7 +58269,7 @@
 ret=false;
 }
 }else{
-if((_2fe.mimetype=="application/xml")||(_2fe.mimetype=="text/xml")){
+if((_305.mimetype=="application/xml")||(_305.mimetype=="text/xml")){
 ret=http.responseXML;
 if(!ret||typeof ret=="string"||!http.getResponseHeader("Content-Type")){
 ret=dojo.dom.createDocumentFromText(http.responseText);
@@ -67644,22 +58280,22 @@
 }
 }
 }
-if(_302){
-addToCache(url,_301,_2fe.method,http);
+if(_309){
+addToCache(url,_308,_305.method,http);
 }
-_2fe[(typeof _2fe.load=="function")?"load":"handle"]("load",ret,http,_2fe);
+_305[(typeof _305.load=="function")?"load":"handle"]("load",ret,http,_305);
 }else{
-var _308=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-_2fe[(typeof _2fe.error=="function")?"error":"handle"]("error",_308,http,_2fe);
+var _30f=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
+_305[(typeof _305.error=="function")?"error":"handle"]("error",_30f,http,_305);
 }
 }
-function setHeaders(http,_30a){
-if(_30a["headers"]){
-for(var _30b in _30a["headers"]){
-if(_30b.toLowerCase()=="content-type"&&!_30a["contentType"]){
-_30a["contentType"]=_30a["headers"][_30b];
+function setHeaders(http,_311){
+if(_311["headers"]){
+for(var _312 in _311["headers"]){
+if(_312.toLowerCase()=="content-type"&&!_311["contentType"]){
+_311["contentType"]=_311["headers"][_312];
 }else{
-http.setRequestHeader(_30b,_30a["headers"][_30b]);
+http.setRequestHeader(_312,_311["headers"][_312]);
 }
 }
 }
@@ -67673,7 +58309,7 @@
 };
 this.watchInFlight=function(){
 var now=null;
-if(!dojo.hostenv._blockAsync&&!_2f2._blockAsync){
+if(!dojo.hostenv._blockAsync&&!_2f9._blockAsync){
 for(var x=this.inFlight.length-1;x>=0;x--){
 try{
 var tif=this.inFlight[x];
@@ -67701,8 +58337,8 @@
 }
 catch(e){
 try{
-var _30f=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
-tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_30f,tif.http,tif.req);
+var _316=new dojo.io.Error("XMLHttpTransport.watchInFlight Error: "+e);
+tif.req[(typeof tif.req.error=="function")?"error":"handle"]("error",_316,tif.http,tif.req);
 }
 catch(e2){
 dojo.debug("XMLHttpTransport error callback failed: "+e2);
@@ -67717,74 +58353,75 @@
 }
 this.inFlightTimer=setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();",10);
 };
-var _310=dojo.hostenv.getXmlhttpObject()?true:false;
-this.canHandle=function(_311){
-return _310&&dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript","text/json","application/json"],(_311["mimetype"].toLowerCase()||""))&&!(_311["formNode"]&&dojo.io.formHasFile(_311["formNode"]));
+var _317=dojo.hostenv.getXmlhttpObject()?true:false;
+this.canHandle=function(_318){
+var mlc=_318["mimetype"].toLowerCase()||"";
+return _317&&((dojo.lang.inArray(["text/plain","text/html","application/xml","text/xml","text/javascript"],mlc))||(mlc.substr(0,9)=="text/json"||mlc.substr(0,16)=="application/json"))&&!(_318["formNode"]&&dojo.io.formHasFile(_318["formNode"]));
 };
 this.multipartBoundary="45309FFF-BD65-4d50-99C9-36986896A96F";
-this.bind=function(_312){
-if(!_312["url"]){
-if(!_312["formNode"]&&(_312["backButton"]||_312["back"]||_312["changeUrl"]||_312["watchForURL"])&&(!djConfig.preventBackButtonFix)){
+this.bind=function(_31a){
+if(!_31a["url"]){
+if(!_31a["formNode"]&&(_31a["backButton"]||_31a["back"]||_31a["changeUrl"]||_31a["watchForURL"])&&(!djConfig.preventBackButtonFix)){
 dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request","Use dojo.undo.browser.addToHistory() instead.","0.4");
-dojo.undo.browser.addToHistory(_312);
+dojo.undo.browser.addToHistory(_31a);
 return true;
 }
 }
-var url=_312.url;
-var _314="";
-if(_312["formNode"]){
-var ta=_312.formNode.getAttribute("action");
-if((ta)&&(!_312["url"])){
+var url=_31a.url;
+var _31c="";
+if(_31a["formNode"]){
+var ta=_31a.formNode.getAttribute("action");
+if((ta)&&(!_31a["url"])){
 url=ta;
 }
-var tp=_312.formNode.getAttribute("method");
-if((tp)&&(!_312["method"])){
-_312.method=tp;
+var tp=_31a.formNode.getAttribute("method");
+if((tp)&&(!_31a["method"])){
+_31a.method=tp;
 }
-_314+=dojo.io.encodeForm(_312.formNode,_312.encoding,_312["formFilter"]);
+_31c+=dojo.io.encodeForm(_31a.formNode,_31a.encoding,_31a["formFilter"]);
 }
 if(url.indexOf("#")>-1){
 dojo.debug("Warning: dojo.io.bind: stripping hash values from url:",url);
 url=url.split("#")[0];
 }
-if(_312["file"]){
-_312.method="post";
+if(_31a["file"]){
+_31a.method="post";
 }
-if(!_312["method"]){
-_312.method="get";
+if(!_31a["method"]){
+_31a.method="get";
 }
-if(_312.method.toLowerCase()=="get"){
-_312.multipart=false;
+if(_31a.method.toLowerCase()=="get"){
+_31a.multipart=false;
 }else{
-if(_312["file"]){
-_312.multipart=true;
+if(_31a["file"]){
+_31a.multipart=true;
 }else{
-if(!_312["multipart"]){
-_312.multipart=false;
+if(!_31a["multipart"]){
+_31a.multipart=false;
 }
 }
 }
-if(_312["backButton"]||_312["back"]||_312["changeUrl"]){
-dojo.undo.browser.addToHistory(_312);
+if(_31a["backButton"]||_31a["back"]||_31a["changeUrl"]){
+dojo.undo.browser.addToHistory(_31a);
 }
-var _317=_312["content"]||{};
-if(_312.sendTransport){
-_317["dojo.transport"]="xmlhttp";
+var _31f=_31a["content"]||{};
+if(_31a.sendTransport){
+_31f["dojo.transport"]="xmlhttp";
 }
 do{
-if(_312.postContent){
-_314=_312.postContent;
+if(_31a.postContent){
+_31c=_31a.postContent;
 break;
 }
-if(_317){
-_314+=dojo.io.argsFromMap(_317,_312.encoding);
+if(_31f){
+_31c+=dojo.io.argsFromMap(_31f,_31a.encoding);
 }
-if(_312.method.toLowerCase()=="get"||!_312.multipart){
+if(_31a.method.toLowerCase()=="get"||!_31a.multipart){
 break;
 }
 var t=[];
-if(_314.length){
-var q=_314.split("&");
+if(_31c.length){
+var q=_31c.split("&");
 for(var i=0;i<q.length;++i){
 if(q[i].length){
 var p=q[i].split("=");
@@ -67792,71 +58429,71 @@
 }
 }
 }
-if(_312.file){
-if(dojo.lang.isArray(_312.file)){
-for(var i=0;i<_312.file.length;++i){
-var o=_312.file[i];
+if(_31a.file){
+if(dojo.lang.isArray(_31a.file)){
+for(var i=0;i<_31a.file.length;++i){
+var o=_31a.file[i];
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }else{
-var o=_312.file;
+var o=_31a.file;
 t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; name=\""+o.name+"\"; filename=\""+("fileName" in o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in o?o.contentType:"application/octet-stream"),"",o.content);
 }
 }
 if(t.length){
 t.push("--"+this.multipartBoundary+"--","");
-_314=t.join("\r\n");
+_31c=t.join("\r\n");
 }
 }while(false);
-var _31d=_312["sync"]?false:true;
-var _31e=_312["preventCache"]||(this.preventCache==true&&_312["preventCache"]!=false);
-var _31f=_312["useCache"]==true||(this.useCache==true&&_312["useCache"]!=false);
-if(!_31e&&_31f){
-var _320=getFromCache(url,_314,_312.method);
-if(_320){
-doLoad(_312,_320,url,_314,false);
+var _325=_31a["sync"]?false:true;
+var _326=_31a["preventCache"]||(this.preventCache==true&&_31a["preventCache"]!=false);
+var _327=_31a["useCache"]==true||(this.useCache==true&&_31a["useCache"]!=false);
+if(!_326&&_327){
+var _328=getFromCache(url,_31c,_31a.method);
+if(_328){
+doLoad(_31a,_328,url,_31c,false);
 return;
 }
 }
-var http=dojo.hostenv.getXmlhttpObject(_312);
-var _322=false;
-if(_31d){
-var _323=this.inFlight.push({"req":_312,"http":http,"url":url,"query":_314,"useCache":_31f,"startTime":_312.timeoutSeconds?(new Date()).getTime():0});
+var http=dojo.hostenv.getXmlhttpObject(_31a);
+var _32a=false;
+if(_325){
+var _32b=this.inFlight.push({"req":_31a,"http":http,"url":url,"query":_31c,"useCache":_327,"startTime":_31a.timeoutSeconds?(new Date()).getTime():0});
 this.startWatchingInFlight();
 }else{
-_2f2._blockAsync=true;
+_2f9._blockAsync=true;
 }
-if(_312.method.toLowerCase()=="post"){
-if(!_312.user){
-http.open("POST",url,_31d);
+if(_31a.method.toLowerCase()=="post"){
+if(!_31a.user){
+http.open("POST",url,_325);
 }else{
-http.open("POST",url,_31d,_312.user,_312.password);
+http.open("POST",url,_325,_31a.user,_31a.password);
 }
-setHeaders(http,_312);
-http.setRequestHeader("Content-Type",_312.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_312.contentType||"application/x-www-form-urlencoded"));
+setHeaders(http,_31a);
+http.setRequestHeader("Content-Type",_31a.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_31a.contentType||"application/x-www-form-urlencoded"));
 try{
-http.send(_314);
+http.send(_31c);
 }
 catch(e){
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_312,{status:404},url,_314,_31f);
+doLoad(_31a,{status:404},url,_31c,_327);
 }
 }else{
-var _324=url;
-if(_314!=""){
-_324+=(_324.indexOf("?")>-1?"&":"?")+_314;
+var _32c=url;
+if(_31c!=""){
+_32c+=(_32c.indexOf("?")>-1?"&":"?")+_31c;
 }
-if(_31e){
-_324+=(dojo.string.endsWithAny(_324,"?","&")?"":(_324.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
+if(_326){
+_32c+=(dojo.string.endsWithAny(_32c,"?","&")?"":(_32c.indexOf("?")>-1?"&":"?"))+"dojo.preventCache="+new Date().valueOf();
 }
-if(!_312.user){
-http.open(_312.method.toUpperCase(),_324,_31d);
+if(!_31a.user){
+http.open(_31a.method.toUpperCase(),_32c,_325);
 }else{
-http.open(_312.method.toUpperCase(),_324,_31d,_312.user,_312.password);
+http.open(_31a.method.toUpperCase(),_32c,_325,_31a.user,_31a.password);
 }
-setHeaders(http,_312);
+setHeaders(http,_31a);
 try{
 http.send(null);
 }
@@ -67864,14 +58501,14 @@
 if(typeof http.abort=="function"){
 http.abort();
 }
-doLoad(_312,{status:404},url,_314,_31f);
+doLoad(_31a,{status:404},url,_31c,_327);
 }
 }
-if(!_31d){
-doLoad(_312,http,url,_314,_31f);
-_2f2._blockAsync=false;
+if(!_325){
+doLoad(_31a,http,url,_31c,_327);
+_2f9._blockAsync=false;
 }
-_312.abort=function(){
+_31a.abort=function(){
 try{
 http._aborted=true;
 }
@@ -67885,15 +58522,15 @@
 };
 }
 dojo.provide("dojo.io.cookie");
-dojo.io.cookie.setCookie=function(name,_326,days,path,_329,_32a){
-var _32b=-1;
+dojo.io.cookie.setCookie=function(name,_32e,days,path,_331,_332){
+var _333=-1;
 if((typeof days=="number")&&(days>=0)){
 var d=new Date();
 d.setTime(d.getTime()+(days*24*60*60*1000));
-_32b=d.toGMTString();
+_333=d.toGMTString();
 }
-_326=escape(_326);
-document.cookie=name+"="+_326+";"+(_32b!=-1?" expires="+_32b+";":"")+(path?"path="+path:"")+(_329?"; domain="+_329:"")+(_32a?"; secure":"");
+_32e=escape(_32e);
+document.cookie=name+"="+_32e+";"+(_333!=-1?" expires="+_333+";":"")+(path?"path="+path:"")+(_331?"; domain="+_331:"")+(_332?"; secure":"");
 };
 dojo.io.cookie.set=dojo.io.cookie.setCookie;
 dojo.io.cookie.getCookie=function(name){
@@ -67901,71 +58538,71 @@
 if(idx==-1){
 return null;
 }
-var _32f=document.cookie.substring(idx+name.length+1);
-var end=_32f.indexOf(";");
+var _337=document.cookie.substring(idx+name.length+1);
+var end=_337.indexOf(";");
 if(end==-1){
-end=_32f.length;
+end=_337.length;
 }
-_32f=_32f.substring(0,end);
-_32f=unescape(_32f);
-return _32f;
+_337=_337.substring(0,end);
+_337=unescape(_337);
+return _337;
 };
 dojo.io.cookie.get=dojo.io.cookie.getCookie;
 dojo.io.cookie.deleteCookie=function(name){
 dojo.io.cookie.setCookie(name,"-",0);
 };
-dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_336,_337,_338){
+dojo.io.cookie.setObjectCookie=function(name,obj,days,path,_33e,_33f,_340){
 if(arguments.length==5){
-_338=_336;
-_336=null;
-_337=null;
+_340=_33e;
+_33e=null;
+_33f=null;
 }
-var _339=[],_33a,_33b="";
-if(!_338){
-_33a=dojo.io.cookie.getObjectCookie(name);
+var _341=[],_342,_343="";
+if(!_340){
+_342=dojo.io.cookie.getObjectCookie(name);
 }
 if(days>=0){
-if(!_33a){
-_33a={};
+if(!_342){
+_342={};
 }
 for(var prop in obj){
 if(obj[prop]==null){
-delete _33a[prop];
+delete _342[prop];
 }else{
 if((typeof obj[prop]=="string")||(typeof obj[prop]=="number")){
-_33a[prop]=obj[prop];
+_342[prop]=obj[prop];
 }
 }
 }
 prop=null;
-for(var prop in _33a){
-_339.push(escape(prop)+"="+escape(_33a[prop]));
+for(var prop in _342){
+_341.push(escape(prop)+"="+escape(_342[prop]));
 }
-_33b=_339.join("&");
+_343=_341.join("&");
 }
-dojo.io.cookie.setCookie(name,_33b,days,path,_336,_337);
+dojo.io.cookie.setCookie(name,_343,days,path,_33e,_33f);
 };
 dojo.io.cookie.getObjectCookie=function(name){
-var _33e=null,_33f=dojo.io.cookie.getCookie(name);
-if(_33f){
-_33e={};
-var _340=_33f.split("&");
-for(var i=0;i<_340.length;i++){
-var pair=_340[i].split("=");
-var _343=pair[1];
-if(isNaN(_343)){
-_343=unescape(pair[1]);
+var _346=null,_347=dojo.io.cookie.getCookie(name);
+if(_347){
+_346={};
+var _348=_347.split("&");
+for(var i=0;i<_348.length;i++){
+var pair=_348[i].split("=");
+var _34b=pair[1];
+if(isNaN(_34b)){
+_34b=unescape(pair[1]);
 }
-_33e[unescape(pair[0])]=_343;
+_346[unescape(pair[0])]=_34b;
 }
 }
-return _33e;
+return _346;
 };
 dojo.io.cookie.isSupported=function(){
 if(typeof navigator.cookieEnabled!="boolean"){
 dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","CookiesAllowed",90,null);
-var _344=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
-navigator.cookieEnabled=(_344=="CookiesAllowed");
+var _34c=dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+navigator.cookieEnabled=(_34c=="CookiesAllowed");
 if(navigator.cookieEnabled){
 this.deleteCookie("__TestingYourBrowserForCookieSupport__");
 }
@@ -67980,7 +58617,7 @@
 dojo.provide("dojo.event.common");
 dojo.event=new function(){
 this._canTimeout=dojo.lang.isFunction(dj_global["setTimeout"])||dojo.lang.isAlien(dj_global["setTimeout"]);
-function interpolateArgs(args,_346){
+function interpolateArgs(args,_34e){
 var dl=dojo.lang;
 var ao={srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,aroundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-1};
 switch(args.length){
@@ -68007,14 +58644,14 @@
 ao.adviceType="after";
 ao.srcObj=args[0];
 ao.srcFunc=args[1];
-var _349=dl.nameAnonFunc(args[2],ao.adviceObj,_346);
-ao.adviceFunc=_349;
+var _351=dl.nameAnonFunc(args[2],ao.adviceObj,_34e);
+ao.adviceFunc=_351;
 }else{
 if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))){
 ao.adviceType="after";
 ao.srcObj=dj_global;
-var _349=dl.nameAnonFunc(args[0],ao.srcObj,_346);
-ao.srcFunc=_349;
+var _351=dl.nameAnonFunc(args[0],ao.srcObj,_34e);
+ao.srcFunc=_351;
 ao.adviceObj=args[1];
 ao.adviceFunc=args[2];
 }
@@ -68040,17 +58677,17 @@
 if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]))){
 ao.adviceType=args[0];
 ao.srcObj=dj_global;
-var _349=dl.nameAnonFunc(args[1],dj_global,_346);
-ao.srcFunc=_349;
+var _351=dl.nameAnonFunc(args[1],dj_global,_34e);
+ao.srcFunc=_351;
 ao.adviceObj=args[2];
 ao.adviceFunc=args[3];
 }else{
 if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))&&(dl.isFunction(args[3]))){
 ao.srcObj=args[1];
 ao.srcFunc=args[2];
-var _349=dl.nameAnonFunc(args[3],dj_global,_346);
+var _351=dl.nameAnonFunc(args[3],dj_global,_34e);
 ao.adviceObj=dj_global;
-ao.adviceFunc=_349;
+ao.adviceFunc=_351;
 }else{
 if(dl.isObject(args[1])){
 ao.srcObj=args[1];
@@ -68098,8 +58735,8 @@
 break;
 }
 if(dl.isFunction(ao.aroundFunc)){
-var _349=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_346);
-ao.aroundFunc=_349;
+var _351=dl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_34e);
+ao.aroundFunc=_351;
 }
 if(dl.isFunction(ao.srcFunc)){
 ao.srcFunc=dl.getNameInObj(ao.srcObj,ao.srcFunc);
@@ -68128,18 +58765,25 @@
 }else{
 var ao=interpolateArgs(arguments,true);
 }
+if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=="onkey")){
+if(dojo.render.html.ie){
+ao.srcFunc="onkeydown";
+this.connect(ao);
+}
+ao.srcFunc="onkeypress";
+}
 if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=""){
-var _34b={};
+var _353={};
 for(var x in ao){
-_34b[x]=ao[x];
+_353[x]=ao[x];
 }
 var mjps=[];
 dojo.lang.forEach(ao.srcObj,function(src){
 if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
 src=dojo.byId(src);
 }
-_34b.srcObj=src;
-mjps.push(dojo.event.connect.call(dojo.event,_34b));
+_353.srcObj=src;
+mjps.push(dojo.event.connect.call(dojo.event,_353));
 });
 return mjps;
 }
@@ -68151,20 +58795,20 @@
 return mjp;
 };
 this.log=function(a1,a2){
-var _353;
+var _35b;
 if((arguments.length==1)&&(typeof a1=="object")){
-_353=a1;
+_35b=a1;
 }else{
-_353={srcObj:a1,srcFunc:a2};
+_35b={srcObj:a1,srcFunc:a2};
 }
-_353.adviceFunc=function(){
-var _354=[];
+_35b.adviceFunc=function(){
+var _35c=[];
 for(var x=0;x<arguments.length;x++){
-_354.push(arguments[x]);
+_35c.push(arguments[x]);
 }
-dojo.debug("("+_353.srcObj+")."+_353.srcFunc,":",_354.join(", "));
+dojo.debug("("+_35b.srcObj+")."+_35b.srcFunc,":",_35c.join(", "));
 };
-this.kwConnect(_353);
+this.kwConnect(_35b);
 };
 this.connectBefore=function(){
 var args=["before"];
@@ -68190,25 +58834,25 @@
 ao.maxCalls=1;
 return this.connect(ao);
 };
-this._kwConnectImpl=function(_35c,_35d){
-var fn=(_35d)?"disconnect":"connect";
-if(typeof _35c["srcFunc"]=="function"){
-_35c.srcObj=_35c["srcObj"]||dj_global;
-var _35f=dojo.lang.nameAnonFunc(_35c.srcFunc,_35c.srcObj,true);
-_35c.srcFunc=_35f;
+this._kwConnectImpl=function(_364,_365){
+var fn=(_365)?"disconnect":"connect";
+if(typeof _364["srcFunc"]=="function"){
+_364.srcObj=_364["srcObj"]||dj_global;
+var _367=dojo.lang.nameAnonFunc(_364.srcFunc,_364.srcObj,true);
+_364.srcFunc=_367;
 }
-if(typeof _35c["adviceFunc"]=="function"){
-_35c.adviceObj=_35c["adviceObj"]||dj_global;
-var _35f=dojo.lang.nameAnonFunc(_35c.adviceFunc,_35c.adviceObj,true);
-_35c.adviceFunc=_35f;
+if(typeof _364["adviceFunc"]=="function"){
+_364.adviceObj=_364["adviceObj"]||dj_global;
+var _367=dojo.lang.nameAnonFunc(_364.adviceFunc,_364.adviceObj,true);
+_364.adviceFunc=_367;
 }
-_35c.srcObj=_35c["srcObj"]||dj_global;
-_35c.adviceObj=_35c["adviceObj"]||_35c["targetObj"]||dj_global;
-_35c.adviceFunc=_35c["adviceFunc"]||_35c["targetFunc"];
-return dojo.event[fn](_35c);
+_364.srcObj=_364["srcObj"]||dj_global;
+_364.adviceObj=_364["adviceObj"]||_364["targetObj"]||dj_global;
+_364.adviceFunc=_364["adviceFunc"]||_364["targetFunc"];
+return dojo.event[fn](_364);
 };
-this.kwConnect=function(_360){
-return this._kwConnectImpl(_360,false);
+this.kwConnect=function(_368){
+return this._kwConnectImpl(_368,false);
 };
 this.disconnect=function(){
 if(arguments.length==1){
@@ -68233,12 +58877,12 @@
 mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
 return mjp;
 };
-this.kwDisconnect=function(_363){
-return this._kwConnectImpl(_363,true);
+this.kwDisconnect=function(_36b){
+return this._kwConnectImpl(_36b,true);
 };
 };
-dojo.event.MethodInvocation=function(_364,obj,args){
-this.jp_=_364;
+dojo.event.MethodInvocation=function(_36c,obj,args){
+this.jp_=_36c;
 this.object=obj;
 this.args=[];
 for(var x=0;x<args.length;x++){
@@ -68257,48 +58901,48 @@
 return mobj[meth].call(mobj,this);
 }
 };
-dojo.event.MethodJoinPoint=function(obj,_36c){
+dojo.event.MethodJoinPoint=function(obj,_374){
 this.object=obj||dj_global;
-this.methodname=_36c;
-this.methodfunc=this.object[_36c];
+this.methodname=_374;
+this.methodfunc=this.object[_374];
 this.squelch=false;
 };
-dojo.event.MethodJoinPoint.getForMethod=function(obj,_36e){
+dojo.event.MethodJoinPoint.getForMethod=function(obj,_376){
 if(!obj){
 obj=dj_global;
 }
-var ofn=obj[_36e];
+var ofn=obj[_376];
 if(!ofn){
-ofn=obj[_36e]=function(){
+ofn=obj[_376]=function(){
 };
-if(!obj[_36e]){
-dojo.raise("Cannot set do-nothing method on that object "+_36e);
+if(!obj[_376]){
+dojo.raise("Cannot set do-nothing method on that object "+_376);
 }
 }else{
 if((typeof ofn!="function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn))){
 return null;
 }
 }
-var _370=_36e+"$joinpoint";
-var _371=_36e+"$joinpoint$method";
-var _372=obj[_370];
-if(!_372){
-var _373=false;
+var _378=_376+"$joinpoint";
+var _379=_376+"$joinpoint$method";
+var _37a=obj[_378];
+if(!_37a){
+var _37b=false;
 if(dojo.event["browser"]){
 if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
-_373=true;
-dojo.event.browser.addClobberNodeAttrs(obj,[_370,_371,_36e]);
+_37b=true;
+dojo.event.browser.addClobberNodeAttrs(obj,[_378,_379,_376]);
 }
 }
-var _374=ofn.length;
-obj[_371]=ofn;
-_372=obj[_370]=new dojo.event.MethodJoinPoint(obj,_371);
-if(!_373){
-obj[_36e]=function(){
-return _372.run.apply(_372,arguments);
+var _37c=ofn.length;
+obj[_379]=ofn;
+_37a=obj[_378]=new dojo.event.MethodJoinPoint(obj,_379);
+if(!_37b){
+obj[_376]=function(){
+return _37a.run.apply(_37a,arguments);
 };
 }else{
-obj[_36e]=function(){
+obj[_376]=function(){
 var args=[];
 if(!arguments.length){
 var evt=null;
@@ -68332,12 +58976,12 @@
 }
 }
 }
-return _372.run.apply(_372,args);
+return _37a.run.apply(_37a,args);
 };
 }
-obj[_36e].__preJoinArity=_374;
+obj[_376].__preJoinArity=_37c;
 }
-return _372;
+return _37a;
 };
 dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:function(){
 this.object[this.methodname]=this.methodfunc;
@@ -68347,41 +58991,41 @@
 },disconnect:dojo.lang.forward("unintercept"),run:function(){
 var obj=this.object||dj_global;
 var args=arguments;
-var _37a=[];
+var _382=[];
 for(var x=0;x<args.length;x++){
-_37a[x]=args[x];
+_382[x]=args[x];
 }
-var _37c=function(marr){
+var _384=function(marr){
 if(!marr){
 dojo.debug("Null argument to unrollAdvice()");
 return;
 }
-var _37e=marr[0]||dj_global;
-var _37f=marr[1];
-if(!_37e[_37f]){
-dojo.raise("function \""+_37f+"\" does not exist on \""+_37e+"\"");
+var _386=marr[0]||dj_global;
+var _387=marr[1];
+if(!_386[_387]){
+dojo.raise("function \""+_387+"\" does not exist on \""+_386+"\"");
 }
-var _380=marr[2]||dj_global;
-var _381=marr[3];
+var _388=marr[2]||dj_global;
+var _389=marr[3];
 var msg=marr[6];
-var _383=marr[7];
-if(_383>-1){
-if(_383==0){
+var _38b=marr[7];
+if(_38b>-1){
+if(_38b==0){
 return;
 }
 marr[7]--;
 }
-var _384;
+var _38c;
 var to={args:[],jp_:this,object:obj,proceed:function(){
-return _37e[_37f].apply(_37e,to.args);
+return _386[_387].apply(_386,to.args);
 }};
-to.args=_37a;
-var _386=parseInt(marr[4]);
-var _387=((!isNaN(_386))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
+to.args=_382;
+var _38e=parseInt(marr[4]);
+var _38f=((!isNaN(_38e))&&(marr[4]!==null)&&(typeof marr[4]!="undefined"));
 if(marr[5]){
 var rate=parseInt(marr[5]);
 var cur=new Date();
-var _38a=false;
+var _392=false;
 if((marr["last"])&&((cur-marr.last)<=rate)){
 if(dojo.event._canTimeout){
 if(marr["delayTimer"]){
@@ -68391,7 +59035,7 @@
 var mcpy=dojo.lang.shallowCopy(marr);
 marr.delayTimer=setTimeout(function(){
 mcpy[5]=0;
-_37c(mcpy);
+_384(mcpy);
 },tod);
 }
 return;
@@ -68399,49 +59043,49 @@
 marr.last=cur;
 }
 }
-if(_381){
-_380[_381].call(_380,to);
+if(_389){
+_388[_389].call(_388,to);
 }else{
-if((_387)&&((dojo.render.html)||(dojo.render.svg))){
+if((_38f)&&((dojo.render.html)||(dojo.render.svg))){
 dj_global["setTimeout"](function(){
 if(msg){
-_37e[_37f].call(_37e,to);
+_386[_387].call(_386,to);
 }else{
-_37e[_37f].apply(_37e,args);
+_386[_387].apply(_386,args);
 }
-},_386);
+},_38e);
 }else{
 if(msg){
-_37e[_37f].call(_37e,to);
+_386[_387].call(_386,to);
 }else{
-_37e[_37f].apply(_37e,args);
+_386[_387].apply(_386,args);
 }
 }
 }
 };
-var _38d=function(){
+var _395=function(){
 if(this.squelch){
 try{
-return _37c.apply(this,arguments);
+return _384.apply(this,arguments);
 }
 catch(e){
 dojo.debug(e);
 }
 }else{
-return _37c.apply(this,arguments);
+return _384.apply(this,arguments);
 }
 };
 if((this["before"])&&(this.before.length>0)){
-dojo.lang.forEach(this.before.concat(new Array()),_38d);
+dojo.lang.forEach(this.before.concat(new Array()),_395);
 }
-var _38e;
+var _396;
 try{
 if((this["around"])&&(this.around.length>0)){
 var mi=new dojo.event.MethodInvocation(this,obj,args);
-_38e=mi.proceed();
+_396=mi.proceed();
 }else{
 if(this.methodfunc){
-_38e=this.object[this.methodname].apply(this.object,args);
+_396=this.object[this.methodname].apply(this.object,args);
 }
 }
 }
@@ -68452,9 +59096,9 @@
 }
 }
 if((this["after"])&&(this.after.length>0)){
-dojo.lang.forEach(this.after.concat(new Array()),_38d);
+dojo.lang.forEach(this.after.concat(new Array()),_395);
 }
-return (this.methodfunc)?_38e:null;
+return (this.methodfunc)?_396:null;
 },getArr:function(kind){
 var type="after";
 if((typeof kind=="string")&&(kind.indexOf("before")!=-1)){
@@ -68470,38 +59114,38 @@
 return this[type];
 },kwAddAdvice:function(args){
 this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],args["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
-},addAdvice:function(_393,_394,_395,_396,_397,_398,once,_39a,rate,_39c,_39d){
-var arr=this.getArr(_397);
+},addAdvice:function(_39b,_39c,_39d,_39e,_39f,_3a0,once,_3a2,rate,_3a4,_3a5){
+var arr=this.getArr(_39f);
 if(!arr){
 dojo.raise("bad this: "+this);
 }
-var ao=[_393,_394,_395,_396,_39a,rate,_39c,_39d];
+var ao=[_39b,_39c,_39d,_39e,_3a2,rate,_3a4,_3a5];
 if(once){
-if(this.hasAdvice(_393,_394,_397,arr)>=0){
+if(this.hasAdvice(_39b,_39c,_39f,arr)>=0){
 return;
 }
 }
-if(_398=="first"){
+if(_3a0=="first"){
 arr.unshift(ao);
 }else{
 arr.push(ao);
 }
-},hasAdvice:function(_3a0,_3a1,_3a2,arr){
+},hasAdvice:function(_3a8,_3a9,_3aa,arr){
 if(!arr){
-arr=this.getArr(_3a2);
+arr=this.getArr(_3aa);
 }
 var ind=-1;
 for(var x=0;x<arr.length;x++){
-var aao=(typeof _3a1=="object")?(new String(_3a1)).toString():_3a1;
+var aao=(typeof _3a9=="object")?(new String(_3a9)).toString():_3a9;
 var a1o=(typeof arr[x][1]=="object")?(new String(arr[x][1])).toString():arr[x][1];
-if((arr[x][0]==_3a0)&&(a1o==aao)){
+if((arr[x][0]==_3a8)&&(a1o==aao)){
 ind=x;
 }
 }
 return ind;
-},removeAdvice:function(_3a8,_3a9,_3aa,once){
-var arr=this.getArr(_3aa);
-var ind=this.hasAdvice(_3a8,_3a9,_3aa,arr);
+},removeAdvice:function(_3b0,_3b1,_3b2,once){
+var arr=this.getArr(_3b2);
+var ind=this.hasAdvice(_3b0,_3b1,_3b2,arr);
 if(ind==-1){
 return false;
 }
@@ -68510,73 +59154,73 @@
 if(once){
 break;
 }
-ind=this.hasAdvice(_3a8,_3a9,_3aa,arr);
+ind=this.hasAdvice(_3b0,_3b1,_3b2,arr);
 }
 return true;
 }});
 dojo.provide("dojo.event.topic");
 dojo.event.topic=new function(){
 this.topics={};
-this.getTopic=function(_3ae){
-if(!this.topics[_3ae]){
-this.topics[_3ae]=new this.TopicImpl(_3ae);
+this.getTopic=function(_3b6){
+if(!this.topics[_3b6]){
+this.topics[_3b6]=new this.TopicImpl(_3b6);
 }
-return this.topics[_3ae];
+return this.topics[_3b6];
 };
-this.registerPublisher=function(_3af,obj,_3b1){
-var _3af=this.getTopic(_3af);
-_3af.registerPublisher(obj,_3b1);
+this.registerPublisher=function(_3b7,obj,_3b9){
+var _3b7=this.getTopic(_3b7);
+_3b7.registerPublisher(obj,_3b9);
 };
-this.subscribe=function(_3b2,obj,_3b4){
-var _3b2=this.getTopic(_3b2);
-_3b2.subscribe(obj,_3b4);
+this.subscribe=function(_3ba,obj,_3bc){
+var _3ba=this.getTopic(_3ba);
+_3ba.subscribe(obj,_3bc);
 };
-this.unsubscribe=function(_3b5,obj,_3b7){
-var _3b5=this.getTopic(_3b5);
-_3b5.unsubscribe(obj,_3b7);
+this.unsubscribe=function(_3bd,obj,_3bf){
+var _3bd=this.getTopic(_3bd);
+_3bd.unsubscribe(obj,_3bf);
 };
-this.destroy=function(_3b8){
-this.getTopic(_3b8).destroy();
-delete this.topics[_3b8];
+this.destroy=function(_3c0){
+this.getTopic(_3c0).destroy();
+delete this.topics[_3c0];
 };
-this.publishApply=function(_3b9,args){
-var _3b9=this.getTopic(_3b9);
-_3b9.sendMessage.apply(_3b9,args);
+this.publishApply=function(_3c1,args){
+var _3c1=this.getTopic(_3c1);
+_3c1.sendMessage.apply(_3c1,args);
 };
-this.publish=function(_3bb,_3bc){
-var _3bb=this.getTopic(_3bb);
+this.publish=function(_3c3,_3c4){
+var _3c3=this.getTopic(_3c3);
 var args=[];
 for(var x=1;x<arguments.length;x++){
 args.push(arguments[x]);
 }
-_3bb.sendMessage.apply(_3bb,args);
+_3c3.sendMessage.apply(_3c3,args);
 };
 };
-dojo.event.topic.TopicImpl=function(_3bf){
-this.topicName=_3bf;
-this.subscribe=function(_3c0,_3c1){
-var tf=_3c1||_3c0;
-var to=(!_3c1)?dj_global:_3c0;
+dojo.event.topic.TopicImpl=function(_3c7){
+this.topicName=_3c7;
+this.subscribe=function(_3c8,_3c9){
+var tf=_3c9||_3c8;
+var to=(!_3c9)?dj_global:_3c8;
 return dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
-this.unsubscribe=function(_3c4,_3c5){
-var tf=(!_3c5)?_3c4:_3c5;
-var to=(!_3c5)?null:_3c4;
+this.unsubscribe=function(_3cc,_3cd){
+var tf=(!_3cd)?_3cc:_3cd;
+var to=(!_3cd)?null:_3cc;
 return dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,adviceFunc:tf});
 };
 this._getJoinPoint=function(){
 return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
 };
-this.setSquelch=function(_3c8){
-this._getJoinPoint().squelch=_3c8;
+this.setSquelch=function(_3d0){
+this._getJoinPoint().squelch=_3d0;
 };
 this.destroy=function(){
 this._getJoinPoint().disconnect();
 };
-this.registerPublisher=function(_3c9,_3ca){
-dojo.event.connect(_3c9,_3ca,this,"sendMessage");
+this.registerPublisher=function(_3d1,_3d2){
+dojo.event.connect(_3d1,_3d2,this,"sendMessage");
 };
-this.sendMessage=function(_3cb){
+this.sendMessage=function(_3d3){
 };
 };
 dojo.provide("dojo.event.browser");
@@ -68599,12 +59243,12 @@
 catch(e){
 }
 }
-this.clobber=function(_3ce){
+this.clobber=function(_3d6){
 var na;
 var tna;
-if(_3ce){
-tna=_3ce.all||_3ce.getElementsByTagName("*");
-na=[_3ce];
+if(_3d6){
+tna=_3d6.all||_3d6.getElementsByTagName("*");
+na=[_3d6];
 for(var x=0;x<tna.length;x++){
 if(tna[x]["__doClobber__"]){
 na.push(tna[x]);
@@ -68619,7 +59263,7 @@
 na=(this.clobberNodes.length)?this.clobberNodes:document.all;
 }
 tna=null;
-var _3d2={};
+var _3da={};
 for(var i=na.length-1;i>=0;i=i-1){
 var el=na[i];
 try{
@@ -68670,9 +59314,9 @@
 });
 }
 dojo.event.browser=new function(){
-var _3d7=0;
-this.normalizedEventName=function(_3d8){
-switch(_3d8){
+var _3df=0;
+this.normalizedEventName=function(_3e0){
+switch(_3e0){
 case "CheckboxStateChange":
 case "DOMAttrModified":
 case "DOMMenuItemActive":
@@ -68681,10 +59325,10 @@
 case "DOMNodeInserted":
 case "DOMNodeRemoved":
 case "RadioStateChange":
-return _3d8;
+return _3e0;
 break;
 default:
-var lcn=_3d8.toLowerCase();
+var lcn=_3e0.toLowerCase();
 return (lcn.indexOf("on")==0)?lcn.substr(2):lcn;
 break;
 }
@@ -68704,88 +59348,88 @@
 node.__clobberAttrs__=[];
 }
 };
-this.addClobberNodeAttrs=function(node,_3dd){
+this.addClobberNodeAttrs=function(node,_3e5){
 if(!dojo.render.html.ie){
 return;
 }
 this.addClobberNode(node);
-for(var x=0;x<_3dd.length;x++){
-node.__clobberAttrs__.push(_3dd[x]);
+for(var x=0;x<_3e5.length;x++){
+node.__clobberAttrs__.push(_3e5[x]);
 }
 };
-this.removeListener=function(node,_3e0,fp,_3e2){
-if(!_3e2){
-var _3e2=false;
+this.removeListener=function(node,_3e8,fp,_3ea){
+if(!_3ea){
+var _3ea=false;
 }
-_3e0=dojo.event.browser.normalizedEventName(_3e0);
-if(_3e0=="key"){
+_3e8=dojo.event.browser.normalizedEventName(_3e8);
+if(_3e8=="key"){
 if(dojo.render.html.ie){
-this.removeListener(node,"onkeydown",fp,_3e2);
+this.removeListener(node,"onkeydown",fp,_3ea);
 }
-_3e0="keypress";
+_3e8="keypress";
 }
 if(node.removeEventListener){
-node.removeEventListener(_3e0,fp,_3e2);
+node.removeEventListener(_3e8,fp,_3ea);
 }
 };
-this.addListener=function(node,_3e4,fp,_3e6,_3e7){
+this.addListener=function(node,_3ec,fp,_3ee,_3ef){
 if(!node){
 return;
 }
-if(!_3e6){
-var _3e6=false;
+if(!_3ee){
+var _3ee=false;
 }
-_3e4=dojo.event.browser.normalizedEventName(_3e4);
-if(_3e4=="key"){
+_3ec=dojo.event.browser.normalizedEventName(_3ec);
+if(_3ec=="key"){
 if(dojo.render.html.ie){
-this.addListener(node,"onkeydown",fp,_3e6,_3e7);
+this.addListener(node,"onkeydown",fp,_3ee,_3ef);
 }
-_3e4="keypress";
+_3ec="keypress";
 }
-if(!_3e7){
-var _3e8=function(evt){
+if(!_3ef){
+var _3f0=function(evt){
 if(!evt){
 evt=window.event;
 }
 var ret=fp(dojo.event.browser.fixEvent(evt,this));
-if(_3e6){
+if(_3ee){
 dojo.event.browser.stopEvent(evt);
 }
 return ret;
 };
 }else{
-_3e8=fp;
+_3f0=fp;
 }
 if(node.addEventListener){
-node.addEventListener(_3e4,_3e8,_3e6);
-return _3e8;
+node.addEventListener(_3ec,_3f0,_3ee);
+return _3f0;
 }else{
-_3e4="on"+_3e4;
-if(typeof node[_3e4]=="function"){
-var _3eb=node[_3e4];
-node[_3e4]=function(e){
-_3eb(e);
-return _3e8(e);
+_3ec="on"+_3ec;
+if(typeof node[_3ec]=="function"){
+var _3f3=node[_3ec];
+node[_3ec]=function(e){
+_3f3(e);
+return _3f0(e);
 };
 }else{
-node[_3e4]=_3e8;
+node[_3ec]=_3f0;
 }
 if(dojo.render.html.ie){
-this.addClobberNodeAttrs(node,[_3e4]);
+this.addClobberNodeAttrs(node,[_3ec]);
 }
-return _3e8;
+return _3f0;
 }
 };
 this.isEvent=function(obj){
 return (typeof obj!="undefined")&&(obj)&&(typeof Event!="undefined")&&(obj.eventPhase);
 };
 this.currentEvent=null;
-this.callListener=function(_3ee,_3ef){
-if(typeof _3ee!="function"){
-dojo.raise("listener not a function: "+_3ee);
+this.callListener=function(_3f6,_3f7){
+if(typeof _3f6!="function"){
+dojo.raise("listener not a function: "+_3f6);
 }
-dojo.event.browser.currentEvent.currentTarget=_3ef;
-return _3ee.call(_3ef,dojo.event.browser.currentEvent);
+dojo.event.browser.currentEvent.currentTarget=_3f7;
+return _3f6.call(_3f7,dojo.event.browser.currentEvent);
 };
 this._stopPropagation=function(){
 dojo.event.browser.currentEvent.cancelBubble=true;
@@ -68798,7 +59442,7 @@
 for(var key in this.keys){
 this.revKeys[this.keys[key]]=key;
 }
-this.fixEvent=function(evt,_3f2){
+this.fixEvent=function(evt,_3fa){
 if(!evt){
 if(window["event"]){
 evt=window.event;
@@ -68875,14 +59519,14 @@
 break;
 default:
 if(evt.ctrlKey||evt.altKey){
-var _3f4=evt.keyCode;
-if(_3f4>=65&&_3f4<=90&&evt.shiftKey==false){
-_3f4+=32;
+var _3fc=evt.keyCode;
+if(_3fc>=65&&_3fc<=90&&evt.shiftKey==false){
+_3fc+=32;
 }
-if(_3f4>=1&&_3f4<=26&&evt.ctrlKey){
-_3f4+=96;
+if(_3fc>=1&&_3fc<=26&&evt.ctrlKey){
+_3fc+=96;
 }
-evt.key=String.fromCharCode(_3f4);
+evt.key=String.fromCharCode(_3fc);
 }
 }
 }else{
@@ -68908,11 +59552,11 @@
 evt.key=evt.which;
 break;
 default:
-var _3f4=evt.which;
+var _3fc=evt.which;
 if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=65&&evt.which<=90&&evt.shiftKey==false)){
-_3f4+=32;
+_3fc+=32;
 }
-evt.key=String.fromCharCode(_3f4);
+evt.key=String.fromCharCode(_3fc);
 }
 }
 }
@@ -69017,7 +59661,7 @@
 evt.target=evt.srcElement;
 }
 if(!evt.currentTarget){
-evt.currentTarget=(_3f2?_3f2:evt.srcElement);
+evt.currentTarget=(_3fa?_3fa:evt.srcElement);
 }
 if(!evt.layerX){
 evt.layerX=evt.offsetX;
@@ -69026,12 +59670,12 @@
 evt.layerY=evt.offsetY;
 }
 var doc=(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.ownerDocument:document;
-var _3f6=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _3fe=((dojo.render.html.ie55)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
 if(!evt.pageX){
-evt.pageX=evt.clientX+(_3f6.scrollLeft||0);
+evt.pageX=evt.clientX+(_3fe.scrollLeft||0);
 }
 if(!evt.pageY){
-evt.pageY=evt.clientY+(_3f6.scrollTop||0);
+evt.pageY=evt.clientY+(_3fe.scrollTop||0);
 }
 if(evt.type=="mouseover"){
 evt.relatedTarget=evt.fromElement;
@@ -69090,8 +59734,8 @@
 dojo.gfx.color.Color.fromArray=function(arr){
 return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
 };
-dojo.extend(dojo.gfx.color.Color,{toRgb:function(_3fe){
-if(_3fe){
+dojo.extend(dojo.gfx.color.Color,{toRgb:function(_406){
+if(_406){
 return this.toRgba();
 }else{
 return [this.r,this.g,this.b];
@@ -69104,62 +59748,62 @@
 return "rgb("+this.toRgb().join()+")";
 },toString:function(){
 return this.toHex();
-},blend:function(_3ff,_400){
+},blend:function(_407,_408){
 var rgb=null;
-if(dojo.lang.isArray(_3ff)){
-rgb=_3ff;
+if(dojo.lang.isArray(_407)){
+rgb=_407;
 }else{
-if(_3ff instanceof dojo.gfx.color.Color){
-rgb=_3ff.toRgb();
+if(_407 instanceof dojo.gfx.color.Color){
+rgb=_407.toRgb();
 }else{
-rgb=new dojo.gfx.color.Color(_3ff).toRgb();
+rgb=new dojo.gfx.color.Color(_407).toRgb();
 }
 }
-return dojo.gfx.color.blend(this.toRgb(),rgb,_400);
+return dojo.gfx.color.blend(this.toRgb(),rgb,_408);
 }});
 dojo.gfx.color.named={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128,128],silver:[192,192,192]};
-dojo.gfx.color.blend=function(a,b,_404){
+dojo.gfx.color.blend=function(a,b,_40c){
 if(typeof a=="string"){
-return dojo.gfx.color.blendHex(a,b,_404);
+return dojo.gfx.color.blendHex(a,b,_40c);
 }
-if(!_404){
-_404=0;
+if(!_40c){
+_40c=0;
 }
-_404=Math.min(Math.max(-1,_404),1);
-_404=((_404+1)/2);
+_40c=Math.min(Math.max(-1,_40c),1);
+_40c=((_40c+1)/2);
 var c=[];
 for(var x=0;x<3;x++){
-c[x]=parseInt(b[x]+((a[x]-b[x])*_404));
+c[x]=parseInt(b[x]+((a[x]-b[x])*_40c));
 }
 return c;
 };
-dojo.gfx.color.blendHex=function(a,b,_409){
-return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_409));
+dojo.gfx.color.blendHex=function(a,b,_411){
+return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),dojo.gfx.color.hex2rgb(b),_411));
 };
-dojo.gfx.color.extractRGB=function(_40a){
+dojo.gfx.color.extractRGB=function(_412){
 var hex="0123456789abcdef";
-_40a=_40a.toLowerCase();
-if(_40a.indexOf("rgb")==0){
-var _40c=_40a.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
-var ret=_40c.splice(1,3);
+_412=_412.toLowerCase();
+if(_412.indexOf("rgb")==0){
+var _414=_412.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
+var ret=_414.splice(1,3);
 return ret;
 }else{
-var _40e=dojo.gfx.color.hex2rgb(_40a);
-if(_40e){
-return _40e;
+var _416=dojo.gfx.color.hex2rgb(_412);
+if(_416){
+return _416;
 }else{
-return dojo.gfx.color.named[_40a]||[255,255,255];
+return dojo.gfx.color.named[_412]||[255,255,255];
 }
 }
 };
 dojo.gfx.color.hex2rgb=function(hex){
-var _410="0123456789ABCDEF";
+var _418="0123456789ABCDEF";
 var rgb=new Array(3);
 if(hex.indexOf("#")==0){
 hex=hex.substring(1);
 }
 hex=hex.toUpperCase();
-if(hex.replace(new RegExp("["+_410+"]","g"),"")!=""){
+if(hex.replace(new RegExp("["+_418+"]","g"),"")!=""){
 return null;
 }
 if(hex.length==3){
@@ -69172,7 +59816,7 @@
 rgb[2]=hex.substring(4);
 }
 for(var i=0;i<rgb.length;i++){
-rgb[i]=_410.indexOf(rgb[i].charAt(0))*16+_410.indexOf(rgb[i].charAt(1));
+rgb[i]=_418.indexOf(rgb[i].charAt(0))*16+_418.indexOf(rgb[i].charAt(1));
 }
 return rgb;
 };
@@ -69194,10 +59838,10 @@
 return ret.join("");
 };
 dojo.provide("dojo.lfx.Animation");
-dojo.lfx.Line=function(_419,end){
-this.start=_419;
+dojo.lfx.Line=function(_421,end){
+this.start=_421;
 this.end=end;
-if(dojo.lang.isArray(_419)){
+if(dojo.lang.isArray(_421)){
 var diff=[];
 dojo.lang.forEach(this.start,function(s,i){
 diff[i]=this.end[i]-s;
@@ -69210,7 +59854,7 @@
 return res;
 };
 }else{
-var diff=end-_419;
+var diff=end-_421;
 this.getValue=function(n){
 return (diff*n)+this.start;
 };
@@ -69236,17 +59880,17 @@
 };
 dojo.lfx.IAnimation=function(){
 };
-dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_429,_42a){
-if(!_42a){
-_42a=_429;
-_429=this;
+dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:null,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnimate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:null,stop:null,connect:function(evt,_431,_432){
+if(!_432){
+_432=_431;
+_431=this;
 }
-_42a=dojo.lang.hitch(_429,_42a);
-var _42b=this[evt]||function(){
+_432=dojo.lang.hitch(_431,_432);
+var _433=this[evt]||function(){
 };
 this[evt]=function(){
-var ret=_42b.apply(this,arguments);
-_42a.apply(this,arguments);
+var ret=_433.apply(this,arguments);
+_432.apply(this,arguments);
 return ret;
 };
 return this;
@@ -69255,57 +59899,57 @@
 this[evt].apply(this,(args||[]));
 }
 return this;
-},repeat:function(_42f){
-this.repeatCount=_42f;
+},repeat:function(_437){
+this.repeatCount=_437;
 return this;
 },_active:false,_paused:false});
-dojo.lfx.Animation=function(_430,_431,_432,_433,_434,rate){
+dojo.lfx.Animation=function(_438,_439,_43a,_43b,_43c,rate){
 dojo.lfx.IAnimation.call(this);
-if(dojo.lang.isNumber(_430)||(!_430&&_431.getValue)){
-rate=_434;
-_434=_433;
-_433=_432;
-_432=_431;
-_431=_430;
-_430=null;
+if(dojo.lang.isNumber(_438)||(!_438&&_439.getValue)){
+rate=_43c;
+_43c=_43b;
+_43b=_43a;
+_43a=_439;
+_439=_438;
+_438=null;
 }else{
-if(_430.getValue||dojo.lang.isArray(_430)){
-rate=_433;
-_434=_432;
-_433=_431;
-_432=_430;
-_431=null;
-_430=null;
+if(_438.getValue||dojo.lang.isArray(_438)){
+rate=_43b;
+_43c=_43a;
+_43b=_439;
+_43a=_438;
+_439=null;
+_438=null;
 }
 }
-if(dojo.lang.isArray(_432)){
-this.curve=new dojo.lfx.Line(_432[0],_432[1]);
+if(dojo.lang.isArray(_43a)){
+this.curve=new dojo.lfx.Line(_43a[0],_43a[1]);
 }else{
-this.curve=_432;
+this.curve=_43a;
 }
-if(_431!=null&&_431>0){
-this.duration=_431;
+if(_439!=null&&_439>0){
+this.duration=_439;
 }
-if(_434){
-this.repeatCount=_434;
+if(_43c){
+this.repeatCount=_43c;
 }
 if(rate){
 this.rate=rate;
 }
-if(_430){
+if(_438){
 dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","onStop","onAnimate"],function(item){
-if(_430[item]){
-this.connect(item,_430[item]);
+if(_438[item]){
+this.connect(item,_438[item]);
 }
 },this);
 }
-if(_433&&dojo.lang.isFunction(_433)){
-this.easing=_433;
+if(_43b&&dojo.lang.isFunction(_43b)){
+this.easing=_43b;
 }
 };
 dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_437,_438){
-if(_438){
+dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer:null,_percent:0,_startRepeatCount:0,play:function(_43f,_440){
+if(_440){
 clearTimeout(this._timer);
 this._active=false;
 this._paused=false;
@@ -69317,10 +59961,10 @@
 }
 this.fire("handler",["beforeBegin"]);
 this.fire("beforeBegin");
-if(_437>0){
+if(_43f>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_438);
-}),_437);
+this.play(null,_440);
+}),_43f);
 return this;
 }
 this._startTime=new Date().valueOf();
@@ -69331,16 +59975,16 @@
 this._active=true;
 this._paused=false;
 var step=this._percent/100;
-var _43a=this.curve.getValue(step);
+var _442=this.curve.getValue(step);
 if(this._percent==0){
 if(!this._startRepeatCount){
 this._startRepeatCount=this.repeatCount;
 }
-this.fire("handler",["begin",_43a]);
-this.fire("onBegin",[_43a]);
+this.fire("handler",["begin",_442]);
+this.fire("onBegin",[_442]);
 }
-this.fire("handler",["play",_43a]);
-this.fire("onPlay",[_43a]);
+this.fire("handler",["play",_442]);
+this.fire("onPlay",[_442]);
 this._cycle();
 return this;
 },pause:function(){
@@ -69349,28 +59993,28 @@
 return this;
 }
 this._paused=true;
-var _43b=this.curve.getValue(this._percent/100);
-this.fire("handler",["pause",_43b]);
-this.fire("onPause",[_43b]);
+var _443=this.curve.getValue(this._percent/100);
+this.fire("handler",["pause",_443]);
+this.fire("onPause",[_443]);
 return this;
-},gotoPercent:function(pct,_43d){
+},gotoPercent:function(pct,_445){
 clearTimeout(this._timer);
 this._active=true;
 this._paused=true;
 this._percent=pct;
-if(_43d){
+if(_445){
 this.play();
 }
 return this;
-},stop:function(_43e){
+},stop:function(_446){
 clearTimeout(this._timer);
 var step=this._percent/100;
-if(_43e){
+if(_446){
 step=1;
 }
-var _440=this.curve.getValue(step);
-this.fire("handler",["stop",_440]);
-this.fire("onStop",[_440]);
+var _448=this.curve.getValue(step);
+this.fire("handler",["stop",_448]);
+this.fire("onStop",[_448]);
 this._active=false;
 this._paused=false;
 return this;
@@ -69395,9 +60039,9 @@
 if((this.easing)&&(dojo.lang.isFunction(this.easing))){
 step=this.easing(step);
 }
-var _443=this.curve.getValue(step);
-this.fire("handler",["animate",_443]);
-this.fire("onAnimate",[_443]);
+var _44b=this.curve.getValue(step);
+this.fire("handler",["animate",_44b]);
+this.fire("onAnimate",[_44b]);
 if(step<1){
 this._timer=setTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
 }else{
@@ -69421,44 +60065,44 @@
 }
 return this;
 }});
-dojo.lfx.Combine=function(_444){
+dojo.lfx.Combine=function(_44c){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._animsEnded=0;
-var _445=arguments;
-if(_445.length==1&&(dojo.lang.isArray(_445[0])||dojo.lang.isArrayLike(_445[0]))){
-_445=_445[0];
+var _44d=arguments;
+if(_44d.length==1&&(dojo.lang.isArray(_44d[0])||dojo.lang.isArrayLike(_44d[0]))){
+_44d=_44d[0];
 }
-dojo.lang.forEach(_445,function(anim){
+dojo.lang.forEach(_44d,function(anim){
 this._anims.push(anim);
 anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
 },this);
 };
 dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_447,_448){
+dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_44f,_450){
 if(!this._anims.length){
 return this;
 }
 this.fire("beforeBegin");
-if(_447>0){
+if(_44f>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_448);
-}),_447);
+this.play(null,_450);
+}),_44f);
 return this;
 }
-if(_448||this._anims[0].percent==0){
+if(_450||this._anims[0].percent==0){
 this.fire("onBegin");
 }
 this.fire("onPlay");
-this._animsCall("play",null,_448);
+this._animsCall("play",null,_450);
 return this;
 },pause:function(){
 this.fire("onPause");
 this._animsCall("pause");
 return this;
-},stop:function(_449){
+},stop:function(_451){
 this.fire("onStop");
-this._animsCall("stop",_449);
+this._animsCall("stop",_451);
 return this;
 },_onAnimsEnded:function(){
 this._animsEnded++;
@@ -69466,31 +60110,31 @@
 this.fire("onEnd");
 }
 return this;
-},_animsCall:function(_44a){
+},_animsCall:function(_452){
 var args=[];
 if(arguments.length>1){
 for(var i=1;i<arguments.length;i++){
 args.push(arguments[i]);
 }
 }
-var _44d=this;
+var _455=this;
 dojo.lang.forEach(this._anims,function(anim){
-anim[_44a](args);
-},_44d);
+anim[_452](args);
+},_455);
 return this;
 }});
-dojo.lfx.Chain=function(_44f){
+dojo.lfx.Chain=function(_457){
 dojo.lfx.IAnimation.call(this);
 this._anims=[];
 this._currAnim=-1;
-var _450=arguments;
-if(_450.length==1&&(dojo.lang.isArray(_450[0])||dojo.lang.isArrayLike(_450[0]))){
-_450=_450[0];
+var _458=arguments;
+if(_458.length==1&&(dojo.lang.isArray(_458[0])||dojo.lang.isArrayLike(_458[0]))){
+_458=_458[0];
 }
-var _451=this;
-dojo.lang.forEach(_450,function(anim,i,_454){
+var _459=this;
+dojo.lang.forEach(_458,function(anim,i,_45c){
 this._anims.push(anim);
-if(i<_454.length-1){
+if(i<_45c.length-1){
 anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
 }else{
 anim.connect("onEnd",dojo.lang.hitch(this,function(){
@@ -69500,28 +60144,28 @@
 },this);
 };
 dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
-dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_455,_456){
+dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_45d,_45e){
 if(!this._anims.length){
 return this;
 }
-if(_456||!this._anims[this._currAnim]){
+if(_45e||!this._anims[this._currAnim]){
 this._currAnim=0;
 }
-var _457=this._anims[this._currAnim];
+var _45f=this._anims[this._currAnim];
 this.fire("beforeBegin");
-if(_455>0){
+if(_45d>0){
 setTimeout(dojo.lang.hitch(this,function(){
-this.play(null,_456);
-}),_455);
+this.play(null,_45e);
+}),_45d);
 return this;
 }
-if(_457){
+if(_45f){
 if(this._currAnim==0){
 this.fire("handler",["begin",this._currAnim]);
 this.fire("onBegin",[this._currAnim]);
 }
 this.fire("onPlay",[this._currAnim]);
-_457.play(null,_456);
+_45f.play(null,_45e);
 }
 return this;
 },pause:function(){
@@ -69537,9 +60181,9 @@
 if(this._currAnim==-1){
 this._currAnim=0;
 }
-var _458=this._anims[this._currAnim];
-if(_458){
-if(!_458._active||_458._paused){
+var _460=this._anims[this._currAnim];
+if(_460){
+if(!_460._active||_460._paused){
 this.play();
 }else{
 this.pause();
@@ -69547,12 +60191,12 @@
 }
 return this;
 },stop:function(){
-var _459=this._anims[this._currAnim];
-if(_459){
-_459.stop();
+var _461=this._anims[this._currAnim];
+if(_461){
+_461.stop();
 this.fire("onStop",[this._currAnim]);
 }
-return _459;
+return _461;
 },_playNext:function(){
 if(this._currAnim==-1||this._anims.length==0){
 return this;
@@ -69563,25 +60207,25 @@
 }
 return this;
 }});
-dojo.lfx.combine=function(_45a){
-var _45b=arguments;
+dojo.lfx.combine=function(_462){
+var _463=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_45b=arguments[0];
+_463=arguments[0];
 }
-if(_45b.length==1){
-return _45b[0];
+if(_463.length==1){
+return _463[0];
 }
-return new dojo.lfx.Combine(_45b);
+return new dojo.lfx.Combine(_463);
 };
-dojo.lfx.chain=function(_45c){
-var _45d=arguments;
+dojo.lfx.chain=function(_464){
+var _465=arguments;
 if(dojo.lang.isArray(arguments[0])){
-_45d=arguments[0];
+_465=arguments[0];
 }
-if(_45d.length==1){
-return _45d[0];
+if(_465.length==1){
+return _465[0];
 }
-return new dojo.lfx.Chain(_45d);
+return new dojo.lfx.Chain(_465);
 };
 dojo.provide("dojo.html.common");
 dojo.lang.mixin(dojo.html,dojo.dom);
@@ -69600,24 +60244,24 @@
 return t;
 };
 dojo.html.getViewport=function(){
-var _460=dojo.global();
-var _461=dojo.doc();
+var _468=dojo.global();
+var _469=dojo.doc();
 var w=0;
 var h=0;
 if(dojo.render.html.mozilla){
-w=_461.documentElement.clientWidth;
-h=_460.innerHeight;
+w=_469.documentElement.clientWidth;
+h=_468.innerHeight;
 }else{
-if(!dojo.render.html.opera&&_460.innerWidth){
-w=_460.innerWidth;
-h=_460.innerHeight;
+if(!dojo.render.html.opera&&_468.innerWidth){
+w=_468.innerWidth;
+h=_468.innerHeight;
 }else{
-if(!dojo.render.html.opera&&dojo.exists(_461,"documentElement.clientWidth")){
-var w2=_461.documentElement.clientWidth;
+if(!dojo.render.html.opera&&dojo.exists(_469,"documentElement.clientWidth")){
+var w2=_469.documentElement.clientWidth;
 if(!w||w2&&w2<w){
 w=w2;
 }
-h=_461.documentElement.clientHeight;
+h=_469.documentElement.clientHeight;
 }else{
 if(dojo.body().clientWidth){
 w=dojo.body().clientWidth;
@@ -69629,23 +60273,23 @@
 return {width:w,height:h};
 };
 dojo.html.getScroll=function(){
-var _465=dojo.global();
-var _466=dojo.doc();
-var top=_465.pageYOffset||_466.documentElement.scrollTop||dojo.body().scrollTop||0;
-var left=_465.pageXOffset||_466.documentElement.scrollLeft||dojo.body().scrollLeft||0;
+var _46d=dojo.global();
+var _46e=dojo.doc();
+var top=_46d.pageYOffset||_46e.documentElement.scrollTop||dojo.body().scrollTop||0;
+var left=_46d.pageXOffset||_46e.documentElement.scrollLeft||dojo.body().scrollLeft||0;
 return {top:top,left:left,offset:{x:left,y:top}};
 };
 dojo.html.getParentByType=function(node,type){
-var _46b=dojo.doc();
-var _46c=dojo.byId(node);
+var _473=dojo.doc();
+var _474=dojo.byId(node);
 type=type.toLowerCase();
-while((_46c)&&(_46c.nodeName.toLowerCase()!=type)){
-if(_46c==(_46b["body"]||_46b["documentElement"])){
+while((_474)&&(_474.nodeName.toLowerCase()!=type)){
+if(_474==(_473["body"]||_473["documentElement"])){
 return null;
 }
-_46c=_46c.parentNode;
+_474=_474.parentNode;
 }
-return _46c;
+return _474;
 };
 dojo.html.getAttribute=function(node,attr){
 node=dojo.byId(node);
@@ -69678,17 +60322,17 @@
 };
 dojo.html.getCursorPosition=function(e){
 e=e||dojo.global().event;
-var _474={x:0,y:0};
+var _47c={x:0,y:0};
 if(e.pageX||e.pageY){
-_474.x=e.pageX;
-_474.y=e.pageY;
+_47c.x=e.pageX;
+_47c.y=e.pageY;
 }else{
 var de=dojo.doc().documentElement;
 var db=dojo.body();
-_474.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
-_474.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
+_47c.x=e.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
+_47c.y=e.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
 }
-return _474;
+return _47c;
 };
 dojo.html.isTag=function(node){
 node=dojo.byId(node);
@@ -69704,9 +60348,9 @@
 if(dojo.render.html.ie&&!dojo.render.html.ie70){
 if(window.location.href.substr(0,6).toLowerCase()!="https:"){
 (function(){
-var _479=dojo.doc().createElement("script");
-_479.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
-dojo.doc().getElementsByTagName("head")[0].appendChild(_479);
+var _481=dojo.doc().createElement("script");
+_481.src="javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
+dojo.doc().getElementsByTagName("head")[0].appendChild(_481);
 })();
 }
 }else{
@@ -69714,20 +60358,20 @@
 return doc.createElement(tag);
 };
 }
-dojo.html._callDeprecated=function(_47c,_47d,args,_47f,_480){
-dojo.deprecated("dojo.html."+_47c,"replaced by dojo.html."+_47d+"("+(_47f?"node, {"+_47f+": "+_47f+"}":"")+")"+(_480?"."+_480:""),"0.5");
-var _481=[];
-if(_47f){
-var _482={};
-_482[_47f]=args[1];
-_481.push(args[0]);
-_481.push(_482);
+dojo.html._callDeprecated=function(_484,_485,args,_487,_488){
+dojo.deprecated("dojo.html."+_484,"replaced by dojo.html."+_485+"("+(_487?"node, {"+_487+": "+_487+"}":"")+")"+(_488?"."+_488:""),"0.5");
+var _489=[];
+if(_487){
+var _48a={};
+_48a[_487]=args[1];
+_489.push(args[0]);
+_489.push(_48a);
 }else{
-_481=args;
+_489=args;
 }
-var ret=dojo.html[_47d].apply(dojo.html,args);
-if(_480){
-return ret[_480];
+var ret=dojo.html[_485].apply(dojo.html,args);
+if(_488){
+return ret[_488];
 }else{
 return ret;
 }
@@ -69755,17 +60399,17 @@
 this.dojoUri=function(uri){
 return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
 };
-this.moduleUri=function(_485,uri){
-var loc=dojo.hostenv.getModuleSymbols(_485).join("/");
+this.moduleUri=function(_48d,uri){
+var loc=dojo.hostenv.getModuleSymbols(_48d).join("/");
 if(!loc){
 return null;
 }
 if(loc.lastIndexOf("/")!=loc.length-1){
 loc+="/";
 }
-var _488=loc.indexOf(":");
-var _489=loc.indexOf("/");
-if(loc.charAt(0)!="/"&&(_488==-1||_488>_489)){
+var _490=loc.indexOf(":");
+var _491=loc.indexOf("/");
+if(loc.charAt(0)!="/"&&(_490==-1||_490>_491)){
 loc=dojo.hostenv.getBaseScriptUri()+loc;
 }
 return new dojo.uri.Uri(loc,uri);
@@ -69776,20 +60420,20 @@
 if(!arguments[i]){
 continue;
 }
-var _48c=new dojo.uri.Uri(arguments[i].toString());
-var _48d=new dojo.uri.Uri(uri.toString());
-if((_48c.path=="")&&(_48c.scheme==null)&&(_48c.authority==null)&&(_48c.query==null)){
-if(_48c.fragment!=null){
-_48d.fragment=_48c.fragment;
+var _494=new dojo.uri.Uri(arguments[i].toString());
+var _495=new dojo.uri.Uri(uri.toString());
+if((_494.path=="")&&(_494.scheme==null)&&(_494.authority==null)&&(_494.query==null)){
+if(_494.fragment!=null){
+_495.fragment=_494.fragment;
 }
-_48c=_48d;
+_494=_495;
 }else{
-if(_48c.scheme==null){
-_48c.scheme=_48d.scheme;
-if(_48c.authority==null){
-_48c.authority=_48d.authority;
-if(_48c.path.charAt(0)!="/"){
-var path=_48d.path.substring(0,_48d.path.lastIndexOf("/")+1)+_48c.path;
+if(_494.scheme==null){
+_494.scheme=_495.scheme;
+if(_494.authority==null){
+_494.authority=_495.authority;
+if(_494.path.charAt(0)!="/"){
+var path=_495.path.substring(0,_495.path.lastIndexOf("/")+1)+_494.path;
 var segs=path.split("/");
 for(var j=0;j<segs.length;j++){
 if(segs[j]=="."){
@@ -69811,37 +60455,37 @@
 }
 }
 }
-_48c.path=segs.join("/");
+_494.path=segs.join("/");
 }
 }
 }
 }
 uri="";
-if(_48c.scheme!=null){
-uri+=_48c.scheme+":";
+if(_494.scheme!=null){
+uri+=_494.scheme+":";
 }
-if(_48c.authority!=null){
-uri+="//"+_48c.authority;
+if(_494.authority!=null){
+uri+="//"+_494.authority;
 }
-uri+=_48c.path;
-if(_48c.query!=null){
-uri+="?"+_48c.query;
+uri+=_494.path;
+if(_494.query!=null){
+uri+="?"+_494.query;
 }
-if(_48c.fragment!=null){
-uri+="#"+_48c.fragment;
+if(_494.fragment!=null){
+uri+="#"+_494.fragment;
 }
 }
 this.uri=uri.toString();
-var _491="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
-var r=this.uri.match(new RegExp(_491));
+var _499="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+var r=this.uri.match(new RegExp(_499));
 this.scheme=r[2]||(r[1]?"":null);
 this.authority=r[4]||(r[3]?"":null);
 this.path=r[5];
 this.query=r[7]||(r[6]?"":null);
 this.fragment=r[9]||(r[8]?"":null);
 if(this.authority!=null){
-_491="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
-r=this.authority.match(new RegExp(_491));
+_499="^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
+r=this.authority.match(new RegExp(_499));
 this.user=r[3]||null;
 this.password=r[4]||null;
 this.host=r[5];
@@ -69872,29 +60516,29 @@
 var c=dojo.html.getClass(node);
 return (c=="")?[]:c.split(/\s+/g);
 };
-dojo.html.hasClass=function(node,_498){
-return (new RegExp("(^|\\s+)"+_498+"(\\s+|$)")).test(dojo.html.getClass(node));
+dojo.html.hasClass=function(node,_4a0){
+return (new RegExp("(^|\\s+)"+_4a0+"(\\s+|$)")).test(dojo.html.getClass(node));
 };
-dojo.html.prependClass=function(node,_49a){
-_49a+=" "+dojo.html.getClass(node);
-return dojo.html.setClass(node,_49a);
+dojo.html.prependClass=function(node,_4a2){
+_4a2+=" "+dojo.html.getClass(node);
+return dojo.html.setClass(node,_4a2);
 };
-dojo.html.addClass=function(node,_49c){
-if(dojo.html.hasClass(node,_49c)){
+dojo.html.addClass=function(node,_4a4){
+if(dojo.html.hasClass(node,_4a4)){
 return false;
 }
-_49c=(dojo.html.getClass(node)+" "+_49c).replace(/^\s+|\s+$/g,"");
-return dojo.html.setClass(node,_49c);
+_4a4=(dojo.html.getClass(node)+" "+_4a4).replace(/^\s+|\s+$/g,"");
+return dojo.html.setClass(node,_4a4);
 };
-dojo.html.setClass=function(node,_49e){
+dojo.html.setClass=function(node,_4a6){
 node=dojo.byId(node);
-var cs=new String(_49e);
+var cs=new String(_4a6);
 try{
 if(typeof node.className=="string"){
 node.className=cs;
 }else{
 if(node.setAttribute){
-node.setAttribute("class",_49e);
+node.setAttribute("class",_4a6);
 node.className=cs;
 }else{
 return false;
@@ -69906,220 +60550,220 @@
 }
 return true;
 };
-dojo.html.removeClass=function(node,_4a1,_4a2){
+dojo.html.removeClass=function(node,_4a9,_4aa){
 try{
-if(!_4a2){
-var _4a3=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_4a1+"(\\s+|$)"),"$1$2");
+if(!_4aa){
+var _4ab=dojo.html.getClass(node).replace(new RegExp("(^|\\s+)"+_4a9+"(\\s+|$)"),"$1$2");
 }else{
-var _4a3=dojo.html.getClass(node).replace(_4a1,"");
+var _4ab=dojo.html.getClass(node).replace(_4a9,"");
 }
-dojo.html.setClass(node,_4a3);
+dojo.html.setClass(node,_4ab);
 }
 catch(e){
 dojo.debug("dojo.html.removeClass() failed",e);
 }
 return true;
 };
-dojo.html.replaceClass=function(node,_4a5,_4a6){
-dojo.html.removeClass(node,_4a6);
-dojo.html.addClass(node,_4a5);
+dojo.html.replaceClass=function(node,_4ad,_4ae){
+dojo.html.removeClass(node,_4ae);
+dojo.html.addClass(node,_4ad);
 };
 dojo.html.classMatchType={ContainsAll:0,ContainsAny:1,IsOnly:2};
-dojo.html.getElementsByClass=function(_4a7,_4a8,_4a9,_4aa,_4ab){
-_4ab=false;
-var _4ac=dojo.doc();
-_4a8=dojo.byId(_4a8)||_4ac;
-var _4ad=_4a7.split(/\s+/g);
-var _4ae=[];
-if(_4aa!=1&&_4aa!=2){
-_4aa=0;
+dojo.html.getElementsByClass=function(_4af,_4b0,_4b1,_4b2,_4b3){
+_4b3=false;
+var _4b4=dojo.doc();
+_4b0=dojo.byId(_4b0)||_4b4;
+var _4b5=_4af.split(/\s+/g);
+var _4b6=[];
+if(_4b2!=1&&_4b2!=2){
+_4b2=0;
 }
-var _4af=new RegExp("(\\s|^)(("+_4ad.join(")|(")+"))(\\s|$)");
-var _4b0=_4ad.join(" ").length;
-var _4b1=[];
-if(!_4ab&&_4ac.evaluate){
-var _4b2=".//"+(_4a9||"*")+"[contains(";
-if(_4aa!=dojo.html.classMatchType.ContainsAny){
-_4b2+="concat(' ', at class,' '), ' "+_4ad.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
-if(_4aa==2){
-_4b2+=" and string-length(@class)="+_4b0+"]";
+var _4b7=new RegExp("(\\s|^)(("+_4b5.join(")|(")+"))(\\s|$)");
+var _4b8=_4b5.join(" ").length;
+var _4b9=[];
+if(!_4b3&&_4b4.evaluate){
+var _4ba=".//"+(_4b1||"*")+"[contains(";
+if(_4b2!=dojo.html.classMatchType.ContainsAny){
+_4ba+="concat(' ', at class,' '), ' "+_4b5.join(" ') and contains(concat(' ', at class,' '), ' ")+" ')";
+if(_4b2==2){
+_4ba+=" and string-length(@class)="+_4b8+"]";
 }else{
-_4b2+="]";
+_4ba+="]";
 }
 }else{
-_4b2+="concat(' ', at class,' '), ' "+_4ad.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
+_4ba+="concat(' ', at class,' '), ' "+_4b5.join(" ') or contains(concat(' ', at class,' '), ' ")+" ')]";
 }
-var _4b3=_4ac.evaluate(_4b2,_4a8,null,XPathResult.ANY_TYPE,null);
-var _4b4=_4b3.iterateNext();
-while(_4b4){
+var _4bb=_4b4.evaluate(_4ba,_4b0,null,XPathResult.ANY_TYPE,null);
+var _4bc=_4bb.iterateNext();
+while(_4bc){
 try{
-_4b1.push(_4b4);
-_4b4=_4b3.iterateNext();
+_4b9.push(_4bc);
+_4bc=_4bb.iterateNext();
 }
 catch(e){
 break;
 }
 }
-return _4b1;
+return _4b9;
 }else{
-if(!_4a9){
-_4a9="*";
+if(!_4b1){
+_4b1="*";
 }
-_4b1=_4a8.getElementsByTagName(_4a9);
+_4b9=_4b0.getElementsByTagName(_4b1);
 var node,i=0;
 outer:
-while(node=_4b1[i++]){
-var _4b7=dojo.html.getClasses(node);
-if(_4b7.length==0){
+while(node=_4b9[i++]){
+var _4bf=dojo.html.getClasses(node);
+if(_4bf.length==0){
 continue outer;
 }
-var _4b8=0;
-for(var j=0;j<_4b7.length;j++){
-if(_4af.test(_4b7[j])){
-if(_4aa==dojo.html.classMatchType.ContainsAny){
-_4ae.push(node);
+var _4c0=0;
+for(var j=0;j<_4bf.length;j++){
+if(_4b7.test(_4bf[j])){
+if(_4b2==dojo.html.classMatchType.ContainsAny){
+_4b6.push(node);
 continue outer;
 }else{
-_4b8++;
+_4c0++;
 }
 }else{
-if(_4aa==dojo.html.classMatchType.IsOnly){
+if(_4b2==dojo.html.classMatchType.IsOnly){
 continue outer;
 }
 }
 }
-if(_4b8==_4ad.length){
-if((_4aa==dojo.html.classMatchType.IsOnly)&&(_4b8==_4b7.length)){
-_4ae.push(node);
+if(_4c0==_4b5.length){
+if((_4b2==dojo.html.classMatchType.IsOnly)&&(_4c0==_4bf.length)){
+_4b6.push(node);
 }else{
-if(_4aa==dojo.html.classMatchType.ContainsAll){
-_4ae.push(node);
+if(_4b2==dojo.html.classMatchType.ContainsAll){
+_4b6.push(node);
 }
 }
 }
 }
-return _4ae;
+return _4b6;
 }
 };
 dojo.html.getElementsByClassName=dojo.html.getElementsByClass;
-dojo.html.toCamelCase=function(_4ba){
-var arr=_4ba.split("-"),cc=arr[0];
+dojo.html.toCamelCase=function(_4c2){
+var arr=_4c2.split("-"),cc=arr[0];
 for(var i=1;i<arr.length;i++){
 cc+=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
 }
 return cc;
 };
-dojo.html.toSelectorCase=function(_4be){
-return _4be.replace(/([A-Z])/g,"-$1").toLowerCase();
+dojo.html.toSelectorCase=function(_4c6){
+return _4c6.replace(/([A-Z])/g,"-$1").toLowerCase();
 };
 if(dojo.render.html.ie){
-dojo.html.getComputedStyle=function(node,_4c0,_4c1){
+dojo.html.getComputedStyle=function(node,_4c8,_4c9){
 node=dojo.byId(node);
-if(!node||!node.style){
-return _4c1;
+if(!node||!node.currentStyle){
+return _4c9;
 }
-return node.currentStyle[dojo.html.toCamelCase(_4c0)];
+return node.currentStyle[dojo.html.toCamelCase(_4c8)];
 };
 dojo.html.getComputedStyles=function(node){
 return node.currentStyle;
 };
 }else{
-dojo.html.getComputedStyle=function(node,_4c4,_4c5){
+dojo.html.getComputedStyle=function(node,_4cc,_4cd){
 node=dojo.byId(node);
 if(!node||!node.style){
-return _4c5;
+return _4cd;
 }
 var s=document.defaultView.getComputedStyle(node,null);
-return (s&&s[dojo.html.toCamelCase(_4c4)])||"";
+return (s&&s[dojo.html.toCamelCase(_4cc)])||"";
 };
 dojo.html.getComputedStyles=function(node){
 return document.defaultView.getComputedStyle(node,null);
 };
 }
-dojo.html.getStyleProperty=function(node,_4c9){
+dojo.html.getStyleProperty=function(node,_4d1){
 node=dojo.byId(node);
-return (node&&node.style?node.style[dojo.html.toCamelCase(_4c9)]:undefined);
+return (node&&node.style?node.style[dojo.html.toCamelCase(_4d1)]:undefined);
 };
-dojo.html.getStyle=function(node,_4cb){
-var _4cc=dojo.html.getStyleProperty(node,_4cb);
-return (_4cc?_4cc:dojo.html.getComputedStyle(node,_4cb));
+dojo.html.getStyle=function(node,_4d3){
+var _4d4=dojo.html.getStyleProperty(node,_4d3);
+return (_4d4?_4d4:dojo.html.getComputedStyle(node,_4d3));
 };
-dojo.html.setStyle=function(node,_4ce,_4cf){
+dojo.html.setStyle=function(node,_4d6,_4d7){
 node=dojo.byId(node);
 if(node&&node.style){
-var _4d0=dojo.html.toCamelCase(_4ce);
-node.style[_4d0]=_4cf;
+var _4d8=dojo.html.toCamelCase(_4d6);
+node.style[_4d8]=_4d7;
 }
 };
-dojo.html.setStyleText=function(_4d1,text){
+dojo.html.setStyleText=function(_4d9,text){
 try{
-_4d1.style.cssText=text;
+_4d9.style.cssText=text;
 }
 catch(e){
-_4d1.setAttribute("style",text);
+_4d9.setAttribute("style",text);
 }
 };
-dojo.html.copyStyle=function(_4d3,_4d4){
-if(!_4d4.style.cssText){
-_4d3.setAttribute("style",_4d4.getAttribute("style"));
+dojo.html.copyStyle=function(_4db,_4dc){
+if(!_4dc.style.cssText){
+_4db.setAttribute("style",_4dc.getAttribute("style"));
 }else{
-_4d3.style.cssText=_4d4.style.cssText;
+_4db.style.cssText=_4dc.style.cssText;
 }
-dojo.html.addClass(_4d3,dojo.html.getClass(_4d4));
+dojo.html.addClass(_4db,dojo.html.getClass(_4dc));
 };
-dojo.html.getUnitValue=function(node,_4d6,_4d7){
-var s=dojo.html.getComputedStyle(node,_4d6);
-if((!s)||((s=="auto")&&(_4d7))){
+dojo.html.getUnitValue=function(node,_4de,_4df){
+var s=dojo.html.getComputedStyle(node,_4de);
+if((!s)||((s=="auto")&&(_4df))){
 return {value:0,units:"px"};
 }
-var _4d9=s.match(/(\-?[\d.]+)([a-z%]*)/i);
-if(!_4d9){
+var _4e1=s.match(/(\-?[\d.]+)([a-z%]*)/i);
+if(!_4e1){
 return dojo.html.getUnitValue.bad;
 }
-return {value:Number(_4d9[1]),units:_4d9[2].toLowerCase()};
+return {value:Number(_4e1[1]),units:_4e1[2].toLowerCase()};
 };
 dojo.html.getUnitValue.bad={value:NaN,units:""};
 if(dojo.render.html.ie){
-dojo.html.toPixelValue=function(_4da,_4db){
-if(!_4db){
+dojo.html.toPixelValue=function(_4e2,_4e3){
+if(!_4e3){
 return 0;
 }
-if(_4db.slice(-2)=="px"){
-return parseFloat(_4db);
+if(_4e3.slice(-2)=="px"){
+return parseFloat(_4e3);
 }
-var _4dc=0;
-with(_4da){
-var _4dd=style.left;
-var _4de=runtimeStyle.left;
+var _4e4=0;
+with(_4e2){
+var _4e5=style.left;
+var _4e6=runtimeStyle.left;
 runtimeStyle.left=currentStyle.left;
 try{
-style.left=_4db||0;
-_4dc=style.pixelLeft;
-style.left=_4dd;
-runtimeStyle.left=_4de;
+style.left=_4e3||0;
+_4e4=style.pixelLeft;
+style.left=_4e5;
+runtimeStyle.left=_4e6;
 }
 catch(e){
 }
 }
-return _4dc;
+return _4e4;
 };
 }else{
-dojo.html.toPixelValue=function(_4df,_4e0){
-return (_4e0&&(_4e0.slice(-2)=="px")?parseFloat(_4e0):0);
+dojo.html.toPixelValue=function(_4e7,_4e8){
+return (_4e8&&(_4e8.slice(-2)=="px")?parseFloat(_4e8):0);
 };
 }
-dojo.html.getPixelValue=function(node,_4e2,_4e3){
-return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_4e2));
+dojo.html.getPixelValue=function(node,_4ea,_4eb){
+return dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_4ea));
 };
-dojo.html.setPositivePixelValue=function(node,_4e5,_4e6){
-if(isNaN(_4e6)){
+dojo.html.setPositivePixelValue=function(node,_4ed,_4ee){
+if(isNaN(_4ee)){
 return false;
 }
-node.style[_4e5]=Math.max(0,_4e6)+"px";
+node.style[_4ed]=Math.max(0,_4ee)+"px";
 return true;
 };
 dojo.html.styleSheet=null;
-dojo.html.insertCssRule=function(_4e7,_4e8,_4e9){
+dojo.html.insertCssRule=function(_4ef,_4f0,_4f1){
 if(!dojo.html.styleSheet){
 if(document.createStyleSheet){
 dojo.html.styleSheet=document.createStyleSheet();
@@ -70133,161 +60777,161 @@
 }
 if(arguments.length<3){
 if(dojo.html.styleSheet.cssRules){
-_4e9=dojo.html.styleSheet.cssRules.length;
+_4f1=dojo.html.styleSheet.cssRules.length;
 }else{
 if(dojo.html.styleSheet.rules){
-_4e9=dojo.html.styleSheet.rules.length;
+_4f1=dojo.html.styleSheet.rules.length;
 }else{
 return null;
 }
 }
 }
 if(dojo.html.styleSheet.insertRule){
-var rule=_4e7+" { "+_4e8+" }";
-return dojo.html.styleSheet.insertRule(rule,_4e9);
+var rule=_4ef+" { "+_4f0+" }";
+return dojo.html.styleSheet.insertRule(rule,_4f1);
 }else{
 if(dojo.html.styleSheet.addRule){
-return dojo.html.styleSheet.addRule(_4e7,_4e8,_4e9);
+return dojo.html.styleSheet.addRule(_4ef,_4f0,_4f1);
 }else{
 return null;
 }
 }
 };
-dojo.html.removeCssRule=function(_4eb){
+dojo.html.removeCssRule=function(_4f3){
 if(!dojo.html.styleSheet){
 dojo.debug("no stylesheet defined for removing rules");
 return false;
 }
 if(dojo.render.html.ie){
-if(!_4eb){
-_4eb=dojo.html.styleSheet.rules.length;
-dojo.html.styleSheet.removeRule(_4eb);
+if(!_4f3){
+_4f3=dojo.html.styleSheet.rules.length;
+dojo.html.styleSheet.removeRule(_4f3);
 }
 }else{
 if(document.styleSheets[0]){
-if(!_4eb){
-_4eb=dojo.html.styleSheet.cssRules.length;
+if(!_4f3){
+_4f3=dojo.html.styleSheet.cssRules.length;
 }
-dojo.html.styleSheet.deleteRule(_4eb);
+dojo.html.styleSheet.deleteRule(_4f3);
 }
 }
 return true;
 };
 dojo.html._insertedCssFiles=[];
-dojo.html.insertCssFile=function(URI,doc,_4ee,_4ef){
+dojo.html.insertCssFile=function(URI,doc,_4f6,_4f7){
 if(!URI){
 return;
 }
 if(!doc){
 doc=document;
 }
-var _4f0=dojo.hostenv.getText(URI,false,_4ef);
-if(_4f0===null){
+var _4f8=dojo.hostenv.getText(URI,false,_4f7);
+if(_4f8===null){
 return;
 }
-_4f0=dojo.html.fixPathsInCssText(_4f0,URI);
-if(_4ee){
+_4f8=dojo.html.fixPathsInCssText(_4f8,URI);
+if(_4f6){
 var idx=-1,node,ent=dojo.html._insertedCssFiles;
 for(var i=0;i<ent.length;i++){
-if((ent[i].doc==doc)&&(ent[i].cssText==_4f0)){
+if((ent[i].doc==doc)&&(ent[i].cssText==_4f8)){
 idx=i;
 node=ent[i].nodeRef;
 break;
 }
 }
 if(node){
-var _4f5=doc.getElementsByTagName("style");
-for(var i=0;i<_4f5.length;i++){
-if(_4f5[i]==node){
+var _4fd=doc.getElementsByTagName("style");
+for(var i=0;i<_4fd.length;i++){
+if(_4fd[i]==node){
 return;
 }
 }
 dojo.html._insertedCssFiles.shift(idx,1);
 }
 }
-var _4f6=dojo.html.insertCssText(_4f0,doc);
-dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_4f0,"nodeRef":_4f6});
-if(_4f6&&djConfig.isDebug){
-_4f6.setAttribute("dbgHref",URI);
+var _4fe=dojo.html.insertCssText(_4f8,doc);
+dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_4f8,"nodeRef":_4fe});
+if(_4fe&&djConfig.isDebug){
+_4fe.setAttribute("dbgHref",URI);
 }
-return _4f6;
+return _4fe;
 };
-dojo.html.insertCssText=function(_4f7,doc,URI){
-if(!_4f7){
+dojo.html.insertCssText=function(_4ff,doc,URI){
+if(!_4ff){
 return;
 }
 if(!doc){
 doc=document;
 }
 if(URI){
-_4f7=dojo.html.fixPathsInCssText(_4f7,URI);
+_4ff=dojo.html.fixPathsInCssText(_4ff,URI);
 }
-var _4fa=doc.createElement("style");
-_4fa.setAttribute("type","text/css");
+var _502=doc.createElement("style");
+_502.setAttribute("type","text/css");
 var head=doc.getElementsByTagName("head")[0];
 if(!head){
 dojo.debug("No head tag in document, aborting styles");
 return;
 }else{
-head.appendChild(_4fa);
+head.appendChild(_502);
 }
-if(_4fa.styleSheet){
-var _4fc=function(){
+if(_502.styleSheet){
+var _504=function(){
 try{
-_4fa.styleSheet.cssText=_4f7;
+_502.styleSheet.cssText=_4ff;
 }
 catch(e){
 dojo.debug(e);
 }
 };
-if(_4fa.styleSheet.disabled){
-setTimeout(_4fc,10);
+if(_502.styleSheet.disabled){
+setTimeout(_504,10);
 }else{
-_4fc();
+_504();
 }
 }else{
-var _4fd=doc.createTextNode(_4f7);
-_4fa.appendChild(_4fd);
+var _505=doc.createTextNode(_4ff);
+_502.appendChild(_505);
 }
-return _4fa;
+return _502;
 };
-dojo.html.fixPathsInCssText=function(_4fe,URI){
-if(!_4fe||!URI){
+dojo.html.fixPathsInCssText=function(_506,URI){
+if(!_506||!URI){
 return;
 }
-var _500,str="",url="",_503="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
-var _504=new RegExp("url\\(\\s*("+_503+")\\s*\\)");
-var _505=/(file|https?|ftps?):\/\//;
-regexTrim=new RegExp("^[\\s]*(['\"]?)("+_503+")\\1[\\s]*?$");
+var _508,str="",url="",_50b="[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
+var _50c=new RegExp("url\\(\\s*("+_50b+")\\s*\\)");
+var _50d=/(file|https?|ftps?):\/\//;
+regexTrim=new RegExp("^[\\s]*(['\"]?)("+_50b+")\\1[\\s]*?$");
 if(dojo.render.html.ie55||dojo.render.html.ie60){
-var _506=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_503+")['\"]");
-while(_500=_506.exec(_4fe)){
-url=_500[2].replace(regexTrim,"$2");
-if(!_505.exec(url)){
+var _50e=new RegExp("AlphaImageLoader\\((.*)src=['\"]("+_50b+")['\"]");
+while(_508=_50e.exec(_506)){
+url=_508[2].replace(regexTrim,"$2");
+if(!_50d.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_4fe.substring(0,_500.index)+"AlphaImageLoader("+_500[1]+"src='"+url+"'";
-_4fe=_4fe.substr(_500.index+_500[0].length);
+str+=_506.substring(0,_508.index)+"AlphaImageLoader("+_508[1]+"src='"+url+"'";
+_506=_506.substr(_508.index+_508[0].length);
 }
-_4fe=str+_4fe;
+_506=str+_506;
 str="";
 }
-while(_500=_504.exec(_4fe)){
-url=_500[1].replace(regexTrim,"$2");
-if(!_505.exec(url)){
+while(_508=_50c.exec(_506)){
+url=_508[1].replace(regexTrim,"$2");
+if(!_50d.exec(url)){
 url=(new dojo.uri.Uri(URI,url).toString());
 }
-str+=_4fe.substring(0,_500.index)+"url("+url+")";
-_4fe=_4fe.substr(_500.index+_500[0].length);
+str+=_506.substring(0,_508.index)+"url("+url+")";
+_506=_506.substr(_508.index+_508[0].length);
 }
-return str+_4fe;
+return str+_506;
 };
-dojo.html.setActiveStyleSheet=function(_507){
+dojo.html.setActiveStyleSheet=function(_50f){
 var i=0,a,els=dojo.doc().getElementsByTagName("link");
 while(a=els[i++]){
 if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){
 a.disabled=true;
-if(a.getAttribute("title")==_507){
+if(a.getAttribute("title")==_50f){
 a.disabled=false;
 }
 }
@@ -70313,18 +60957,18 @@
 };
 dojo.html.applyBrowserClass=function(node){
 var drh=dojo.render.html;
-var _513={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
-for(var p in _513){
-if(_513[p]){
+var _51b={dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math.floor(dojo.render.version)==8),dj_opera9:drh.opera&&(Math.floor(dojo.render.version)==9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko:drh.mozilla};
+for(var p in _51b){
+if(_51b[p]){
 dojo.html.addClass(node,p);
 }
 }
 };
 dojo.provide("dojo.html.display");
-dojo.html._toggle=function(node,_516,_517){
+dojo.html._toggle=function(node,_51e,_51f){
 node=dojo.byId(node);
-_517(node,!_516(node));
-return _516(node);
+_51f(node,!_51e(node));
+return _51e(node);
 };
 dojo.html.show=function(node){
 node=dojo.byId(node);
@@ -70343,8 +60987,8 @@
 }
 dojo.html.setStyle(node,"display","none");
 };
-dojo.html.setShowing=function(node,_51c){
-dojo.html[(_51c?"show":"hide")](node);
+dojo.html.setShowing=function(node,_524){
+dojo.html[(_524?"show":"hide")](node);
 };
 dojo.html.isShowing=function(node){
 return (dojo.html.getStyleProperty(node,"display")!="none");
@@ -70360,8 +61004,8 @@
 return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
 }
 };
-dojo.html.setDisplay=function(node,_522){
-dojo.html.setStyle(node,"display",((_522 instanceof String||typeof _522=="string")?_522:(_522?dojo.html.suggestDisplayByTagName(node):"none")));
+dojo.html.setDisplay=function(node,_52a){
+dojo.html.setStyle(node,"display",((_52a instanceof String||typeof _52a=="string")?_52a:(_52a?dojo.html.suggestDisplayByTagName(node):"none")));
 };
 dojo.html.isDisplayed=function(node){
 return (dojo.html.getComputedStyle(node,"display")!="none");
@@ -70369,8 +61013,8 @@
 dojo.html.toggleDisplay=function(node){
 return dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
 };
-dojo.html.setVisibility=function(node,_526){
-dojo.html.setStyle(node,"visibility",((_526 instanceof String||typeof _526=="string")?_526:(_526?"visible":"hidden")));
+dojo.html.setVisibility=function(node,_52e){
+dojo.html.setStyle(node,"visibility",((_52e instanceof String||typeof _52e=="string")?_52e:(_52e?"visible":"hidden")));
 };
 dojo.html.isVisible=function(node){
 return (dojo.html.getComputedStyle(node,"visibility")!="hidden");
@@ -70378,20 +61022,20 @@
 dojo.html.toggleVisibility=function(node){
 return dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
 };
-dojo.html.setOpacity=function(node,_52a,_52b){
+dojo.html.setOpacity=function(node,_532,_533){
 node=dojo.byId(node);
 var h=dojo.render.html;
-if(!_52b){
-if(_52a>=1){
+if(!_533){
+if(_532>=1){
 if(h.ie){
 dojo.html.clearOpacity(node);
 return;
 }else{
-_52a=0.999999;
+_532=0.999999;
 }
 }else{
-if(_52a<0){
-_52a=0;
+if(_532<0){
+_532=0;
 }
 }
 }
@@ -70399,20 +61043,20 @@
 if(node.nodeName.toLowerCase()=="tr"){
 var tds=node.getElementsByTagName("td");
 for(var x=0;x<tds.length;x++){
-tds[x].style.filter="Alpha(Opacity="+_52a*100+")";
+tds[x].style.filter="Alpha(Opacity="+_532*100+")";
 }
 }
-node.style.filter="Alpha(Opacity="+_52a*100+")";
+node.style.filter="Alpha(Opacity="+_532*100+")";
 }else{
 if(h.moz){
-node.style.opacity=_52a;
-node.style.MozOpacity=_52a;
+node.style.opacity=_532;
+node.style.MozOpacity=_532;
 }else{
 if(h.safari){
-node.style.opacity=_52a;
-node.style.KhtmlOpacity=_52a;
+node.style.opacity=_532;
+node.style.KhtmlOpacity=_532;
 }else{
-node.style.opacity=_52a;
+node.style.opacity=_532;
 }
 }
 }
@@ -70456,24 +61100,24 @@
 dojo.provide("dojo.html.color");
 dojo.html.getBackgroundColor=function(node){
 node=dojo.byId(node);
-var _536;
+var _53e;
 do{
-_536=dojo.html.getStyle(node,"background-color");
-if(_536.toLowerCase()=="rgba(0, 0, 0, 0)"){
-_536="transparent";
+_53e=dojo.html.getStyle(node,"background-color");
+if(_53e.toLowerCase()=="rgba(0, 0, 0, 0)"){
+_53e="transparent";
 }
 if(node==document.getElementsByTagName("body")[0]){
 node=null;
 break;
 }
 node=node.parentNode;
-}while(node&&dojo.lang.inArray(["transparent",""],_536));
-if(_536=="transparent"){
-_536=[255,255,255,0];
+}while(node&&dojo.lang.inArray(["transparent",""],_53e));
+if(_53e=="transparent"){
+_53e=[255,255,255,0];
 }else{
-_536=dojo.gfx.color.extractRGB(_536);
+_53e=dojo.gfx.color.extractRGB(_53e);
 }
-return _536;
+return _53e;
 };
 dojo.provide("dojo.html.layout");
 dojo.html.sumAncestorProperties=function(node,prop){
@@ -70481,73 +61125,73 @@
 if(!node){
 return 0;
 }
-var _539=0;
+var _541=0;
 while(node){
 if(dojo.html.getComputedStyle(node,"position")=="fixed"){
 return 0;
 }
 var val=node[prop];
 if(val){
-_539+=val-0;
+_541+=val-0;
 if(node==dojo.body()){
 break;
 }
 }
 node=node.parentNode;
 }
-return _539;
+return _541;
 };
-dojo.html.setStyleAttributes=function(node,_53c){
+dojo.html.setStyleAttributes=function(node,_544){
 node=dojo.byId(node);
-var _53d=_53c.replace(/(;)?\s*$/,"").split(";");
-for(var i=0;i<_53d.length;i++){
-var _53f=_53d[i].split(":");
-var name=_53f[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
-var _541=_53f[1].replace(/\s*$/,"").replace(/^\s*/,"");
+var _545=_544.replace(/(;)?\s*$/,"").split(";");
+for(var i=0;i<_545.length;i++){
+var _547=_545[i].split(":");
+var name=_547[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
+var _549=_547[1].replace(/\s*$/,"").replace(/^\s*/,"");
 switch(name){
 case "opacity":
-dojo.html.setOpacity(node,_541);
+dojo.html.setOpacity(node,_549);
 break;
 case "content-height":
-dojo.html.setContentBox(node,{height:_541});
+dojo.html.setContentBox(node,{height:_549});
 break;
 case "content-width":
-dojo.html.setContentBox(node,{width:_541});
+dojo.html.setContentBox(node,{width:_549});
 break;
 case "outer-height":
-dojo.html.setMarginBox(node,{height:_541});
+dojo.html.setMarginBox(node,{height:_549});
 break;
 case "outer-width":
-dojo.html.setMarginBox(node,{width:_541});
+dojo.html.setMarginBox(node,{width:_549});
 break;
 default:
-node.style[dojo.html.toCamelCase(name)]=_541;
+node.style[dojo.html.toCamelCase(name)]=_549;
 }
 }
 };
 dojo.html.boxSizing={MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PADDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
-dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_543,_544){
+dojo.html.getAbsolutePosition=dojo.html.abs=function(node,_54b,_54c){
 node=dojo.byId(node,node.ownerDocument);
 var ret={x:0,y:0};
 var bs=dojo.html.boxSizing;
-if(!_544){
-_544=bs.CONTENT_BOX;
+if(!_54c){
+_54c=bs.CONTENT_BOX;
 }
-var _547=2;
-var _548;
-switch(_544){
+var _54f=2;
+var _550;
+switch(_54c){
 case bs.MARGIN_BOX:
-_548=3;
+_550=3;
 break;
 case bs.BORDER_BOX:
-_548=2;
+_550=2;
 break;
 case bs.PADDING_BOX:
 default:
-_548=1;
+_550=1;
 break;
 case bs.CONTENT_BOX:
-_548=0;
+_550=0;
 break;
 }
 var h=dojo.render.html;
@@ -70559,7 +61203,7 @@
 }
 }else{
 if(document.getBoxObjectFor){
-_547=1;
+_54f=1;
 try{
 var bo=document.getBoxObjectFor(node);
 ret.x=bo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
@@ -70569,11 +61213,11 @@
 }
 }else{
 if(node["offsetParent"]){
-var _54c;
+var _554;
 if((h.safari)&&(node.style.getPropertyValue("position")=="absolute")&&(node.parentNode==db)){
-_54c=db;
+_554=db;
 }else{
-_54c=db.parentNode;
+_554=db.parentNode;
 }
 if(node.parentNode!=db){
 var nd=node;
@@ -70583,16 +61227,16 @@
 ret.x-=dojo.html.sumAncestorProperties(nd,"scrollLeft");
 ret.y-=dojo.html.sumAncestorProperties(nd,"scrollTop");
 }
-var _54e=node;
+var _556=node;
 do{
-var n=_54e["offsetLeft"];
+var n=_556["offsetLeft"];
 if(!h.opera||n>0){
 ret.x+=isNaN(n)?0:n;
 }
-var m=_54e["offsetTop"];
+var m=_556["offsetTop"];
 ret.y+=isNaN(m)?0:m;
-_54e=_54e.offsetParent;
-}while((_54e!=_54c)&&(_54e!=null));
+_556=_556.offsetParent;
+}while((_556!=_554)&&(_556!=null));
 }else{
 if(node["x"]&&node["y"]){
 ret.x+=isNaN(node.x)?0:node.x;
@@ -70601,22 +61245,22 @@
 }
 }
 }
-if(_543){
-var _551=dojo.html.getScroll();
-ret.y+=_551.top;
-ret.x+=_551.left;
+if(_54b){
+var _559=dojo.html.getScroll();
+ret.y+=_559.top;
+ret.x+=_559.left;
 }
-var _552=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
-if(_547>_548){
-for(var i=_548;i<_547;++i){
-ret.y+=_552[i](node,"top");
-ret.x+=_552[i](node,"left");
+var _55a=[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.getMarginExtent];
+if(_54f>_550){
+for(var i=_550;i<_54f;++i){
+ret.y+=_55a[i](node,"top");
+ret.x+=_55a[i](node,"left");
 }
 }else{
-if(_547<_548){
-for(var i=_548;i>_547;--i){
-ret.y-=_552[i-1](node,"top");
-ret.x-=_552[i-1](node,"left");
+if(_54f<_550){
+for(var i=_550;i>_54f;--i){
+ret.y-=_55a[i-1](node,"top");
+ret.x-=_55a[i-1](node,"left");
 }
 }
 }
@@ -70627,12 +61271,12 @@
 dojo.html.isPositionAbsolute=function(node){
 return (dojo.html.getComputedStyle(node,"position")=="absolute");
 };
-dojo.html._sumPixelValues=function(node,_556,_557){
-var _558=0;
-for(var x=0;x<_556.length;x++){
-_558+=dojo.html.getPixelValue(node,_556[x],_557);
+dojo.html._sumPixelValues=function(node,_55e,_55f){
+var _560=0;
+for(var x=0;x<_55e.length;x++){
+_560+=dojo.html.getPixelValue(node,_55e[x],_55f);
 }
-return _558;
+return _560;
 };
 dojo.html.getMargin=function(node){
 return {width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(dojo.html.getComputedStyle(node,"position")=="absolute")),height:dojo.html._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComputedStyle(node,"position")=="absolute"))};
@@ -70654,8 +61298,8 @@
 };
 dojo.html.getPadBorder=function(node){
 var pad=dojo.html.getPadding(node);
-var _565=dojo.html.getBorder(node);
-return {width:pad.width+_565.width,height:pad.height+_565.height};
+var _56d=dojo.html.getBorder(node);
+return {width:pad.width+_56d.width,height:pad.height+_56d.height};
 };
 dojo.html.getBoxSizing=function(node){
 var h=dojo.render.html;
@@ -70671,14 +61315,14 @@
 if(arguments.length==0){
 node=document.documentElement;
 }
-var _56a;
+var _572;
 if(!h.ie){
-_56a=dojo.html.getStyle(node,"-moz-box-sizing");
-if(!_56a){
-_56a=dojo.html.getStyle(node,"box-sizing");
+_572=dojo.html.getStyle(node,"-moz-box-sizing");
+if(!_572){
+_572=dojo.html.getStyle(node,"box-sizing");
 }
 }
-return (_56a?_56a:bs.CONTENT_BOX);
+return (_572?_572:bs.CONTENT_BOX);
 }
 };
 dojo.html.isBorderBox=function(node){
@@ -70690,53 +61334,53 @@
 };
 dojo.html.getPaddingBox=function(node){
 var box=dojo.html.getBorderBox(node);
-var _56f=dojo.html.getBorder(node);
-return {width:box.width-_56f.width,height:box.height-_56f.height};
+var _577=dojo.html.getBorder(node);
+return {width:box.width-_577.width,height:box.height-_577.height};
 };
 dojo.html.getContentBox=function(node){
 node=dojo.byId(node);
-var _571=dojo.html.getPadBorder(node);
-return {width:node.offsetWidth-_571.width,height:node.offsetHeight-_571.height};
+var _579=dojo.html.getPadBorder(node);
+return {width:node.offsetWidth-_579.width,height:node.offsetHeight-_579.height};
 };
 dojo.html.setContentBox=function(node,args){
 node=dojo.byId(node);
-var _574=0;
-var _575=0;
+var _57c=0;
+var _57d=0;
 var isbb=dojo.html.isBorderBox(node);
-var _577=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _57f=(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
 var ret={};
 if(typeof args.width!="undefined"){
-_574=args.width+_577.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_574);
+_57c=args.width+_57f.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_57c);
 }
 if(typeof args.height!="undefined"){
-_575=args.height+_577.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_575);
+_57d=args.height+_57f.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_57d);
 }
 return ret;
 };
 dojo.html.getMarginBox=function(node){
-var _57a=dojo.html.getBorderBox(node);
-var _57b=dojo.html.getMargin(node);
-return {width:_57a.width+_57b.width,height:_57a.height+_57b.height};
+var _582=dojo.html.getBorderBox(node);
+var _583=dojo.html.getMargin(node);
+return {width:_582.width+_583.width,height:_582.height+_583.height};
 };
 dojo.html.setMarginBox=function(node,args){
 node=dojo.byId(node);
-var _57e=0;
-var _57f=0;
+var _586=0;
+var _587=0;
 var isbb=dojo.html.isBorderBox(node);
-var _581=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
-var _582=dojo.html.getMargin(node);
+var _589=(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
+var _58a=dojo.html.getMargin(node);
 var ret={};
 if(typeof args.width!="undefined"){
-_57e=args.width-_581.width;
-_57e-=_582.width;
-ret.width=dojo.html.setPositivePixelValue(node,"width",_57e);
+_586=args.width-_589.width;
+_586-=_58a.width;
+ret.width=dojo.html.setPositivePixelValue(node,"width",_586);
 }
 if(typeof args.height!="undefined"){
-_57f=args.height-_581.height;
-_57f-=_582.height;
-ret.height=dojo.html.setPositivePixelValue(node,"height",_57f);
+_587=args.height-_589.height;
+_587-=_58a.height;
+ret.height=dojo.html.setPositivePixelValue(node,"height",_587);
 }
 return ret;
 };
@@ -70754,31 +61398,31 @@
 return dojo.html.getContentBox(node);
 }
 };
-dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_587,_588,_589){
-if(_587 instanceof Array||typeof _587=="array"){
+dojo.html.toCoordinateObject=dojo.html.toCoordinateArray=function(_58f,_590,_591){
+if(_58f instanceof Array||typeof _58f=="array"){
 dojo.deprecated("dojo.html.toCoordinateArray","use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead","0.5");
-while(_587.length<4){
-_587.push(0);
+while(_58f.length<4){
+_58f.push(0);
 }
-while(_587.length>4){
-_587.pop();
+while(_58f.length>4){
+_58f.pop();
 }
-var ret={left:_587[0],top:_587[1],width:_587[2],height:_587[3]};
+var ret={left:_58f[0],top:_58f[1],width:_58f[2],height:_58f[3]};
 }else{
-if(!_587.nodeType&&!(_587 instanceof String||typeof _587=="string")&&("width" in _587||"height" in _587||"left" in _587||"x" in _587||"top" in _587||"y" in _587)){
-var ret={left:_587.left||_587.x||0,top:_587.top||_587.y||0,width:_587.width||0,height:_587.height||0};
+if(!_58f.nodeType&&!(_58f instanceof String||typeof _58f=="string")&&("width" in _58f||"height" in _58f||"left" in _58f||"x" in _58f||"top" in _58f||"y" in _58f)){
+var ret={left:_58f.left||_58f.x||0,top:_58f.top||_58f.y||0,width:_58f.width||0,height:_58f.height||0};
 }else{
-var node=dojo.byId(_587);
-var pos=dojo.html.abs(node,_588,_589);
-var _58d=dojo.html.getMarginBox(node);
-var ret={left:pos.left,top:pos.top,width:_58d.width,height:_58d.height};
+var node=dojo.byId(_58f);
+var pos=dojo.html.abs(node,_590,_591);
+var _595=dojo.html.getMarginBox(node);
+var ret={left:pos.left,top:pos.top,width:_595.width,height:_595.height};
 }
 }
 ret.x=ret.left;
 ret.y=ret.top;
 return ret;
 };
-dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_58f){
+dojo.html.setMarginBoxWidth=dojo.html.setOuterWidth=function(node,_597){
 return dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"width");
 };
 dojo.html.setMarginBoxHeight=dojo.html.setOuterHeight=function(){
@@ -70790,19 +61434,19 @@
 dojo.html.getMarginBoxHeight=dojo.html.getOuterHeight=function(){
 return dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,null,"height");
 };
-dojo.html.getTotalOffset=function(node,type,_592){
+dojo.html.getTotalOffset=function(node,type,_59a){
 return dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",arguments,null,type);
 };
-dojo.html.getAbsoluteX=function(node,_594){
+dojo.html.getAbsoluteX=function(node,_59c){
 return dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,null,"x");
 };
-dojo.html.getAbsoluteY=function(node,_596){
+dojo.html.getAbsoluteY=function(node,_59e){
 return dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,null,"y");
 };
-dojo.html.totalOffsetLeft=function(node,_598){
+dojo.html.totalOffsetLeft=function(node,_5a0){
 return dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",arguments,null,"left");
 };
-dojo.html.totalOffsetTop=function(node,_59a){
+dojo.html.totalOffsetTop=function(node,_5a2){
 return dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",arguments,null,"top");
 };
 dojo.html.getMarginWidth=function(node){
@@ -70841,46 +61485,46 @@
 dojo.html.getContentBoxHeight=dojo.html.getContentHeight=function(){
 return dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments,null,"height");
 };
-dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_5a4){
+dojo.html.setContentBoxWidth=dojo.html.setContentWidth=function(node,_5ac){
 return dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,"width");
 };
-dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_5a6){
+dojo.html.setContentBoxHeight=dojo.html.setContentHeight=function(node,_5ae){
 return dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments,"height");
 };
 dojo.provide("dojo.lfx.html");
-dojo.lfx.html._byId=function(_5a7){
-if(!_5a7){
+dojo.lfx.html._byId=function(_5af){
+if(!_5af){
 return [];
 }
-if(dojo.lang.isArrayLike(_5a7)){
-if(!_5a7.alreadyChecked){
+if(dojo.lang.isArrayLike(_5af)){
+if(!_5af.alreadyChecked){
 var n=[];
-dojo.lang.forEach(_5a7,function(node){
+dojo.lang.forEach(_5af,function(node){
 n.push(dojo.byId(node));
 });
 n.alreadyChecked=true;
 return n;
 }else{
-return _5a7;
+return _5af;
 }
 }else{
 var n=[];
-n.push(dojo.byId(_5a7));
+n.push(dojo.byId(_5af));
 n.alreadyChecked=true;
 return n;
 }
 };
-dojo.lfx.html.propertyAnimation=function(_5aa,_5ab,_5ac,_5ad,_5ae){
-_5aa=dojo.lfx.html._byId(_5aa);
-var _5af={"propertyMap":_5ab,"nodes":_5aa,"duration":_5ac,"easing":_5ad||dojo.lfx.easeDefault};
-var _5b0=function(args){
+dojo.lfx.html.propertyAnimation=function(_5b2,_5b3,_5b4,_5b5,_5b6){
+_5b2=dojo.lfx.html._byId(_5b2);
+var _5b7={"propertyMap":_5b3,"nodes":_5b2,"duration":_5b4,"easing":_5b5||dojo.lfx.easeDefault};
+var _5b8=function(args){
 if(args.nodes.length==1){
 var pm=args.propertyMap;
 if(!dojo.lang.isArray(args.propertyMap)){
 var parr=[];
-for(var _5b4 in pm){
-pm[_5b4].property=_5b4;
-parr.push(pm[_5b4]);
+for(var _5bc in pm){
+pm[_5bc].property=_5bc;
+parr.push(pm[_5bc]);
 }
 pm=args.propertyMap=parr;
 }
@@ -70895,24 +61539,24 @@
 });
 }
 };
-var _5b6=function(_5b7){
-var _5b8=[];
-dojo.lang.forEach(_5b7,function(c){
-_5b8.push(Math.round(c));
+var _5be=function(_5bf){
+var _5c0=[];
+dojo.lang.forEach(_5bf,function(c){
+_5c0.push(Math.round(c));
 });
-return _5b8;
+return _5c0;
 };
-var _5ba=function(n,_5bc){
+var _5c2=function(n,_5c4){
 n=dojo.byId(n);
 if(!n||!n.style){
 return;
 }
-for(var s in _5bc){
+for(var s in _5c4){
 try{
 if(s=="opacity"){
-dojo.html.setOpacity(n,_5bc[s]);
+dojo.html.setOpacity(n,_5c4[s]);
 }else{
-n.style[s]=_5bc[s];
+n.style[s]=_5c4[s];
 }
 }
 catch(e){
@@ -70920,10 +61564,10 @@
 }
 }
 };
-var _5be=function(_5bf){
-this._properties=_5bf;
-this.diffs=new Array(_5bf.length);
-dojo.lang.forEach(_5bf,function(prop,i){
+var _5c6=function(_5c7){
+this._properties=_5c7;
+this.diffs=new Array(_5c7.length);
+dojo.lang.forEach(_5c7,function(prop,i){
 if(dojo.lang.isFunction(prop.start)){
 prop.start=prop.start(prop,i);
 }
@@ -70944,43 +61588,43 @@
 this.getValue=function(n){
 var ret={};
 dojo.lang.forEach(this._properties,function(prop,i){
-var _5c6=null;
+var _5ce=null;
 if(dojo.lang.isArray(prop.start)){
 }else{
 if(prop.start instanceof dojo.gfx.color.Color){
-_5c6=(prop.units||"rgb")+"(";
+_5ce=(prop.units||"rgb")+"(";
 for(var j=0;j<prop.startRgb.length;j++){
-_5c6+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
+_5ce+=Math.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j])+(j<prop.startRgb.length-1?",":"");
 }
-_5c6+=")";
+_5ce+=")";
 }else{
-_5c6=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
+_5ce=((this.diffs[i])*n)+prop.start+(prop.property!="opacity"?prop.units||"px":"");
 }
 }
-ret[dojo.html.toCamelCase(prop.property)]=_5c6;
+ret[dojo.html.toCamelCase(prop.property)]=_5ce;
 },this);
 return ret;
 };
 };
 var anim=new dojo.lfx.Animation({beforeBegin:function(){
-_5b0(_5af);
-anim.curve=new _5be(_5af.propertyMap);
-},onAnimate:function(_5c9){
-dojo.lang.forEach(_5af.nodes,function(node){
-_5ba(node,_5c9);
+_5b8(_5b7);
+anim.curve=new _5c6(_5b7.propertyMap);
+},onAnimate:function(_5d1){
+dojo.lang.forEach(_5b7.nodes,function(node){
+_5c2(node,_5d1);
 });
-}},_5af.duration,null,_5af.easing);
-if(_5ae){
-for(var x in _5ae){
-if(dojo.lang.isFunction(_5ae[x])){
-anim.connect(x,anim,_5ae[x]);
+}},_5b7.duration,null,_5b7.easing);
+if(_5b6){
+for(var x in _5b6){
+if(dojo.lang.isFunction(_5b6[x])){
+anim.connect(x,anim,_5b6[x]);
 }
 }
 }
 return anim;
 };
-dojo.lfx.html._makeFadeable=function(_5cc){
-var _5cd=function(node){
+dojo.lfx.html._makeFadeable=function(_5d4){
+var _5d5=function(node){
 if(dojo.render.html.ie){
 if((node.style.zoom.length==0)&&(dojo.html.getStyle(node,"zoom")=="normal")){
 node.style.zoom="1";
@@ -70990,100 +61634,100 @@
 }
 }
 };
-if(dojo.lang.isArrayLike(_5cc)){
-dojo.lang.forEach(_5cc,_5cd);
+if(dojo.lang.isArrayLike(_5d4)){
+dojo.lang.forEach(_5d4,_5d5);
 }else{
-_5cd(_5cc);
+_5d5(_5d4);
 }
 };
-dojo.lfx.html.fade=function(_5cf,_5d0,_5d1,_5d2,_5d3){
-_5cf=dojo.lfx.html._byId(_5cf);
-var _5d4={property:"opacity"};
-if(!dj_undef("start",_5d0)){
-_5d4.start=_5d0.start;
+dojo.lfx.html.fade=function(_5d7,_5d8,_5d9,_5da,_5db){
+_5d7=dojo.lfx.html._byId(_5d7);
+var _5dc={property:"opacity"};
+if(!dj_undef("start",_5d8)){
+_5dc.start=_5d8.start;
 }else{
-_5d4.start=function(){
-return dojo.html.getOpacity(_5cf[0]);
+_5dc.start=function(){
+return dojo.html.getOpacity(_5d7[0]);
 };
 }
-if(!dj_undef("end",_5d0)){
-_5d4.end=_5d0.end;
+if(!dj_undef("end",_5d8)){
+_5dc.end=_5d8.end;
 }else{
 dojo.raise("dojo.lfx.html.fade needs an end value");
 }
-var anim=dojo.lfx.propertyAnimation(_5cf,[_5d4],_5d1,_5d2);
+var anim=dojo.lfx.propertyAnimation(_5d7,[_5dc],_5d9,_5da);
 anim.connect("beforeBegin",function(){
-dojo.lfx.html._makeFadeable(_5cf);
+dojo.lfx.html._makeFadeable(_5d7);
 });
-if(_5d3){
+if(_5db){
 anim.connect("onEnd",function(){
-_5d3(_5cf,anim);
+_5db(_5d7,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.fadeIn=function(_5d6,_5d7,_5d8,_5d9){
-return dojo.lfx.html.fade(_5d6,{end:1},_5d7,_5d8,_5d9);
+dojo.lfx.html.fadeIn=function(_5de,_5df,_5e0,_5e1){
+return dojo.lfx.html.fade(_5de,{end:1},_5df,_5e0,_5e1);
 };
-dojo.lfx.html.fadeOut=function(_5da,_5db,_5dc,_5dd){
-return dojo.lfx.html.fade(_5da,{end:0},_5db,_5dc,_5dd);
+dojo.lfx.html.fadeOut=function(_5e2,_5e3,_5e4,_5e5){
+return dojo.lfx.html.fade(_5e2,{end:0},_5e3,_5e4,_5e5);
 };
-dojo.lfx.html.fadeShow=function(_5de,_5df,_5e0,_5e1){
-_5de=dojo.lfx.html._byId(_5de);
-dojo.lang.forEach(_5de,function(node){
+dojo.lfx.html.fadeShow=function(_5e6,_5e7,_5e8,_5e9){
+_5e6=dojo.lfx.html._byId(_5e6);
+dojo.lang.forEach(_5e6,function(node){
 dojo.html.setOpacity(node,0);
 });
-var anim=dojo.lfx.html.fadeIn(_5de,_5df,_5e0,_5e1);
+var anim=dojo.lfx.html.fadeIn(_5e6,_5e7,_5e8,_5e9);
 anim.connect("beforeBegin",function(){
-if(dojo.lang.isArrayLike(_5de)){
-dojo.lang.forEach(_5de,dojo.html.show);
+if(dojo.lang.isArrayLike(_5e6)){
+dojo.lang.forEach(_5e6,dojo.html.show);
 }else{
-dojo.html.show(_5de);
+dojo.html.show(_5e6);
 }
 });
 return anim;
 };
-dojo.lfx.html.fadeHide=function(_5e4,_5e5,_5e6,_5e7){
-var anim=dojo.lfx.html.fadeOut(_5e4,_5e5,_5e6,function(){
-if(dojo.lang.isArrayLike(_5e4)){
-dojo.lang.forEach(_5e4,dojo.html.hide);
+dojo.lfx.html.fadeHide=function(_5ec,_5ed,_5ee,_5ef){
+var anim=dojo.lfx.html.fadeOut(_5ec,_5ed,_5ee,function(){
+if(dojo.lang.isArrayLike(_5ec)){
+dojo.lang.forEach(_5ec,dojo.html.hide);
 }else{
-dojo.html.hide(_5e4);
+dojo.html.hide(_5ec);
 }
-if(_5e7){
-_5e7(_5e4,anim);
+if(_5ef){
+_5ef(_5ec,anim);
 }
 });
 return anim;
 };
-dojo.lfx.html.wipeIn=function(_5e9,_5ea,_5eb,_5ec){
-_5e9=dojo.lfx.html._byId(_5e9);
-var _5ed=[];
-dojo.lang.forEach(_5e9,function(node){
-var _5ef={};
-var _5f0,_5f1,_5f2;
+dojo.lfx.html.wipeIn=function(_5f1,_5f2,_5f3,_5f4){
+_5f1=dojo.lfx.html._byId(_5f1);
+var _5f5=[];
+dojo.lang.forEach(_5f1,function(node){
+var _5f7={};
+var _5f8,_5f9,_5fa;
 with(node.style){
-_5f0=top;
-_5f1=left;
-_5f2=position;
+_5f8=top;
+_5f9=left;
+_5fa=position;
 top="-9999px";
 left="-9999px";
 position="absolute";
 display="";
 }
-var _5f3=dojo.html.getBorderBox(node).height;
+var _5fb=dojo.html.getBorderBox(node).height;
 with(node.style){
-top=_5f0;
-left=_5f1;
-position=_5f2;
+top=_5f8;
+left=_5f9;
+position=_5fa;
 display="none";
 }
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){
-return _5f3;
-}}},_5ea,_5eb);
+return _5fb;
+}}},_5f2,_5f3);
 anim.connect("beforeBegin",function(){
-_5ef.overflow=node.style.overflow;
-_5ef.height=node.style.height;
+_5f7.overflow=node.style.overflow;
+_5f7.height=node.style.height;
 with(node.style){
 overflow="hidden";
 height="1px";
@@ -71092,27 +61736,27 @@
 });
 anim.connect("onEnd",function(){
 with(node.style){
-overflow=_5ef.overflow;
-height=_5ef.height;
+overflow=_5f7.overflow;
+height=_5f7.height;
 }
-if(_5ec){
-_5ec(node,anim);
+if(_5f4){
+_5f4(node,anim);
 }
 });
-_5ed.push(anim);
+_5f5.push(anim);
 });
-return dojo.lfx.combine(_5ed);
+return dojo.lfx.combine(_5f5);
 };
-dojo.lfx.html.wipeOut=function(_5f5,_5f6,_5f7,_5f8){
-_5f5=dojo.lfx.html._byId(_5f5);
-var _5f9=[];
-dojo.lang.forEach(_5f5,function(node){
-var _5fb={};
+dojo.lfx.html.wipeOut=function(_5fd,_5fe,_5ff,_600){
+_5fd=dojo.lfx.html._byId(_5fd);
+var _601=[];
+dojo.lang.forEach(_5fd,function(node){
+var _603={};
 var anim=dojo.lfx.propertyAnimation(node,{"height":{start:function(){
 return dojo.html.getContentBox(node).height;
-},end:1}},_5f6,_5f7,{"beforeBegin":function(){
-_5fb.overflow=node.style.overflow;
-_5fb.height=node.style.height;
+},end:1}},_5fe,_5ff,{"beforeBegin":function(){
+_603.overflow=node.style.overflow;
+_603.height=node.style.height;
 with(node.style){
 overflow="hidden";
 }
@@ -71120,221 +61764,221 @@
 },"onEnd":function(){
 dojo.html.hide(node);
 with(node.style){
-overflow=_5fb.overflow;
-height=_5fb.height;
+overflow=_603.overflow;
+height=_603.height;
 }
-if(_5f8){
-_5f8(node,anim);
+if(_600){
+_600(node,anim);
 }
 }});
-_5f9.push(anim);
+_601.push(anim);
 });
-return dojo.lfx.combine(_5f9);
+return dojo.lfx.combine(_601);
 };
-dojo.lfx.html.slideTo=function(_5fd,_5fe,_5ff,_600,_601){
-_5fd=dojo.lfx.html._byId(_5fd);
-var _602=[];
-var _603=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_5fe)){
+dojo.lfx.html.slideTo=function(_605,_606,_607,_608,_609){
+_605=dojo.lfx.html._byId(_605);
+var _60a=[];
+var _60b=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_606)){
 dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
-_5fe={top:_5fe[0],left:_5fe[1]};
+_606={top:_606[0],left:_606[1]};
 }
-dojo.lang.forEach(_5fd,function(node){
+dojo.lang.forEach(_605,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _608=node;
+var _610=node;
 return function(){
-var pos=_603(_608,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_603(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_603(node,"left"))||0);
+var pos=_60b(_610,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_60b(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_60b(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_608,true);
-dojo.html.setStyleAttributes(_608,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_610,true);
+dojo.html.setStyleAttributes(_610,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_5fe.top||0)},"left":{start:left,end:(_5fe.left||0)}},_5ff,_600,{"beforeBegin":init});
-if(_601){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_606.top||0)},"left":{start:left,end:(_606.left||0)}},_607,_608,{"beforeBegin":init});
+if(_609){
 anim.connect("onEnd",function(){
-_601(_5fd,anim);
+_609(_605,anim);
 });
 }
-_602.push(anim);
+_60a.push(anim);
 });
-return dojo.lfx.combine(_602);
+return dojo.lfx.combine(_60a);
 };
-dojo.lfx.html.slideBy=function(_60c,_60d,_60e,_60f,_610){
-_60c=dojo.lfx.html._byId(_60c);
-var _611=[];
-var _612=dojo.html.getComputedStyle;
-if(dojo.lang.isArray(_60d)){
+dojo.lfx.html.slideBy=function(_614,_615,_616,_617,_618){
+_614=dojo.lfx.html._byId(_614);
+var _619=[];
+var _61a=dojo.html.getComputedStyle;
+if(dojo.lang.isArray(_615)){
 dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
-_60d={top:_60d[0],left:_60d[1]};
+_615={top:_615[0],left:_615[1]};
 }
-dojo.lang.forEach(_60c,function(node){
+dojo.lang.forEach(_614,function(node){
 var top=null;
 var left=null;
 var init=(function(){
-var _617=node;
+var _61f=node;
 return function(){
-var pos=_612(_617,"position");
-top=(pos=="absolute"?node.offsetTop:parseInt(_612(node,"top"))||0);
-left=(pos=="absolute"?node.offsetLeft:parseInt(_612(node,"left"))||0);
+var pos=_61a(_61f,"position");
+top=(pos=="absolute"?node.offsetTop:parseInt(_61a(node,"top"))||0);
+left=(pos=="absolute"?node.offsetLeft:parseInt(_61a(node,"left"))||0);
 if(!dojo.lang.inArray(["absolute","relative"],pos)){
-var ret=dojo.html.abs(_617,true);
-dojo.html.setStyleAttributes(_617,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
+var ret=dojo.html.abs(_61f,true);
+dojo.html.setStyleAttributes(_61f,"position:absolute;top:"+ret.y+"px;left:"+ret.x+"px;");
 top=ret.y;
 left=ret.x;
 }
 };
 })();
 init();
-var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_60d.top||0)},"left":{start:left,end:left+(_60d.left||0)}},_60e,_60f).connect("beforeBegin",init);
-if(_610){
+var anim=dojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_615.top||0)},"left":{start:left,end:left+(_615.left||0)}},_616,_617).connect("beforeBegin",init);
+if(_618){
 anim.connect("onEnd",function(){
-_610(_60c,anim);
+_618(_614,anim);
 });
 }
-_611.push(anim);
+_619.push(anim);
 });
-return dojo.lfx.combine(_611);
+return dojo.lfx.combine(_619);
 };
-dojo.lfx.html.explode=function(_61b,_61c,_61d,_61e,_61f){
+dojo.lfx.html.explode=function(_623,_624,_625,_626,_627){
 var h=dojo.html;
-_61b=dojo.byId(_61b);
-_61c=dojo.byId(_61c);
-var _621=h.toCoordinateObject(_61b,true);
-var _622=document.createElement("div");
-h.copyStyle(_622,_61c);
-if(_61c.explodeClassName){
-_622.className=_61c.explodeClassName;
+_623=dojo.byId(_623);
+_624=dojo.byId(_624);
+var _629=h.toCoordinateObject(_623,true);
+var _62a=document.createElement("div");
+h.copyStyle(_62a,_624);
+if(_624.explodeClassName){
+_62a.className=_624.explodeClassName;
 }
-with(_622.style){
+with(_62a.style){
 position="absolute";
 display="none";
-var _623=h.getStyle(_61b,"background-color");
-backgroundColor=_623?_623.toLowerCase():"transparent";
+var _62b=h.getStyle(_623,"background-color");
+backgroundColor=_62b?_62b.toLowerCase():"transparent";
 backgroundColor=(backgroundColor=="transparent")?"rgb(221, 221, 221)":backgroundColor;
 }
-dojo.body().appendChild(_622);
-with(_61c.style){
+dojo.body().appendChild(_62a);
+with(_624.style){
 visibility="hidden";
 display="block";
 }
-var _624=h.toCoordinateObject(_61c,true);
-with(_61c.style){
+var _62c=h.toCoordinateObject(_624,true);
+with(_624.style){
 display="none";
 visibility="visible";
 }
-var _625={opacity:{start:0.5,end:1}};
+var _62d={opacity:{start:0.5,end:1}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_625[type]={start:_621[type],end:_624[type]};
+_62d[type]={start:_629[type],end:_62c[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_622,_625,_61d,_61e,{"beforeBegin":function(){
-h.setDisplay(_622,"block");
+var anim=new dojo.lfx.propertyAnimation(_62a,_62d,_625,_626,{"beforeBegin":function(){
+h.setDisplay(_62a,"block");
 },"onEnd":function(){
-h.setDisplay(_61c,"block");
-_622.parentNode.removeChild(_622);
+h.setDisplay(_624,"block");
+_62a.parentNode.removeChild(_62a);
 }});
-if(_61f){
+if(_627){
 anim.connect("onEnd",function(){
-_61f(_61c,anim);
+_627(_624,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.implode=function(_628,end,_62a,_62b,_62c){
+dojo.lfx.html.implode=function(_630,end,_632,_633,_634){
 var h=dojo.html;
-_628=dojo.byId(_628);
+_630=dojo.byId(_630);
 end=dojo.byId(end);
-var _62e=dojo.html.toCoordinateObject(_628,true);
-var _62f=dojo.html.toCoordinateObject(end,true);
-var _630=document.createElement("div");
-dojo.html.copyStyle(_630,_628);
-if(_628.explodeClassName){
-_630.className=_628.explodeClassName;
+var _636=dojo.html.toCoordinateObject(_630,true);
+var _637=dojo.html.toCoordinateObject(end,true);
+var _638=document.createElement("div");
+dojo.html.copyStyle(_638,_630);
+if(_630.explodeClassName){
+_638.className=_630.explodeClassName;
 }
-dojo.html.setOpacity(_630,0.3);
-with(_630.style){
+dojo.html.setOpacity(_638,0.3);
+with(_638.style){
 position="absolute";
 display="none";
-backgroundColor=h.getStyle(_628,"background-color").toLowerCase();
+backgroundColor=h.getStyle(_630,"background-color").toLowerCase();
 }
-dojo.body().appendChild(_630);
-var _631={opacity:{start:1,end:0.5}};
+dojo.body().appendChild(_638);
+var _639={opacity:{start:1,end:0.5}};
 dojo.lang.forEach(["height","width","top","left"],function(type){
-_631[type]={start:_62e[type],end:_62f[type]};
+_639[type]={start:_636[type],end:_637[type]};
 });
-var anim=new dojo.lfx.propertyAnimation(_630,_631,_62a,_62b,{"beforeBegin":function(){
-dojo.html.hide(_628);
-dojo.html.show(_630);
+var anim=new dojo.lfx.propertyAnimation(_638,_639,_632,_633,{"beforeBegin":function(){
+dojo.html.hide(_630);
+dojo.html.show(_638);
 },"onEnd":function(){
-_630.parentNode.removeChild(_630);
+_638.parentNode.removeChild(_638);
 }});
-if(_62c){
+if(_634){
 anim.connect("onEnd",function(){
-_62c(_628,anim);
+_634(_630,anim);
 });
 }
 return anim;
 };
-dojo.lfx.html.highlight=function(_634,_635,_636,_637,_638){
-_634=dojo.lfx.html._byId(_634);
-var _639=[];
-dojo.lang.forEach(_634,function(node){
-var _63b=dojo.html.getBackgroundColor(node);
+dojo.lfx.html.highlight=function(_63c,_63d,_63e,_63f,_640){
+_63c=dojo.lfx.html._byId(_63c);
+var _641=[];
+dojo.lang.forEach(_63c,function(node){
+var _643=dojo.html.getBackgroundColor(node);
 var bg=dojo.html.getStyle(node,"background-color").toLowerCase();
-var _63d=dojo.html.getStyle(node,"background-image");
-var _63e=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
-while(_63b.length>3){
-_63b.pop();
+var _645=dojo.html.getStyle(node,"background-image");
+var _646=(bg=="transparent"||bg=="rgba(0, 0, 0, 0)");
+while(_643.length>3){
+_643.pop();
 }
-var rgb=new dojo.gfx.color.Color(_635);
-var _640=new dojo.gfx.color.Color(_63b);
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_640}},_636,_637,{"beforeBegin":function(){
-if(_63d){
+var rgb=new dojo.gfx.color.Color(_63d);
+var _648=new dojo.gfx.color.Color(_643);
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end:_648}},_63e,_63f,{"beforeBegin":function(){
+if(_645){
 node.style.backgroundImage="none";
 }
 node.style.backgroundColor="rgb("+rgb.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_63d){
-node.style.backgroundImage=_63d;
+if(_645){
+node.style.backgroundImage=_645;
 }
-if(_63e){
+if(_646){
 node.style.backgroundColor="transparent";
 }
-if(_638){
-_638(node,anim);
+if(_640){
+_640(node,anim);
 }
 }});
-_639.push(anim);
+_641.push(anim);
 });
-return dojo.lfx.combine(_639);
+return dojo.lfx.combine(_641);
 };
-dojo.lfx.html.unhighlight=function(_642,_643,_644,_645,_646){
-_642=dojo.lfx.html._byId(_642);
-var _647=[];
-dojo.lang.forEach(_642,function(node){
-var _649=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
-var rgb=new dojo.gfx.color.Color(_643);
-var _64b=dojo.html.getStyle(node,"background-image");
-var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_649,end:rgb}},_644,_645,{"beforeBegin":function(){
-if(_64b){
+dojo.lfx.html.unhighlight=function(_64a,_64b,_64c,_64d,_64e){
+_64a=dojo.lfx.html._byId(_64a);
+var _64f=[];
+dojo.lang.forEach(_64a,function(node){
+var _651=new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
+var rgb=new dojo.gfx.color.Color(_64b);
+var _653=dojo.html.getStyle(node,"background-image");
+var anim=dojo.lfx.propertyAnimation(node,{"background-color":{start:_651,end:rgb}},_64c,_64d,{"beforeBegin":function(){
+if(_653){
 node.style.backgroundImage="none";
 }
-node.style.backgroundColor="rgb("+_649.toRgb().join(",")+")";
+node.style.backgroundColor="rgb("+_651.toRgb().join(",")+")";
 },"onEnd":function(){
-if(_646){
-_646(node,anim);
+if(_64e){
+_64e(node,anim);
 }
 }});
-_647.push(anim);
+_64f.push(anim);
 });
-return dojo.lfx.combine(_647);
+return dojo.lfx.combine(_64f);
 };
 dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
 dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.html"]});
@@ -71343,6 +61987,8 @@
 
 __CPAN_EDITION__ ajax build.txt
 Files baked into this build:
+
+dojo.js:
 dojoGuardStart.js
 ../src/bootstrap1.js
 ../src/loader.js
@@ -71376,3 +62022,4 @@
 ../src/html/layout.js
 ../src/lfx/html.js
 ../src/lfx/__package__.js
+

Modified: trunk/HTML-Dojo/lib/HTML/Dojo/src.pm
===================================================================
--- trunk/HTML-Dojo/lib/HTML/Dojo/src.pm	2007-05-21 20:41:55 UTC (rev 6413)
+++ trunk/HTML-Dojo/lib/HTML/Dojo/src.pm	2007-05-22 13:46:20 UTC (rev 6414)
@@ -13,6 +13,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.Deferred");
 dojo.provide("dojo.DeferredList");
 dojo.DeferredList = function (list, fireOnOneCallback, fireOnOneErrback, consumeErrors, canceller) {
@@ -79,6 +81,110 @@
 }});
 
 
+__CPAN_FILE__ src/ns.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.ns"]], definePackage:function (dojo) {
+	dojo.provide("dojo.ns");
+	dojo.ns = {namespaces:{}, failed:{}, loading:{}, loaded:{}, register:function (name, module, resolver, noOverride) {
+		if (!noOverride || !this.namespaces[name]) {
+			this.namespaces[name] = new dojo.ns.Ns(name, module, resolver);
+		}
+	}, allow:function (name) {
+		if (this.failed[name]) {
+			return false;
+		}
+		if ((djConfig.excludeNamespace) && (dojo.lang.inArray(djConfig.excludeNamespace, name))) {
+			return false;
+		}
+		return ((name == this.dojo) || (!djConfig.includeNamespace) || (dojo.lang.inArray(djConfig.includeNamespace, name)));
+	}, get:function (name) {
+		return this.namespaces[name];
+	}, require:function (name) {
+		var ns = this.namespaces[name];
+		if ((ns) && (this.loaded[name])) {
+			return ns;
+		}
+		if (!this.allow(name)) {
+			return false;
+		}
+		if (this.loading[name]) {
+			dojo.debug("dojo.namespace.require: re-entrant request to load namespace \"" + name + "\" must fail.");
+			return false;
+		}
+		var req = dojo.require;
+		this.loading[name] = true;
+		try {
+			if (name == "dojo") {
+				req("dojo.namespaces.dojo");
+			} else {
+				if (!dojo.hostenv.moduleHasPrefix(name)) {
+					dojo.registerModulePath(name, "../" + name);
+				}
+				req([name, "manifest"].join("."), false, true);
+			}
+			if (!this.namespaces[name]) {
+				this.failed[name] = true;
+			}
+		}
+		finally {
+			this.loading[name] = false;
+		}
+		return this.namespaces[name];
+	}};
+	dojo.ns.Ns = function (name, module, resolver) {
+		this.name = name;
+		this.module = module;
+		this.resolver = resolver;
+		this._loaded = [];
+		this._failed = [];
+	};
+	dojo.ns.Ns.prototype.resolve = function (name, domain, omitModuleCheck) {
+		if (!this.resolver || djConfig["skipAutoRequire"]) {
+			return false;
+		}
+		var fullName = this.resolver(name, domain);
+		if ((fullName) && (!this._loaded[fullName]) && (!this._failed[fullName])) {
+			var req = dojo.require;
+			req(fullName, false, true);
+			if (dojo.hostenv.findModule(fullName, false)) {
+				this._loaded[fullName] = true;
+			} else {
+				if (!omitModuleCheck) {
+					dojo.raise("dojo.ns.Ns.resolve: module '" + fullName + "' not found after loading via namespace '" + this.name + "'");
+				}
+				this._failed[fullName] = true;
+			}
+		}
+		return Boolean(this._loaded[fullName]);
+	};
+	dojo.registerNamespace = function (name, module, resolver) {
+		dojo.ns.register.apply(dojo.ns, arguments);
+	};
+	dojo.registerNamespaceResolver = function (name, resolver) {
+		var n = dojo.ns.namespaces[name];
+		if (n) {
+			n.resolver = resolver;
+		}
+	};
+	dojo.registerNamespaceManifest = function (module, path, name, widgetModule, resolver) {
+		dojo.registerModulePath(name, path);
+		dojo.registerNamespace(name, widgetModule, resolver);
+	};
+	dojo.registerNamespace("dojo", "dojo.widget");
+}});
+
+
 __CPAN_FILE__ src/ns.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -90,6 +196,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.ns");
 dojo.ns = {namespaces:{}, failed:{}, loading:{}, loaded:{}, register:function (name, module, resolver, noOverride) {
 	if (!noOverride || !this.namespaces[name]) {
@@ -190,6 +298,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.date");
 dojo.deprecated("dojo.date", "use one of the modules in dojo.date.* instead", "0.5");
 
@@ -205,6 +315,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.Deferred");
 dojo.require("dojo.lang.func");
 dojo.Deferred = function (canceller) {
@@ -370,6 +482,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 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");
@@ -386,6 +500,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.behavior");
 dojo.require("dojo.event.*");
 dojo.require("dojo.experimental");
@@ -536,6 +652,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 if (typeof window == "undefined") {
 	dojo.raise("attempt to use adobe svg hostenv when no window object");
 }
@@ -916,6 +1034,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.debug");
 dojo.debug = function () {
 	if (!djConfig.isDebug) {
@@ -1001,6 +1121,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.hostenv.name_ = "spidermonkey";
 dojo.hostenv.println = print;
 dojo.hostenv.exit = function (exitcode) {
@@ -1040,6 +1162,2081 @@
 dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
 
+__CPAN_FILE__ src/hostenv_dashboard.xd.js
+/*
+	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.hostenv.packageLoaded({definePackage:function (dojo) {
+	dojo.render.name = dojo.hostenv.name_ = "dashboard";
+	dojo.hostenv.println = function (message) {
+		return alert(message);
+	};
+	dojo.hostenv.getXmlhttpObject = function (kwArgs) {
+		if (widget.system && kwArgs) {
+			if ((kwArgs.contentType && kwArgs.contentType.indexOf("text/") != 0) || (kwArgs.headers && kwArgs.headers["content-type"] && kwArgs.headers["content-type"].indexOf("text/") != 0)) {
+				var curl = new dojo.hostenv.CurlRequest;
+				curl._save = true;
+				return curl;
+			} else {
+				if (kwArgs.method && kwArgs.method.toUpperCase() == "HEAD") {
+					return new dojo.hostenv.CurlRequest;
+				} else {
+					if (kwArgs.headers && kwArgs.header.referer) {
+						return new dojo.hostenv.CurlRequest;
+					}
+				}
+			}
+		}
+		return new XMLHttpRequest;
+	};
+	dojo.hostenv.CurlRequest = function () {
+		this.onreadystatechange = null;
+		this.readyState = 0;
+		this.responseText = "";
+		this.responseXML = null;
+		this.status = 0;
+		this.statusText = "";
+		this._method = "";
+		this._url = "";
+		this._async = true;
+		this._referrer = "";
+		this._headers = [];
+		this._save = false;
+		this._responseHeader = "";
+		this._responseHeaders = {};
+		this._fileName = "";
+		this._username = "";
+		this._password = "";
+	};
+	dojo.hostenv.CurlRequest.prototype.open = function (method, url, async, username, password) {
+		this._method = method;
+		this._url = url;
+		if (async) {
+			this._async = async;
+		}
+		if (username) {
+			this._username = username;
+		}
+		if (password) {
+			this._password = password;
+		}
+	};
+	dojo.hostenv.CurlRequest.prototype.setRequestHeader = function (label, value) {
+		switch (label) {
+		  case "Referer":
+			this._referrer = value;
+			break;
+		  case "content-type":
+			break;
+		  default:
+			this._headers.push(label + "=" + value);
+			break;
+		}
+	};
+	dojo.hostenv.CurlRequest.prototype.getAllResponseHeaders = function () {
+		return this._responseHeader;
+	};
+	dojo.hostenv.CurlRequest.prototype.getResponseHeader = function (headerLabel) {
+		return this._responseHeaders[headerLabel];
+	};
+	dojo.hostenv.CurlRequest.prototype.send = function (content) {
+		this.readyState = 1;
+		if (this.onreadystatechange) {
+			this.onreadystatechange.call(this);
+		}
+		var query = {sS:""};
+		if (this._referrer) {
+			query.e = this._referrer;
+		}
+		if (this._headers.length) {
+			query.H = this._headers.join("&");
+		}
+		if (this._username) {
+			if (this._password) {
+				query.u = this._username + ":" + this._password;
+			} else {
+				query.u = this._username;
+			}
+		}
+		if (content) {
+			query.d = this.content;
+			if (this._method != "POST") {
+				query.G = "";
+			}
+		}
+		if (this._method == "HEAD") {
+			query.I = "";
+		} else {
+			if (this._save) {
+				query.I = "";
+			} else {
+				query.i = "";
+			}
+		}
+		var system = widget.system(dojo.hostenv.CurlRequest._formatCall(query, this._url), null);
+		this.readyState = 2;
+		if (this.onreadystatechange) {
+			this.onreadystatechange.call(this);
+		}
+		if (system.errorString) {
+			this.responseText = system.errorString;
+			this.status = 0;
+		} else {
+			if (this._save) {
+				this._responseHeader = system.outputString;
+			} else {
+				var split = system.outputString.replace(/\r/g, "").split("\n\n", 2);
+				this._responseHeader = split[0];
+				this.responseText = split[1];
+			}
+			split = this._responseHeader.split("\n");
+			this.statusText = split.shift();
+			this.status = this.statusText.split(" ")[1];
+			for (var i = 0, header; header = split[i]; i++) {
+				var header_split = header.split(": ", 2);
+				this._responseHeaders[header_split[0]] = header_split[1];
+			}
+			if (this._save) {
+				widget.system("/bin/mkdir cache", null);
+				this._fileName = this._url.split("/").pop().replace(/\W/g, "");
+				this._fileName += "." + this._responseHeaders["Content-Type"].replace(/[\r\n]/g, "").split("/").pop();
+				delete query.I;
+				query.o = "cache/" + this._fileName;
+				system = widget.system(dojo.hostenv.CurlRequest._formatCall(query, this._url), null);
+				if (!system.errorString) {
+					this.responseText = "cache/" + this._fileName;
+				}
+			} else {
+				if (this._method == "HEAD") {
+					this.responseText = this._responseHeader;
+				}
+			}
+		}
+		this.readyState = 4;
+		if (this.onreadystatechange) {
+			this.onreadystatechange.call(this);
+		}
+	};
+	dojo.hostenv.CurlRequest._formatCall = function (query, url) {
+		var call = ["/usr/bin/curl"];
+		for (var key in query) {
+			if (query[key] != "") {
+				call.push("-" + key + " '" + query[key].replace(/'/g, "'") + "'");
+			} else {
+				call.push("-" + key);
+			}
+		}
+		call.push("'" + url.replace(/'/g, "'") + "'");
+		return call.join(" ");
+	};
+	dojo.hostenv.exit = function () {
+		if (widget.system) {
+			widget.system("/bin/rm -rf cache/*", null);
+		}
+	};
+}});
+
+
+__CPAN_FILE__ src/validate.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate");
+	dojo.require("dojo.validate.common");
+}});
+
+
+__CPAN_FILE__ src/iCalendar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.cal.iCalendar"]], definePackage:function (dojo) {
+	dojo.require("dojo.cal.iCalendar");
+	dojo.deprecated("dojo.icalendar", "use dojo.cal.iCalendar isntead", "0.5");
+}});
+
+
+__CPAN_FILE__ src/debug.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.debug"]], definePackage:function (dojo) {
+	dojo.provide("dojo.debug");
+	dojo.debug = function () {
+		if (!djConfig.isDebug) {
+			return;
+		}
+		var args = arguments;
+		if (dj_undef("println", dojo.hostenv)) {
+			dojo.raise("dojo.debug not available (yet?)");
+		}
+		var isJUM = dj_global["jum"] && !dj_global["jum"].isBrowser;
+		var s = [(isJUM ? "" : "DEBUG: ")];
+		for (var i = 0; i < args.length; ++i) {
+			if (!false && args[i] && args[i] instanceof Error) {
+				var msg = "[" + args[i].name + ": " + dojo.errorToString(args[i]) + (args[i].fileName ? ", file: " + args[i].fileName : "") + (args[i].lineNumber ? ", line: " + args[i].lineNumber : "") + "]";
+			} else {
+				try {
+					var msg = String(args[i]);
+				}
+				catch (e) {
+					if (dojo.render.html.ie) {
+						var msg = "[ActiveXObject]";
+					} else {
+						var msg = "[unknown]";
+					}
+				}
+			}
+			s.push(msg);
+		}
+		dojo.hostenv.println(s.join(" "));
+	};
+	dojo.debugShallow = function (obj) {
+		if (!djConfig.isDebug) {
+			return;
+		}
+		dojo.debug("------------------------------------------------------------");
+		dojo.debug("Object: " + obj);
+		var props = [];
+		for (var prop in obj) {
+			try {
+				props.push(prop + ": " + obj[prop]);
+			}
+			catch (E) {
+				props.push(prop + ": ERROR - " + E.message);
+			}
+		}
+		props.sort();
+		for (var i = 0; i < props.length; i++) {
+			dojo.debug(props[i]);
+		}
+		dojo.debug("------------------------------------------------------------");
+	};
+	dojo.debugDeep = function (obj) {
+		if (!djConfig.isDebug) {
+			return;
+		}
+		if (!dojo.uri || !dojo.uri.dojoUri) {
+			return dojo.debug("You'll need to load dojo.uri.* for deep debugging - sorry!");
+		}
+		if (!window.open) {
+			return dojo.debug("Deep debugging is only supported in host environments with window.open");
+		}
+		var idx = dojo.debugDeep.debugVars.length;
+		dojo.debugDeep.debugVars.push(obj);
+		var url = (djConfig["dojoDebugDeepHtmlUrl"] || new dojo.uri.Uri(location, dojo.uri.moduleUri("dojo.debug", "deep.html")).toString()) + "?var=" + idx;
+		var win = window.open(url, "_blank", "width=600, height=400, resizable=yes, scrollbars=yes, status=yes");
+		try {
+			win.debugVar = obj;
+		}
+		catch (e) {
+		}
+	};
+	dojo.debugDeep.debugVars = [];
+}});
+
+
+__CPAN_FILE__ src/docs.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["provide", "dojo.docs"],
+["require", "dojo.io.*"],
+["require", "dojo.event.topic"],
+["require", "dojo.rpc.JotService"],
+["require", "dojo.dom"],
+["require", "dojo.uri.Uri"],
+["require", "dojo.Deferred"],
+["require", "dojo.DeferredList"]],
+definePackage: function(dojo){/*
+	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.docs");
+dojo.require("dojo.io.*");
+dojo.require("dojo.event.topic");
+dojo.require("dojo.rpc.JotService");
+dojo.require("dojo.dom");
+dojo.require("dojo.uri.Uri");
+dojo.require("dojo.Deferred");
+dojo.require("dojo.DeferredList");
+
+/*
+ * TODO:
+ *
+ * Package summary needs to compensate for "is"
+ * Handle host environments
+ * Deal with dojo.widget weirdness
+ * Parse parameters
+ * Limit function parameters to only the valid ones (Involves packing parameters onto meta during rewriting)
+ *
+ */
+
+dojo.docs = new function() {
+	this._url = dojo.uri.dojoUri("docscripts");
+	this._rpc = new dojo.rpc.JotService;
+	this._rpc.serviceUrl = dojo.uri.dojoUri("docscripts/jsonrpc.php");
+};
+dojo.lang.mixin(dojo.docs, {
+	_count: 0,
+	_callbacks: {function_names: []},
+	_cache: {}, // Saves the JSON objects in cache
+	require: function(/*String*/ require, /*bool*/ sync) {
+		dojo.debug("require(): " + require);
+		var parts = require.split("/");
+		
+		var size = parts.length;
+		var deferred = new dojo.Deferred;
+		var args = {
+			mimetype: "text/json",
+			load: function(type, data){
+				dojo.debug("require(): loaded for " + require);
+				
+				if(parts[0] != "function_names") {
+					for(var i = 0, part; part = parts[i]; i++){
+						data = data[part];
+					}
+				}
+				deferred.callback(data);
+			},
+			error: function(){
+				deferred.errback();
+			}
+		};
+
+		if(location.protocol == "file:"){
+			if(size){
+				if(parts[parts.length - 1] == "documentation"){
+					parts[parts.length - 1] = "meta";
+				}
+			
+				if(parts[0] == "function_names"){
+					args.url = [this._url, "local_json", "function_names"].join("/");
+				}else{
+					var dirs = parts[0].split(".");
+					args.url = [this._url, "local_json", dirs[0]].join("/");
+					if(dirs.length > 1){
+						args.url = [args.url, dirs[1]].join(".");
+					}
+				}
+			}
+		}
+		
+		dojo.io.bind(args);
+		return deferred;
+	},
+	getFunctionNames: function(){
+		return this.require("function_names"); // dojo.Deferred
+	},
+	unFormat: function(/*String*/ string){
+		var fString = string;
+		if(string.charAt(string.length - 1) == "_"){
+			fString = [string.substring(0, string.length - 1), "*"].join("");
+		}
+		return fString;
+	},
+	getMeta: function(/*String*/ pkg, /*String*/ name, /*Function*/ callback, /*String?*/ id){
+		// summary: Gets information about a function in regards to its meta data
+		if(typeof name == "function"){
+			// pId: a
+			// pkg: ignore
+			id = callback;
+			callback = name;
+			name = pkg;
+			pkg = null;
+			dojo.debug("getMeta(" + name + ")");
+		}else{
+			dojo.debug("getMeta(" + pkg + "/" + name + ")");
+		}
+		
+		if(!id){
+			id = "_";
+		}
+	},
+	_withPkg: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input, /*String*/ newType){
+		dojo.debug("_withPkg(" + evt.name + ") has package: " + data[0]);
+		evt.pkg = data[0];
+		if("load" == type && evt.pkg){
+			evt.type = newType;
+		}else{
+			if(evt.callbacks && evt.callbacks.length){
+				evt.callbacks.shift()("error", {}, evt, evt.input);
+			}
+		}
+	},
+	_gotMeta: function(/*String*/ type, /*Object*/ data, /*Object*/ evt){
+		dojo.debug("_gotMeta(" + evt.name + ")");
+
+		var cached = dojo.docs._getCache(evt.pkg, evt.name, "meta", "functions", evt.id);
+		if(cached.summary){
+			data.summary = cached.summary;
+		}
+		if(evt.callbacks && evt.callbacks.length){
+			evt.callbacks.shift()(type, data, evt, evt.input);
+		}
+	},
+	getSrc: function(/*String*/ name, /*Function*/ callback, /*String?*/ id){
+		// summary: Gets src file (created by the doc parser)
+		dojo.debug("getSrc(" + name + ")");
+		if(!id){
+			id = "_";
+		}
+	},
+	getDoc: function(/*String*/ name, /*Function*/ callback, /*String?*/ id){
+		// summary: Gets external documentation stored on Jot for a given function
+		dojo.debug("getDoc(" + name  + ")");
+
+		if(!id){
+			id = "_";
+		}
+
+		var input = {};
+
+		input.type = "doc";
+		input.name = name;
+		input.callbacks = [callback];
+	},
+	_gotDoc: function(/*String*/ type, /*Array*/ data, /*Object*/ evt, /*Object*/ input){
+		dojo.debug("_gotDoc(" + evt.type + ")");
+		
+		evt[evt.type] = data;
+		if(evt.expects && evt.expects.doc){
+			for(var i = 0, expect; expect = evt.expects.doc[i]; i++){
+				if(!(expect in evt)){
+					dojo.debug("_gotDoc() waiting for more data");
+					return;
+				}
+			}
+		}
+		
+		var cache = dojo.docs._getCache(evt.pkg, "meta", "functions", evt.name, evt.id, "meta");
+
+		var description = evt.fn.description;
+		cache.description = description;
+		data = {
+			returns: evt.fn.returns,
+			id: evt.id,
+			variables: []
+		}
+		if(!cache.parameters){
+			cache.parameters = {};
+		}
+		for(var i = 0, param; param = evt.param[i]; i++){
+			var fName = param["DocParamForm/name"];
+			if(!cache.parameters[fName]){
+				cache.parameters[fName] = {};
+			}
+			cache.parameters[fName].description = param["DocParamForm/desc"]
+		}
+
+		data.description = cache.description;
+		data.parameters = cache.parameters;
+		
+		evt.type = "doc";
+	
+		if(evt.callbacks && evt.callbacks.length){
+			evt.callbacks.shift()("load", data, evt, input);
+		}
+	},
+	getPkgDoc: function(/*String*/ name, /*Function*/ callback){
+		// summary: Gets external documentation stored on Jot for a given package
+		dojo.debug("getPkgDoc(" + name + ")");
+		var input = {};
+	},
+	getPkgInfo: function(/*String*/ name, /*Function*/ callback){
+		// summary: Gets a combination of the metadata and external documentation for a given package
+		dojo.debug("getPkgInfo(" + name + ")");
+
+		var input = {
+			expects: {
+				pkginfo: ["pkgmeta", "pkgdoc"]
+			},
+			callback: callback
+		};
+		dojo.docs.getPkgMeta(input, name, dojo.docs._getPkgInfo);
+		dojo.docs.getPkgDoc(input, name, dojo.docs._getPkgInfo);
+	},
+	_getPkgInfo: function(/*String*/ type, /*Object*/ data, /*Object*/ evt){
+		dojo.debug("_getPkgInfo() for " + evt.type);
+		var input = {};
+		var results = {};
+		if(typeof key == "object"){
+			input = key;
+			input[evt.type] = data;
+			if(input.expects && input.expects.pkginfo){
+				for(var i = 0, expect; expect = input.expects.pkginfo[i]; i++){
+					if(!(expect in input)){
+						dojo.debug("_getPkgInfo() waiting for more data");
+						return;
+					}
+				}
+			}
+			results = input.pkgmeta;
+			results.description = input.pkgdoc;
+		}
+
+		if(input.callback){
+			input.callback("load", results, evt);
+		}
+	},
+	getInfo: function(/*String*/ name, /*Function*/ callback){
+		dojo.debug("getInfo(" + name + ")");
+		var input = {
+			expects: {
+				"info": ["meta", "doc"]
+			},
+			callback: callback
+		}
+		dojo.docs.getMeta(input, name, dojo.docs._getInfo);
+		dojo.docs.getDoc(input, name, dojo.docs._getInfo);
+	},
+	_getInfo: function(/*String*/ type, /*String*/ data, /*Object*/ evt, /*Object*/ input){
+		dojo.debug("_getInfo(" + evt.type + ")");
+		if(input && input.expects && input.expects.info){
+			input[evt.type] = data;
+			for(var i = 0, expect; expect = input.expects.info[i]; i++){
+				if(!(expect in input)){
+					dojo.debug("_getInfo() waiting for more data");
+					return;
+				}
+			}
+		}
+
+		if(input.callback){
+			input.callback("load", dojo.docs._getCache(evt.pkg, "meta", "functions", evt.name, evt.id, "meta"), evt, input);
+		}
+	},
+	_getMainText: function(/*String*/ text){
+		// summary: Grabs the innerHTML from a Jot Rech Text node
+		dojo.debug("_getMainText()");
+		return text.replace(/^<html[^<]*>/, "").replace(/<\/html>$/, "").replace(/<\w+\s*\/>/g, "");
+	},
+	getPackageMeta: function(/*Object*/ input){
+		dojo.debug("getPackageMeta(): " + input.package);
+		return this.require(input.package + "/meta", input.sync);
+	},
+	getFunctionMeta: function(/*Object*/ input){
+		var package = input.package || "";
+		var name = input.name;
+		var id = input.id || "_";
+		dojo.debug("getFunctionMeta(): " + name);
+
+		if(!name) return;
+
+		if(package){
+			return this.require(package + "/meta/functions/" + name + "/" + id + "/meta");
+		}else{
+			this.getFunctionNames();
+		}
+	},
+	getFunctionDocumentation: function(/*Object*/ input){
+		var package = input.package || "";
+		var name = input.name;
+		var id = input.id || "_";
+		dojo.debug("getFunctionDocumentation(): " + name);
+		
+		if(!name) return;
+		
+		if(package){
+			return this.require(package + "/meta/functions/" + name + "/" + id + "/documentation");
+		}
+	},
+	_onDocSearch: function(/*Object*/ input){
+		var _this = this;
+		var name = input.name.toLowerCase();
+		if(!name) return;
+
+		this.getFunctionNames().addCallback(function(data){
+			dojo.debug("_onDocSearch(): function names loaded for " + name);
+
+			var output = [];
+			var list = [];
+			var closure = function(pkg, fn) {
+				return function(data){
+					dojo.debug("_onDocSearch(): package meta loaded for: " + pkg);
+					if(data.functions){
+						var functions = data.functions;
+						for(var key in functions){
+							if(fn == key){
+								var ids = functions[key];
+								for(var id in ids){
+									var fnMeta = ids[id];
+									output.push({
+										package: pkg,
+										name: fn,
+										id: id,
+										summary: fnMeta.summary
+									});
+								}
+							}
+						}
+					}
+					return output;
+				}
+			}
+
+			pkgLoop:
+			for(var pkg in data){
+				if(pkg.toLowerCase() == name){
+					name = pkg;
+					dojo.debug("_onDocSearch found a package");
+					//dojo.docs._onDocSelectPackage(input);
+					return;
+				}
+				for(var i = 0, fn; fn = data[pkg][i]; i++){
+					if(fn.toLowerCase().indexOf(name) != -1){
+						dojo.debug("_onDocSearch(): Search matched " + fn);
+						var meta = _this.getPackageMeta({package: pkg});
+						meta.addCallback(closure(pkg, fn));
+						list.push(meta);
+
+						// Build a list of all packages that need to be loaded and their loaded state.
+						continue pkgLoop;
+					}
+				}
+			}
+			
+			list = new dojo.DeferredList(list);
+			list.addCallback(function(results){
+				dojo.debug("_onDocSearch(): All packages loaded");
+				_this._printFunctionResults(results[0][1]);
+			});
+		});
+	},
+	_onDocSearchFn: function(/*String*/ type, /*Array*/ data, /*Object*/ evt){
+		dojo.debug("_onDocSearchFn(" + evt.name + ")");
+
+		var name = evt.name || evt.pkg;
+
+		dojo.debug("_onDocSearchFn found a function");
+
+		evt.pkgs = packages;
+		evt.pkg = name;
+		evt.loaded = 0;
+		for(var i = 0, pkg; pkg = packages[i]; i++){
+			dojo.docs.getPkgMeta(evt, pkg, dojo.docs._onDocResults);
+		}
+	},
+	_onPkgResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
+		dojo.debug("_onPkgResults(" + evt.type + ")");
+		var description = "";
+		var path = "";
+		var methods = {};
+		var requires = {};
+		if(input){
+			input[evt.type] = data;
+			if(input.expects && input.expects.pkgresults){
+				for(var i = 0, expect; expect = input.expects.pkgresults[i]; i++){
+					if(!(expect in input)){
+						dojo.debug("_onPkgResults() waiting for more data");
+						return;
+					}
+				}
+			}
+			path = input.pkgdoc.path;
+			description = input.pkgdoc.description;
+			methods = input.pkgmeta.methods;
+			requires = input.pkgmeta.requires;
+		}
+		var pkg = evt.name.replace("_", "*");
+		var results = {
+			path: path,
+			description: description,
+			size: 0,
+			methods: [],
+			pkg: pkg,
+			requires: requires
+		}
+		var rePrivate = /_[^.]+$/;
+		for(var method in methods){
+			if(!rePrivate.test(method)){
+				for(var pId in methods[method]){
+					results.methods.push({
+						pkg: pkg,
+						name: method,
+						id: pId,
+						summary: methods[method][pId].summary
+					})
+				}
+			}
+		}
+		results.size = results.methods.length;
+		dojo.docs._printPkgResult(results);
+	},
+	_onDocResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
+		dojo.debug("_onDocResults(" + evt.name + "/" + input.pkg + ") " + type);
+		++input.loaded;
+
+		if(input.loaded == input.pkgs.length){
+			var pkgs = input.pkgs;
+			var name = input.pkg;
+			var results = {methods: []};
+			var rePrivate = /_[^.]+$/;
+			data = dojo.docs._cache;
+
+			for(var i = 0, pkg; pkg = pkgs[i]; i++){
+				var methods = dojo.docs._getCache(pkg, "meta", "methods");
+				for(var fn in methods){
+					if(fn.toLowerCase().indexOf(name) == -1){
+						continue;
+					}
+					if(fn != "requires" && !rePrivate.test(fn)){
+						for(var pId in methods[fn]){
+							var result = {
+								pkg: pkg,
+								name: fn,
+								id: "_",
+								summary: ""
+							}
+							if(methods[fn][pId].summary){
+								result.summary = methods[fn][pId].summary;
+							}
+							results.methods.push(result);
+						}
+					}
+				}
+			}
+
+			dojo.debug("Publishing docResults");
+			dojo.docs._printFnResults(results);
+		}
+	},
+	_printFunctionResults: function(results){
+		dojo.debug("_printFnResults(): called");
+		// summary: Call this function to send the /docs/function/results topic
+	},
+	_printPkgResult: function(results){
+		dojo.debug("_printPkgResult(): called");
+	},
+	_onDocSelectFunction: function(/*Object*/ input){
+		// summary: Get doc, meta, and src
+		var name = input.name;
+		var package = input.package || "";
+		var id = input.id || "_";
+		dojo.debug("_onDocSelectFunction(" + name + ")");
+		if(!name || !package) return false;
+
+		var pkgMeta = this.getPackageMeta({package: package});
+		var meta = this.getFunctionMeta({package: package, name: name, id: id});
+		var doc = this.getFunctionDocumentation({package: package, name: name, id: id});
+		
+		var list = new dojo.DeferredList([pkgMeta, meta, doc]);
+		list.addCallback(function(results){
+			dojo.debug("_onDocSelectFunction() loaded");
+			for(var i = 0, result; result = results[i]; i++){
+				dojo.debugShallow(result[1]);
+			}
+		});
+		
+		return list;
+	},
+	_onDocSelectPackage: function(/*Object*/ input){
+		dojo.debug("_onDocSelectPackage(" + input.name + ")")
+		input.expects = {
+			"pkgresults": ["pkgmeta", "pkgdoc"]
+		};
+		dojo.docs.getPkgMeta(input, input.name, dojo.docs._onPkgResults);
+		dojo.docs.getPkgDoc(input, input.name, dojo.docs._onPkgResults);
+	},
+	_onDocSelectResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
+		dojo.debug("_onDocSelectResults(" + evt.type + ", " + evt.name + ")");
+		if(evt.type == "meta"){
+			dojo.docs.getPkgMeta(input, evt.pkg, dojo.docs._onDocSelectResults);
+		}
+		if(input){
+			input[evt.type] = data;
+			if(input.expects && input.expects.docresults){
+				for(var i = 0, expect; expect = input.expects.docresults[i]; i++){
+					if(!(expect in input)){
+						dojo.debug("_onDocSelectResults() waiting for more data");
+						return;
+					}
+				}
+			}
+		}
+
+		dojo.docs._printFunctionDetail(input);
+	},
+	
+	_printFunctionDetail: function(results) {
+		// summary: Call this function to send the /docs/function/detail topic event
+	},
+
+	selectFunction: function(/*String*/ name, /*String?*/ id){
+		// summary: The combined information
+	},
+	savePackage: function(/*Object*/ callbackObject, /*String*/ callback, /*Object*/ parameters){
+		dojo.event.kwConnect({
+			srcObj: dojo.docs,
+			srcFunc: "_savedPkgRpc",
+			targetObj: callbackObject,
+			targetFunc: callback,
+			once: true
+		});
+		
+		var props = {};
+		var cache = dojo.docs._getCache(parameters.pkg, "meta");
+
+		var i = 1;
+
+		if(!cache.path){
+			var path = "id";
+			props[["pname", i].join("")] = "DocPkgForm/require";
+			props[["pvalue", i++].join("")] = parameters.pkg;
+		}else{
+			var path = cache.path;
+		}
+
+		props.form = "//DocPkgForm";
+		props.path = ["/WikiHome/DojoDotDoc/", path].join("");
+
+		if(parameters.description){
+			props[["pname", i].join("")] = "main/text";
+			props[["pvalue", i++].join("")] = parameters.description;
+		}
+		
+		dojo.docs._rpc.callRemote("saveForm",	props).addCallbacks(dojo.docs._pkgRpc, dojo.docs._pkgRpc);
+	},
+	_pkgRpc: function(data){
+		if(data.name){
+			dojo.docs._getCache(data["DocPkgForm/require"], "meta").path = data.name;
+			dojo.docs._savedPkgRpc("load");
+		}else{
+			dojo.docs._savedPkgRpc("error");
+		}
+	},
+	_savedPkgRpc: function(type){
+	},
+	functionPackages: function(/*String*/ name, /*Function*/ callback, /*Object*/ input){
+		// summary: Gets the package associated with a function and stores it in the .pkg value of input
+		dojo.debug("functionPackages() name: " + name);
+
+		if(!input){
+			input = {};
+		}
+		if(!input.callbacks){
+			input.callbacks = [];
+		}
+
+		input.type = "function_names";
+		input.name = name;
+		input.callbacks.unshift(callback);
+		input.callbacks.unshift(dojo.docs._functionPackages);
+	},
+	_functionPackages: function(/*String*/ type, /*Array*/ data, /*Object*/ evt){
+		dojo.debug("_functionPackages() name: " + evt.name);
+		evt.pkg = '';
+
+		var results = [];
+		var data = dojo.docs._cache['function_names'];
+		for(var key in data){
+			if(dojo.lang.inArray(data[key], evt.name)){
+				dojo.debug("_functionPackages() package: " + key);
+				results.push(key);
+			}
+		}
+
+		if(evt.callbacks && evt.callbacks.length){
+			evt.callbacks.shift()(type, results, evt, evt.input);
+		}
+	},
+	setUserName: function(/*String*/ name){
+		dojo.docs._userName = name;
+		if(name && dojo.docs._password){
+			dojo.docs._logIn();
+		}
+	},
+	setPassword: function(/*String*/ password){
+		dojo.docs._password = password;
+		if(password && dojo.docs._userName){
+			dojo.docs._logIn();
+		}
+	},
+	_logIn: function(){
+		dojo.io.bind({
+			url: dojo.docs._rpc.serviceUrl.toString(),
+			method: "post",
+			mimetype: "text/json",
+			content: {
+				username: dojo.docs._userName,
+				password: dojo.docs._password
+			},
+			load: function(type, data){
+				if(data.error){
+					dojo.docs.logInSuccess();
+				}else{
+					dojo.docs.logInFailure();
+				}
+			},
+			error: function(){
+				dojo.docs.logInFailure();
+			}
+		});
+	},
+	logInSuccess: function(){},
+	logInFailure: function(){},
+	_set: function(/*Object*/ base, /*String...*/ keys, /*String*/ value){
+		var args = [];
+		for(var i = 0, arg; arg = arguments[i]; i++){
+			args.push(arg);
+		}
+
+		if(args.length < 3) return;
+		base = args.shift();
+		value = args.pop();
+		var key = args.pop();
+		for(var i = 0, arg; arg = args[i]; i++){
+			if(typeof base[arg] != "object"){
+				base[arg] = {};
+			}
+			base = base[arg];
+		}
+		base[key] = value;
+	},
+	_getCache: function(/*String...*/ keys){
+		var obj = dojo.docs._cache;
+		for(var i = 0; i < arguments.length; i++){
+			var arg = arguments[i];
+			if(!obj[arg]){
+				obj[arg] = {};
+			}
+			obj = obj[arg];
+		}
+		return obj;
+	}
+});
+
+dojo.event.topic.subscribe("/docs/search", dojo.docs, "_onDocSearch");
+dojo.event.topic.subscribe("/docs/function/select", dojo.docs, "_onDocSelectFunction");
+dojo.event.topic.subscribe("/docs/package/select", dojo.docs, "_onDocSelectPackage");
+
+dojo.event.topic.registerPublisher("/docs/function/results", dojo.docs, "_printFunctionResults");
+dojo.event.topic.registerPublisher("/docs/function/detail", dojo.docs, "_printFunctionDetail");
+dojo.event.topic.registerPublisher("/docs/package/detail", dojo.docs, "_printPkgResult");
+
+}});
+
+__CPAN_FILE__ src/io.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io"], ["require", "dojo.io.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io");
+	dojo.require("dojo.io.*");
+	dojo.deprecated("dojo.io", "replaced by dojo.io.*", "0.5");
+}});
+
+
+__CPAN_FILE__ src/AdapterRegistry.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.AdapterRegistry"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.provide("dojo.AdapterRegistry");
+	dojo.require("dojo.lang.func");
+	dojo.AdapterRegistry = function (returnWrappers) {
+		this.pairs = [];
+		this.returnWrappers = returnWrappers || false;
+	};
+	dojo.lang.extend(dojo.AdapterRegistry, {register:function (name, check, wrap, directReturn, override) {
+		var type = (override) ? "unshift" : "push";
+		this.pairs[type]([name, check, wrap, directReturn]);
+	}, match:function () {
+		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");
+	}, unregister:function (name) {
+		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;
+	}});
+}});
+
+
+__CPAN_FILE__ src/hostenv_rhino.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]]],
+definePackage: function(dojo){/*
+	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
+*/
+
+/*
+* Rhino host environment
+*/
+// make jsc shut up (so we can use jsc for sanity checking) 
+/*@cc_on
+ at if (@_jscript_version >= 7)
+var loadClass; var print; var load; var quit; var version; var Packages; var java;
+ at end
+@*/
+
+dojo.hostenv.println=function(line){
+	if(arguments.length > 0){
+		print(arguments[0]);
+		for(var i=1; i<arguments.length; i++){
+			var valid=false;
+			for (var p in arguments[i]){valid=true;break;}
+			if(valid){
+				dojo.debugShallow(arguments[i]);
+			}
+		}
+	} else {
+		print(line);
+	}
+}
+
+dojo.locale = dojo.locale || java.util.Locale.getDefault().toString().replace('_','-').toLowerCase();
+dojo.render.name = dojo.hostenv.name_ = 'rhino';
+dojo.hostenv.getVersion = function() {return version();};
+
+if (dj_undef("byId")) {
+	dojo.byId = function(id, doc){
+		if(id && (typeof id == "string" || id instanceof String)){
+			if(!doc){ doc = document; }
+			return doc.getElementById(id);
+		}
+		return id; // assume it's a node
+	}
+}
+
+// see comments in spidermonkey loadUri
+dojo.hostenv.loadUri = function(uri, cb){
+	try{
+		var local = (new java.io.File(uri)).exists();
+		if(!local){
+			try{
+				// try it as a file first, URL second
+				var stream = (new java.net.URL(uri)).openStream();
+				// close the stream so we don't leak resources
+				stream.close();
+			}catch(e){
+				// no debug output; this failure just means the uri was not found.
+				return false;
+			}
+		}
+//FIXME: Use Rhino 1.6 native readFile/readUrl if available?
+		if(cb){
+			var contents = (local ? readText : readUri)(uri, "UTF-8");
+			cb(eval('('+contents+')'));
+		}else{
+			load(uri);
+		}
+		return true;
+	}catch(e){
+		dojo.debug("rhino load('" + uri + "') failed. Exception: " + e);
+		return false;
+	}
+}
+
+dojo.hostenv.exit = function(exitcode){ 
+	quit(exitcode);
+}
+
+// Hack to determine current script...
+//
+// These initial attempts failed:
+//   1. get an EcmaError and look at e.getSourceName(): try {eval ("static in return")} catch(e) { ...
+//   Won't work because NativeGlobal.java only does a put of "name" and "message", not a wrapped reflecting object.
+//   Even if the EcmaError object had the sourceName set.
+//  
+//   2. var e = Packages.org.mozilla.javascript.Context.getCurrentContext().reportError('');
+//   Won't work because it goes directly to the errorReporter, not the return value.
+//   We want context.interpreterSourceFile and context.interpreterLine, which are used in static Context.getSourcePositionFromStack
+//   (set by Interpreter.java at interpretation time, if in interpreter mode).
+//
+//   3. var e = Packages.org.mozilla.javascript.Context.getCurrentContext().reportRuntimeError('');
+//   This returns an object, but e.message still does not have source info.
+//   In compiler mode, perhaps not set; in interpreter mode, perhaps not used by errorReporter?
+//
+// What we found works is to do basically the same hack as is done in getSourcePositionFromStack,
+// making a new java.lang.Exception() and then calling printStackTrace on a string stream.
+// We have to parse the string for the .js files (different from the java files).
+// This only works however in compiled mode (-opt 0 or higher).
+// In interpreter mode, entire stack is java.
+// When compiled, printStackTrace is like:
+// java.lang.Exception
+//	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
+//	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
+//	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
+//	at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
+//	at org.mozilla.javascript.NativeJavaClass.constructSpecific(NativeJavaClass.java:228)
+//	at org.mozilla.javascript.NativeJavaClass.construct(NativeJavaClass.java:185)
+//	at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:1269)
+//	at org.mozilla.javascript.gen.c2.call(/Users/mda/Sites/burstproject/testrhino.js:27)
+//    ...
+//	at org.mozilla.javascript.tools.shell.Main.main(Main.java:76)
+//
+// Note may get different answers based on:
+//    Context.setOptimizationLevel(-1)
+//    Context.setGeneratingDebug(true)
+//    Context.setGeneratingSource(true) 
+//
+// Some somewhat helpful posts:
+//    http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=9v9n0g%246gr1%40ripley.netscape.com
+//    http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=3BAA2DC4.6010702%40atg.com
+//
+// Note that Rhino1.5R5 added source name information in some exceptions.
+// But this seems not to help in command-line Rhino, because Context.java has an error reporter
+// so no EvaluationException is thrown.
+
+// do it by using java java.lang.Exception
+function dj_rhino_current_script_via_java(depth) {
+    var optLevel = Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel();  
+   // if (optLevel == -1){ dojo.unimplemented("getCurrentScriptURI (determine current script path for rhino when interpreter mode)", ''); }
+    var caw = new java.io.CharArrayWriter();
+    var pw = new java.io.PrintWriter(caw);
+    var exc = new java.lang.Exception();
+    var s = caw.toString();
+    // we have to exclude the ones with or without line numbers because they put double entries in:
+    //   at org.mozilla.javascript.gen.c3._c4(/Users/mda/Sites/burstproject/burst/Runtime.js:56)
+    //   at org.mozilla.javascript.gen.c3.call(/Users/mda/Sites/burstproject/burst/Runtime.js)
+    var matches = s.match(/[^\(]*\.js\)/gi);
+    if(!matches){
+		throw Error("cannot parse printStackTrace output: " + s);
+	}
+
+    // matches[0] is entire string, matches[1] is this function, matches[2] is caller, ...
+    var fname = ((typeof depth != 'undefined')&&(depth)) ? matches[depth + 1] : matches[matches.length - 1];
+    var fname = matches[3];
+	if(!fname){ fname = matches[1]; }
+    // print("got fname '" + fname + "' from stack string '" + s + "'");
+    if (!fname){ throw Error("could not find js file in printStackTrace output: " + s); }
+    //print("Rhino getCurrentScriptURI returning '" + fname + "' from: " + s); 
+    return fname;
+}
+
+// UNUSED: leverage new support in native exception for getSourceName
+/*
+function dj_rhino_current_script_via_eval_exception() {
+    var exc;
+    // 'ReferenceError: "undefinedsymbol" is not defined.'
+    try {eval ("undefinedsymbol()") } catch(e) {exc = e;}
+    // 'Error: whatever'
+    // try{throw Error("whatever");} catch(e) {exc = e;}
+    // 'SyntaxError: identifier is a reserved word'
+    // try {eval ("static in return")} catch(e) { exc = e; }
+   // print("got exception: '" + exc + "' type=" + (typeof exc));
+    // print("exc.stack=" + (typeof exc.stack));
+    var sn = exc.rhinoException.getSourceName();
+    print("SourceName=" + sn);
+    return sn;
+}*/
+
+// reading a file from disk in Java is a humiliating experience by any measure.
+// Lets avoid that and just get the freaking text
+function readText(path, encoding){
+	encoding = encoding || "utf-8";
+	// NOTE: we intentionally avoid handling exceptions, since the caller will
+	// want to know
+	var jf = new java.io.File(path);
+	var is = new java.io.FileInputStream(jf);
+	return dj_readInputStream(is, encoding);
+}
+
+function readUri(uri, encoding){
+	var conn = (new java.net.URL(uri)).openConnection();
+	encoding = encoding || conn.getContentEncoding() || "utf-8";
+	var is = conn.getInputStream();
+	return dj_readInputStream(is, encoding);
+}
+
+function dj_readInputStream(is, encoding){
+	var input = new java.io.BufferedReader(new java.io.InputStreamReader(is, encoding));
+	try {
+		var sb = new java.lang.StringBuffer();
+		var line = "";
+		while((line = input.readLine()) !== null){
+			sb.append(line);
+			sb.append(java.lang.System.getProperty("line.separator"));
+		}
+		return sb.toString();
+	} finally {
+		input.close();
+	}
+}
+
+// call this now because later we may not be on the top of the stack
+if(!djConfig.libraryScriptUri.length){
+	try{
+		djConfig.libraryScriptUri = dj_rhino_current_script_via_java(1);
+	}catch(e){
+		// otherwise just fake it
+		if(djConfig["isDebug"]){
+			print("\n");
+			print("we have no idea where Dojo is located.");
+			print("Please try loading rhino in a non-interpreted mode or set a");
+			print("\n\tdjConfig.libraryScriptUri\n");
+			print("Setting the dojo path to './'");
+			print("This is probably wrong!");
+			print("\n");
+			print("Dojo will try to load anyway");
+		}
+		djConfig.libraryScriptUri = "./";
+	}
+}
+
+dojo.doc = function(){
+	// summary:
+	//		return the document object associated with the dojo.global()
+	return document;
+}
+
+dojo.body = function(){
+	return document.body;	
+}
+
+function setTimeout(func, delay){
+	// summary: provides timed callbacks using Java threads
+
+	var def={
+		sleepTime:delay,
+		hasSlept:false,
+		
+		run:function(){
+			if (!this.hasSlept){
+				this.hasSlept=true;
+				java.lang.Thread.currentThread().sleep(this.sleepTime);
+			}
+			try {
+				func();
+			} catch(e){dojo.debug("Error running setTimeout thread:" + e);}
+		}
+	};
+	
+	var runnable=new java.lang.Runnable(def);
+	var thread=new java.lang.Thread(runnable);
+	thread.start();
+}
+
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+}});
+
+__CPAN_FILE__ src/animation.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.animation"], ["require", "dojo.animation.Animation"]], definePackage:function (dojo) {
+	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");
+}});
+
+
+__CPAN_FILE__ src/math.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.math"]], definePackage:function (dojo) {
+	dojo.provide("dojo.math");
+	dojo.math.degToRad = function (x) {
+		return (x * Math.PI) / 180;
+	};
+	dojo.math.radToDeg = function (x) {
+		return (x * 180) / Math.PI;
+	};
+	dojo.math.factorial = function (n) {
+		if (n < 1) {
+			return 0;
+		}
+		var retVal = 1;
+		for (var i = 1; i <= n; i++) {
+			retVal *= i;
+		}
+		return retVal;
+	};
+	dojo.math.permutations = function (n, k) {
+		if (n == 0 || k == 0) {
+			return 1;
+		}
+		return (dojo.math.factorial(n) / dojo.math.factorial(n - k));
+	};
+	dojo.math.combinations = function (n, r) {
+		if (n == 0 || r == 0) {
+			return 1;
+		}
+		return (dojo.math.factorial(n) / (dojo.math.factorial(n - r) * dojo.math.factorial(r)));
+	};
+	dojo.math.bernstein = function (t, n, i) {
+		return (dojo.math.combinations(n, i) * Math.pow(t, i) * Math.pow(1 - t, n - i));
+	};
+	dojo.math.gaussianRandom = function () {
+		var k = 2;
+		do {
+			var i = 2 * Math.random() - 1;
+			var j = 2 * Math.random() - 1;
+			k = i * i + j * j;
+		} while (k >= 1);
+		k = Math.sqrt((-2 * Math.log(k)) / k);
+		return i * k;
+	};
+	dojo.math.mean = function () {
+		var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
+		var mean = 0;
+		for (var i = 0; i < array.length; i++) {
+			mean += array[i];
+		}
+		return mean / array.length;
+	};
+	dojo.math.round = function (number, places) {
+		if (!places) {
+			var shift = 1;
+		} else {
+			var shift = Math.pow(10, places);
+		}
+		return Math.round(number * shift) / shift;
+	};
+	dojo.math.sd = dojo.math.standardDeviation = function () {
+		var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
+		return Math.sqrt(dojo.math.variance(array));
+	};
+	dojo.math.variance = function () {
+		var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
+		var mean = 0, squares = 0;
+		for (var i = 0; i < array.length; i++) {
+			mean += array[i];
+			squares += Math.pow(array[i], 2);
+		}
+		return (squares / array.length) - Math.pow(mean / array.length, 2);
+	};
+	dojo.math.range = function (a, b, step) {
+		if (arguments.length < 2) {
+			b = a;
+			a = 0;
+		}
+		if (arguments.length < 3) {
+			step = 1;
+		}
+		var range = [];
+		if (step > 0) {
+			for (var i = a; i < b; i += step) {
+				range.push(i);
+			}
+		} else {
+			if (step < 0) {
+				for (var i = a; i > b; i += step) {
+					range.push(i);
+				}
+			} else {
+				throw new Error("dojo.math.range: step must be non-zero");
+			}
+		}
+		return range;
+	};
+}});
+
+
+__CPAN_FILE__ src/loader_xd.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["require", moduleName + ".nls" + (bestLocale ? "." + bestLocale : ""]],
+definePackage: function(dojo){/*
+	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
+*/
+
+//Cross-domain package loader.
+
+//FIXME: How will xd loading work with debugAtAllCosts? Any bad interactions?
+
+dojo.hostenv.resetXd = function(){
+	//summary: Internal xd loader function. Resets the xd state.
+
+	//This flag indicates where or not we have crossed into xdomain territory. Once any package says
+	//it is cross domain, then the rest of the packages have to be treated as xdomain because we need
+	//to evaluate packages in order. If there is a xdomain package followed by a xhr package, we can't load
+	//the xhr package until the one before it finishes loading. The text of the xhr package will be converted
+	//to match the format for a xd package and put in the xd load queue.
+	this.isXDomain = djConfig.useXDomain || false;
+
+	this.xdTimer = 0;
+	this.xdInFlight = {};
+	this.xdOrderedReqs = [];
+	this.xdDepMap = {};
+	this.xdContents = [];
+	this.xdDefList = [];
+}
+
+//Call reset immediately to set the state.
+dojo.hostenv.resetXd();
+
+dojo.hostenv.createXdPackage = function(/*String*/contents, /*String*/resourceName, /*String=*/resourcePath){
+	//summary: Internal xd loader function. Creates an xd module source given an
+	//non-xd module contents.
+
+	//Find dependencies.
+	var deps = [];
+    var depRegExp = /dojo.(requireLocalization|require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv\.conditionalLoadModule|.hostenv\.loadModule|hostenv\.moduleLoaded)\(([\w\W]*?)\)/mg;
+    var match;
+	while((match = depRegExp.exec(contents)) != null){
+		if(match[1] == "requireLocalization"){
+			//Need to load the local bundles asap, since they are not
+			//part of the list of modules watched for loading.
+			eval(match[0]);
+		}else{
+			deps.push("\"" + match[1] + "\", " + match[2]);
+		}
+	}
+
+	//Create package object and the call to packageLoaded.
+	var output = [];
+	output.push("dojo.hostenv.packageLoaded({\n");
+
+	//Add dependencies
+	if(deps.length > 0){
+		output.push("depends: [");
+		for(var i = 0; i < deps.length; i++){
+			if(i > 0){
+				output.push(",\n");
+			}
+			output.push("[" + deps[i] + "]");
+		}
+		output.push("],");
+	}
+
+	//Add the contents of the file inside a function.
+	//Pass in dojo as an argument to the function to help with
+	//allowing multiple versions of dojo in a page.
+	output.push("\ndefinePackage: function(dojo){");
+	output.push(contents);
+	//Add isLocal property so we know if we have to do something different
+	//in debugAtAllCosts situations.
+	output.push("\n}, resourceName: '" + resourceName + "', resourcePath: '" + resourcePath + "'});");
+	
+	return output.join(""); //String
+}
+
+dojo.hostenv.loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){
+	//summary: Internal xd loader function. Overrides loadPath() from loader.js.
+	//xd loading requires slightly different behavior from loadPath().
+
+
+	//Only do getBaseScriptUri if path does not start with a URL with a protocol.
+	//If there is a colon before the first / then, we have a URL with a protocol.
+	var colonIndex = relpath.indexOf(":");
+	var slashIndex = relpath.indexOf("/");
+	var uri;
+	var currentIsXDomain = false;
+	if(colonIndex > 0 && colonIndex < slashIndex){
+		uri = relpath;
+		this.isXDomain = currentIsXDomain = true;
+	}else{
+		uri = this.getBaseScriptUri() + relpath;
+
+		//Is ithe base script URI-based URL a cross domain URL?
+		colonIndex = uri.indexOf(":");
+		slashIndex = uri.indexOf("/");
+		if(colonIndex > 0 && colonIndex < slashIndex && (!location.host || uri.indexOf("http://" + location.host) != 0)){
+			this.isXDomain = currentIsXDomain = true;
+		}
+	}
+
+	if(djConfig.cacheBust && dojo.render.html.capable) { uri += "?" + String(djConfig.cacheBust).replace(/\W+/g,""); }
+	try{
+		return ((!module || this.isXDomain) ? this.loadUri(uri, cb, currentIsXDomain, module) : this.loadUriAndCheck(uri, module, cb)); //boolean
+	}catch(e){
+		dojo.debug(e);
+		return false; //boolean
+	}
+}
+
+dojo.hostenv.loadUri = function(/*String*/uri, /*Function?*/cb, /*boolean*/currentIsXDomain, /*String?*/module){
+	//summary: Internal xd loader function. Overrides loadUri() from loader.js.
+	//		xd loading requires slightly different behavior from loadPath().
+	//description: Wanted to override getText(), but it is used by
+	//		the widget code in too many, synchronous ways right now.
+	if(this.loadedUris[uri]){
+		return 1; //boolean
+	}
+
+	//Add the module (package) to the list of modules.
+	//Only do this work if we have a modlue name. Otherwise,
+	//it is a non-xd i18n bundle, which can load immediately and does not
+	//need to be tracked.
+	if(this.isXDomain && module){
+		//If this is a __package__.js file, then this must be
+		//a package.* request (since xdomain can only work with the first
+		//path in a package search list. However, .* module names are not
+		//passed to this function, so do an adjustment here.
+		if(uri.indexOf("__package__") != -1){
+			module += ".*";
+		}
+
+		this.xdOrderedReqs.push(module);
+
+		//Add to waiting packages if it is an xdomain resource.
+		//Don't add non-xdomain i18n bundles, those get evaled immediately.
+		if(currentIsXDomain || uri.indexOf("/nls/") == -1){
+			this.xdInFlight[module] = true;
+
+			//Increment inFlightCount
+			//This will stop the modulesLoaded from firing all the way.
+			this.inFlightCount++;
+		}
+
+		//Start timer
+		if(!this.xdTimer){
+			this.xdTimer = setInterval("dojo.hostenv.watchInFlightXDomain();", 100);
+		}
+		this.xdStartTime = (new Date()).getTime();
+	}
+
+	if (currentIsXDomain){
+		//Fix name to be a .xd.fileextension name.
+		var lastIndex = uri.lastIndexOf('.');
+		if(lastIndex <= 0){
+			lastIndex = uri.length - 1;
+		}
+
+		var xdUri = uri.substring(0, lastIndex) + ".xd";
+		if(lastIndex != uri.length - 1){
+			xdUri += uri.substring(lastIndex, uri.length);
+		}
+
+		//Add to script src
+		var element = document.createElement("script");
+		element.type = "text/javascript";
+		element.src = xdUri;
+		if(!this.headElement){
+			this.headElement = document.getElementsByTagName("head")[0];
+
+			//Head element may not exist, particularly in html
+			//html 4 or tag soup cases where the page does not
+			//have a head tag in it. Use html element, since that will exist.
+			//Seems to be an issue mostly with Opera 9 and to lesser extent Safari 2
+			if(!this.headElement){
+				this.headElement = document.getElementsByTagName("html")[0];
+			}
+		}
+		this.headElement.appendChild(element);
+	}else{
+		var contents = this.getText(uri, null, true);
+		if(contents == null){ return 0; /*boolean*/}
+		
+		//If this is not xdomain, or if loading a i18n resource bundle, then send it down
+		//the normal eval/callback path.
+		if(this.isXDomain && uri.indexOf("/nls/") == -1){
+			var pkg = this.createXdPackage(contents, module, uri);
+			dj_eval(pkg);
+		}else{
+			if(cb){ contents = '('+contents+')'; }
+			var value = dj_eval(contents);
+			if(cb){
+				cb(value);
+			}
+		}
+	}
+
+	//These steps are done in the non-xd loader version of this function.
+	//Maintain these steps to fit in with the existing system.
+	this.loadedUris[uri] = true;
+	return 1; //boolean
+}
+
+dojo.hostenv.packageLoaded = function(/*Object*/pkg){
+	//summary: Internal xd loader function. Called by an xd module when
+	//it has been loaded via a script tag.
+	var deps = pkg.depends;
+	var requireList = null;
+	var requireAfterList = null;
+	var provideList = [];
+	if(deps && deps.length > 0){
+		var dep = null;
+		var insertHint = 0;
+		var attachedPackage = false;
+		for(var i = 0; i < deps.length; i++){
+			dep = deps[i];
+
+			//Look for specific dependency indicators.
+			if (dep[0] == "provide" || dep[0] == "hostenv.moduleLoaded"){
+				provideList.push(dep[1]);
+			}else{
+				if(!requireList){
+					requireList = [];
+				}
+				if(!requireAfterList){
+					requireAfterList = [];
+				}
+
+				var unpackedDeps = this.unpackXdDependency(dep);
+				if(unpackedDeps.requires){
+					requireList = requireList.concat(unpackedDeps.requires);
+				}
+				if(unpackedDeps.requiresAfter){
+					requireAfterList = requireAfterList.concat(unpackedDeps.requiresAfter);
+				}
+			}
+
+			//Call the dependency indicator to allow for the normal dojo setup.
+			//Only allow for one dot reference, for the hostenv.* type calls.
+			var depType = dep[0];
+			var objPath = depType.split(".");
+			if(objPath.length == 2){
+				dojo[objPath[0]][objPath[1]].apply(dojo[objPath[0]], dep.slice(1));
+			}else{
+				dojo[depType].apply(dojo, dep.slice(1));
+			}
+		}
+
+		//Save off the package contents for definition later.
+		var contentIndex = this.xdContents.push({
+				content: pkg.definePackage,
+				resourceName: pkg["resourceName"],
+				resourcePath: pkg["resourcePath"],
+				isDefined: false
+			}) - 1;
+
+		//Add provide/requires to dependency map.
+		for(var i = 0; i < provideList.length; i++){
+			this.xdDepMap[provideList[i]] = { requires: requireList, requiresAfter: requireAfterList, contentIndex: contentIndex };
+		}
+
+		//Now update the inflight status for any provided packages in this loaded package.
+		//Do this at the very end (in a *separate* for loop) to avoid shutting down the 
+		//inflight timer check too soon.
+		for(var i = 0; i < provideList.length; i++){
+			this.xdInFlight[provideList[i]] = false;
+		}
+	}
+}
+
+dojo.hostenv.xdLoadFlattenedBundle = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*Object*/bundleData){
+	//summary: Internal xd loader function. Used when loading
+	//a flattened localized bundle via a script tag.
+	locale = locale || "root";
+	var jsLoc = dojo.hostenv.normalizeLocale(locale).replace('-', '_');
+ 	var bundlePackage = [moduleName, "nls", bundleName].join(".");
+	var bundle = dojo.hostenv.startPackage(bundlePackage);
+	bundle[jsLoc] = bundleData;
+	
+	//Assign the bundle for the original locale(s) we wanted.
+	var mapName = [moduleName, jsLoc, bundleName].join(".");
+	var bundleMap = dojo.hostenv.xdBundleMap[mapName];
+	if(bundleMap){
+		for(var param in bundleMap){
+			bundle[param] = bundleData;
+		}
+	}
+};
+
+
+dojo.hostenv.xdBundleMap = {};
+
+dojo.xdRequireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String*/availableFlatLocales){
+	//summary: Internal xd loader function. The xd version of dojo.requireLocalization.
+	var locales = availableFlatLocales.split(",");
+	
+	//Find the best-match locale to load.
+	var jsLoc = dojo.hostenv.normalizeLocale(locale);
+
+	var bestLocale = "";
+	for(var i = 0; i < locales.length; i++){
+		//Locale must match from start of string.
+		if(jsLoc.indexOf(locales[i]) == 0){
+			if(locales[i].length > bestLocale.length){
+				bestLocale = locales[i];
+			}
+		}
+	}
+
+	var fixedBestLocale = bestLocale.replace('-', '_');
+	//See if the bundle we are going to use is already loaded.
+ 	var bundlePackage = dojo.evalObjPath([moduleName, "nls", bundleName].join("."));
+	if(bundlePackage && bundlePackage[fixedBestLocale]){
+		bundle[jsLoc.replace('-', '_')] = bundlePackage[fixedBestLocale];
+	}else{
+		//Need to remember what locale we wanted and which one we actually use.
+		//Then when we load the one we are actually using, use that bundle for the one
+		//we originally wanted.
+		var mapName = [moduleName, (fixedBestLocale||"root"), bundleName].join(".");
+		var bundleMap = dojo.hostenv.xdBundleMap[mapName];
+		if(!bundleMap){
+			bundleMap = dojo.hostenv.xdBundleMap[mapName] = {};
+		}
+		bundleMap[jsLoc.replace('-', '_')] = true;
+		
+		//Do just a normal dojo.require so the package tracking stuff works as usual.
+		dojo.require(moduleName + ".nls" + (bestLocale ? "." + bestLocale : "") + "." + bundleName);
+	}
+}
+
+;(function(){
+	// Simulate the extra locale work that dojo.requireLocalization does.
+
+	var extra = djConfig.extraLocale;
+	if(extra){
+		if(!extra instanceof Array){
+			extra = [extra];
+		}
+
+		dojo._xdReqLoc = dojo.xdRequireLocalization;
+		dojo.xdRequireLocalization = function(m, b, locale, fLocales){
+			dojo._xdReqLoc(m,b,locale, fLocales);
+			if(locale){return;}
+			for(var i=0; i<extra.length; i++){
+				dojo._xdReqLoc(m,b,extra[i], fLocales);
+			}
+		};
+	}
+})();
+
+
+//This is a bit brittle: it has to know about the dojo methods that deal with dependencies
+//It would be ideal to intercept the actual methods and do something fancy at that point,
+//but I have concern about knowing which provide to match to the dependency in that case,
+//since scripts can load whenever they want, and trigger new calls to dojo.hostenv.packageLoaded().
+dojo.hostenv.unpackXdDependency = function(dep){
+	//summary: Internal xd loader function. Determines what to do with a dependency
+	//that was listed in an xd version of a module contents.
+
+	//Extract the dependency(ies).
+	var newDeps = null;
+	var newAfterDeps = null;
+	switch(dep[0]){
+		case "requireIf":
+		case "requireAfterIf":
+		case "conditionalRequire":
+			//First arg (dep[1]) is the test. Depedency is dep[2].
+			if((dep[1] === true)||(dep[1]=="common")||(dep[1] && dojo.render[dep[1]].capable)){
+				newDeps = [{name: dep[2], content: null}];
+			}
+			break;
+		case "requireAll":
+			//the arguments are an array, each element a call to require.
+			//Get rid of first item, which is "requireAll".
+			dep.shift();
+			newDeps = dep;
+			dojo.hostenv.flattenRequireArray(newDeps);
+			break;
+		case "kwCompoundRequire":
+		case "hostenv.conditionalLoadModule":
+			var modMap = dep[1];
+			var common = modMap["common"]||[];
+			var newDeps = (modMap[dojo.hostenv.name_]) ? common.concat(modMap[dojo.hostenv.name_]||[]) : common.concat(modMap["default"]||[]);	
+			dojo.hostenv.flattenRequireArray(newDeps);
+			break;
+		case "require":
+		case "requireAfter":
+		case "hostenv.loadModule":
+			//Just worry about dep[1]
+			newDeps = [{name: dep[1], content: null}];
+			break;
+	}
+
+	//The requireAfterIf or requireAfter needs to be evaluated after the current package is evaluated.
+	if(dep[0] == "requireAfterIf" || dep[0] == "requireIf"){
+		newAfterDeps = newDeps;
+		newDeps = null;
+	}
+	return {requires: newDeps, requiresAfter: newAfterDeps}; //Object
+}
+
+dojo.hostenv.xdWalkReqs = function(){
+	//summary: Internal xd loader function. 
+	//Walks the requires and evaluates package contents in
+	//the right order.
+	var reqChain = null;
+	var req;
+	for(var i = 0; i < this.xdOrderedReqs.length; i++){
+		req = this.xdOrderedReqs[i];
+		if(this.xdDepMap[req]){
+			reqChain = [req];
+			reqChain[req] = true; //Allow for fast lookup of the req in the array
+			this.xdEvalReqs(reqChain);
+		}
+	}
+}
+
+dojo.hostenv.xdEvalReqs = function(/*Array*/reqChain){
+	//summary: Internal xd loader function. 
+	//Does a depth first, breadth second search and eval of required modules.
+	while(reqChain.length > 0){
+		var req = reqChain[reqChain.length - 1];
+		var pkg = this.xdDepMap[req];
+		if(pkg){
+			//Trace down any requires for this package.
+			//START dojo.hostenv.xdTraceReqs() inlining for small Safari 2.0 call stack
+			var reqs = pkg.requires;
+			if(reqs && reqs.length > 0){
+				var nextReq;
+				for(var i = 0; i < reqs.length; i++){
+					nextReq = reqs[i].name;
+					if(nextReq && !reqChain[nextReq]){
+						//New req depedency. Follow it down.
+						reqChain.push(nextReq);
+						reqChain[nextReq] = true;
+						this.xdEvalReqs(reqChain);
+					}
+				}
+			}
+			//END dojo.hostenv.xdTraceReqs() inlining for small Safari 2.0 call stack
+
+			//Evaluate the package.
+			var contents = this.xdContents[pkg.contentIndex];
+			if(!contents.isDefined){
+				var content = contents.content;
+				content["resourceName"] = contents["resourceName"];
+				content["resourcePath"] = contents["resourcePath"];
+				this.xdDefList.push(content);
+				contents.isDefined = true;
+			}
+			this.xdDepMap[req] = null;
+
+			//Trace down any requireAfters for this package.
+			//START dojo.hostenv.xdTraceReqs() inlining for small Safari 2.0 call stack
+			var reqs = pkg.requiresAfter;
+			if(reqs && reqs.length > 0){
+				var nextReq;
+				for(var i = 0; i < reqs.length; i++){
+					nextReq = reqs[i].name;
+					if(nextReq && !reqChain[nextReq]){
+						//New req depedency. Follow it down.
+						reqChain.push(nextReq);
+						reqChain[nextReq] = true;
+						this.xdEvalReqs(reqChain);
+					}
+				}
+			}
+			//END dojo.hostenv.xdTraceReqs() inlining for small Safari 2.0 call stack
+		}
+
+		//Done with that require. Remove it and go to the next one.
+		reqChain.pop();
+	}
+}
+
+dojo.hostenv.clearXdInterval = function(){
+	//summary: Internal xd loader function.
+	//Clears the interval timer used to check on the
+	//status of in-flight xd module resource requests.
+	clearInterval(this.xdTimer);
+	this.xdTimer = 0;
+}
+
+dojo.hostenv.watchInFlightXDomain = function(){
+	//summary: Internal xd loader function.
+	//Monitors in-flight requests for xd module resources.
+
+	//Make sure we haven't waited timed out.
+	var waitInterval = (djConfig.xdWaitSeconds || 15) * 1000;
+
+	if(this.xdStartTime + waitInterval < (new Date()).getTime()){
+		this.clearXdInterval();
+		var noLoads = "";
+		for(var param in this.xdInFlight){
+			if(this.xdInFlight[param]){
+				noLoads += param + " ";
+			}
+		}
+		dojo.raise("Could not load cross-domain packages: " + noLoads);
+	}
+
+	//If any are true, then still waiting.
+	//Come back later.	
+	for(var param in this.xdInFlight){
+		if(this.xdInFlight[param]){
+			return;
+		}
+	}
+
+	//All done loading. Clean up and notify that we are loaded.
+	this.clearXdInterval();
+
+	this.xdWalkReqs();
+	
+	var defLength = this.xdDefList.length;
+	for(var i= 0; i < defLength; i++){
+		var content = dojo.hostenv.xdDefList[i];
+		if(djConfig["debugAtAllCosts"] && content["resourceName"]){
+			if(!this["xdDebugQueue"]){
+				this.xdDebugQueue = [];
+			}
+			this.xdDebugQueue.push({resourceName: content.resourceName, resourcePath: content.resourcePath});
+		}else{
+			//Evaluate the package to bring it into being.
+			//Pass dojo in so that later, to support multiple versions of dojo
+			//in a page, we can pass which version of dojo to use.			
+			content(dojo);
+		}
+	}
+
+	//Evaluate any packages that were not evaled before.
+	//This normally shouldn't happen with proper dojo.provide and dojo.require
+	//usage, but providing it just in case. Note that these may not be executed
+	//in the original order that the developer intended.
+	//Pass dojo in so that later, to support multiple versions of dojo
+	//in a page, we can pass which version of dojo to use.
+	for(var i = 0; i < this.xdContents.length; i++){
+		var current = this.xdContents[i];
+		if(current.content && !current.isDefined){
+			current.content(dojo);
+		}
+	}
+
+	//Clean up for the next round of xd loading.
+	this.resetXd();
+
+	if(this["xdDebugQueue"] && this.xdDebugQueue.length > 0){
+		this.xdDebugFileLoaded();
+	}else{
+		this.xdNotifyLoaded();
+	}
+}
+
+dojo.hostenv.xdNotifyLoaded = function(){
+	//Clear inflight count so we will finally do finish work.
+	this.inFlightCount = 0; 
+	
+	//Only trigger call loaded if dj_load_init has run.
+	if(this._djInitFired && !this.loadNotifying){
+		this.callLoaded();
+	}
+}
+
+dojo.hostenv.flattenRequireArray = function(/*Array*/target){
+	//summary: Internal xd loader function.
+	//Flattens an array of arrays into a one-level deep array.
+
+	//Each result could be an array of 3 elements  (the 3 arguments to dojo.require).
+	//We only need the first one.
+	if(target){
+		for(var i = 0; i < target.length; i++){
+			if(target[i] instanceof Array){
+				target[i] = {name: target[i][0], content: null};
+			}else{
+				target[i] = {name: target[i], content: null};
+			}
+		}
+	}
+}
+
+
+dojo.hostenv.xdHasCalledPreload = false;
+dojo.hostenv.xdRealCallLoaded = dojo.hostenv.callLoaded;
+dojo.hostenv.callLoaded = function(){
+	//summary: Internal xd loader function. Overrides callLoaded() from loader.js
+	//description: The method is overridden because xd loading needs to preload 
+	//any flattened i18n bundles before dojo starts executing code, 
+	//since xd loading cannot do it synchronously, as the i18n code normally expects.
+
+	//If getModulePrefix for dojo returns anything other than "src", that means
+	//there is a path registered for dojo, with implies that dojo was xdomain loaded.
+	if(this.xdHasCalledPreload || dojo.hostenv.getModulePrefix("dojo") == "src" || !this.localesGenerated){
+		this.xdRealCallLoaded();
+	}else{
+		if(this.localesGenerated){
+			this.registerNlsPrefix = function(){
+				//Need to set the nls prefix to be the xd location.
+				dojo.registerModulePath("nls", dojo.hostenv.getModulePrefix("dojo") + "/../nls");	
+			};
+			this.preloadLocalizations();
+		}
+	}
+	this.xdHasCalledPreload = true;
+}
+
+}});
+
 __CPAN_FILE__ src/loader.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -1051,6 +3248,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 (function () {
 	var _addHostEnv = {pkgFileName:"__package__", loading_modules_:{}, loaded_modules_:{}, addedToLoadingCount:[], removedFromLoadingCount:[], inFlightCount:0, modulePrefixes_:{dojo:{name:"dojo", value:"src"}}, setModulePrefix:function (module, prefix) {
 		this.modulePrefixes_[module] = {name:module, value:prefix};
@@ -1499,6 +3698,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.storage");
 dojo.require("dojo.lang.*");
 dojo.require("dojo.event.*");
@@ -1626,6 +3827,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.style");
 dojo.require("dojo.lang.common");
 dojo.kwCompoundRequire({browser:["dojo.html.style"]});
@@ -1633,6 +3836,182 @@
 dojo.lang.mixin(dojo.style, dojo.html);
 
 
+__CPAN_FILE__ src/style.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.style"], ["require", "dojo.lang.common"], ["kwCompoundRequire", {browser:["dojo.html.style"]}]], definePackage:function (dojo) {
+	dojo.provide("dojo.style");
+	dojo.require("dojo.lang.common");
+	dojo.kwCompoundRequire({browser:["dojo.html.style"]});
+	dojo.deprecated("dojo.style", "replaced by dojo.html.style", "0.5");
+	dojo.lang.mixin(dojo.style, dojo.html);
+}});
+
+
+__CPAN_FILE__ src/behavior.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.behavior"], ["require", "dojo.event.*"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	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");
+}});
+
+
 __CPAN_FILE__ src/data.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -1644,6 +4023,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data");
 dojo.data = {};
 
@@ -1659,6 +4040,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.browser_debug_xd");
 dojo.nonDebugProvide = dojo.provide;
 dojo.provide = function (resourceName) {
@@ -1697,6 +4080,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.svg");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.dom");
@@ -1945,6 +4330,238 @@
 };
 
 
+__CPAN_FILE__ src/hostenv_svg.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["require", '" + moduleName + "'],
+["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]]],
+definePackage: function(dojo){/*
+	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
+*/
+
+//	hostenv_svg
+if(typeof window == 'undefined'){
+	dojo.raise("attempt to use adobe svg hostenv when no window object");
+}
+dojo.debug = function(){ 
+	if (!djConfig.isDebug) { return; }
+	var args = arguments;
+	var isJUM = dj_global["jum"];
+	var s = isJUM ? "": "DEBUG: ";
+	for (var i = 0; i < args.length; ++i){ s += args[i]; }
+	if (isJUM){ // this seems to be the only way to get JUM to "play nice"
+		jum.debug(s);
+	} else{ 
+		dojo.hostenv.println(s);
+	}
+};
+
+//	set up dojo.render.
+dojo.render.name = navigator.appName;
+dojo.render.ver = parseFloat(navigator.appVersion, 10);
+switch(navigator.platform){
+	case "MacOS":
+		dojo.render.os.osx =  true;
+		break;
+	case "Linux":
+		dojo.render.os.linux =  true;
+		break;
+	case "Windows":
+		dojo.render.os.win =  true;
+		break;
+	default:
+		dojo.render.os.linux = true;
+		break;
+};
+dojo.render.svg.capable = true;
+dojo.render.svg.support.builtin = true;
+//	FIXME the following two is a big-ass hack for now.
+dojo.render.svg.moz = ((navigator.userAgent.indexOf("Gecko") >= 0) && (!((navigator.appVersion.indexOf("Konqueror") >= 0) || (navigator.appVersion.indexOf("Safari") >= 0))));
+dojo.render.svg.adobe = (window.parseXML != null);
+
+//	agent-specific implementations.
+
+//	from old hostenv_adobesvg.
+dojo.hostenv.startPackage("dojo.hostenv");
+dojo.hostenv.println = function(s){ 
+	try {
+		var ti = document.createElement("text");
+		ti.setAttribute("x","50");
+		ti.setAttribute("y", (25 + 15 * document.getElementsByTagName("text").length));
+		ti.appendChild(document.createTextNode(s));
+		document.documentElement.appendChild(ti);
+	} catch(e){ }
+};
+dojo.hostenv.name_ = "svg";
+
+//	expected/defined by bootstrap1.js
+dojo.hostenv.setModulePrefix = function(module, prefix){ };
+dojo.hostenv.getModulePrefix = function(module){ };
+dojo.hostenv.getTextStack = [];
+dojo.hostenv.loadUriStack = [];
+dojo.hostenv.loadedUris = [];
+dojo.hostenv.modules_ = {};
+dojo.hostenv.modulesLoadedFired = false;
+dojo.hostenv.modulesLoadedListeners = [];
+dojo.hostenv.getText = function(uri, cb, data){ 
+	if (!cb) var cb = function(result){ window.alert(result); };
+	if (!data) {
+		window.getUrl(uri, cb);
+	} else {
+		window.postUrl(uri, data, cb);
+	}
+};
+dojo.hostenv.getLibaryScriptUri = function(){ };
+
+dojo.hostenv.loadUri = function(uri){ };
+dojo.hostenv.loadUriAndCheck = function(uri, module){ };
+
+//	aliased in loader.js, don't ignore
+//	we are going to kill loadModule for the first round of SVG stuff, and include stuff manually.
+dojo.hostenv.loadModule = function(moduleName){
+	//	just like startPackage, but this time we're just checking to make sure it exists already.
+	var a = moduleName.split(".");
+	var currentObj = window;
+	var s = [];
+	for (var i = 0; i < a.length; i++){
+		if (a[i] == "*") continue;
+		s.push(a[i]);
+		if (!currentObj[a[i]]){
+			dojo.raise("dojo.require('" + moduleName + "'): module does not exist.");
+		} else currentObj = currentObj[a[i]];
+	}
+	return; 
+};
+dojo.hostenv.startPackage = function(moduleName){
+	var a = moduleName.split(".");
+	var currentObj = window;
+	var s = [];
+	for (var i = 0; i < a.length; i++){
+		if (a[i] == "*") continue;
+		s.push(a[i]);
+		if (!currentObj[a[i]]) currentObj[a[i]] = {};
+		currentObj = currentObj[a[i]];
+	}
+	return; 
+};
+
+//	wrapper objects for ASVG
+if (window.parseXML){
+	window.XMLSerialzer = function(){
+		//	based on WebFX RichTextControl getXHTML() function.
+		function nodeToString(n, a) {
+			function fixText(s) { return String(s).replace(/\&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;"); }
+			function fixAttribute(s) { return fixText(s).replace(/\"/g, "&quot;"); }
+			switch (n.nodeType) {
+				case 1:	{	//	ELEMENT
+					var name = n.nodeName;
+					a.push("<" + name);
+					for (var i = 0; i < n.attributes.length; i++) {
+						if (n.attributes.item(i).specified) {
+							a.push(" " + n.attributes.item(i).nodeName.toLowerCase() + "=\"" + fixAttribute(n.attributes.item(i).nodeValue) + "\"");
+						}
+					}
+					if (n.canHaveChildren || n.hasChildNodes()) {
+						a.push(">");
+						for (var i = 0; i < n.childNodes.length; i++) nodeToString(n.childNodes.item(i), a);
+						a.push("</" + name + ">\n");
+					} else a.push(" />\n");
+					break;
+				}
+				case 3: {	//	TEXT
+					a.push(fixText(n.nodeValue));
+					break;
+				}
+				case 4: {	//	CDATA
+					a.push("<![CDA" + "TA[\n" + n.nodeValue + "\n]" + "]>");
+					break;
+				}
+				case 7:{	//	PROCESSING INSTRUCTION
+					a.push(n.nodeValue);
+					if (/(^<\?xml)|(^<\!DOCTYPE)/.test(n.nodeValue)) a.push("\n");
+					break;
+				}
+				case 8:{	//	COMMENT
+					a.push("<!-- " + n.nodeValue + " -->\n");
+					break;
+				}
+				case 9:		//	DOCUMENT
+				case 11:{	//	DOCUMENT FRAGMENT
+					for (var i = 0; i < n.childNodes.length; i++) nodeToString(n.childNodes.item(i), a);
+					break;
+				}
+				default:{
+					a.push("<!--\nNot Supported:\n\n" + "nodeType: " + n.nodeType + "\nnodeName: " + n.nodeName + "\n-->");
+				}
+			}
+		}
+		this.serializeToString = function(node){
+			var a = [];
+			nodeToString(node, a);
+			return a.join("");
+		};
+	};
+
+	window.DOMParser = function(){
+		//	mimetype is basically ignored
+		this.parseFromString = function(s){
+			return parseXML(s, window.document);
+		}
+	};
+
+	window.XMLHttpRequest = function(){
+		//	we ignore the setting and getting of content-type.
+		var uri = null;
+		var method = "POST";
+		var isAsync = true;	
+		var cb = function(d){
+			this.responseText = d.content;
+			try {
+				this.responseXML = parseXML(this.responseText, window.document);
+			} catch(e){}
+			this.status = "200";
+			this.statusText = "OK";
+			if (!d.success) {
+				this.status = "500";
+				this.statusText = "Internal Server Error";
+			}
+			this.onload();
+			this.onreadystatechange();
+		};
+		this.onload = function(){};
+		this.readyState = 4;
+		this.onreadystatechange = function(){};
+		this.status = 0;
+		this.statusText = "";
+		this.responseBody = null;
+		this.responseStream = null;
+		this.responseXML = null;
+		this.responseText = null;
+		this.abort = function(){ return; };
+		this.getAllResponseHeaders = function(){ return []; };
+		this.getResponseHeader = function(n){ return null; };
+		this.setRequestHeader = function(nm, val){ };
+		this.open = function(meth, url, async){ 
+			method = meth;
+			uri = url;
+		};
+		this.send = function(data){
+			var d = data || null;
+			if (method == "GET") getURL(uri, cb);
+			else postURL(uri, data, cb);
+		};
+	};
+}
+
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+}});
+
 __CPAN_FILE__ src/validate.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -1956,6 +4573,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate");
 dojo.require("dojo.validate.common");
 
@@ -1971,11 +4590,199 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.crypto");
 dojo.crypto.cipherModes = {ECB:0, CBC:1, PCBC:2, CFB:3, OFB:4, CTR:5};
 dojo.crypto.outputTypes = {Base64:0, Hex:1, String:2, Raw:3};
 
 
+__CPAN_FILE__ src/hostenv_jsc.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]]],
+definePackage: function(dojo){/*
+	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
+*/
+
+/*
+ * JScript .NET jsc
+ *
+ */
+
+dojo.hostenv.name_ = 'jsc';
+
+// Sanity check this is the right hostenv.
+// See the Rotor source code jscript/engine/globalobject.cs for what globals
+// are available.
+if((typeof ScriptEngineMajorVersion != 'function')||(ScriptEngineMajorVersion() < 7)){
+	dojo.raise("attempt to use JScript .NET host environment with inappropriate ScriptEngine"); 
+}
+
+// for more than you wanted to know about why this import is required even if
+// we fully qualify all symbols, see
+// http://groups.google.com/groups?th=f050c7aeefdcbde2&rnum=12
+import System;
+
+dojo.hostenv.getText = function(uri){
+	if(!System.IO.File.Exists(uri)){
+		// dojo.raise("No such file '" + uri + "'");
+		return 0;
+	}
+	var reader = new System.IO.StreamReader(uri);
+	var contents : String = reader.ReadToEnd();
+	return contents;
+}
+
+dojo.hostenv.loadUri = function(uri){
+	var contents = this.getText(uri);
+	if(!contents){
+		dojo.raise("got no back contents from uri '" + uri + "': " + contents);
+	}
+	// TODO: in JScript .NET, eval will not affect the symbol table of the current code?
+	var value = dj_eval(contents);
+	dojo.debug("jsc eval of contents returned: ", value);
+	return 1;
+
+	// for an example doing runtime code compilation, see:
+	// http://groups.google.com/groups?selm=eQ1aeciCBHA.1644%40tkmsftngp05&rnum=6
+	// Microsoft.JScript or System.CodeDom.Compiler ?
+	// var engine = new Microsoft.JScript.Vsa.VsaEngine()
+	// what about loading a js file vs. a dll?
+	// GetObject("script:" . uri);
+}
+
+/* The System.Environment object is useful:
+    print ("CommandLine='" + System.Environment.CommandLine + "' " +
+	   "program name='" + System.Environment.GetCommandLineArgs()[0] + "' " +
+	   "CurrentDirectory='" + System.Environment.CurrentDirectory + "' " +
+	   "StackTrace='" + System.Environment.StackTrace + "'");
+*/
+
+// same as System.Console.WriteLine
+// sigh; Rotor treats symbol "print" at parse time without actually putting it
+// in the builtin symbol table.
+// Note that the print symbol is not available if jsc is run with the "/print-"
+// option.
+dojo.hostenv.println = function(s){
+	print(s); // = print
+}
+
+dojo.hostenv.getLibraryScriptUri = function(){
+	return System.Environment.GetCommandLineArgs()[0];
+}
+
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+}});
+
+__CPAN_FILE__ src/json.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.json"], ["require", "dojo.lang.func"], ["require", "dojo.string.extras"], ["require", "dojo.AdapterRegistry"]], definePackage:function (dojo) {
+	dojo.provide("dojo.json");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.string.extras");
+	dojo.require("dojo.AdapterRegistry");
+	dojo.json = {jsonRegistry:new dojo.AdapterRegistry(), register:function (name, check, wrap, override) {
+		dojo.json.jsonRegistry.register(name, check, wrap, override);
+	}, evalJson:function (json) {
+		try {
+			return eval("(" + json + ")");
+		}
+		catch (e) {
+			dojo.debug(e);
+			return json;
+		}
+	}, serialize:function (o) {
+		var objtype = typeof (o);
+		if (objtype == "undefined") {
+			return "undefined";
+		} else {
+			if ((objtype == "number") || (objtype == "boolean")) {
+				return o + "";
+			} else {
+				if (o === null) {
+					return "null";
+				}
+			}
+		}
+		if (objtype == "string") {
+			return dojo.string.escapeString(o);
+		}
+		var me = arguments.callee;
+		var newObj;
+		if (typeof (o.__json__) == "function") {
+			newObj = o.__json__();
+			if (o !== newObj) {
+				return me(newObj);
+			}
+		}
+		if (typeof (o.json) == "function") {
+			newObj = o.json();
+			if (o !== newObj) {
+				return me(newObj);
+			}
+		}
+		if (objtype != "function" && typeof (o.length) == "number") {
+			var res = [];
+			for (var i = 0; i < o.length; i++) {
+				var val = me(o[i]);
+				if (typeof (val) != "string") {
+					val = "undefined";
+				}
+				res.push(val);
+			}
+			return "[" + res.join(",") + "]";
+		}
+		try {
+			window.o = o;
+			newObj = dojo.json.jsonRegistry.match(o);
+			return me(newObj);
+		}
+		catch (e) {
+		}
+		if (objtype == "function") {
+			return null;
+		}
+		res = [];
+		for (var k in o) {
+			var useKey;
+			if (typeof (k) == "number") {
+				useKey = "\"" + k + "\"";
+			} else {
+				if (typeof (k) == "string") {
+					useKey = dojo.string.escapeString(k);
+				} else {
+					continue;
+				}
+			}
+			val = me(o[k]);
+			if (typeof (val) != "string") {
+				continue;
+			}
+			res.push(useKey + ":" + val);
+		}
+		return "{" + res.join(",") + "}";
+	}};
+}});
+
+
 __CPAN_FILE__ src/docs.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -2660,6 +5467,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.regexp");
 dojo.evalObjPath("dojo.regexp.us", true);
 dojo.regexp.tld = function (flags) {
@@ -3025,6 +5834,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.hostenv.println = function (line) {
 	if (arguments.length > 0) {
 		print(arguments[0]);
@@ -3177,6 +5988,45 @@
 dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
 
+__CPAN_FILE__ src/string.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.string"], ["require", "dojo.string.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.string");
+	dojo.require("dojo.string.common");
+}});
+
+
+__CPAN_FILE__ src/crypto.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.crypto"]], definePackage:function (dojo) {
+	dojo.provide("dojo.crypto");
+	dojo.crypto.cipherModes = {ECB:0, CBC:1, PCBC:2, CFB:3, OFB:4, CTR:5};
+	dojo.crypto.outputTypes = {Base64:0, Hex:1, String:2, Raw:3};
+}});
+
+
 __CPAN_FILE__ src/lang.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3188,6 +6038,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang");
 dojo.require("dojo.lang.common");
 dojo.deprecated("dojo.lang", "replaced by dojo.lang.common", "0.5");
@@ -3204,6 +6056,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 var dj_global = this;
 var dj_currentContext = this;
 function dj_undef(name, object) {
@@ -3219,7 +6073,7 @@
 	return dj_currentContext;
 };
 dojo.locale = djConfig.locale;
-dojo.version = {major:0, minor:4, patch:2, flag:"", revision:Number("$Rev: 7616 $".match(/[0-9]+/)[0]), toString:function () {
+dojo.version = {major:0, minor:4, patch:3, flag:"", revision:Number("$Rev: 8617 $".match(/[0-9]+/)[0]), toString:function () {
 	with (dojo.version) {
 		return major + "." + minor + "." + patch + flag + " (" + revision + ")";
 	}
@@ -3353,6 +6207,391 @@
 };
 
 
+__CPAN_FILE__ src/dom.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dom"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dom");
+	dojo.dom.ELEMENT_NODE = 1;
+	dojo.dom.ATTRIBUTE_NODE = 2;
+	dojo.dom.TEXT_NODE = 3;
+	dojo.dom.CDATA_SECTION_NODE = 4;
+	dojo.dom.ENTITY_REFERENCE_NODE = 5;
+	dojo.dom.ENTITY_NODE = 6;
+	dojo.dom.PROCESSING_INSTRUCTION_NODE = 7;
+	dojo.dom.COMMENT_NODE = 8;
+	dojo.dom.DOCUMENT_NODE = 9;
+	dojo.dom.DOCUMENT_TYPE_NODE = 10;
+	dojo.dom.DOCUMENT_FRAGMENT_NODE = 11;
+	dojo.dom.NOTATION_NODE = 12;
+	dojo.dom.dojoml = "http://www.dojotoolkit.org/2004/dojoml";
+	dojo.dom.xmlns = {svg:"http://www.w3.org/2000/svg", smil:"http://www.w3.org/2001/SMIL20/", mml:"http://www.w3.org/1998/Math/MathML", cml:"http://www.xml-cml.org", xlink:"http://www.w3.org/1999/xlink", xhtml:"http://www.w3.org/1999/xhtml", xul:"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", xbl:"http://www.mozilla.org/xbl", fo:"http://www.w3.org/1999/XSL/Format", xsl:"http://www.w3.org/1999/XSL/Transform", xslt:"http://www.w3.org/1999/XSL/Transform", xi:"http://www.w3.org/2001/XInclude", xforms:"http://www.w3.org/2002/01/xforms", saxon:"http://icl.com/saxon", xalan:"http://xml.apache.org/xslt", xsd:"http://www.w3.org/2001/XMLSchema", dt:"http://www.w3.org/2001/XMLSchema-datatypes", xsi:"http://www.w3.org/2001/XMLSchema-instance", rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#", rdfs:"http://www.w3.org/2000/01/rdf-schema#", dc:"http://purl.org/dc/elements/1.1/", dcq:"http://purl.org/dc/qualifiers/1.0", "soap-env":"http://schemas.xmlsoap.org/soap/envelope/", wsdl:"http://schemas.xmlsoap.org/wsdl/", AdobeExtensions:"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"};
+	dojo.dom.isNode = function (wh) {
+		if (typeof Element == "function") {
+			try {
+				return wh instanceof Element;
+			}
+			catch (e) {
+			}
+		} else {
+			return wh && !isNaN(wh.nodeType);
+		}
+	};
+	dojo.dom.getUniqueId = function () {
+		var _document = dojo.doc();
+		do {
+			var id = "dj_unique_" + (++arguments.callee._idIncrement);
+		} while (_document.getElementById(id));
+		return id;
+	};
+	dojo.dom.getUniqueId._idIncrement = 0;
+	dojo.dom.firstElement = dojo.dom.getFirstChildElement = function (parentNode, tagName) {
+		var node = parentNode.firstChild;
+		while (node && node.nodeType != dojo.dom.ELEMENT_NODE) {
+			node = node.nextSibling;
+		}
+		if (tagName && node && node.tagName && node.tagName.toLowerCase() != tagName.toLowerCase()) {
+			node = dojo.dom.nextElement(node, tagName);
+		}
+		return node;
+	};
+	dojo.dom.lastElement = dojo.dom.getLastChildElement = function (parentNode, tagName) {
+		var node = parentNode.lastChild;
+		while (node && node.nodeType != dojo.dom.ELEMENT_NODE) {
+			node = node.previousSibling;
+		}
+		if (tagName && node && node.tagName && node.tagName.toLowerCase() != tagName.toLowerCase()) {
+			node = dojo.dom.prevElement(node, tagName);
+		}
+		return node;
+	};
+	dojo.dom.nextElement = dojo.dom.getNextSiblingElement = function (node, tagName) {
+		if (!node) {
+			return null;
+		}
+		do {
+			node = node.nextSibling;
+		} while (node && node.nodeType != dojo.dom.ELEMENT_NODE);
+		if (node && tagName && tagName.toLowerCase() != node.tagName.toLowerCase()) {
+			return dojo.dom.nextElement(node, tagName);
+		}
+		return node;
+	};
+	dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement = function (node, tagName) {
+		if (!node) {
+			return null;
+		}
+		if (tagName) {
+			tagName = tagName.toLowerCase();
+		}
+		do {
+			node = node.previousSibling;
+		} while (node && node.nodeType != dojo.dom.ELEMENT_NODE);
+		if (node && tagName && tagName.toLowerCase() != node.tagName.toLowerCase()) {
+			return dojo.dom.prevElement(node, tagName);
+		}
+		return node;
+	};
+	dojo.dom.moveChildren = function (srcNode, destNode, trim) {
+		var count = 0;
+		if (trim) {
+			while (srcNode.hasChildNodes() && srcNode.firstChild.nodeType == dojo.dom.TEXT_NODE) {
+				srcNode.removeChild(srcNode.firstChild);
+			}
+			while (srcNode.hasChildNodes() && srcNode.lastChild.nodeType == dojo.dom.TEXT_NODE) {
+				srcNode.removeChild(srcNode.lastChild);
+			}
+		}
+		while (srcNode.hasChildNodes()) {
+			destNode.appendChild(srcNode.firstChild);
+			count++;
+		}
+		return count;
+	};
+	dojo.dom.copyChildren = function (srcNode, destNode, trim) {
+		var clonedNode = srcNode.cloneNode(true);
+		return this.moveChildren(clonedNode, destNode, trim);
+	};
+	dojo.dom.replaceChildren = function (node, newChild) {
+		var nodes = [];
+		if (dojo.render.html.ie) {
+			for (var i = 0; i < node.childNodes.length; i++) {
+				nodes.push(node.childNodes[i]);
+			}
+		}
+		dojo.dom.removeChildren(node);
+		node.appendChild(newChild);
+		for (var i = 0; i < nodes.length; i++) {
+			dojo.dom.destroyNode(nodes[i]);
+		}
+	};
+	dojo.dom.removeChildren = function (node) {
+		var count = node.childNodes.length;
+		while (node.hasChildNodes()) {
+			dojo.dom.removeNode(node.firstChild);
+		}
+		return count;
+	};
+	dojo.dom.replaceNode = function (node, newNode) {
+		return node.parentNode.replaceChild(newNode, node);
+	};
+	dojo.dom.destroyNode = function (node) {
+		if (node.parentNode) {
+			node = dojo.dom.removeNode(node);
+		}
+		if (node.nodeType != 3) {
+			if (dojo.evalObjPath("dojo.event.browser.clean", false)) {
+				dojo.event.browser.clean(node);
+			}
+			if (dojo.render.html.ie) {
+				node.outerHTML = "";
+			}
+		}
+	};
+	dojo.dom.removeNode = function (node) {
+		if (node && node.parentNode) {
+			return node.parentNode.removeChild(node);
+		}
+	};
+	dojo.dom.getAncestors = function (node, filterFunction, returnFirstHit) {
+		var ancestors = [];
+		var isFunction = (filterFunction && (filterFunction instanceof Function || typeof filterFunction == "function"));
+		while (node) {
+			if (!isFunction || filterFunction(node)) {
+				ancestors.push(node);
+			}
+			if (returnFirstHit && ancestors.length > 0) {
+				return ancestors[0];
+			}
+			node = node.parentNode;
+		}
+		if (returnFirstHit) {
+			return null;
+		}
+		return ancestors;
+	};
+	dojo.dom.getAncestorsByTag = function (node, tag, returnFirstHit) {
+		tag = tag.toLowerCase();
+		return dojo.dom.getAncestors(node, function (el) {
+			return ((el.tagName) && (el.tagName.toLowerCase() == tag));
+		}, returnFirstHit);
+	};
+	dojo.dom.getFirstAncestorByTag = function (node, tag) {
+		return dojo.dom.getAncestorsByTag(node, tag, true);
+	};
+	dojo.dom.isDescendantOf = function (node, ancestor, guaranteeDescendant) {
+		if (guaranteeDescendant && node) {
+			node = node.parentNode;
+		}
+		while (node) {
+			if (node == ancestor) {
+				return true;
+			}
+			node = node.parentNode;
+		}
+		return false;
+	};
+	dojo.dom.innerXML = function (node) {
+		if (node.innerXML) {
+			return node.innerXML;
+		} else {
+			if (node.xml) {
+				return node.xml;
+			} else {
+				if (typeof XMLSerializer != "undefined") {
+					return (new XMLSerializer()).serializeToString(node);
+				}
+			}
+		}
+	};
+	dojo.dom.createDocument = function () {
+		var doc = null;
+		var _document = dojo.doc();
+		if (!dj_undef("ActiveXObject")) {
+			var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
+			for (var i = 0; i < prefixes.length; i++) {
+				try {
+					doc = new ActiveXObject(prefixes[i] + ".XMLDOM");
+				}
+				catch (e) {
+				}
+				if (doc) {
+					break;
+				}
+			}
+		} else {
+			if ((_document.implementation) && (_document.implementation.createDocument)) {
+				doc = _document.implementation.createDocument("", "", null);
+			}
+		}
+		return doc;
+	};
+	dojo.dom.createDocumentFromText = function (str, mimetype) {
+		if (!mimetype) {
+			mimetype = "text/xml";
+		}
+		if (!dj_undef("DOMParser")) {
+			var parser = new DOMParser();
+			return parser.parseFromString(str, mimetype);
+		} else {
+			if (!dj_undef("ActiveXObject")) {
+				var domDoc = dojo.dom.createDocument();
+				if (domDoc) {
+					domDoc.async = false;
+					domDoc.loadXML(str);
+					return domDoc;
+				} else {
+					dojo.debug("toXml didn't work?");
+				}
+			} else {
+				var _document = dojo.doc();
+				if (_document.createElement) {
+					var tmp = _document.createElement("xml");
+					tmp.innerHTML = str;
+					if (_document.implementation && _document.implementation.createDocument) {
+						var xmlDoc = _document.implementation.createDocument("foo", "", null);
+						for (var i = 0; i < tmp.childNodes.length; i++) {
+							xmlDoc.importNode(tmp.childNodes.item(i), true);
+						}
+						return xmlDoc;
+					}
+					return ((tmp.document) && (tmp.document.firstChild ? tmp.document.firstChild : tmp));
+				}
+			}
+		}
+		return null;
+	};
+	dojo.dom.prependChild = function (node, parent) {
+		if (parent.firstChild) {
+			parent.insertBefore(node, parent.firstChild);
+		} else {
+			parent.appendChild(node);
+		}
+		return true;
+	};
+	dojo.dom.insertBefore = function (node, ref, force) {
+		if ((force != true) && (node === ref || node.nextSibling === ref)) {
+			return false;
+		}
+		var parent = ref.parentNode;
+		parent.insertBefore(node, ref);
+		return true;
+	};
+	dojo.dom.insertAfter = function (node, ref, force) {
+		var pn = ref.parentNode;
+		if (ref == pn.lastChild) {
+			if ((force != true) && (node === ref)) {
+				return false;
+			}
+			pn.appendChild(node);
+		} else {
+			return this.insertBefore(node, ref.nextSibling, force);
+		}
+		return true;
+	};
+	dojo.dom.insertAtPosition = function (node, ref, position) {
+		if ((!node) || (!ref) || (!position)) {
+			return false;
+		}
+		switch (position.toLowerCase()) {
+		  case "before":
+			return dojo.dom.insertBefore(node, ref);
+		  case "after":
+			return dojo.dom.insertAfter(node, ref);
+		  case "first":
+			if (ref.firstChild) {
+				return dojo.dom.insertBefore(node, ref.firstChild);
+			} else {
+				ref.appendChild(node);
+				return true;
+			}
+			break;
+		  default:
+			ref.appendChild(node);
+			return true;
+		}
+	};
+	dojo.dom.insertAtIndex = function (node, containingNode, insertionIndex) {
+		var siblingNodes = containingNode.childNodes;
+		if (!siblingNodes.length || siblingNodes.length == insertionIndex) {
+			containingNode.appendChild(node);
+			return true;
+		}
+		if (insertionIndex == 0) {
+			return dojo.dom.prependChild(node, containingNode);
+		}
+		return dojo.dom.insertAfter(node, siblingNodes[insertionIndex - 1]);
+	};
+	dojo.dom.textContent = function (node, text) {
+		if (arguments.length > 1) {
+			var _document = dojo.doc();
+			dojo.dom.replaceChildren(node, _document.createTextNode(text));
+			return text;
+		} else {
+			if (node.textContent != undefined) {
+				return node.textContent;
+			}
+			var _result = "";
+			if (node == null) {
+				return _result;
+			}
+			for (var i = 0; i < node.childNodes.length; i++) {
+				switch (node.childNodes[i].nodeType) {
+				  case 1:
+				  case 5:
+					_result += dojo.dom.textContent(node.childNodes[i]);
+					break;
+				  case 3:
+				  case 2:
+				  case 4:
+					_result += node.childNodes[i].nodeValue;
+					break;
+				  default:
+					break;
+				}
+			}
+			return _result;
+		}
+	};
+	dojo.dom.hasParent = function (node) {
+		return Boolean(node && node.parentNode && dojo.dom.isNode(node.parentNode));
+	};
+	dojo.dom.isTag = function (node) {
+		if (node && node.tagName) {
+			for (var i = 1; i < arguments.length; i++) {
+				if (node.tagName == String(arguments[i])) {
+					return String(arguments[i]);
+				}
+			}
+		}
+		return "";
+	};
+	dojo.dom.setAttributeNS = function (elem, namespaceURI, attrName, attrValue) {
+		if (elem == null || ((elem == undefined) && (typeof elem == "undefined"))) {
+			dojo.raise("No element given to dojo.dom.setAttributeNS");
+		}
+		if (!((elem.setAttributeNS == undefined) && (typeof elem.setAttributeNS == "undefined"))) {
+			elem.setAttributeNS(namespaceURI, attrName, attrValue);
+		} else {
+			var ownerDoc = elem.ownerDocument;
+			var attribute = ownerDoc.createNode(2, attrName, namespaceURI);
+			attribute.nodeValue = attrValue;
+			elem.setAttributeNode(attribute);
+		}
+	};
+}});
+
+
 __CPAN_FILE__ src/html.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3364,6 +6603,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html");
 dojo.require("dojo.html.*");
 dojo.deprecated("dojo.html", "replaced by dojo.html.*", "0.5");
@@ -3449,6 +6690,524 @@
 
 dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
+__CPAN_FILE__ src/hostenv_adobesvg.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]]],
+definePackage: function(dojo){/*
+	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
+*/
+
+/*
+ * Adobe SVG Viewer host environment
+ */
+if(typeof window == 'undefined'){
+	dojo.raise("attempt to use adobe svg hostenv when no window object");
+}
+
+with(dojo.render){
+	name = navigator.appName;
+	ver = parseFloat(navigator.appVersion, 10);
+	switch(navigator.platform){
+		case "MacOS":
+			os.osx =  true;
+			break;
+		case "Linux":
+			os.linux =  true;
+			break;
+		case "Windows":
+			os.win =  true;
+			break;
+		default:
+			os.linux = true;
+			break;
+	};
+	svg.capable = true;
+	svg.support.builtin = true;
+	svg.adobe = true;
+};
+
+// browserEval("alert(window.location);");
+
+dojo.hostenv.println = function(s){
+	try{
+    // FIXME: this may not work with adobe's viewer, as we may first need a 
+		// reference to the svgDocument
+		// FIXME: need a way to determine where to position the text for this
+    var ti = document.createElement("text");
+    ti.setAttribute("x","50");
+		var yPos = 25 + 15*document.getElementsByTagName("text").length;
+    ti.setAttribute("y",yPos);
+		var tn = document.createTextNode(s);
+		ti.appendChild(tn);
+		document.documentElement.appendChild(ti);
+	}catch(e){
+
+	}
+}
+
+dojo.debug = function() {
+	if (!djConfig.isDebug) { return; }
+	var args = arguments;
+	if(typeof dojo.hostenv.println != 'function'){
+		dojo.raise("attempt to call dojo.debug when there is no dojo.hostenv println implementation (yet?)");
+	}
+	var isJUM = dj_global["jum"];
+	var s = isJUM ? "": "DEBUG: ";
+	for(var i=0;i<args.length;++i){ s += args[i]; }
+	if(isJUM){ // this seems to be the only way to get JUM to "play nice"
+		jum.debug(s);
+	}else{
+		dojo.hostenv.println(s);
+	}
+}
+
+dojo.hostenv.startPackage("dojo.hostenv");
+
+dojo.hostenv.name_ = 'adobesvg';
+
+dojo.hostenv.anonCtr = 0;
+dojo.hostenv.anon = {};
+
+dojo.hostenv.nameAnonFunc = function(anonFuncPtr, namespaceObj){
+	var ret = "_"+this.anonCtr++;
+	var nso = (namespaceObj || this.anon);
+	while(typeof nso[ret] != "undefined"){
+		ret = "_"+this.anonCtr++;
+	}
+	nso[ret] = anonFuncPtr;
+	return ret;
+}
+
+dojo.hostenv.modulesLoadedFired = false;
+dojo.hostenv.modulesLoadedListeners = [];
+dojo.hostenv.getTextStack = [];
+dojo.hostenv.loadUriStack = [];
+dojo.hostenv.loadedUris = [];
+
+
+dojo.hostenv.modulesLoaded = function(){
+	if(this.modulesLoadedFired){ return; }
+	if((this.loadUriStack.length==0)&&(this.getTextStack.length==0)){
+		if(this.inFlightCount > 0){ 
+			dojo.debug("couldn't initialize, there are files still in flight");
+			return;
+		}
+		this.modulesLoadedFired = true;
+		var mll = this.modulesLoadedListeners;
+		for(var x=0; x<mll.length; x++){
+			mll[x]();
+		}
+	}
+}
+
+dojo.hostenv.getNewAnonFunc = function(){
+	var ret = "_"+this.anonCtr++;
+	while(typeof this.anon[ret] != "undefined"){
+		ret = "_"+this.anonCtr++;
+	}
+	// this.anon[ret] = function(){};
+	eval("dojo.nostenv.anon."+ret+" = function(){};");
+	return [ret, this.anon[ret]];
+}
+
+dojo.hostenv.displayStack = function(){
+	var oa = [];
+	var stack = this.loadUriStack;
+	for(var x=0; x<stack.length; x++){
+		oa.unshift([stack[x][0], (typeof stack[x][2])]);
+	}
+	dojo.debug("<pre>"+oa.join("\n")+"</pre>");
+}
+
+dojo.hostenv.unwindUriStack = function(){
+	var stack = this.loadUriStack;
+	for(var x in dojo.hostenv.loadedUris){
+		for(var y=stack.length-1; y>=0; y--){
+			if(stack[y][0]==x){
+				stack.splice(y, 1);
+			}
+		}
+	}
+	var next = stack.pop();
+	if((!next)&&(stack.length==0)){ 
+		return;
+	}
+	for(var x=0; x<stack.length; x++){
+		if((stack[x][0]==next[0])&&(stack[x][2])){
+			next[2] == stack[x][2]
+		}
+	}
+	var last = next;
+	while(dojo.hostenv.loadedUris[next[0]]){
+		last = next;
+		next = stack.pop();
+	}
+	while(typeof next[2] == "string"){ // unwind as far as we can
+		try{
+			// dojo.debug("<pre><![CDATA["+next[2]+"]]></pre>");
+			dj_eval(next[2]);
+			next[1](true);
+		}catch(e){
+			dojo.debug("we got an error when loading "+next[0]);
+			dojo.debug("error: "+e);
+			// for(var x in e){ alert(x+" "+e[x]); }
+		}
+		dojo.hostenv.loadedUris[next[0]] = true;
+		dojo.hostenv.loadedUris.push(next[0]);
+		last = next;
+		next = stack.pop();
+		if((!next)&&(stack.length==0)){ break; }
+		while(dojo.hostenv.loadedUris[next[0]]){
+			last = next;
+			next = stack.pop();
+		}
+	}
+	if(next){
+		stack.push(next);
+		dojo.debug("### CHOKED ON: "+next[0]);
+	}
+}
+
+/**
+ * Reads the contents of the URI, and evaluates the contents.
+ * Returns true if it succeeded. Returns false if the URI reading failed. Throws if the evaluation throws.
+ * The result of the eval is not available to the caller.
+ */
+dojo.hostenv.loadUri = function(uri, cb){
+	if(dojo.hostenv.loadedUris[uri]){
+		return;
+	}
+	var stack = this.loadUriStack;
+	stack.push([uri, cb, null]);
+	var tcb = function(contents){
+		// gratuitous hack for Adobe SVG 3
+		if(contents.content){
+			contents = contents.content;
+		}
+
+		// stack management
+		var next = stack.pop();
+		if((!next)&&(stack.length==0)){ 
+			dojo.hostenv.modulesLoaded();
+			return;
+		}
+		if(typeof contents == "string"){
+			stack.push(next);
+			for(var x=0; x<stack.length; x++){
+				if(stack[x][0]==uri){
+					stack[x][2] = contents;
+				}
+			}
+			next = stack.pop();
+		}
+		if(dojo.hostenv.loadedUris[next[0]]){ 
+			// dojo.debug("WE ALREADY HAD: "+next[0]);
+			dojo.hostenv.unwindUriStack();
+			return;
+		}
+		// push back onto stack
+		stack.push(next);
+		if(next[0]!=uri){
+			//  and then unwind as far as we can
+			if(typeof next[2] == "string"){
+				dojo.hostenv.unwindUriStack();
+			}
+
+		}else{
+			if(!contents){ 
+				next[1](false);
+			}else{
+				var deps = dojo.hostenv.getDepsForEval(next[2]);
+				if(deps.length>0){
+					eval(deps.join(";"));
+				}else{
+					dojo.hostenv.unwindUriStack();
+				}
+			}
+		}
+	}
+	this.getText(uri, tcb, true);
+}
+
+/**
+* loadModule("A.B") first checks to see if symbol A.B is defined. 
+* If it is, it is simply returned (nothing to do).
+* If it is not defined, it will look for "A/B.js" in the script root directory, followed
+* by "A.js".
+* It throws if it cannot find a file to load, or if the symbol A.B is not defined after loading.
+* It returns the object A.B.
+*
+* This does nothing about importing symbols into the current package.
+* It is presumed that the caller will take care of that. For example, to import
+* all symbols:
+*
+*    with (dojo.hostenv.loadModule("A.B")) {
+*       ...
+*    }
+*
+* And to import just the leaf symbol:
+*
+*    var B = dojo.hostenv.loadModule("A.B");
+*    ...
+*
+* dj_load is an alias for dojo.hostenv.loadModule
+*/
+dojo.hostenv.loadModule = function(modulename, exact_only, omit_module_check){
+	// alert("dojo.hostenv.loadModule('"+modulename+"');");
+	var module = this.findModule(modulename, 0);
+	if(module){
+		return module;
+	}
+
+	// dojo.debug("dojo.hostenv.loadModule('"+modulename+"');");
+
+	// protect against infinite recursion from mutual dependencies
+	if (typeof this.loading_modules_[modulename] !== 'undefined'){
+		// NOTE: this should never throw an exception!! "recursive" includes
+		// are normal in the course of app and module building, so blow out of
+		// it gracefully, but log it in debug mode
+
+		// dojo.raise("recursive attempt to load module '" + modulename + "'");
+		dojo.debug("recursive attempt to load module '" + modulename + "'");
+	}else{
+		this.addedToLoadingCount.push(modulename);
+	}
+	this.loading_modules_[modulename] = 1;
+
+
+	// convert periods to slashes
+	var relpath = modulename.replace(/\./g, '/') + '.js';
+
+	var syms = modulename.split(".");
+	var nsyms = modulename.split(".");
+	if(syms[0]=="dojo"){ // FIXME: need a smarter way to do this!
+		syms[0] = "src"; 
+	}
+	var last = syms.pop();
+	syms.push(last);
+	// figure out if we're looking for a full package, if so, we want to do
+	// things slightly diffrently
+	var _this = this;
+	var pfn = this.pkgFileName;
+	if(last=="*"){
+		modulename = (nsyms.slice(0, -1)).join('.');
+
+		var module = this.findModule(modulename, 0);
+		// dojo.debug("found: "+modulename+"="+module);
+		if(module){
+			_this.removedFromLoadingCount.push(modulename);
+			return module;
+		}
+
+		var nextTry = function(lastStatus){
+			if(lastStatus){ 
+				module = _this.findModule(modulename, false); // pass in false so we can give better error
+				if((!module)&&(syms[syms.length-1]!=pfn)){
+					dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'"); 
+				}
+				if(module){
+					_this.removedFromLoadingCount.push(modulename);
+					dojo.hostenv.modulesLoaded();
+					return;
+				}
+			}
+			syms.pop();
+			syms.push(pfn);
+			// dojo.debug("syms: "+syms);
+			relpath = syms.join("/") + '.js';
+			if(relpath.charAt(0)=="/"){
+				relpath = relpath.slice(1);
+			}
+			// dojo.debug("relpath: "+relpath);
+			_this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
+		}
+
+		nextTry();
+	}else{
+		relpath = syms.join("/") + '.js';
+		modulename = nsyms.join('.');
+
+		var nextTry = function(lastStatus){
+			// dojo.debug("lastStatus: "+lastStatus);
+			if(lastStatus){ 
+				// dojo.debug("inital relpath: "+relpath);
+				module = _this.findModule(modulename, false); // pass in false so we can give better error
+				// if(!module){
+				if((!module)&&(syms[syms.length-1]!=pfn)){
+					dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'"); 
+				}
+				if(module){
+					_this.removedFromLoadingCount.push(modulename);
+					dojo.hostenv.modulesLoaded();
+					return;
+				}
+			}
+			var setPKG = (syms[syms.length-1]==pfn) ? false : true;
+			syms.pop();
+			if(setPKG){
+				syms.push(pfn);
+			}
+			relpath = syms.join("/") + '.js';
+			if(relpath.charAt(0)=="/"){
+				relpath = relpath.slice(1);
+			}
+			// dojo.debug("relpath: "+relpath);
+			_this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
+		}
+
+		this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry);
+	}
+	return;
+}
+
+/**
+ * Read the contents of the specified uri and return those contents.
+ *
+ * FIXME: Make sure this is consistent with other implementations of getText
+ * @param uri A relative or absolute uri. If absolute, it still must be in the same "domain" as we are.
+ * @param async_cb If not specified, returns false as synchronous is not
+ * supported. If specified, load asynchronously, and use async_cb as the handler which receives the result of the request.
+ * @param fail_ok Default false. If fail_ok and !async_cb and loading fails, return null instead of throwing.
+ */ 
+dojo.hostenv.async_cb = null;
+
+dojo.hostenv.unWindGetTextStack = function(){
+	if(dojo.hostenv.inFlightCount>0){
+		setTimeout("dojo.hostenv.unWindGetTextStack()", 100);
+		return;
+	}
+	// we serialize because this environment is too messed up
+	// to know how to do anything else
+	dojo.hostenv.inFlightCount++;
+	var next = dojo.hostenv.getTextStack.pop();
+	if((!next)&&(dojo.hostenv.getTextStack.length==0)){ 
+		dojo.hostenv.inFlightCount--;
+		dojo.hostenv.async_cb = function(){};
+		return;
+	}
+	dojo.hostenv.async_cb = next[1];
+	// http = window.getURL(uri, dojo.hostenv.anon[cbn]);
+	window.getURL(next[0], function(result){ 
+		dojo.hostenv.inFlightCount--;
+		dojo.hostenv.async_cb(result.content);
+		dojo.hostenv.unWindGetTextStack();
+	});
+}
+
+dojo.hostenv.getText = function(uri, async_cb, fail_ok){
+	// dojo.debug("Calling getText()");
+	try{
+		if(async_cb){
+			dojo.hostenv.getTextStack.push([uri, async_cb, fail_ok]);
+			dojo.hostenv.unWindGetTextStack();
+		}else{
+			return dojo.raise("No synchronous XMLHTTP implementation available, for uri " + uri);
+		}
+	}catch(e){
+		return dojo.raise("No XMLHTTP implementation available, for uri " + uri);
+	}
+}
+
+
+/**
+ * Makes an async post to the specified uri.
+ *
+ * FIXME: Not sure that we need this, but adding for completeness.
+ * More details about the implementation of this are available at 
+ * http://wiki.svg.org/index.php/PostUrl
+ * @param uri A relative or absolute uri. If absolute, it still must be in the same "domain" as we are.
+ * @param async_cb If not specified, returns false as synchronous is not
+ * supported. If specified, load asynchronously, and use async_cb as the progress handler which takes the xmlhttp object as its argument. If async_cb, this function returns null.
+ * @param text Data to post
+ * @param fail_ok Default false. If fail_ok and !async_cb and loading fails, return null instead of throwing.
+ * @param mime_type optional MIME type of the posted data (such as "text/plain")
+ * @param encoding optional encoding for data. null, 'gzip' and 'deflate' are possible values. If browser does not support binary post this parameter is ignored.
+ */ 
+dojo.hostenv.postText = function(uri, async_cb, text, fail_ok, mime_type, encoding){
+	var http = null;
+	
+	var async_callback = function(httpResponse){
+		if (!httpResponse.success) {
+			dojo.raise("Request for uri '" + uri + "' resulted in " + httpResponse.status);
+		}
+		
+		if(!httpResponse.content) {
+			if (!fail_ok) dojo.raise("Request for uri '" + uri + "' resulted in no content");
+			return null;
+		}
+		// FIXME: wtf, I'm losing a reference to async_cb
+		async_cb(httpResponse.content);
+	}
+	
+	try {
+		if(async_cb) {
+			http = window.postURL(uri, text, async_callback, mimeType, encoding);
+		} else {
+		return dojo.raise("No synchronous XMLHTTP post implementation available, for uri " + uri);
+		}
+	} catch(e) {
+		return dojo.raise("No XMLHTTP post implementation available, for uri " + uri);
+	}
+}
+
+/*
+ * It turns out that if we check *right now*, as this script file is being loaded,
+ * then the last script element in the window DOM is ourselves.
+ * That is because any subsequent script elements haven't shown up in the document
+ * object yet.
+ */
+function dj_last_script_src() {
+	var scripts = window.document.getElementsByTagName('script');
+	if(scripts.length < 1){ 
+		dojo.raise("No script elements in window.document, so can't figure out my script src"); 
+	}
+	var li = scripts.length-1;
+	var xlinkNS = "http://www.w3.org/1999/xlink";
+	var src = null;
+	var script = null;
+	while(!src){
+		script = scripts.item(li);
+		src = script.getAttributeNS(xlinkNS,"href");
+		li--;
+		if(li<0){ break; }
+		// break;
+	}
+	if(!src){
+		dojo.raise("Last script element (out of " + scripts.length + ") has no src");
+	}
+	return src;
+}
+
+if(!dojo.hostenv["library_script_uri_"]){
+	dojo.hostenv.library_script_uri_ = dj_last_script_src();
+}
+
+// dojo.hostenv.loadUri = function(uri){
+	/* FIXME: adding a script element doesn't seem to be synchronous, and so
+	 * checking for namespace or object existance after loadUri using this
+	 * method will error out. Need to figure out some other way of handling
+	 * this!
+	 */
+	/*
+	var se = document.createElement("script");
+	se.src = uri;
+	var head = document.getElementsByTagName("head")[0];
+	head.appendChild(se);
+	// document.write("<script type='text/javascript' src='"+uri+"' />");
+	return 1;
+}
+*/
+
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+}});
+
 __CPAN_FILE__ src/browser_debug.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3460,6 +7219,8 @@
 		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");
@@ -3595,6 +7356,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.json");
 dojo.require("dojo.lang.func");
 dojo.require("dojo.string.extras");
@@ -3682,6 +7445,87 @@
 }};
 
 
+__CPAN_FILE__ src/DeferredList.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.Deferred"], ["provide", "dojo.DeferredList"]], definePackage:function (dojo) {
+	dojo.require("dojo.Deferred");
+	dojo.provide("dojo.DeferredList");
+	dojo.DeferredList = function (list, fireOnOneCallback, fireOnOneErrback, consumeErrors, canceller) {
+		this.list = list;
+		this.resultList = new Array(this.list.length);
+		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;
+			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) {
+		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;
+	}});
+}});
+
+
 __CPAN_FILE__ src/string.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3693,6 +7537,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.string");
 dojo.require("dojo.string.common");
 
@@ -3708,11 +7554,235 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io");
 dojo.require("dojo.io.*");
 dojo.deprecated("dojo.io", "replaced by dojo.io.*", "0.5");
 
 
+__CPAN_FILE__ src/a11y.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.a11y"], ["require", "dojo.uri.*"], ["require", "dojo.html.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.a11y");
+	dojo.require("dojo.uri.*");
+	dojo.require("dojo.html.common");
+	dojo.a11y = {imgPath:dojo.uri.moduleUri("dojo.widget", "templates/images"), doAccessibleCheck:true, accessible:null, checkAccessible:function () {
+		if (this.accessible === null) {
+			this.accessible = false;
+			if (this.doAccessibleCheck == true) {
+				this.accessible = this.testAccessible();
+			}
+		}
+		return this.accessible;
+	}, testAccessible:function () {
+		this.accessible = false;
+		if (dojo.render.html.ie || dojo.render.html.mozilla) {
+			var div = document.createElement("div");
+			div.style.backgroundImage = "url(\"" + this.imgPath + "/tab_close.gif\")";
+			dojo.body().appendChild(div);
+			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;
+			}
+			dojo.body().removeChild(div);
+		}
+		return this.accessible;
+	}, setCheckAccessible:function (bTest) {
+		this.doAccessibleCheck = bTest;
+	}, setAccessibleMode:function () {
+		if (this.accessible === null) {
+			if (this.checkAccessible()) {
+				dojo.render.html.prefixes.unshift("a11y");
+			}
+		}
+		return this.accessible;
+	}};
+}});
+
+
+__CPAN_FILE__ src/bootstrap1.xd.js
+/*
+	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.hostenv.packageLoaded({definePackage:function (dojo) {
+	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: 8617 $".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;
+	};
+}});
+
+
 __CPAN_FILE__ src/experimental.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3724,6 +7794,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.experimental");
 dojo.experimental = function (moduleName, extra) {
 	var message = "EXPERIMENTAL: " + moduleName;
@@ -3735,6 +7807,408 @@
 };
 
 
+__CPAN_FILE__ src/browser_debug.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.browser_debug"], ["require", ]], definePackage:function (dojo) {
+	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;
+		}
+	};
+}});
+
+
+__CPAN_FILE__ src/svg.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.svg"], ["require", "dojo.lang.common"], ["require", "dojo.dom"]], definePackage:function (dojo) {
+	dojo.provide("dojo.svg");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.dom");
+	dojo.mixin(dojo.svg, dojo.dom);
+	dojo.svg.graphics = dojo.svg.g = new function (d) {
+		this.suspend = function () {
+			try {
+				d.documentElement.suspendRedraw(0);
+			}
+			catch (e) {
+			}
+		};
+		this.resume = function () {
+			try {
+				d.documentElement.unsuspendRedraw(0);
+			}
+			catch (e) {
+			}
+		};
+		this.force = function () {
+			try {
+				d.documentElement.forceRedraw();
+			}
+			catch (e) {
+			}
+		};
+	}(document);
+	dojo.svg.animations = dojo.svg.anim = new function (d) {
+		this.arePaused = function () {
+			try {
+				return d.documentElement.animationsPaused();
+			}
+			catch (e) {
+				return false;
+			}
+		};
+		this.pause = function () {
+			try {
+				d.documentElement.pauseAnimations();
+			}
+			catch (e) {
+			}
+		};
+		this.resume = function () {
+			try {
+				d.documentElement.unpauseAnimations();
+			}
+			catch (e) {
+			}
+		};
+	}(document);
+	dojo.svg.toCamelCase = function (selector) {
+		var arr = selector.split("-"), cc = arr[0];
+		for (var i = 1; i < arr.length; i++) {
+			cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
+		}
+		return cc;
+	};
+	dojo.svg.toSelectorCase = function (selector) {
+		return selector.replace(/([A-Z])/g, "-$1").toLowerCase();
+	};
+	dojo.svg.getStyle = function (node, cssSelector) {
+		return document.defaultView.getComputedStyle(node, cssSelector);
+	};
+	dojo.svg.getNumericStyle = function (node, cssSelector) {
+		return parseFloat(dojo.svg.getStyle(node, cssSelector));
+	};
+	dojo.svg.getOpacity = function (node) {
+		return Math.min(1, dojo.svg.getNumericStyle(node, "fill-opacity"));
+	};
+	dojo.svg.setOpacity = function (node, opacity) {
+		node.setAttributeNS(this.xmlns.svg, "fill-opacity", opacity);
+		node.setAttributeNS(this.xmlns.svg, "stroke-opacity", opacity);
+	};
+	dojo.svg.clearOpacity = function (node) {
+		node.setAttributeNS(this.xmlns.svg, "fill-opacity", "1.0");
+		node.setAttributeNS(this.xmlns.svg, "stroke-opacity", "1.0");
+	};
+	dojo.svg.getCoords = function (node) {
+		if (node.getBBox) {
+			var box = node.getBBox();
+			return {x:box.x, y:box.y};
+		}
+		return null;
+	};
+	dojo.svg.setCoords = function (node, coords) {
+		var p = dojo.svg.getCoords();
+		if (!p) {
+			return;
+		}
+		var dx = p.x - coords.x;
+		var dy = p.y - coords.y;
+		dojo.svg.translate(node, dx, dy);
+	};
+	dojo.svg.getDimensions = function (node) {
+		if (node.getBBox) {
+			var box = node.getBBox();
+			return {width:box.width, height:box.height};
+		}
+		return null;
+	};
+	dojo.svg.setDimensions = function (node, dim) {
+		if (node.width) {
+			node.width.baseVal.value = dim.width;
+			node.height.baseVal.value = dim.height;
+		} else {
+			if (node.r) {
+				node.r.baseVal.value = Math.min(dim.width, dim.height) / 2;
+			} else {
+				if (node.rx) {
+					node.rx.baseVal.value = dim.width / 2;
+					node.ry.baseVal.value = dim.height / 2;
+				}
+			}
+		}
+	};
+	dojo.svg.translate = function (node, dx, dy) {
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var t = node.ownerSVGElement.createSVGTransform();
+			t.setTranslate(dx, dy);
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.scale = function (node, scaleX, scaleY) {
+		if (!scaleY) {
+			var scaleY = scaleX;
+		}
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var t = node.ownerSVGElement.createSVGTransform();
+			t.setScale(scaleX, scaleY);
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.rotate = function (node, ang, cx, cy) {
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var t = node.ownerSVGElement.createSVGTransform();
+			if (cx == null) {
+				t.setMatrix(t.matrix.rotate(ang));
+			} else {
+				t.setRotate(ang, cx, cy);
+			}
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.skew = function (node, ang, axis) {
+		var dir = axis || "x";
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var t = node.ownerSVGElement.createSVGTransform();
+			if (dir != "x") {
+				t.setSkewY(ang);
+			} else {
+				t.setSkewX(ang);
+			}
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.flip = function (node, axis) {
+		var dir = axis || "x";
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var t = node.ownerSVGElement.createSVGTransform();
+			t.setMatrix((dir != "x") ? t.matrix.flipY() : t.matrix.flipX());
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.invert = function (node) {
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var t = node.ownerSVGElement.createSVGTransform();
+			t.setMatrix(t.matrix.inverse());
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.applyMatrix = function (node, a, b, c, d, e, f) {
+		if (node.transform && node.ownerSVGElement && node.ownerSVGElement.createSVGTransform) {
+			var m;
+			if (b) {
+				var m = node.ownerSVGElement.createSVGMatrix();
+				m.a = a;
+				m.b = b;
+				m.c = c;
+				m.d = d;
+				m.e = e;
+				m.f = f;
+			} else {
+				m = a;
+			}
+			var t = node.ownerSVGElement.createSVGTransform();
+			t.setMatrix(m);
+			node.transform.baseVal.appendItem(t);
+		}
+	};
+	dojo.svg.group = function (nodes) {
+		var p = nodes.item(0).parentNode;
+		var g = document.createElementNS(this.xmlns.svg, "g");
+		for (var i = 0; i < nodes.length; i++) {
+			g.appendChild(nodes.item(i));
+		}
+		p.appendChild(g);
+		return g;
+	};
+	dojo.svg.ungroup = function (g) {
+		var p = g.parentNode;
+		while (g.childNodes.length > 0) {
+			p.appendChild(g.childNodes.item(0));
+		}
+		p.removeChild(g);
+	};
+	dojo.svg.getGroup = function (node) {
+		var a = this.getAncestors(node);
+		for (var i = 0; i < a.length; i++) {
+			if (a[i].nodeType == this.ELEMENT_NODE && a[i].nodeName.toLowerCase() == "g") {
+				return a[i];
+			}
+		}
+		return null;
+	};
+	dojo.svg.bringToFront = function (node) {
+		var n = this.getGroup(node) || node;
+		n.ownerSVGElement.appendChild(n);
+	};
+	dojo.svg.sendToBack = function (node) {
+		var n = this.getGroup(node) || node;
+		n.ownerSVGElement.insertBefore(n, n.ownerSVGElement.firstChild);
+	};
+	dojo.svg.bringForward = function (node) {
+		var n = this.getGroup(node) || node;
+		if (this.getLastChildElement(n.parentNode) != n) {
+			this.insertAfter(n, this.getNextSiblingElement(n), true);
+		}
+	};
+	dojo.svg.sendBackward = function (node) {
+		var n = this.getGroup(node) || node;
+		if (this.getFirstChildElement(n.parentNode) != n) {
+			this.insertBefore(n, this.getPreviousSiblingElement(n), true);
+		}
+	};
+	dojo.svg.createNodesFromText = function (txt, wrap) {
+		var docFrag = (new DOMParser()).parseFromString(txt, "text/xml").normalize();
+		if (wrap) {
+			return [docFrag.firstChild.cloneNode(true)];
+		}
+		var nodes = [];
+		for (var x = 0; x < docFrag.childNodes.length; x++) {
+			nodes.push(docFrag.childNodes.item(x).cloneNode(true));
+		}
+		return nodes;
+	};
+}});
+
+
 __CPAN_FILE__ src/hostenv_dashboard.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3746,6 +8220,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.render.name = dojo.hostenv.name_ = "dashboard";
 dojo.hostenv.println = function (message) {
 	return alert(message);
@@ -3915,6 +8391,476 @@
 };
 
 
+__CPAN_FILE__ src/html.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html"], ["require", "dojo.html.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html");
+	dojo.require("dojo.html.*");
+	dojo.deprecated("dojo.html", "replaced by dojo.html.*", "0.5");
+}});
+
+
+__CPAN_FILE__ src/flash.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.flash"], ["require", "dojo.string.*"], ["require", "dojo.uri.*"], ["require", "dojo.html.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.flash");
+	dojo.require("dojo.string.*");
+	dojo.require("dojo.uri.*");
+	dojo.require("dojo.html.common");
+	dojo.flash = function () {
+	};
+	dojo.flash = {flash6_version:null, flash8_version:null, ready:false, _visible:true, _loadedListeners:new Array(), _installingListeners:new Array(), setSwf:function (fileInfo) {
+		if (fileInfo == null || dojo.lang.isUndefined(fileInfo)) {
+			return;
+		}
+		if (fileInfo.flash6 != null && !dojo.lang.isUndefined(fileInfo.flash6)) {
+			this.flash6_version = fileInfo.flash6;
+		}
+		if (fileInfo.flash8 != null && !dojo.lang.isUndefined(fileInfo.flash8)) {
+			this.flash8_version = fileInfo.flash8;
+		}
+		if (!dojo.lang.isUndefined(fileInfo.visible)) {
+			this._visible = fileInfo.visible;
+		}
+		this._initialize();
+	}, useFlash6:function () {
+		if (this.flash6_version == null) {
+			return false;
+		} else {
+			if (this.flash6_version != null && dojo.flash.info.commVersion == 6) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+	}, useFlash8:function () {
+		if (this.flash8_version == null) {
+			return false;
+		} else {
+			if (this.flash8_version != null && dojo.flash.info.commVersion == 8) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+	}, addLoadedListener:function (listener) {
+		this._loadedListeners.push(listener);
+	}, addInstallingListener:function (listener) {
+		this._installingListeners.push(listener);
+	}, loaded:function () {
+		dojo.flash.ready = true;
+		if (dojo.flash._loadedListeners.length > 0) {
+			for (var i = 0; i < dojo.flash._loadedListeners.length; i++) {
+				dojo.flash._loadedListeners[i].call(null);
+			}
+		}
+	}, installing:function () {
+		if (dojo.flash._installingListeners.length > 0) {
+			for (var i = 0; i < dojo.flash._installingListeners.length; i++) {
+				dojo.flash._installingListeners[i].call(null);
+			}
+		}
+	}, _initialize:function () {
+		var installer = new dojo.flash.Install();
+		dojo.flash.installer = installer;
+		if (installer.needed() == true) {
+			installer.install();
+		} else {
+			dojo.flash.obj = new dojo.flash.Embed(this._visible);
+			dojo.flash.obj.write(dojo.flash.info.commVersion);
+			dojo.flash.comm = new dojo.flash.Communicator();
+		}
+	}};
+	dojo.flash.Info = function () {
+		if (dojo.render.html.ie) {
+			document.writeln("<script language=\"VBScript\" type=\"text/vbscript\">");
+			document.writeln("Function VBGetSwfVer(i)");
+			document.writeln("  on error resume next");
+			document.writeln("  Dim swControl, swVersion");
+			document.writeln("  swVersion = 0");
+			document.writeln("  set swControl = CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" + CStr(i))");
+			document.writeln("  if (IsObject(swControl)) then");
+			document.writeln("	swVersion = swControl.GetVariable(\"$version\")");
+			document.writeln("  end if");
+			document.writeln("  VBGetSwfVer = swVersion");
+			document.writeln("End Function");
+			document.writeln("</script>");
+		}
+		this._detectVersion();
+		this._detectCommunicationVersion();
+	};
+	dojo.flash.Info.prototype = {version:-1, versionMajor:-1, versionMinor:-1, versionRevision:-1, capable:false, commVersion:6, installing:false, isVersionOrAbove:function (reqMajorVer, reqMinorVer, reqVer) {
+		reqVer = parseFloat("." + reqVer);
+		if (this.versionMajor >= reqMajorVer && this.versionMinor >= reqMinorVer && this.versionRevision >= reqVer) {
+			return true;
+		} else {
+			return false;
+		}
+	}, _detectVersion:function () {
+		var versionStr;
+		for (var testVersion = 25; testVersion > 0; testVersion--) {
+			if (dojo.render.html.ie) {
+				versionStr = VBGetSwfVer(testVersion);
+			} else {
+				versionStr = this._JSFlashInfo(testVersion);
+			}
+			if (versionStr == -1) {
+				this.capable = false;
+				return;
+			} else {
+				if (versionStr != 0) {
+					var versionArray;
+					if (dojo.render.html.ie) {
+						var tempArray = versionStr.split(" ");
+						var tempString = tempArray[1];
+						versionArray = tempString.split(",");
+					} else {
+						versionArray = versionStr.split(".");
+					}
+					this.versionMajor = versionArray[0];
+					this.versionMinor = versionArray[1];
+					this.versionRevision = versionArray[2];
+					var versionString = this.versionMajor + "." + this.versionRevision;
+					this.version = parseFloat(versionString);
+					this.capable = true;
+					break;
+				}
+			}
+		}
+	}, _JSFlashInfo:function (testVersion) {
+		if (navigator.plugins != null && navigator.plugins.length > 0) {
+			if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
+				var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
+				var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
+				var descArray = flashDescription.split(" ");
+				var tempArrayMajor = descArray[2].split(".");
+				var versionMajor = tempArrayMajor[0];
+				var versionMinor = tempArrayMajor[1];
+				if (descArray[3] != "") {
+					var tempArrayMinor = descArray[3].split("r");
+				} else {
+					var tempArrayMinor = descArray[4].split("r");
+				}
+				var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
+				var version = versionMajor + "." + versionMinor + "." + versionRevision;
+				return version;
+			}
+		}
+		return -1;
+	}, _detectCommunicationVersion:function () {
+		if (this.capable == false) {
+			this.commVersion = null;
+			return;
+		}
+		if (typeof djConfig["forceFlashComm"] != "undefined" && typeof djConfig["forceFlashComm"] != null) {
+			this.commVersion = djConfig["forceFlashComm"];
+			return;
+		}
+		if (dojo.render.html.safari == true || dojo.render.html.opera == true) {
+			this.commVersion = 8;
+		} else {
+			this.commVersion = 6;
+		}
+	}};
+	dojo.flash.Embed = function (visible) {
+		this._visible = visible;
+	};
+	dojo.flash.Embed.prototype = {width:215, height:138, id:"flashObject", _visible:true, protocol:function () {
+		switch (window.location.protocol) {
+		  case "https:":
+			return "https";
+			break;
+		  default:
+			return "http";
+			break;
+		}
+	}, write:function (flashVer, doExpressInstall) {
+		if (dojo.lang.isUndefined(doExpressInstall)) {
+			doExpressInstall = false;
+		}
+		var containerStyle = new dojo.string.Builder();
+		containerStyle.append("width: " + this.width + "px; ");
+		containerStyle.append("height: " + this.height + "px; ");
+		if (this._visible == false) {
+			containerStyle.append("position: absolute; ");
+			containerStyle.append("z-index: 10000; ");
+			containerStyle.append("top: -1000px; ");
+			containerStyle.append("left: -1000px; ");
+		}
+		containerStyle = containerStyle.toString();
+		var objectHTML;
+		var swfloc;
+		if (flashVer == 6) {
+			swfloc = dojo.flash.flash6_version;
+			var dojoPath = djConfig.baseRelativePath;
+			swfloc = swfloc + "?baseRelativePath=" + escape(dojoPath);
+			objectHTML = "<embed id=\"" + this.id + "\" src=\"" + swfloc + "\" " + "	quality=\"high\" bgcolor=\"#ffffff\" " + "	width=\"" + this.width + "\" height=\"" + this.height + "\" " + "	name=\"" + this.id + "\" " + "	align=\"middle\" allowScriptAccess=\"sameDomain\" " + "	type=\"application/x-shockwave-flash\" swLiveConnect=\"true\" " + "	pluginspage=\"" + this.protocol() + "://www.macromedia.com/go/getflashplayer\">";
+		} else {
+			swfloc = dojo.flash.flash8_version;
+			var swflocObject = swfloc;
+			var swflocEmbed = swfloc;
+			var dojoPath = djConfig.baseRelativePath;
+			if (doExpressInstall) {
+				var redirectURL = escape(window.location);
+				document.title = document.title.slice(0, 47) + " - Flash Player Installation";
+				var docTitle = escape(document.title);
+				swflocObject += "?MMredirectURL=" + redirectURL + "&MMplayerType=ActiveX" + "&MMdoctitle=" + docTitle + "&baseRelativePath=" + escape(dojoPath);
+				swflocEmbed += "?MMredirectURL=" + redirectURL + "&MMplayerType=PlugIn" + "&baseRelativePath=" + escape(dojoPath);
+			}
+			if (swflocEmbed.indexOf("?") == -1) {
+				swflocEmbed += "?baseRelativePath=" + escape(dojoPath) + "' ";
+			}
+			objectHTML = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" " + "codebase=\"" + this.protocol() + "://fpdownload.macromedia.com/pub/shockwave/cabs/flash/" + "swflash.cab#version=8,0,0,0\" " + "width=\"" + this.width + "\" " + "height=\"" + this.height + "\" " + "id=\"" + this.id + "\" " + "align=\"middle\"> " + "<param name=\"allowScriptAccess\" value=\"sameDomain\" /> " + "<param name=\"movie\" value=\"" + swflocObject + "\" /> " + "<param name=\"quality\" value=\"high\" /> " + "<param name=\"bgcolor\" value=\"#ffffff\" /> " + "<embed src=\"" + swflocEmbed + "' " + "quality=\"high\" " + "bgcolor=\"#ffffff\" " + "width=\"" + this.width + "\" " + "height=\"" + this.height + "\" " + "id=\"" + this.id + "\" " + "name=\"" + this.id + "\" " + "swLiveConnect=\"true\" " + "align=\"middle\" " + "allowScriptAccess=\"sameDomain\" " + "type=\"application/x-shockwave-flash\" " + "pluginspage=\"" + this.protocol() + "://www.macromedia.com/go/getflashplayer\" />" + "</object>";
+		}
+		objectHTML = "<div id=\"" + this.id + "Container\" style=\"" + containerStyle + "\"> " + objectHTML + "</div>";
+		document.writeln(objectHTML);
+	}, get:function () {
+		return document.getElementById(this.id);
+	}, setVisible:function (visible) {
+		var container = dojo.byId(this.id + "Container");
+		if (visible == true) {
+			container.style.visibility = "visible";
+		} else {
+			container.style.position = "absolute";
+			container.style.x = "-1000px";
+			container.style.y = "-1000px";
+			container.style.visibility = "hidden";
+		}
+	}, center:function () {
+		var elementWidth = this.width;
+		var elementHeight = this.height;
+		var scroll_offset = dojo.html.getScroll().offset;
+		var viewport_size = dojo.html.getViewport();
+		var x = scroll_offset.x + (viewport_size.width - elementWidth) / 2;
+		var y = scroll_offset.y + (viewport_size.height - elementHeight) / 2;
+		var container = dojo.byId(this.id + "Container");
+		container.style.top = y + "px";
+		container.style.left = x + "px";
+	}};
+	dojo.flash.Communicator = function () {
+		if (dojo.flash.useFlash6()) {
+			this._writeFlash6();
+		} else {
+			if (dojo.flash.useFlash8()) {
+				this._writeFlash8();
+			}
+		}
+	};
+	dojo.flash.Communicator.prototype = {_writeFlash6:function () {
+		var id = dojo.flash.obj.id;
+		document.writeln("<script language=\"JavaScript\">");
+		document.writeln("  function " + id + "_DoFSCommand(command, args){ ");
+		document.writeln("	dojo.flash.comm._handleFSCommand(command, args); ");
+		document.writeln("}");
+		document.writeln("</script>");
+		if (dojo.render.html.ie) {
+			document.writeln("<SCRIPT LANGUAGE=VBScript> ");
+			document.writeln("on error resume next ");
+			document.writeln("Sub " + id + "_FSCommand(ByVal command, ByVal args)");
+			document.writeln(" call " + id + "_DoFSCommand(command, args)");
+			document.writeln("end sub");
+			document.writeln("</SCRIPT> ");
+		}
+	}, _writeFlash8:function () {
+	}, _handleFSCommand:function (command, args) {
+		if (command != null && !dojo.lang.isUndefined(command) && /^FSCommand:(.*)/.test(command) == true) {
+			command = command.match(/^FSCommand:(.*)/)[1];
+		}
+		if (command == "addCallback") {
+			this._fscommandAddCallback(command, args);
+		} else {
+			if (command == "call") {
+				this._fscommandCall(command, args);
+			} else {
+				if (command == "fscommandReady") {
+					this._fscommandReady();
+				}
+			}
+		}
+	}, _fscommandAddCallback:function (command, args) {
+		var functionName = args;
+		var callFunc = function () {
+			return dojo.flash.comm._call(functionName, arguments);
+		};
+		dojo.flash.comm[functionName] = callFunc;
+		dojo.flash.obj.get().SetVariable("_succeeded", true);
+	}, _fscommandCall:function (command, args) {
+		var plugin = dojo.flash.obj.get();
+		var functionName = args;
+		var numArgs = parseInt(plugin.GetVariable("_numArgs"));
+		var flashArgs = new Array();
+		for (var i = 0; i < numArgs; i++) {
+			var currentArg = plugin.GetVariable("_" + i);
+			flashArgs.push(currentArg);
+		}
+		var runMe;
+		if (functionName.indexOf(".") == -1) {
+			runMe = window[functionName];
+		} else {
+			runMe = eval(functionName);
+		}
+		var results = null;
+		if (!dojo.lang.isUndefined(runMe) && runMe != null) {
+			results = runMe.apply(null, flashArgs);
+		}
+		plugin.SetVariable("_returnResult", results);
+	}, _fscommandReady:function () {
+		var plugin = dojo.flash.obj.get();
+		plugin.SetVariable("fscommandReady", "true");
+	}, _call:function (functionName, args) {
+		var plugin = dojo.flash.obj.get();
+		plugin.SetVariable("_functionName", functionName);
+		plugin.SetVariable("_numArgs", args.length);
+		for (var i = 0; i < args.length; i++) {
+			var value = args[i];
+			value = value.replace(/\0/g, "\\0");
+			plugin.SetVariable("_" + i, value);
+		}
+		plugin.TCallLabel("/_flashRunner", "execute");
+		var results = plugin.GetVariable("_returnResult");
+		results = results.replace(/\\0/g, "\x00");
+		return results;
+	}, _addExternalInterfaceCallback:function (methodName) {
+		var wrapperCall = function () {
+			var methodArgs = new Array(arguments.length);
+			for (var i = 0; i < arguments.length; i++) {
+				methodArgs[i] = arguments[i];
+			}
+			return dojo.flash.comm._execFlash(methodName, methodArgs);
+		};
+		dojo.flash.comm[methodName] = wrapperCall;
+	}, _encodeData:function (data) {
+		var entityRE = /\&([^;]*)\;/g;
+		data = data.replace(entityRE, "&amp;$1;");
+		data = data.replace(/</g, "&lt;");
+		data = data.replace(/>/g, "&gt;");
+		data = data.replace("\\", "&custom_backslash;&custom_backslash;");
+		data = data.replace(/\n/g, "\\n");
+		data = data.replace(/\r/g, "\\r");
+		data = data.replace(/\f/g, "\\f");
+		data = data.replace(/\0/g, "\\0");
+		data = data.replace(/\'/g, "\\'");
+		data = data.replace(/\"/g, "\\\"");
+		return data;
+	}, _decodeData:function (data) {
+		if (data == null || typeof data == "undefined") {
+			return data;
+		}
+		data = data.replace(/\&custom_lt\;/g, "<");
+		data = data.replace(/\&custom_gt\;/g, ">");
+		data = eval("\"" + data + "\"");
+		return data;
+	}, _chunkArgumentData:function (value, argIndex) {
+		var plugin = dojo.flash.obj.get();
+		var numSegments = Math.ceil(value.length / 1024);
+		for (var i = 0; i < numSegments; i++) {
+			var startCut = i * 1024;
+			var endCut = i * 1024 + 1024;
+			if (i == (numSegments - 1)) {
+				endCut = i * 1024 + value.length;
+			}
+			var piece = value.substring(startCut, endCut);
+			piece = this._encodeData(piece);
+			plugin.CallFunction("<invoke name=\"chunkArgumentData\" " + "returntype=\"javascript\">" + "<arguments>" + "<string>" + piece + "</string>" + "<number>" + argIndex + "</number>" + "</arguments>" + "</invoke>");
+		}
+	}, _chunkReturnData:function () {
+		var plugin = dojo.flash.obj.get();
+		var numSegments = plugin.getReturnLength();
+		var resultsArray = new Array();
+		for (var i = 0; i < numSegments; i++) {
+			var piece = plugin.CallFunction("<invoke name=\"chunkReturnData\" " + "returntype=\"javascript\">" + "<arguments>" + "<number>" + i + "</number>" + "</arguments>" + "</invoke>");
+			if (piece == "\"\"" || piece == "''") {
+				piece = "";
+			} else {
+				piece = piece.substring(1, piece.length - 1);
+			}
+			resultsArray.push(piece);
+		}
+		var results = resultsArray.join("");
+		return results;
+	}, _execFlash:function (methodName, methodArgs) {
+		var plugin = dojo.flash.obj.get();
+		plugin.startExec();
+		plugin.setNumberArguments(methodArgs.length);
+		for (var i = 0; i < methodArgs.length; i++) {
+			this._chunkArgumentData(methodArgs[i], i);
+		}
+		plugin.exec(methodName);
+		var results = this._chunkReturnData();
+		results = this._decodeData(results);
+		plugin.endExec();
+		return results;
+	}};
+	dojo.flash.Install = function () {
+	};
+	dojo.flash.Install.prototype = {needed:function () {
+		if (dojo.flash.info.capable == false) {
+			return true;
+		}
+		if (dojo.render.os.mac == true && !dojo.flash.info.isVersionOrAbove(8, 0, 0)) {
+			return true;
+		}
+		if (!dojo.flash.info.isVersionOrAbove(6, 0, 0)) {
+			return true;
+		}
+		return false;
+	}, install:function () {
+		dojo.flash.info.installing = true;
+		dojo.flash.installing();
+		if (dojo.flash.info.capable == false) {
+			var installObj = new dojo.flash.Embed(false);
+			installObj.write(8);
+		} else {
+			if (dojo.flash.info.isVersionOrAbove(6, 0, 65)) {
+				var installObj = new dojo.flash.Embed(false);
+				installObj.write(8, true);
+				installObj.setVisible(true);
+				installObj.center();
+			} else {
+				alert("This content requires a more recent version of the Macromedia " + " Flash Player.");
+				window.location.href = +dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer";
+			}
+		}
+	}, _onInstallStatus:function (msg) {
+		if (msg == "Download.Complete") {
+			dojo.flash._initialize();
+		} else {
+			if (msg == "Download.Cancelled") {
+				alert("This content requires a more recent version of the Macromedia " + " Flash Player.");
+				window.location.href = dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer";
+			} else {
+				if (msg == "Download.Failed") {
+					alert("There was an error downloading the Flash Player update. " + "Please try again later, or visit macromedia.com to download " + "the latest version of the Flash plugin.");
+				}
+			}
+		}
+	}};
+	dojo.flash.info = new dojo.flash.Info();
+}});
+
+
 __CPAN_FILE__ src/loader_xd.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -3926,6 +8872,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.hostenv.resetXd = function () {
 	this.isXDomain = djConfig.useXDomain || false;
 	this.xdTimer = 0;
@@ -3938,10 +8886,14 @@
 dojo.hostenv.resetXd();
 dojo.hostenv.createXdPackage = function (contents, resourceName, resourcePath) {
 	var deps = [];
-	var depRegExp = /dojo.(require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv\.conditionalLoadModule|.hostenv\.loadModule|hostenv\.moduleLoaded)\(([\w\W]*?)\)/mg;
+	var depRegExp = /dojo.(requireLocalization|require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv\.conditionalLoadModule|.hostenv\.loadModule|hostenv\.moduleLoaded)\(([\w\W]*?)\)/mg;
 	var match;
 	while ((match = depRegExp.exec(contents)) != null) {
-		deps.push("\"" + match[1] + "\", " + match[2]);
+		if (match[1] == "requireLocalization") {
+			eval(match[0]);
+		} else {
+			deps.push("\"" + match[1] + "\", " + match[2]);
+		}
 	}
 	var output = [];
 	output.push("dojo.hostenv.packageLoaded({\n");
@@ -3991,12 +8943,12 @@
 	if (this.loadedUris[uri]) {
 		return 1;
 	}
-	if (this.isXDomain) {
+	if (this.isXDomain && module) {
 		if (uri.indexOf("__package__") != -1) {
 			module += ".*";
 		}
 		this.xdOrderedReqs.push(module);
-		if (currentIsXDomain) {
+		if (currentIsXDomain || uri.indexOf("/nls/") == -1) {
 			this.xdInFlight[module] = true;
 			this.inFlightCount++;
 		}
@@ -4287,7 +9239,9 @@
 };
 dojo.hostenv.xdNotifyLoaded = function () {
 	this.inFlightCount = 0;
-	this.callLoaded();
+	if (this._djInitFired && !this.loadNotifying) {
+		this.callLoaded();
+	}
 };
 dojo.hostenv.flattenRequireArray = function (target) {
 	if (target) {
@@ -4305,7 +9259,6 @@
 dojo.hostenv.callLoaded = function () {
 	if (this.xdHasCalledPreload || dojo.hostenv.getModulePrefix("dojo") == "src" || !this.localesGenerated) {
 		this.xdRealCallLoaded();
-		this.xdHasCalledPreload = true;
 	} else {
 		if (this.localesGenerated) {
 			this.registerNlsPrefix = function () {
@@ -4313,11 +9266,31 @@
 			};
 			this.preloadLocalizations();
 		}
-		this.xdHasCalledPreload = true;
 	}
+	this.xdHasCalledPreload = true;
 };
 
 
+__CPAN_FILE__ src/lang.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang");
+	dojo.require("dojo.lang.common");
+	dojo.deprecated("dojo.lang", "replaced by dojo.lang.common", "0.5");
+}});
+
+
 __CPAN_FILE__ src/dom.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -4329,6 +9302,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dom");
 dojo.dom.ELEMENT_NODE = 1;
 dojo.dom.ATTRIBUTE_NODE = 2;
@@ -4710,6 +9685,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.hostenv.name_ = "wsh";
 if (typeof WScript == "undefined") {
 	dojo.raise("attempt to use WSH host environment when no WScript global");
@@ -4734,6 +9711,74 @@
 dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
 
+__CPAN_FILE__ src/experimental.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.experimental");
+	dojo.experimental = function (moduleName, extra) {
+		var message = "EXPERIMENTAL: " + moduleName;
+		message += " -- Not yet ready for use.  APIs subject to change without notice.";
+		if (extra) {
+			message += " " + extra;
+		}
+		dojo.debug(message);
+	};
+}});
+
+
+__CPAN_FILE__ src/browser_debug_xd.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.browser_debug_xd"]], definePackage:function (dojo) {
+	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);
+		}
+	};
+}});
+
+
 __CPAN_FILE__ src/AdapterRegistry.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -4745,6 +9790,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.AdapterRegistry");
 dojo.require("dojo.lang.func");
 dojo.AdapterRegistry = function (returnWrappers) {
@@ -4789,6 +9836,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 if (typeof window == "undefined") {
 	dojo.raise("attempt to use adobe svg hostenv when no window object");
 }
@@ -5025,6 +10074,375 @@
 dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
 
 
+__CPAN_FILE__ src/regexp.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.regexp"]], definePackage:function (dojo) {
+	dojo.provide("dojo.regexp");
+	dojo.evalObjPath("dojo.regexp.us", true);
+	dojo.regexp.tld = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.allowCC != "boolean") {
+			flags.allowCC = true;
+		}
+		if (typeof flags.allowInfra != "boolean") {
+			flags.allowInfra = true;
+		}
+		if (typeof flags.allowGeneric != "boolean") {
+			flags.allowGeneric = true;
+		}
+		var infraRE = "arpa";
+		var genericRE = "aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|xxx|jobs|mobi|post";
+		var ccRE = "ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|" + "bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" + "ec|ee|eg|er|eu|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|" + "gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|" + "la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|" + "my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|" + "re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sk|sl|sm|sn|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|" + "tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
+		var a = [];
+		if (flags.allowInfra) {
+			a.push(infraRE);
+		}
+		if (flags.allowGeneric) {
+			a.push(genericRE);
+		}
+		if (flags.allowCC) {
+			a.push(ccRE);
+		}
+		var tldRE = "";
+		if (a.length > 0) {
+			tldRE = "(" + a.join("|") + ")";
+		}
+		return tldRE;
+	};
+	dojo.regexp.ipAddress = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.allowDottedDecimal != "boolean") {
+			flags.allowDottedDecimal = true;
+		}
+		if (typeof flags.allowDottedHex != "boolean") {
+			flags.allowDottedHex = true;
+		}
+		if (typeof flags.allowDottedOctal != "boolean") {
+			flags.allowDottedOctal = true;
+		}
+		if (typeof flags.allowDecimal != "boolean") {
+			flags.allowDecimal = true;
+		}
+		if (typeof flags.allowHex != "boolean") {
+			flags.allowHex = true;
+		}
+		if (typeof flags.allowIPv6 != "boolean") {
+			flags.allowIPv6 = true;
+		}
+		if (typeof flags.allowHybrid != "boolean") {
+			flags.allowHybrid = true;
+		}
+		var dottedDecimalRE = "((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
+		var dottedHexRE = "(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]";
+		var dottedOctalRE = "(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]";
+		var decimalRE = "(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|" + "4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])";
+		var hexRE = "0[xX]0*[\\da-fA-F]{1,8}";
+		var ipv6RE = "([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}";
+		var hybridRE = "([\\da-fA-F]{1,4}\\:){6}" + "((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
+		var a = [];
+		if (flags.allowDottedDecimal) {
+			a.push(dottedDecimalRE);
+		}
+		if (flags.allowDottedHex) {
+			a.push(dottedHexRE);
+		}
+		if (flags.allowDottedOctal) {
+			a.push(dottedOctalRE);
+		}
+		if (flags.allowDecimal) {
+			a.push(decimalRE);
+		}
+		if (flags.allowHex) {
+			a.push(hexRE);
+		}
+		if (flags.allowIPv6) {
+			a.push(ipv6RE);
+		}
+		if (flags.allowHybrid) {
+			a.push(hybridRE);
+		}
+		var ipAddressRE = "";
+		if (a.length > 0) {
+			ipAddressRE = "(" + a.join("|") + ")";
+		}
+		return ipAddressRE;
+	};
+	dojo.regexp.host = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.allowIP != "boolean") {
+			flags.allowIP = true;
+		}
+		if (typeof flags.allowLocal != "boolean") {
+			flags.allowLocal = false;
+		}
+		if (typeof flags.allowPort != "boolean") {
+			flags.allowPort = true;
+		}
+		var domainNameRE = "([0-9a-zA-Z]([-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?\\.)+" + dojo.regexp.tld(flags);
+		var portRE = (flags.allowPort) ? "(\\:" + dojo.regexp.integer({signed:false}) + ")?" : "";
+		var hostNameRE = domainNameRE;
+		if (flags.allowIP) {
+			hostNameRE += "|" + dojo.regexp.ipAddress(flags);
+		}
+		if (flags.allowLocal) {
+			hostNameRE += "|localhost";
+		}
+		return "(" + hostNameRE + ")" + portRE;
+	};
+	dojo.regexp.url = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.scheme == "undefined") {
+			flags.scheme = [true, false];
+		}
+		var protocolRE = dojo.regexp.buildGroupRE(flags.scheme, function (q) {
+			if (q) {
+				return "(https?|ftps?)\\://";
+			}
+			return "";
+		});
+		var pathRE = "(/([^?#\\s/]+/)*)?([^?#\\s/]+(\\?[^?#\\s/]*)?(#[A-Za-z][\\w.:-]*)?)?";
+		return protocolRE + dojo.regexp.host(flags) + pathRE;
+	};
+	dojo.regexp.emailAddress = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.allowCruft != "boolean") {
+			flags.allowCruft = false;
+		}
+		flags.allowPort = false;
+		var usernameRE = "([\\da-z]+[-._+&'])*[\\da-z]+";
+		var emailAddressRE = usernameRE + "@" + dojo.regexp.host(flags);
+		if (flags.allowCruft) {
+			emailAddressRE = "<?(mailto\\:)?" + emailAddressRE + ">?";
+		}
+		return emailAddressRE;
+	};
+	dojo.regexp.emailAddressList = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.listSeparator != "string") {
+			flags.listSeparator = "\\s;,";
+		}
+		var emailAddressRE = dojo.regexp.emailAddress(flags);
+		var emailAddressListRE = "(" + emailAddressRE + "\\s*[" + flags.listSeparator + "]\\s*)*" + emailAddressRE + "\\s*[" + flags.listSeparator + "]?\\s*";
+		return emailAddressListRE;
+	};
+	dojo.regexp.integer = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.signed == "undefined") {
+			flags.signed = [true, false];
+		}
+		if (typeof flags.separator == "undefined") {
+			flags.separator = "";
+		} else {
+			if (typeof flags.groupSize == "undefined") {
+				flags.groupSize = 3;
+			}
+		}
+		var signRE = dojo.regexp.buildGroupRE(flags.signed, function (q) {
+			return q ? "[-+]" : "";
+		});
+		var numberRE = dojo.regexp.buildGroupRE(flags.separator, function (sep) {
+			if (sep == "") {
+				return "(0|[1-9]\\d*)";
+			}
+			var grp = flags.groupSize, grp2 = flags.groupSize2;
+			if (typeof grp2 != "undefined") {
+				var grp2RE = "(0|[1-9]\\d{0," + (grp2 - 1) + "}([" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})";
+				return ((grp - grp2) > 0) ? "(" + grp2RE + "|(0|[1-9]\\d{0," + (grp - 1) + "}))" : grp2RE;
+			}
+			return "(0|[1-9]\\d{0," + (grp - 1) + "}([" + sep + "]\\d{" + grp + "})*)";
+		});
+		return signRE + numberRE;
+	};
+	dojo.regexp.realNumber = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.places != "number") {
+			flags.places = Infinity;
+		}
+		if (typeof flags.decimal != "string") {
+			flags.decimal = ".";
+		}
+		if (typeof flags.fractional == "undefined") {
+			flags.fractional = [true, false];
+		}
+		if (typeof flags.exponent == "undefined") {
+			flags.exponent = [true, false];
+		}
+		if (typeof flags.eSigned == "undefined") {
+			flags.eSigned = [true, false];
+		}
+		var integerRE = dojo.regexp.integer(flags);
+		var decimalRE = dojo.regexp.buildGroupRE(flags.fractional, function (q) {
+			var re = "";
+			if (q && (flags.places > 0)) {
+				re = "\\" + flags.decimal;
+				if (flags.places == Infinity) {
+					re = "(" + re + "\\d+)?";
+				} else {
+					re = re + "\\d{" + flags.places + "}";
+				}
+			}
+			return re;
+		});
+		var exponentRE = dojo.regexp.buildGroupRE(flags.exponent, function (q) {
+			if (q) {
+				return "([eE]" + dojo.regexp.integer({signed:flags.eSigned}) + ")";
+			}
+			return "";
+		});
+		return integerRE + decimalRE + exponentRE;
+	};
+	dojo.regexp.currency = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.signed == "undefined") {
+			flags.signed = [true, false];
+		}
+		if (typeof flags.symbol == "undefined") {
+			flags.symbol = "$";
+		}
+		if (typeof flags.placement != "string") {
+			flags.placement = "before";
+		}
+		if (typeof flags.signPlacement != "string") {
+			flags.signPlacement = "before";
+		}
+		if (typeof flags.separator == "undefined") {
+			flags.separator = ",";
+		}
+		if (typeof flags.fractional == "undefined" && typeof flags.cents != "undefined") {
+			dojo.deprecated("dojo.regexp.currency: flags.cents", "use flags.fractional instead", "0.5");
+			flags.fractional = flags.cents;
+		}
+		if (typeof flags.decimal != "string") {
+			flags.decimal = ".";
+		}
+		var signRE = dojo.regexp.buildGroupRE(flags.signed, function (q) {
+			if (q) {
+				return "[-+]";
+			}
+			return "";
+		});
+		var symbolRE = dojo.regexp.buildGroupRE(flags.symbol, function (symbol) {
+			return "\\s?" + symbol.replace(/([.$?*!=:|\\\/^])/g, "\\$1") + "\\s?";
+		});
+		switch (flags.signPlacement) {
+		  case "before":
+			symbolRE = signRE + symbolRE;
+			break;
+		  case "after":
+			symbolRE = symbolRE + signRE;
+			break;
+		}
+		var flagsCopy = flags;
+		flagsCopy.signed = false;
+		flagsCopy.exponent = false;
+		var numberRE = dojo.regexp.realNumber(flagsCopy);
+		var currencyRE;
+		switch (flags.placement) {
+		  case "before":
+			currencyRE = symbolRE + numberRE;
+			break;
+		  case "after":
+			currencyRE = numberRE + symbolRE;
+			break;
+		}
+		switch (flags.signPlacement) {
+		  case "around":
+			currencyRE = "(" + currencyRE + "|" + "\\(" + currencyRE + "\\)" + ")";
+			break;
+		  case "begin":
+			currencyRE = signRE + currencyRE;
+			break;
+		  case "end":
+			currencyRE = currencyRE + signRE;
+			break;
+		}
+		return currencyRE;
+	};
+	dojo.regexp.us.state = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.allowTerritories != "boolean") {
+			flags.allowTerritories = true;
+		}
+		if (typeof flags.allowMilitary != "boolean") {
+			flags.allowMilitary = true;
+		}
+		var statesRE = "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|" + "NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY";
+		var territoriesRE = "AS|FM|GU|MH|MP|PW|PR|VI";
+		var militaryRE = "AA|AE|AP";
+		if (flags.allowTerritories) {
+			statesRE += "|" + territoriesRE;
+		}
+		if (flags.allowMilitary) {
+			statesRE += "|" + militaryRE;
+		}
+		return "(" + statesRE + ")";
+	};
+	dojo.regexp.time = function (flags) {
+		dojo.deprecated("dojo.regexp.time", "Use dojo.date.parse instead", "0.5");
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.format == "undefined") {
+			flags.format = "h:mm:ss t";
+		}
+		if (typeof flags.amSymbol != "string") {
+			flags.amSymbol = "AM";
+		}
+		if (typeof flags.pmSymbol != "string") {
+			flags.pmSymbol = "PM";
+		}
+		var timeRE = function (format) {
+			format = format.replace(/([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+			var amRE = flags.amSymbol.replace(/([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+			var pmRE = flags.pmSymbol.replace(/([.$?*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+			format = format.replace("hh", "(0[1-9]|1[0-2])");
+			format = format.replace("h", "([1-9]|1[0-2])");
+			format = format.replace("HH", "([01][0-9]|2[0-3])");
+			format = format.replace("H", "([0-9]|1[0-9]|2[0-3])");
+			format = format.replace("mm", "([0-5][0-9])");
+			format = format.replace("m", "([1-5][0-9]|[0-9])");
+			format = format.replace("ss", "([0-5][0-9])");
+			format = format.replace("s", "([1-5][0-9]|[0-9])");
+			format = format.replace("t", "\\s?(" + amRE + "|" + pmRE + ")\\s?");
+			return format;
+		};
+		return dojo.regexp.buildGroupRE(flags.format, timeRE);
+	};
+	dojo.regexp.numberFormat = function (flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (typeof flags.format == "undefined") {
+			flags.format = "###-###-####";
+		}
+		var digitRE = function (format) {
+			format = format.replace(/([.$*!=:|{}\(\)\[\]\\\/^])/g, "\\$1");
+			format = format.replace(/\?/g, "\\d?");
+			format = format.replace(/#/g, "\\d");
+			return format;
+		};
+		return dojo.regexp.buildGroupRE(flags.format, digitRE);
+	};
+	dojo.regexp.buildGroupRE = function (a, re) {
+		if (!(a instanceof Array)) {
+			return re(a);
+		}
+		var b = [];
+		for (var i = 0; i < a.length; i++) {
+			b.push(re(a[i]));
+		}
+		return "(" + b.join("|") + ")";
+	};
+}});
+
+
 __CPAN_FILE__ src/math.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -5036,6 +10454,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.math");
 dojo.math.degToRad = function (x) {
 	return (x * Math.PI) / 180;
@@ -5144,6 +10564,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.a11y");
 dojo.require("dojo.uri.*");
 dojo.require("dojo.html.common");
@@ -5198,11 +10620,32 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.event");
 dojo.require("dojo.event.*");
 dojo.deprecated("dojo.event", "replaced by dojo.event.*", "0.5");
 
 
+__CPAN_FILE__ src/data.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data");
+	dojo.data = {};
+}});
+
+
 __CPAN_FILE__ src/hostenv_browser.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -5214,6 +10657,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 if (typeof window != "undefined") {
 	(function () {
 		if (djConfig.allowQueryConfig) {
@@ -5442,7 +10887,9 @@
 		};
 		return true;
 	}
+	dojo.hostenv._djInitFired = false;
 	function dj_load_init(e) {
+		dojo.hostenv._djInitFired = true;
 		var type = (e && e.type) ? e.type.toLowerCase() : "load";
 		if (arguments.callee.initialized || (type != "domcontentloaded" && type != "load")) {
 			return;
@@ -5618,6 +11065,175 @@
 dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && djConfig["useXDomain"], "dojo.browser_debug_xd");
 
 
+__CPAN_FILE__ src/Deferred.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.Deferred"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.provide("dojo.Deferred");
+	dojo.require("dojo.lang.func");
+	dojo.Deferred = function (canceller) {
+		this.chain = [];
+		this.id = this._nextId();
+		this.fired = -1;
+		this.paused = 0;
+		this.results = [null, null];
+		this.canceller = canceller;
+		this.silentlyCancelled = false;
+	};
+	dojo.lang.extend(dojo.Deferred, {getFunctionFromArgs:function () {
+		var a = arguments;
+		if ((a[0]) && (!a[1])) {
+			if (dojo.lang.isFunction(a[0])) {
+				return a[0];
+			} else {
+				if (dojo.lang.isString(a[0])) {
+					return dj_global[a[0]];
+				}
+			}
+		} else {
+			if ((a[0]) && (a[1])) {
+				return dojo.lang.hitch(a[0], a[1]);
+			}
+		}
+		return null;
+	}, makeCalled:function () {
+		var deferred = new dojo.Deferred();
+		deferred.callback();
+		return deferred;
+	}, repr:function () {
+		var state;
+		if (this.fired == -1) {
+			state = "unfired";
+		} else {
+			if (this.fired == 0) {
+				state = "success";
+			} else {
+				state = "error";
+			}
+		}
+		return "Deferred(" + this.id + ", " + state + ")";
+	}, toString:dojo.lang.forward("repr"), _nextId:(function () {
+		var n = 1;
+		return function () {
+			return n++;
+		};
+	})(), cancel:function () {
+		if (this.fired == -1) {
+			if (this.canceller) {
+				this.canceller(this);
+			} else {
+				this.silentlyCancelled = true;
+			}
+			if (this.fired == -1) {
+				this.errback(new Error(this.repr()));
+			}
+		} else {
+			if ((this.fired == 0) && (this.results[0] instanceof dojo.Deferred)) {
+				this.results[0].cancel();
+			}
+		}
+	}, _pause:function () {
+		this.paused++;
+	}, _unpause:function () {
+		this.paused--;
+		if ((this.paused == 0) && (this.fired >= 0)) {
+			this._fire();
+		}
+	}, _continue:function (res) {
+		this._resback(res);
+		this._unpause();
+	}, _resback:function (res) {
+		this.fired = ((res instanceof Error) ? 1 : 0);
+		this.results[this.fired] = res;
+		this._fire();
+	}, _check:function () {
+		if (this.fired != -1) {
+			if (!this.silentlyCancelled) {
+				dojo.raise("already called!");
+			}
+			this.silentlyCancelled = false;
+			return;
+		}
+	}, callback:function (res) {
+		this._check();
+		this._resback(res);
+	}, errback:function (res) {
+		this._check();
+		if (!(res instanceof Error)) {
+			res = new Error(res);
+		}
+		this._resback(res);
+	}, addBoth:function (cb, cbfn) {
+		var enclosed = this.getFunctionFromArgs(cb, cbfn);
+		if (arguments.length > 2) {
+			enclosed = dojo.lang.curryArguments(null, enclosed, arguments, 2);
+		}
+		return this.addCallbacks(enclosed, enclosed);
+	}, addCallback:function (cb, cbfn) {
+		var enclosed = this.getFunctionFromArgs(cb, cbfn);
+		if (arguments.length > 2) {
+			enclosed = dojo.lang.curryArguments(null, enclosed, arguments, 2);
+		}
+		return this.addCallbacks(enclosed, null);
+	}, addErrback:function (cb, cbfn) {
+		var enclosed = this.getFunctionFromArgs(cb, cbfn);
+		if (arguments.length > 2) {
+			enclosed = dojo.lang.curryArguments(null, enclosed, arguments, 2);
+		}
+		return this.addCallbacks(null, enclosed);
+		return this.addCallbacks(null, cbfn);
+	}, addCallbacks:function (cb, eb) {
+		this.chain.push([cb, eb]);
+		if (this.fired >= 0) {
+			this._fire();
+		}
+		return this;
+	}, _fire:function () {
+		var chain = this.chain;
+		var fired = this.fired;
+		var res = this.results[fired];
+		var self = this;
+		var cb = null;
+		while (chain.length > 0 && this.paused == 0) {
+			var pair = chain.shift();
+			var f = pair[fired];
+			if (f == null) {
+				continue;
+			}
+			try {
+				res = f(res);
+				fired = ((res instanceof Error) ? 1 : 0);
+				if (res instanceof dojo.Deferred) {
+					cb = function (res) {
+						self._continue(res);
+					};
+					this._pause();
+				}
+			}
+			catch (err) {
+				fired = 1;
+				res = err;
+			}
+		}
+		this.fired = fired;
+		this.results[fired] = res;
+		if ((cb) && (this.paused)) {
+			res.addBoth(cb);
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/iCalendar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -5629,10 +11245,919 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.cal.iCalendar");
 dojo.deprecated("dojo.icalendar", "use dojo.cal.iCalendar isntead", "0.5");
 
 
+__CPAN_FILE__ src/profile.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.profile"]], definePackage:function (dojo) {
+	dojo.provide("dojo.profile");
+	dojo.profile = {_profiles:{}, _pns:[], start:function (name) {
+		if (!this._profiles[name]) {
+			this._profiles[name] = {iters:0, total:0};
+			this._pns[this._pns.length] = name;
+		} else {
+			if (this._profiles[name]["start"]) {
+				this.end(name);
+			}
+		}
+		this._profiles[name].end = null;
+		this._profiles[name].start = new Date();
+	}, end:function (name) {
+		var ed = new Date();
+		if ((this._profiles[name]) && (this._profiles[name]["start"])) {
+			with (this._profiles[name]) {
+				end = ed;
+				total += (end - start);
+				start = null;
+				iters++;
+			}
+		} else {
+			return true;
+		}
+	}, dump:function (appendToDoc) {
+		var tbl = document.createElement("table");
+		with (tbl.style) {
+			border = "1px solid black";
+			borderCollapse = "collapse";
+		}
+		var hdr = tbl.createTHead();
+		var hdrtr = hdr.insertRow(0);
+		var cols = ["Identifier", "Calls", "Total", "Avg"];
+		for (var x = 0; x < cols.length; x++) {
+			var ntd = hdrtr.insertCell(x);
+			with (ntd.style) {
+				backgroundColor = "#225d94";
+				color = "white";
+				borderBottom = "1px solid black";
+				borderRight = "1px solid black";
+				fontFamily = "tahoma";
+				fontWeight = "bolder";
+				paddingLeft = paddingRight = "5px";
+			}
+			ntd.appendChild(document.createTextNode(cols[x]));
+		}
+		for (var x = 0; x < this._pns.length; x++) {
+			var prf = this._profiles[this._pns[x]];
+			this.end(this._pns[x]);
+			if (prf.iters > 0) {
+				var bdytr = tbl.insertRow(true);
+				var vals = [this._pns[x], prf.iters, prf.total, parseInt(prf.total / prf.iters)];
+				for (var y = 0; y < vals.length; y++) {
+					var cc = bdytr.insertCell(y);
+					cc.appendChild(document.createTextNode(vals[y]));
+					with (cc.style) {
+						borderBottom = "1px solid gray";
+						paddingLeft = paddingRight = "5px";
+						if (x % 2) {
+							backgroundColor = "#e1f1ff";
+						}
+						if (y > 0) {
+							textAlign = "right";
+							borderRight = "1px solid gray";
+						} else {
+							borderRight = "1px solid black";
+						}
+					}
+				}
+			}
+		}
+		if (appendToDoc) {
+			var ne = document.createElement("div");
+			ne.id = "profileOutputTable";
+			with (ne.style) {
+				fontFamily = "Courier New, monospace";
+				fontSize = "12px";
+				lineHeight = "16px";
+				borderTop = "1px solid black";
+				padding = "10px";
+			}
+			if (document.getElementById("profileOutputTable")) {
+				dojo.body().replaceChild(ne, document.getElementById("profileOutputTable"));
+			} else {
+				dojo.body().appendChild(ne);
+			}
+			ne.appendChild(tbl);
+		}
+		return tbl;
+	}};
+	dojo.profile.stop = dojo.profile.end;
+}});
+
+
+__CPAN_FILE__ src/loader.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["require", ],
+["kwCompoundRequire", {
+//		browser: [
+//			["foo.bar.baz", true, true], // an example that passes multiple args to loadModule(],
+["require", ],
+["require", ],
+["require", ],
+["require", ],
+["provide", ],
+["provide", "dojo.foo"],
+["provide", ],
+["provide", ],
+["provide", "dojo.html.common"],
+["provide", ]],
+definePackage: function(dojo){/*
+	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
+*/
+
+/*
+ * loader.js - A bootstrap module.  Runs before the hostenv_*.js file. Contains all of the package loading methods.
+ */
+
+//A semi-colon is at the start of the line because after doing a build, this function definition
+//get compressed onto the same line as the last line in bootstrap1.js. That list line is just a
+//curly bracket, and the browser complains about that syntax. The semicolon fixes it. Putting it
+//here instead of at the end of bootstrap1.js, since it is more of an issue for this file, (using
+//the closure), and bootstrap1.js could change in the future.
+;(function(){
+	//Additional properties for dojo.hostenv
+	var _addHostEnv = {
+		pkgFileName: "__package__",
+	
+		// for recursion protection
+		loading_modules_: {},
+		loaded_modules_: {},
+		addedToLoadingCount: [],
+		removedFromLoadingCount: [],
+	
+		inFlightCount: 0,
+	
+		// FIXME: it should be possible to pull module prefixes in from djConfig
+		modulePrefixes_: {
+			dojo: {name: "dojo", value: "src"}
+		},
+
+		setModulePrefix: function(/*String*/module, /*String*/prefix){
+			// summary: establishes module/prefix pair
+			this.modulePrefixes_[module] = {name: module, value: prefix};
+		},
+
+		moduleHasPrefix: function(/*String*/module){
+			// summary: checks to see if module has been established
+			var mp = this.modulePrefixes_;
+			return Boolean(mp[module] && mp[module].value); // Boolean
+		},
+
+		getModulePrefix: function(/*String*/module){
+			// summary: gets the prefix associated with module
+			if(this.moduleHasPrefix(module)){
+				return this.modulePrefixes_[module].value; // String
+			}
+			return module; // String
+		},
+
+		getTextStack: [],
+		loadUriStack: [],
+		loadedUris: [],
+	
+		//WARNING: This variable is referenced by packages outside of bootstrap: FloatingPane.js and undo/browser.js
+		post_load_: false,
+		
+		//Egad! Lots of test files push on this directly instead of using dojo.addOnLoad.
+		modulesLoadedListeners: [],
+		unloadListeners: [],
+		loadNotifying: false
+	};
+	
+	//Add all of these properties to dojo.hostenv
+	for(var param in _addHostEnv){
+		dojo.hostenv[param] = _addHostEnv[param];
+	}
+})();
+
+dojo.hostenv.loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){
+// summary:
+//	Load a Javascript module given a relative path
+//
+// description:
+//	Loads and interprets the script located at relpath, which is relative to the
+//	script root directory.  If the script is found but its interpretation causes
+//	a runtime exception, that exception is not caught by us, so the caller will
+//	see it.  We return a true value if and only if the script is found.
+//
+//	For now, we do not have an implementation of a true search path.  We
+//	consider only the single base script uri, as returned by getBaseScriptUri().
+//
+// relpath: A relative path to a script (no leading '/', and typically
+// 	ending in '.js').
+// module: A module whose existance to check for after loading a path.
+//	Can be used to determine success or failure of the load.
+// cb: a callback function to pass the result of evaluating the script
+
+	var uri;
+	if(relpath.charAt(0) == '/' || relpath.match(/^\w+:/)){
+		// dojo.raise("relpath '" + relpath + "'; must be relative");
+		uri = relpath;
+	}else{
+		uri = this.getBaseScriptUri() + relpath;
+	}
+	if(djConfig.cacheBust && dojo.render.html.capable){
+		uri += "?" + String(djConfig.cacheBust).replace(/\W+/g,"");
+	}
+	try{
+		return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb); // Boolean
+	}catch(e){
+		dojo.debug(e);
+		return false; // Boolean
+	}
+}
+
+dojo.hostenv.loadUri = function(/*String (URL)*/uri, /*Function?*/cb){
+// summary:
+//	Loads JavaScript from a URI
+//
+// description:
+//	Reads the contents of the URI, and evaluates the contents.  This is used to load modules as well
+//	as resource bundles.  Returns true if it succeeded. Returns false if the URI reading failed.
+//	Throws if the evaluation throws.
+//
+// uri: a uri which points at the script to be loaded
+// cb: a callback function to process the result of evaluating the script as an expression, typically
+//	used by the resource bundle loader to load JSON-style resources
+
+	if(this.loadedUris[uri]){
+		return true; // Boolean
+	}
+	var contents = this.getText(uri, null, true);
+	if(!contents){ return false; } // Boolean
+	this.loadedUris[uri] = true;
+	if(cb){ contents = '('+contents+')'; }
+	var value = dj_eval(contents);
+	if(cb){ cb(value); }
+	return true; // Boolean
+}
+
+// FIXME: probably need to add logging to this method
+dojo.hostenv.loadUriAndCheck = function(/*String (URL)*/uri, /*String*/moduleName, /*Function?*/cb){
+	// summary: calls loadUri then findModule and returns true if both succeed
+	var ok = true;
+	try{
+		ok = this.loadUri(uri, cb);
+	}catch(e){
+		dojo.debug("failed loading ", uri, " with error: ", e);
+	}
+	return Boolean(ok && this.findModule(moduleName, false)); // Boolean
+}
+
+dojo.loaded = function(){ }
+dojo.unloaded = function(){ }
+
+dojo.hostenv.loaded = function(){
+	this.loadNotifying = true;
+	this.post_load_ = true;
+	var mll = this.modulesLoadedListeners;
+	for(var x=0; x<mll.length; x++){
+		mll[x]();
+	}
+
+	//Clear listeners so new ones can be added
+	//For other xdomain package loads after the initial load.
+	this.modulesLoadedListeners = [];
+	this.loadNotifying = false;
+
+	dojo.loaded();
+}
+
+dojo.hostenv.unloaded = function(){
+	var mll = this.unloadListeners;
+	while(mll.length){
+		(mll.pop())();
+	}
+	dojo.unloaded();
+}
+
+dojo.addOnLoad = function(/*Object?*/obj, /*String|Function*/functionName) {
+// summary:
+//	Registers a function to be triggered after the DOM has finished loading 
+//	and widgets declared in markup have been instantiated.  Images and CSS files
+//	may or may not have finished downloading when the specified function is called.
+//	(Note that widgets' CSS and HTML code is guaranteed to be downloaded before said
+//	widgets are instantiated.)
+//
+// usage:
+//	dojo.addOnLoad(functionPointer)
+//	dojo.addOnLoad(object, "functionName")
+
+	var dh = dojo.hostenv;
+	if(arguments.length == 1) {
+		dh.modulesLoadedListeners.push(obj);
+	} else if(arguments.length > 1) {
+		dh.modulesLoadedListeners.push(function() {
+			obj[functionName]();
+		});
+	}
+
+	//Added for xdomain loading. dojo.addOnLoad is used to
+	//indicate callbacks after doing some dojo.require() statements.
+	//In the xdomain case, if all the requires are loaded (after initial
+	//page load), then immediately call any listeners.
+	if(dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying){
+		dh.callLoaded();
+	}
+}
+
+dojo.addOnUnload = function(/*Object?*/obj, /*String|Function?*/functionName){
+// summary: registers a function to be triggered when the page unloads
+//
+// usage:
+//	dojo.addOnLoad(functionPointer)
+//	dojo.addOnLoad(object, "functionName")
+	var dh = dojo.hostenv;
+	if(arguments.length == 1){
+		dh.unloadListeners.push(obj);
+	} else if(arguments.length > 1) {
+		dh.unloadListeners.push(function() {
+			obj[functionName]();
+		});
+	}
+}
+
+dojo.hostenv.modulesLoaded = function(){
+	if(this.post_load_){ return; }
+	if(this.loadUriStack.length==0 && this.getTextStack.length==0){
+		if(this.inFlightCount > 0){ 
+			dojo.debug("files still in flight!");
+			return;
+		}
+		dojo.hostenv.callLoaded();
+	}
+}
+
+dojo.hostenv.callLoaded = function(){
+	//The "object" check is for IE, and the other opera check fixes an issue
+	//in Opera where it could not find the body element in some widget test cases.
+	//For 0.9, maybe route all browsers through the setTimeout (need protection
+	//still for non-browser environments though). This might also help the issue with
+	//FF 2.0 and freezing issues where we try to do sync xhr while background css images
+	//are being loaded (trac #2572)? Consider for 0.9.
+	if(typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)){
+		setTimeout("dojo.hostenv.loaded();", 0);
+	}else{
+		dojo.hostenv.loaded();
+	}
+}
+
+dojo.hostenv.getModuleSymbols = function(/*String*/modulename){
+// summary:
+//	Converts a module name in dotted JS notation to an array representing the path in the source tree
+	var syms = modulename.split(".");
+	for(var i = syms.length; i>0; i--){
+		var parentModule = syms.slice(0, i).join(".");
+		if((i==1) && !this.moduleHasPrefix(parentModule)){		
+			// Support default module directory (sibling of dojo) for top-level modules 
+			syms[0] = "../" + syms[0];
+		}else{
+			var parentModulePath = this.getModulePrefix(parentModule);
+			if(parentModulePath != parentModule){
+				syms.splice(0, i, parentModulePath);
+				break;
+			}
+		}
+	}
+	return syms; // Array
+}
+
+dojo.hostenv._global_omit_module_check = false;
+dojo.hostenv.loadModule = function(/*String*/moduleName, /*Boolean?*/exactOnly, /*Boolean?*/omitModuleCheck){
+// summary:
+//	loads a Javascript module from the appropriate URI
+//
+// description:
+//	loadModule("A.B") first checks to see if symbol A.B is defined. 
+//	If it is, it is simply returned (nothing to do).
+//	
+//	If it is not defined, it will look for "A/B.js" in the script root directory,
+//	followed by "A.js".
+//	
+//	It throws if it cannot find a file to load, or if the symbol A.B is not
+//	defined after loading.
+//	
+//	It returns the object A.B.
+//	
+//	This does nothing about importing symbols into the current package.
+//	It is presumed that the caller will take care of that. For example, to import
+//	all symbols:
+//	
+//	   with (dojo.hostenv.loadModule("A.B")) {
+//	      ...
+//	   }
+//	
+//	And to import just the leaf symbol:
+//	
+//	   var B = dojo.hostenv.loadModule("A.B");
+//	   ...
+//	
+//	dj_load is an alias for dojo.hostenv.loadModule
+
+	if(!moduleName){ return; }
+	omitModuleCheck = this._global_omit_module_check || omitModuleCheck;
+	var module = this.findModule(moduleName, false);
+	if(module){
+		return module;
+	}
+
+	// protect against infinite recursion from mutual dependencies
+	if(dj_undef(moduleName, this.loading_modules_)){
+		this.addedToLoadingCount.push(moduleName);
+	}
+	this.loading_modules_[moduleName] = 1;
+
+	// convert periods to slashes
+	var relpath = moduleName.replace(/\./g, '/') + '.js';
+
+	var nsyms = moduleName.split(".");
+	
+	// this line allowed loading of a module manifest as if it were a namespace
+	// it's an interesting idea, but shouldn't be combined with 'namespaces' proper
+	// and leads to unwanted dependencies
+	// the effect can be achieved in other (albeit less-flexible) ways now, so I am
+	// removing this pending further design work
+	// perhaps we can explicitly define this idea of a 'module manifest', and subclass
+	// 'namespace manifest' from that
+	//dojo.getNamespace(nsyms[0]);
+
+	var syms = this.getModuleSymbols(moduleName);
+	var startedRelative = ((syms[0].charAt(0) != '/') && !syms[0].match(/^\w+:/));
+	var last = syms[syms.length - 1];
+	var ok;
+	// figure out if we're looking for a full package, if so, we want to do
+	// things slightly diffrently
+	if(last=="*"){
+		moduleName = nsyms.slice(0, -1).join('.');
+		while(syms.length){
+			syms.pop();
+			syms.push(this.pkgFileName);
+			relpath = syms.join("/") + '.js';
+			if(startedRelative && relpath.charAt(0)=="/"){
+				relpath = relpath.slice(1);
+			}
+			ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null);
+			if(ok){ break; }
+			syms.pop();
+		}
+	}else{
+		relpath = syms.join("/") + '.js';
+		moduleName = nsyms.join('.');
+		var modArg = !omitModuleCheck ? moduleName : null;
+		ok = this.loadPath(relpath, modArg);
+		if(!ok && !exactOnly){
+			syms.pop();
+			while(syms.length){
+				relpath = syms.join('/') + '.js';
+				ok = this.loadPath(relpath, modArg);
+				if(ok){ break; }
+				syms.pop();
+				relpath = syms.join('/') + '/'+this.pkgFileName+'.js';
+				if(startedRelative && relpath.charAt(0)=="/"){
+					relpath = relpath.slice(1);
+				}
+				ok = this.loadPath(relpath, modArg);
+				if(ok){ break; }
+			}
+		}
+
+		if(!ok && !omitModuleCheck){
+			dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
+		}
+	}
+
+	// check that the symbol was defined
+	//Don't bother if we're doing xdomain (asynchronous) loading.
+	if(!omitModuleCheck && !this["isXDomain"]){
+		// pass in false so we can give better error
+		module = this.findModule(moduleName, false);
+		if(!module){
+			dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'"); 
+		}
+	}
+
+	return module;
+}
+
+dojo.hostenv.startPackage = function(/*String*/packageName){
+// summary:
+//	Creates a JavaScript package
+//
+// description:
+//	startPackage("A.B") follows the path, and at each level creates a new empty
+//	object or uses what already exists. It returns the result.
+//
+// packageName: the package to be created as a String in dot notation
+
+	//Make sure we have a string.
+	var fullPkgName = String(packageName);
+	var strippedPkgName = fullPkgName;
+
+	var syms = packageName.split(/\./);
+	if(syms[syms.length-1]=="*"){
+		syms.pop();
+		strippedPkgName = syms.join(".");
+	}
+	var evaledPkg = dojo.evalObjPath(strippedPkgName, true);
+	this.loaded_modules_[fullPkgName] = evaledPkg;
+	this.loaded_modules_[strippedPkgName] = evaledPkg;
+	
+	return evaledPkg; // Object
+}
+
+dojo.hostenv.findModule = function(/*String*/moduleName, /*Boolean?*/mustExist){
+// summary:
+//	Returns the Object representing the module, if it exists, otherwise null.
+//
+// moduleName A fully qualified module including package name, like 'A.B'.
+// mustExist Optional, default false. throw instead of returning null
+//	if the module does not currently exist.
+
+	var lmn = String(moduleName);
+
+	if(this.loaded_modules_[lmn]){
+		return this.loaded_modules_[lmn]; // Object
+	}
+
+	if(mustExist){
+		dojo.raise("no loaded module named '" + moduleName + "'");
+	}
+	return null; // null
+}
+
+//Start of old bootstrap2:
+
+dojo.kwCompoundRequire = function(/*Object containing Arrays*/modMap){
+// description:
+//	This method taks a "map" of arrays which one can use to optionally load dojo
+//	modules. The map is indexed by the possible dojo.hostenv.name_ values, with
+//	two additional values: "default" and "common". The items in the "default"
+//	array will be loaded if none of the other items have been choosen based on
+//	the hostenv.name_ item. The items in the "common" array will _always_ be
+//	loaded, regardless of which list is chosen.  Here's how it's normally
+//	called:
+//	
+//	dojo.kwCompoundRequire({
+//		browser: [
+//			["foo.bar.baz", true, true], // an example that passes multiple args to loadModule()
+//			"foo.sample.*",
+//			"foo.test,
+//		],
+//		default: [ "foo.sample.*" ],
+//		common: [ "really.important.module.*" ]
+//	});
+
+	var common = modMap["common"]||[];
+	var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_]||[]) : common.concat(modMap["default"]||[]);
+
+	for(var x=0; x<result.length; x++){
+		var curr = result[x];
+		if(curr.constructor == Array){
+			dojo.hostenv.loadModule.apply(dojo.hostenv, curr);
+		}else{
+			dojo.hostenv.loadModule(curr);
+		}
+	}
+}
+
+dojo.require = function(/*String*/ resourceName){
+	// summary
+	//	Ensure that the given resource (ie, javascript
+	//	source file) has been loaded.
+	// description
+	//	dojo.require() is similar to C's #include command or java's "import" command.
+	//	You call dojo.require() to pull in the resources (ie, javascript source files)
+	//	that define the functions you are using. 
+	//
+	//	Note that in the case of a build, many resources have already been included
+	//	into dojo.js (ie, many of the javascript source files have been compressed and
+	//	concatened into dojo.js), so many dojo.require() calls will simply return
+	//	without downloading anything.
+	dojo.hostenv.loadModule.apply(dojo.hostenv, arguments);
+}
+
+dojo.requireIf = function(/*Boolean*/ condition, /*String*/ resourceName){
+	// summary
+	//	If the condition is true then call dojo.require() for the specified resource
+	var arg0 = arguments[0];
+	if((arg0 === true)||(arg0=="common")||(arg0 && dojo.render[arg0].capable)){
+		var args = [];
+		for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); }
+		dojo.require.apply(dojo, args);
+	}
+}
+
+dojo.requireAfterIf = dojo.requireIf;
+
+dojo.provide = function(/*String*/ resourceName){
+	// summary
+	//	Each javascript source file must have (exactly) one dojo.provide()
+	//	call at the top of the file, corresponding to the file name.
+	//	For example, dojo/src/foo.js must have dojo.provide("dojo.foo"); at the top of the file.
+	//
+	// description
+	//	Each javascript source file is called a resource.  When a resource
+	//	is loaded by the browser, dojo.provide() registers that it has
+	//	been loaded.
+	//	
+	//	For backwards compatibility reasons, in addition to registering the resource,
+	//	dojo.provide() also ensures that the javascript object for the module exists.  For
+	//	example, dojo.provide("dojo.html.common"), in addition to registering that common.js
+	//	is a resource for the dojo.html module, will ensure that the dojo.html javascript object
+	//	exists, so that calls like dojo.html.foo = function(){ ... } don't fail.
+	//
+	//	In the case of a build (or in the future, a rollup), where multiple javascript source
+	//	files are combined into one bigger file (similar to a .lib or .jar file), that file
+	//	will contain multiple dojo.provide() calls, to note that it includes
+	//	multiple resources.
+	return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
+}
+
+dojo.registerModulePath = function(/*String*/module, /*String*/prefix){
+	// summary: maps a module name to a path
+	// description: An unregistered module is given the default path of ../<module>,
+	//	relative to Dojo root. For example, module acme is mapped to ../acme.
+	//	If you want to use a different module name, use dojo.registerModulePath. 
+	return dojo.hostenv.setModulePrefix(module, prefix);
+}
+
+if(djConfig["modulePaths"]){
+	for(var param in djConfig["modulePaths"]){
+		dojo.registerModulePath(param, djConfig["modulePaths"][param]);
+	}
+}
+
+dojo.setModulePrefix = function(/*String*/module, /*String*/prefix){
+	// summary: maps a module name to a path
+	dojo.deprecated('dojo.setModulePrefix("' + module + '", "' + prefix + '")', "replaced by dojo.registerModulePath", "0.5");
+	return dojo.registerModulePath(module, prefix);
+}
+
+dojo.exists = function(/*Object*/obj, /*String*/name){
+	// summary: determine if an object supports a given method
+	// description: useful for longer api chains where you have to test each object in the chain
+	var p = name.split(".");
+	for(var i = 0; i < p.length; i++){
+		if(!obj[p[i]]){ return false; } // Boolean
+		obj = obj[p[i]];
+	}
+	return true; // Boolean
+}
+
+// Localization routines
+
+dojo.hostenv.normalizeLocale = function(/*String?*/locale){
+//	summary:
+//		Returns canonical form of locale, as used by Dojo.  All variants are case-insensitive and are separated by '-'
+//		as specified in RFC 3066. If no locale is specified, the user agent's default is returned.
+
+	var result = locale ? locale.toLowerCase() : dojo.locale;
+	if(result == "root"){
+		result = "ROOT";
+	}
+	return result;// String
+};
+
+dojo.hostenv.searchLocalePath = function(/*String*/locale, /*Boolean*/down, /*Function*/searchFunc){
+//	summary:
+//		A helper method to assist in searching for locale-based resources.  Will iterate through
+//		the variants of a particular locale, either up or down, executing a callback function.
+//		For example, "en-us" and true will try "en-us" followed by "en" and finally "ROOT".
+
+	locale = dojo.hostenv.normalizeLocale(locale);
+
+	var elements = locale.split('-');
+	var searchlist = [];
+	for(var i = elements.length; i > 0; i--){
+		searchlist.push(elements.slice(0, i).join('-'));
+	}
+	searchlist.push(false);
+	if(down){searchlist.reverse();}
+
+	for(var j = searchlist.length - 1; j >= 0; j--){
+		var loc = searchlist[j] || "ROOT";
+		var stop = searchFunc(loc);
+		if(stop){ break; }
+	}
+}
+
+//These two functions are placed outside of preloadLocalizations
+//So that the xd loading can use/override them.
+dojo.hostenv.localesGenerated /***BUILD:localesGenerated***/; // value will be inserted here at build time, if necessary
+
+dojo.hostenv.registerNlsPrefix = function(){
+// summary:
+//	Register module "nls" to point where Dojo can find pre-built localization files
+	dojo.registerModulePath("nls","nls");	
+}
+
+dojo.hostenv.preloadLocalizations = function(){
+// summary:
+//	Load built, flattened resource bundles, if available for all locales used in the page.
+//	Execute only once.  Note that this is a no-op unless there is a build.
+
+	if(dojo.hostenv.localesGenerated){
+		dojo.hostenv.registerNlsPrefix();
+
+		function preload(locale){
+			locale = dojo.hostenv.normalizeLocale(locale);
+			dojo.hostenv.searchLocalePath(locale, true, function(loc){
+				for(var i=0; i<dojo.hostenv.localesGenerated.length;i++){
+					if(dojo.hostenv.localesGenerated[i] == loc){
+						dojo["require"]("nls.dojo_"+loc);
+						return true; // Boolean
+					}
+				}
+				return false; // Boolean
+			});
+		}
+		preload();
+		var extra = djConfig.extraLocale||[];
+		for(var i=0; i<extra.length; i++){
+			preload(extra[i]);
+		}
+	}
+	dojo.hostenv.preloadLocalizations = function(){};
+}
+
+dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String?*/availableFlatLocales){
+// summary:
+//	Declares translated resources and loads them if necessary, in the same style as dojo.require.
+//	Contents of the resource bundle are typically strings, but may be any name/value pair,
+//	represented in JSON format.  See also dojo.i18n.getLocalization.
+//
+// moduleName: name of the package containing the "nls" directory in which the bundle is found
+// bundleName: bundle name, i.e. the filename without the '.js' suffix
+// locale: the locale to load (optional)  By default, the browser's user locale as defined by dojo.locale
+// availableFlatLocales: A comma-separated list of the available, flattened locales for this bundle.
+// This argument should only be set by the build process.
+//
+// description:
+//	Load translated resource bundles provided underneath the "nls" directory within a package.
+//	Translated resources may be located in different packages throughout the source tree.  For example,
+//	a particular widget may define one or more resource bundles, structured in a program as follows,
+//	where moduleName is mycode.mywidget and bundleNames available include bundleone and bundletwo:
+//	...
+//	mycode/
+//	 mywidget/
+//	  nls/
+//	   bundleone.js (the fallback translation, English in this example)
+//	   bundletwo.js (also a fallback translation)
+//	   de/
+//	    bundleone.js
+//	    bundletwo.js
+//	   de-at/
+//	    bundleone.js
+//	   en/
+//	    (empty; use the fallback translation)
+//	   en-us/
+//	    bundleone.js
+//	   en-gb/
+//	    bundleone.js
+//	   es/
+//	    bundleone.js
+//	    bundletwo.js
+//	  ...etc
+//	...
+//	Each directory is named for a locale as specified by RFC 3066, (http://www.ietf.org/rfc/rfc3066.txt),
+//	normalized in lowercase.  Note that the two bundles in the example do not define all the same variants.
+//	For a given locale, bundles will be loaded for that locale and all more general locales above it, including
+//	a fallback at the root directory.  For example, a declaration for the "de-at" locale will first
+//	load nls/de-at/bundleone.js, then nls/de/bundleone.js and finally nls/bundleone.js.  The data will
+//	be flattened into a single Object so that lookups will follow this cascading pattern.  An optional build
+//	step can preload the bundles to avoid data redundancy and the multiple network hits normally required to
+//	load these resources.
+
+	dojo.hostenv.preloadLocalizations();
+	var targetLocale = dojo.hostenv.normalizeLocale(locale);
+ 	var bundlePackage = [moduleName, "nls", bundleName].join(".");
+//NOTE: When loading these resources, the packaging does not match what is on disk.  This is an
+// implementation detail, as this is just a private data structure to hold the loaded resources.
+// e.g. tests/hello/nls/en-us/salutations.js is loaded as the object tests.hello.nls.salutations.en_us={...}
+// The structure on disk is intended to be most convenient for developers and translators, but in memory
+// it is more logical and efficient to store in a different order.  Locales cannot use dashes, since the
+// resulting path will not evaluate as valid JS, so we translate them to underscores.
+	
+	//Find the best-match locale to load if we have available flat locales.
+	var bestLocale = "";
+	if(availableFlatLocales){
+		var flatLocales = availableFlatLocales.split(",");
+		for(var i = 0; i < flatLocales.length; i++){
+			//Locale must match from start of string.
+			if(targetLocale.indexOf(flatLocales[i]) == 0){
+				if(flatLocales[i].length > bestLocale.length){
+					bestLocale = flatLocales[i];
+				}
+			}
+		}
+		if(!bestLocale){
+			bestLocale = "ROOT";
+		}		
+	}
+
+	//See if the desired locale is already loaded.
+	var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
+	var bundle = dojo.hostenv.findModule(bundlePackage);
+	var localizedBundle = null;
+	if(bundle){
+		if(djConfig.localizationComplete && bundle._built){return;}
+		var jsLoc = tempLocale.replace('-', '_');
+		var translationPackage = bundlePackage+"."+jsLoc;
+		localizedBundle = dojo.hostenv.findModule(translationPackage);
+	}
+
+	if(!localizedBundle){
+		bundle = dojo.hostenv.startPackage(bundlePackage);
+		var syms = dojo.hostenv.getModuleSymbols(moduleName);
+		var modpath = syms.concat("nls").join("/");
+		var parent;
+
+		dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function(loc){
+			var jsLoc = loc.replace('-', '_');
+			var translationPackage = bundlePackage + "." + jsLoc;
+			var loaded = false;
+			if(!dojo.hostenv.findModule(translationPackage)){
+				// Mark loaded whether it's found or not, so that further load attempts will not be made
+				dojo.hostenv.startPackage(translationPackage);
+				var module = [modpath];
+				if(loc != "ROOT"){module.push(loc);}
+				module.push(bundleName);
+				var filespec = module.join("/") + '.js';
+				loaded = dojo.hostenv.loadPath(filespec, null, function(hash){
+					// Use singleton with prototype to point to parent bundle, then mix-in result from loadPath
+					var clazz = function(){};
+					clazz.prototype = parent;
+					bundle[jsLoc] = new clazz();
+					for(var j in hash){ bundle[jsLoc][j] = hash[j]; }
+				});
+			}else{
+				loaded = true;
+			}
+			if(loaded && bundle[jsLoc]){
+				parent = bundle[jsLoc];
+			}else{
+				bundle[jsLoc] = parent;
+			}
+			
+			if(availableFlatLocales){
+				//Stop the locale path searching if we know the availableFlatLocales, since
+				//the first call to this function will load the only bundle that is needed.
+				return true;
+			}
+		});
+	}
+
+	//Save the best locale bundle as the target locale bundle when we know the
+	//the available bundles.
+	if(availableFlatLocales && targetLocale != bestLocale){
+		bundle[targetLocale.replace('-', '_')] = bundle[bestLocale.replace('-', '_')];
+	}
+};
+
+(function(){
+	// If other locales are used, dojo.requireLocalization should load them as well, by default.
+	// Override dojo.requireLocalization to do load the default bundle, then iterate through the
+	// extraLocale list and load those translations as well, unless a particular locale was requested.
+
+	var extra = djConfig.extraLocale;
+	if(extra){
+		if(!extra instanceof Array){
+			extra = [extra];
+		}
+
+		var req = dojo.requireLocalization;
+		dojo.requireLocalization = function(m, b, locale, availableFlatLocales){
+			req(m,b,locale, availableFlatLocales);
+			if(locale){return;}
+			for(var i=0; i<extra.length; i++){
+				req(m,b,extra[i], availableFlatLocales);
+			}
+		};
+	}
+})();
+
+}});
+
 __CPAN_FILE__ src/profile.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -5644,6 +12169,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.profile");
 dojo.profile = {_profiles:{}, _pns:[], start:function (name) {
 	if (!this._profiles[name]) {
@@ -5737,6 +12264,877 @@
 dojo.profile.stop = dojo.profile.end;
 
 
+__CPAN_FILE__ src/storage.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.storage"], ["require", "dojo.lang.*"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.storage");
+	dojo.require("dojo.lang.*");
+	dojo.require("dojo.event.*");
+	dojo.storage = new function () {
+	};
+	dojo.declare("dojo.storage", null, {SUCCESS:"success", FAILED:"failed", PENDING:"pending", SIZE_NOT_AVAILABLE:"Size not available", SIZE_NO_LIMIT:"No size limit", namespace:"default", onHideSettingsUI:null, initialize:function () {
+		dojo.unimplemented("dojo.storage.initialize");
+	}, isAvailable:function () {
+		dojo.unimplemented("dojo.storage.isAvailable");
+	}, put:function (key, value, resultsHandler) {
+		dojo.unimplemented("dojo.storage.put");
+	}, get:function (key) {
+		dojo.unimplemented("dojo.storage.get");
+	}, hasKey:function (key) {
+		return (this.get(key) != null);
+	}, getKeys:function () {
+		dojo.unimplemented("dojo.storage.getKeys");
+	}, clear:function () {
+		dojo.unimplemented("dojo.storage.clear");
+	}, remove:function (key) {
+		dojo.unimplemented("dojo.storage.remove");
+	}, isPermanent:function () {
+		dojo.unimplemented("dojo.storage.isPermanent");
+	}, getMaximumSize:function () {
+		dojo.unimplemented("dojo.storage.getMaximumSize");
+	}, hasSettingsUI:function () {
+		return false;
+	}, showSettingsUI:function () {
+		dojo.unimplemented("dojo.storage.showSettingsUI");
+	}, hideSettingsUI:function () {
+		dojo.unimplemented("dojo.storage.hideSettingsUI");
+	}, getType:function () {
+		dojo.unimplemented("dojo.storage.getType");
+	}, isValidKey:function (keyName) {
+		if ((keyName == null) || (typeof keyName == "undefined")) {
+			return false;
+		}
+		return /^[0-9A-Za-z_]*$/.test(keyName);
+	}});
+	dojo.storage.manager = new function () {
+		this.currentProvider = null;
+		this.available = false;
+		this._initialized = false;
+		this._providers = [];
+		this.namespace = "default";
+		this.initialize = function () {
+			this.autodetect();
+		};
+		this.register = function (name, instance) {
+			this._providers[this._providers.length] = instance;
+			this._providers[name] = instance;
+		};
+		this.setProvider = function (storageClass) {
+		};
+		this.autodetect = function () {
+			if (this._initialized == true) {
+				return;
+			}
+			var providerToUse = null;
+			for (var i = 0; i < this._providers.length; i++) {
+				providerToUse = this._providers[i];
+				if (dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == false && providerToUse.getType() == djConfig["forceStorageProvider"]) {
+					providerToUse.isAvailable();
+					break;
+				} else {
+					if (dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == true && providerToUse.isAvailable()) {
+						break;
+					}
+				}
+			}
+			if (providerToUse == null) {
+				this._initialized = true;
+				this.available = false;
+				this.currentProvider = null;
+				dojo.raise("No storage provider found for this platform");
+			}
+			this.currentProvider = providerToUse;
+			for (var i in providerToUse) {
+				dojo.storage[i] = providerToUse[i];
+			}
+			dojo.storage.manager = this;
+			dojo.storage.initialize();
+			this._initialized = true;
+			this.available = true;
+		};
+		this.isAvailable = function () {
+			return this.available;
+		};
+		this.isInitialized = function () {
+			if (this.currentProvider.getType() == "dojo.storage.browser.FlashStorageProvider" && dojo.flash.ready == false) {
+				return false;
+			} else {
+				return this._initialized;
+			}
+		};
+		this.supportsProvider = function (storageClass) {
+			try {
+				var provider = eval("new " + storageClass + "()");
+				var results = provider.isAvailable();
+				if (results == null || typeof results == "undefined") {
+					return false;
+				}
+				return results;
+			}
+			catch (exception) {
+				return false;
+			}
+		};
+		this.getProvider = function () {
+			return this.currentProvider;
+		};
+		this.loaded = function () {
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/event.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.event"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.event");
+	dojo.require("dojo.event.*");
+	dojo.deprecated("dojo.event", "replaced by dojo.event.*", "0.5");
+}});
+
+
+__CPAN_FILE__ src/date.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.date"]], definePackage:function (dojo) {
+	dojo.provide("dojo.date");
+	dojo.deprecated("dojo.date", "use one of the modules in dojo.date.* instead", "0.5");
+}});
+
+
+__CPAN_FILE__ src/hostenv_spidermonkey.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]]],
+definePackage: function(dojo){/*
+	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
+*/
+
+/*
+ * SpiderMonkey host environment
+ */
+
+dojo.hostenv.name_ = 'spidermonkey';
+
+dojo.hostenv.println = print;
+dojo.hostenv.exit = function(exitcode){ 
+	quit(exitcode); 
+}
+
+// version() returns 0, sigh. and build() returns nothing but just prints.
+dojo.hostenv.getVersion = function(){ return version(); }
+
+// make jsc shut up (so we can use jsc for sanity checking) 
+/*@cc_on
+ at if (@_jscript_version >= 7)
+var line2pc; var print; var load; var quit;
+ at end
+@*/
+
+if(typeof line2pc == 'undefined'){
+	dojo.raise("attempt to use SpiderMonkey host environment when no 'line2pc' global");
+}
+
+/*
+ * This is a hack that determines the current script file by parsing a generated
+ * stack trace (relying on the non-standard "stack" member variable of the
+ * SpiderMonkey Error object).
+ * If param depth is passed in, it'll return the script file which is that far down
+ * the stack, but that does require that you know how deep your stack is when you are
+ * calling.
+ */
+function dj_spidermonkey_current_file(depth){
+    var s = '';
+    try{
+		throw Error("whatever");
+	}catch(e){
+		s = e.stack;
+	}
+    // lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101
+    var matches = s.match(/[^@]*\.js/gi);
+    if(!matches){ 
+		dojo.raise("could not parse stack string: '" + s + "'");
+	}
+    var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1];
+    if(!fname){ 
+		dojo.raise("could not find file name in stack string '" + s + "'");
+	}
+    //print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'");
+    return fname;
+}
+
+// call this now because later we may not be on the top of the stack
+if(!dojo.hostenv.library_script_uri_){ 
+	dojo.hostenv.library_script_uri_ = dj_spidermonkey_current_file(0); 
+}
+
+dojo.hostenv.loadUri = function(uri){
+	// spidermonkey load() evaluates the contents into the global scope (which
+	// is what we want).
+	// TODO: sigh, load() does not return a useful value. 
+	// Perhaps it is returning the value of the last thing evaluated?
+	var ok = load(uri);
+	// dojo.debug("spidermonkey load(", uri, ") returned ", ok);
+	return 1;
+}
+
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+
+}});
+
+__CPAN_FILE__ src/hostenv_browser.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]],
+["requireIf", djConfig["debugAtAllCosts"] && !window.widget && !djConfig["useXDomain"], "dojo.browser_debug"],
+["requireIf", djConfig["debugAtAllCosts"] && !window.widget && djConfig["useXDomain"], "dojo.browser_debug_xd"]],
+definePackage: function(dojo){/*
+	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
+*/
+
+if(typeof window != 'undefined'){
+
+	// attempt to figure out the path to dojo if it isn't set in the config
+	(function(){
+		// before we get any further with the config options, try to pick them out
+		// of the URL. Most of this code is from NW
+		if(djConfig.allowQueryConfig){
+			var baseUrl = document.location.toString(); // FIXME: use location.query instead?
+			var params = baseUrl.split("?", 2);
+			if(params.length > 1){
+				var paramStr = params[1];
+				var pairs = paramStr.split("&");
+				for(var x in pairs){
+					var sp = pairs[x].split("=");
+					// FIXME: is this eval dangerous?
+					if((sp[0].length > 9)&&(sp[0].substr(0, 9) == "djConfig.")){
+						var opt = sp[0].substr(9);
+						try{
+							djConfig[opt]=eval(sp[1]);
+						}catch(e){
+							djConfig[opt]=sp[1];
+						}
+					}
+				}
+			}
+		}
+
+		if(
+			((djConfig["baseScriptUri"] == "")||(djConfig["baseRelativePath"] == "")) && 
+			(document && document.getElementsByTagName)
+		){
+			var scripts = document.getElementsByTagName("script");
+			var rePkg = /(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
+			for(var i = 0; i < scripts.length; i++) {
+				var src = scripts[i].getAttribute("src");
+				if(!src) { continue; }
+				var m = src.match(rePkg);
+				if(m) {
+					var root = src.substring(0, m.index);
+					if(src.indexOf("bootstrap1") > -1) { root += "../"; }
+					if(!this["djConfig"]) { djConfig = {}; }
+					if(djConfig["baseScriptUri"] == "") { djConfig["baseScriptUri"] = root; }
+					if(djConfig["baseRelativePath"] == "") { djConfig["baseRelativePath"] = root; }
+					break;
+				}
+			}
+		}
+
+		// fill in the rendering support information in dojo.render.*
+		var dr = dojo.render;
+		var drh = dojo.render.html;
+		var drs = dojo.render.svg;
+		var dua = (drh.UA = navigator.userAgent);
+		var dav = (drh.AV = navigator.appVersion);
+		var t = true;
+		var f = false;
+		drh.capable = t;
+		drh.support.builtin = t;
+
+		dr.ver = parseFloat(drh.AV);
+		dr.os.mac = dav.indexOf("Macintosh") >= 0;
+		dr.os.win = dav.indexOf("Windows") >= 0;
+		// could also be Solaris or something, but it's the same browser
+		dr.os.linux = dav.indexOf("X11") >= 0;
+
+		drh.opera = dua.indexOf("Opera") >= 0;
+		drh.khtml = (dav.indexOf("Konqueror") >= 0)||(dav.indexOf("Safari") >= 0);
+		drh.safari = dav.indexOf("Safari") >= 0;
+		var geckoPos = dua.indexOf("Gecko");
+		drh.mozilla = drh.moz = (geckoPos >= 0)&&(!drh.khtml);
+		if (drh.mozilla) {
+			// gecko version is YYYYMMDD
+			drh.geckoVersion = dua.substring(geckoPos + 6, geckoPos + 14);
+		}
+		drh.ie = (document.all)&&(!drh.opera);
+		drh.ie50 = drh.ie && dav.indexOf("MSIE 5.0")>=0;
+		drh.ie55 = drh.ie && dav.indexOf("MSIE 5.5")>=0;
+		drh.ie60 = drh.ie && dav.indexOf("MSIE 6.0")>=0;
+		drh.ie70 = drh.ie && dav.indexOf("MSIE 7.0")>=0;
+
+		var cm = document["compatMode"];
+		drh.quirks = (cm == "BackCompat")||(cm == "QuirksMode")||drh.ie55||drh.ie50;
+
+		// TODO: is the HTML LANG attribute relevant?
+		dojo.locale = dojo.locale || (drh.ie ? navigator.userLanguage : navigator.language).toLowerCase();
+
+		dr.vml.capable=drh.ie;
+		drs.capable = f;
+		drs.support.plugin = f;
+		drs.support.builtin = f;
+		var tdoc = window["document"];
+		var tdi = tdoc["implementation"];
+
+		if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg", "1.0"))){
+			drs.capable = t;
+			drs.support.builtin = t;
+			drs.support.plugin = f;
+		}
+		// webkits after 420 support SVG natively. The test string is "AppleWebKit/420+"
+		if(drh.safari){
+			var tmp = dua.split("AppleWebKit/")[1];
+			var ver = parseFloat(tmp.split(" ")[0]);
+			if(ver >= 420){
+				drs.capable = t;
+				drs.support.builtin = t;
+				drs.support.plugin = f;
+			}
+		}else{
+		}
+	})();
+
+	dojo.hostenv.startPackage("dojo.hostenv");
+
+	dojo.render.name = dojo.hostenv.name_ = 'browser';
+	dojo.hostenv.searchIds = [];
+
+	// These are in order of decreasing likelihood; this will change in time.
+	dojo.hostenv._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
+
+	dojo.hostenv.getXmlhttpObject = function(){
+		// summary: does the work of portably generating a new XMLHTTPRequest object.
+		var http = null;
+		var last_e = null;
+		try{ http = new XMLHttpRequest(); }catch(e){}
+		if(!http){
+			for(var i=0; i<3; ++i){
+				var progid = dojo.hostenv._XMLHTTP_PROGIDS[i];
+				try{
+					http = new ActiveXObject(progid);
+				}catch(e){
+					last_e = e;
+				}
+
+				if(http){
+					dojo.hostenv._XMLHTTP_PROGIDS = [progid];  // so faster next time
+					break;
+				}
+			}
+
+			/*if(http && !http.toString) {
+				http.toString = function() { "[object XMLHttpRequest]"; }
+			}*/
+		}
+
+		if(!http){
+			return dojo.raise("XMLHTTP not available", last_e);
+		}
+
+		return http; // XMLHTTPRequest instance
+	}
+
+	dojo.hostenv._blockAsync = false;
+	dojo.hostenv.getText = function(uri, async_cb, fail_ok){
+		// summary: Read the contents of the specified uri and return those contents.
+		// uri:
+		//		A relative or absolute uri. If absolute, it still must be in
+		//		the same "domain" as we are.
+		// async_cb:
+		//		If not specified, load synchronously. If specified, load
+		//		asynchronously, and use async_cb as the progress handler which
+		//		takes the xmlhttp object as its argument. If async_cb, this
+		//		function returns null.
+		// fail_ok:
+		//		Default false. If fail_ok and !async_cb and loading fails,
+		//		return null instead of throwing.
+
+		// need to block async callbacks from snatching this thread as the result
+		// of an async callback might call another sync XHR, this hangs khtml forever
+		// hostenv._blockAsync must also be checked in BrowserIO's watchInFlight()
+		// NOTE: must be declared before scope switches ie. this.getXmlhttpObject()
+		if(!async_cb){ this._blockAsync = true; }
+
+		var http = this.getXmlhttpObject();
+
+		function isDocumentOk(http){
+			var stat = http["status"];
+			// allow a 304 use cache, needed in konq (is this compliant with the http spec?)
+			return Boolean((!stat)||((200 <= stat)&&(300 > stat))||(stat==304));
+		}
+
+		if(async_cb){
+			var _this = this, timer = null, gbl = dojo.global();
+			var xhr = dojo.evalObjPath("dojo.io.XMLHTTPTransport");
+			http.onreadystatechange = function(){
+				if(timer){ gbl.clearTimeout(timer); timer = null; }
+				if(_this._blockAsync || (xhr && xhr._blockAsync)){
+					timer = gbl.setTimeout(function () { http.onreadystatechange.apply(this); }, 10);
+				}else{
+					if(4==http.readyState){
+						if(isDocumentOk(http)){
+							// dojo.debug("LOADED URI: "+uri);
+							async_cb(http.responseText);
+						}
+					}
+				}
+			}
+		}
+
+		http.open('GET', uri, async_cb ? true : false);
+		try{
+			http.send(null);
+			if(async_cb){
+				return null;
+			}
+			if(!isDocumentOk(http)){
+				var err = Error("Unable to load "+uri+" status:"+ http.status);
+				err.status = http.status;
+				err.responseText = http.responseText;
+				throw err;
+			}
+		}catch(e){
+			this._blockAsync = false;
+			if((fail_ok)&&(!async_cb)){
+				return null;
+			}else{
+				throw e;
+			}
+		}
+
+		this._blockAsync = false;
+		return http.responseText; // String
+	}
+
+	dojo.hostenv.defaultDebugContainerId = 'dojoDebug';
+	dojo.hostenv._println_buffer = [];
+	dojo.hostenv._println_safe = false;
+	dojo.hostenv.println = function(/*String*/line){
+		// summary:
+		//		prints the provided line to whatever logging container is
+		//		available. If the page isn't loaded yet, the line may be added
+		//		to a buffer for printing later.
+		if(!dojo.hostenv._println_safe){
+			dojo.hostenv._println_buffer.push(line);
+		}else{
+			try {
+				var console = document.getElementById(djConfig.debugContainerId ?
+					djConfig.debugContainerId : dojo.hostenv.defaultDebugContainerId);
+				if(!console) { console = dojo.body(); }
+
+				var div = document.createElement("div");
+				div.appendChild(document.createTextNode(line));
+				console.appendChild(div);
+			} catch (e) {
+				try{
+					// safari needs the output wrapped in an element for some reason
+					document.write("<div>" + line + "</div>");
+				}catch(e2){
+					window.status = line;
+				}
+			}
+		}
+	}
+
+	dojo.addOnLoad(function(){
+		dojo.hostenv._println_safe = true;
+		while(dojo.hostenv._println_buffer.length > 0){
+			dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
+		}
+	});
+
+	function dj_addNodeEvtHdlr(/*DomNode*/node, /*String*/evtName, /*Function*/fp){
+		// summary:
+		//		non-destructively adds the specified function to the node's
+		//		evtName handler.
+		// node: the DomNode to add the handler to
+		// evtName: should be in the form "click" for "onclick" handlers
+		var oldHandler = node["on"+evtName] || function(){};
+		node["on"+evtName] = function(){
+			fp.apply(node, arguments);
+			oldHandler.apply(node, arguments);
+		}
+		return true;
+	}
+
+	dojo.hostenv._djInitFired = false;
+	//	BEGIN DOMContentLoaded, from Dean Edwards (http://dean.edwards.name/weblog/2006/06/again/)
+	function dj_load_init(e){
+		dojo.hostenv._djInitFired = true;
+		// allow multiple calls, only first one will take effect
+		// A bug in khtml calls events callbacks for document for event which isnt supported
+		// for example a created contextmenu event calls DOMContentLoaded, workaround
+		var type = (e && e.type) ? e.type.toLowerCase() : "load";
+		if(arguments.callee.initialized || (type!="domcontentloaded" && type!="load")){ return; }
+		arguments.callee.initialized = true;
+		if(typeof(_timer) != 'undefined'){
+			clearInterval(_timer);
+			delete _timer;
+		}
+
+		var initFunc = function(){
+			//perform initialization
+			if(dojo.render.html.ie){
+				dojo.hostenv.makeWidgets();
+			}
+		};
+
+		if(dojo.hostenv.inFlightCount == 0){
+			initFunc();
+			dojo.hostenv.modulesLoaded();
+		}else{
+			//This else case should be xdomain loading.
+			//Make sure this is the first thing in the load listener array.
+			//Part of the dojo.addOnLoad guarantee is that when the listeners are notified,
+			//It means the DOM (or page) has loaded and that widgets have been parsed.
+			dojo.hostenv.modulesLoadedListeners.unshift(initFunc);
+		}
+	}
+
+	//	START DOMContentLoaded
+	// Mozilla and Opera 9 expose the event we could use
+	if(document.addEventListener){
+		// NOTE: 
+		//		due to a threading issue in Firefox 2.0, we can't enable
+		//		DOMContentLoaded on that platform. For more information, see:
+		//		http://trac.dojotoolkit.org/ticket/1704
+		if(dojo.render.html.opera || (dojo.render.html.moz && (djConfig["enableMozDomContentLoaded"] === true))){
+			document.addEventListener("DOMContentLoaded", dj_load_init, null);
+		}
+
+		//	mainly for Opera 8.5, won't be fired if DOMContentLoaded fired already.
+		//  also used for Mozilla because of trac #1640
+		window.addEventListener("load", dj_load_init, null);
+	}
+
+	// 	for Internet Explorer. readyState will not be achieved on init call, but dojo doesn't need it
+	//	however, we'll include it because we don't know if there are other functions added that might.
+	//	Note that this has changed because the build process strips all comments--including conditional
+	//		ones.
+	if(dojo.render.html.ie && dojo.render.os.win){
+		document.attachEvent("onreadystatechange", function(e){
+			if(document.readyState == "complete"){
+				dj_load_init();
+			}
+		});
+	}
+
+	if (/(WebKit|khtml)/i.test(navigator.userAgent)) { // sniff
+		var _timer = setInterval(function() {
+			if (/loaded|complete/.test(document.readyState)) {
+				dj_load_init(); // call the onload handler
+			}
+		}, 10);
+	}
+	//	END DOMContentLoaded
+
+	// IE WebControl hosted in an application can fire "beforeunload" and "unload"
+	// events when control visibility changes, causing Dojo to unload too soon. The
+	// following code fixes the problem
+	// Reference: http://support.microsoft.com/default.aspx?scid=kb;en-us;199155
+	if(dojo.render.html.ie){
+		dj_addNodeEvtHdlr(window, "beforeunload", function(){
+			dojo.hostenv._unloading = true;
+			window.setTimeout(function() {
+				dojo.hostenv._unloading = false;
+			}, 0);
+		});
+	}
+
+	dj_addNodeEvtHdlr(window, "unload", function(){
+		dojo.hostenv.unloaded();
+		if((!dojo.render.html.ie)||(dojo.render.html.ie && dojo.hostenv._unloading)){
+			dojo.hostenv.unloaded();
+		}
+	});
+
+	dojo.hostenv.makeWidgets = function(){
+		// you can put searchIds in djConfig and dojo.hostenv at the moment
+		// we should probably eventually move to one or the other
+		var sids = [];
+		if(djConfig.searchIds && djConfig.searchIds.length > 0) {
+			sids = sids.concat(djConfig.searchIds);
+		}
+		if(dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) {
+			sids = sids.concat(dojo.hostenv.searchIds);
+		}
+
+		if((djConfig.parseWidgets)||(sids.length > 0)){
+			if(dojo.evalObjPath("dojo.widget.Parse")){
+				// we must do this on a delay to avoid:
+				//	http://www.shaftek.org/blog/archives/000212.html
+				// (IE bug)
+					var parser = new dojo.xml.Parse();
+					if(sids.length > 0){
+						for(var x=0; x<sids.length; x++){
+							var tmpNode = document.getElementById(sids[x]);
+							if(!tmpNode){ continue; }
+							var frag = parser.parseElement(tmpNode, null, true);
+							dojo.widget.getParser().createComponents(frag);
+						}
+					}else if(djConfig.parseWidgets){
+						var frag  = parser.parseElement(dojo.body(), null, true);
+						dojo.widget.getParser().createComponents(frag);
+					}
+			}
+		}
+	}
+
+	dojo.addOnLoad(function(){
+		if(!dojo.render.html.ie) {
+			dojo.hostenv.makeWidgets();
+		}
+	});
+
+	try{
+		if(dojo.render.html.ie){
+			document.namespaces.add("v","urn:schemas-microsoft-com:vml");
+			document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML)");
+		}
+	}catch(e){ }
+
+	// stub, over-ridden by debugging code. This will at least keep us from
+	// breaking when it's not included
+	dojo.hostenv.writeIncludes = function(){}
+
+	//TODOC:  HOW TO DOC THIS?
+	// @global: dj_currentDocument
+	// summary:
+	//		Current document object. 'dj_currentDocument' can be modified for temporary context shifting.
+	// description:
+	//    dojo.doc() returns dojo.currentDocument.
+	//		Refer to dojo.doc() rather than referring to 'window.document' to ensure your
+	//		code runs correctly in managed contexts.
+	if(!dj_undef("document", this)){
+		dj_currentDocument = this.document;
+	}
+
+	dojo.doc = function(){
+		// summary:
+		//		return the document object associated with the dojo.global()
+		return dj_currentDocument;
+	}
+
+	dojo.body = function(){
+		// summary:
+		//		return the body object associated with dojo.doc()
+		// Note: document.body is not defined for a strict xhtml document
+		return dojo.doc().body || dojo.doc().getElementsByTagName("body")[0];
+	}
+
+	dojo.byId = function(/*String*/id, /*DocumentElement*/doc){
+		// summary:
+		// 		similar to other library's "$" function, takes a string
+		// 		representing a DOM id or a DomNode and returns the
+		// 		corresponding DomNode. If a Node is passed, this function is a
+		// 		no-op. Returns a single DOM node or null, working around
+		// 		several browser-specific bugs to do so.
+		// id: DOM id or DOM Node
+		// doc:
+		//		optional, defaults to the current value of dj_currentDocument.
+		//		Can be used to retreive node references from other documents.
+		if((id)&&((typeof id == "string")||(id instanceof String))){
+			if(!doc){ doc = dj_currentDocument; }
+			var ele = doc.getElementById(id);
+			// workaround bug in IE and Opera 8.2 where getElementById returns wrong element
+			if(ele && (ele.id != id) && doc.all){
+				ele = null;
+				// get all matching elements with this id
+				eles = doc.all[id];
+				if(eles){
+					// if more than 1, choose first with the correct id
+					if(eles.length){
+						for(var i=0; i<eles.length; i++){
+							if(eles[i].id == id){
+								ele = eles[i];
+								break;
+							}
+						}
+					// return 1 and only element
+					}else{
+						ele = eles;
+					}
+				}
+			}
+			return ele; // DomNode
+		}
+		return id; // DomNode
+	}
+
+	dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){
+		// summary:
+		//		changes the behavior of many core Dojo functions that deal with
+		//		namespace and DOM lookup, changing them to work in a new global
+		//		context. The varibles dj_currentContext and dj_currentDocument
+		//		are modified as a result of calling this function.
+		dj_currentContext = globalObject;
+		dj_currentDocument = globalDocument;
+	};
+
+	dojo._fireCallback = function(callback, context, cbArguments){
+		if((context)&&((typeof callback == "string")||(callback instanceof String))){
+			callback=context[callback];
+		}
+		return (context ? callback.apply(context, cbArguments || [ ]) : callback());
+	}
+
+	dojo.withGlobal = function(/*Object*/globalObject, /*Function*/callback, /*Object?*/thisObject, /*Array?*/cbArguments){
+		// summary:
+		//		Call callback with globalObject as dojo.global() and globalObject.document
+		//		as dojo.doc(). If provided, globalObject will be executed in the context of
+		//		object thisObject
+		// description:
+		//		When callback() returns or throws an error, the dojo.global() and dojo.doc() will
+		//		be restored to its previous state.
+		var rval;
+		var oldGlob = dj_currentContext;
+		var oldDoc = dj_currentDocument;
+		try{
+			dojo.setContext(globalObject, globalObject.document);
+			rval = dojo._fireCallback(callback, thisObject, cbArguments);
+		}finally{
+			dojo.setContext(oldGlob, oldDoc);
+		}
+		return rval;
+	}
+
+	dojo.withDoc = function (/*Object*/documentObject, /*Function*/callback, /*Object?*/thisObject, /*Array?*/cbArguments) {
+		// summary:
+		//		Call callback with documentObject as dojo.doc(). If provided, callback will be executed
+		//		in the context of object thisObject
+		// description:
+		//		When callback() returns or throws an error, the dojo.doc() will
+		//		be restored to its previous state.
+		var rval;
+		var oldDoc = dj_currentDocument;
+		try{
+			dj_currentDocument = documentObject;
+			rval = dojo._fireCallback(callback, thisObject, cbArguments);
+		}finally{
+			dj_currentDocument = oldDoc;
+		}
+		return rval;
+	}
+
+} //if (typeof window != 'undefined')
+
+//Load debug code if necessary.
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+//window.widget is for Dashboard detection
+//The full conditionals are spelled out to avoid issues during builds.
+//Builds may be looking for require/requireIf statements and processing them.
+dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && !djConfig["useXDomain"], "dojo.browser_debug");
+dojo.requireIf(djConfig["debugAtAllCosts"] && !window.widget && djConfig["useXDomain"], "dojo.browser_debug_xd");
+
+}});
+
+__CPAN_FILE__ src/hostenv_wsh.xd.js
+dojo.hostenv.packageLoaded({
+depends: [["requireIf", (djConfig["isDebug"] || djConfig["debugAtAllCosts"]]],
+definePackage: function(dojo){/*
+	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
+*/
+
+/*
+ * WSH
+ */
+
+dojo.hostenv.name_ = 'wsh';
+
+// make jsc shut up (so can sanity check)
+/*@cc_on
+ at if (@_jscript_version >= 7)
+var WScript;
+ at end
+@*/
+
+// make sure we are in right environment
+if(typeof WScript == 'undefined'){
+	dojo.raise("attempt to use WSH host environment when no WScript global");
+}
+
+dojo.hostenv.println = WScript.Echo;
+
+dojo.hostenv.getCurrentScriptUri = function(){
+	return WScript.ScriptFullName();
+}
+
+dojo.hostenv.getText = function(fpath){
+	var fso = new ActiveXObject("Scripting.FileSystemObject");
+	var istream = fso.OpenTextFile(fpath, 1); // iomode==1 means read only
+	if(!istream){
+		return null;
+	}
+	var contents = istream.ReadAll();
+	istream.Close();
+	return contents;
+}
+
+dojo.hostenv.exit = function(exitcode){ WScript.Quit(exitcode); }
+
+dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");
+
+}});
+
 __CPAN_FILE__ src/flash.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -5748,6 +13146,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.flash");
 dojo.require("dojo.string.*");
 dojo.require("dojo.uri.*");
@@ -6195,6 +13595,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.rpc.Deferred");
 dojo.require("dojo.Deferred");
 dojo.deprecated("dojo.rpc.Deferred", "replaced by dojo.Deferred", "0.6");
@@ -6213,6 +13615,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.rpc.YahooService");
 dojo.require("dojo.rpc.RpcService");
 dojo.require("dojo.rpc.JsonService");
@@ -6534,6 +13938,37 @@
 	]
 }
 
+__CPAN_FILE__ src/rpc/JotService.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.rpc.JotService"], ["require", "dojo.rpc.RpcService"], ["require", "dojo.rpc.JsonService"], ["require", "dojo.json"]], definePackage:function (dojo) {
+	dojo.provide("dojo.rpc.JotService");
+	dojo.require("dojo.rpc.RpcService");
+	dojo.require("dojo.rpc.JsonService");
+	dojo.require("dojo.json");
+	dojo.rpc.JotService = function () {
+		this.serviceUrl = "/_/jsonrpc";
+	};
+	dojo.inherits(dojo.rpc.JotService, dojo.rpc.JsonService);
+	dojo.lang.extend(dojo.rpc.JotService, {bind:function (method, parameters, deferredRequestHandler, url) {
+		dojo.io.bind({url:url || this.serviceUrl, content:{json:this.createRequest(method, parameters)}, method:"POST", mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:true});
+	}, createRequest:function (method, params) {
+		var req = {"params":params, "method":method, "id":this.lastSubmissionId++};
+		return dojo.json.serialize(req);
+	}});
+}});
+
+
 __CPAN_FILE__ src/rpc/RpcService.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6545,6 +13980,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.rpc.RpcService");
 dojo.require("dojo.io.*");
 dojo.require("dojo.json");
@@ -6608,6 +14045,81 @@
 }});
 
 
+__CPAN_FILE__ src/rpc/JsonService.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.rpc.JsonService"], ["require", "dojo.rpc.RpcService"], ["require", "dojo.io.*"], ["require", "dojo.json"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.rpc.JsonService");
+	dojo.require("dojo.rpc.RpcService");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.lang.common");
+	dojo.rpc.JsonService = function (args) {
+		if (args) {
+			if (dojo.lang.isString(args)) {
+				this.connect(args);
+			} else {
+				if (args["smdUrl"]) {
+					this.connect(args.smdUrl);
+				}
+				if (args["smdStr"]) {
+					this.processSmd(dj_eval("(" + args.smdStr + ")"));
+				}
+				if (args["smdObj"]) {
+					this.processSmd(args.smdObj);
+				}
+				if (args["serviceUrl"]) {
+					this.serviceUrl = args.serviceUrl;
+				}
+				if (typeof args["strictArgChecks"] != "undefined") {
+					this.strictArgChecks = args.strictArgChecks;
+				}
+			}
+		}
+	};
+	dojo.inherits(dojo.rpc.JsonService, dojo.rpc.RpcService);
+	dojo.extend(dojo.rpc.JsonService, {bustCache:false, contentType:"application/json-rpc", lastSubmissionId:0, callRemote:function (method, params) {
+		var deferred = new dojo.Deferred();
+		this.bind(method, params, deferred);
+		return deferred;
+	}, bind:function (method, parameters, deferredRequestHandler, url) {
+		dojo.io.bind({url:url || this.serviceUrl, postContent:this.createRequest(method, parameters), method:"POST", contentType:this.contentType, mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:this.bustCache});
+	}, createRequest:function (method, params) {
+		var req = {"params":params, "method":method, "id":++this.lastSubmissionId};
+		var data = dojo.json.serialize(req);
+		dojo.debug("JsonService: JSON-RPC Request: " + data);
+		return data;
+	}, parseResults:function (obj) {
+		if (!obj) {
+			return;
+		}
+		if (obj["Result"] != null) {
+			return obj["Result"];
+		} else {
+			if (obj["result"] != null) {
+				return obj["result"];
+			} else {
+				if (obj["ResultSet"]) {
+					return obj["ResultSet"];
+				} else {
+					return obj;
+				}
+			}
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/rpc/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6619,6 +14131,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:[["dojo.rpc.JsonService", false, false]]});
 dojo.provide("dojo.rpc.*");
 
@@ -6634,6 +14148,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.rpc.JotService");
 dojo.require("dojo.rpc.RpcService");
 dojo.require("dojo.rpc.JsonService");
@@ -6650,6 +14166,70 @@
 }});
 
 
+__CPAN_FILE__ src/rpc/YahooService.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.rpc.YahooService"], ["require", "dojo.rpc.RpcService"], ["require", "dojo.rpc.JsonService"], ["require", "dojo.json"], ["require", "dojo.uri.*"], ["require", "dojo.io.ScriptSrcIO"]], definePackage:function (dojo) {
+	dojo.provide("dojo.rpc.YahooService");
+	dojo.require("dojo.rpc.RpcService");
+	dojo.require("dojo.rpc.JsonService");
+	dojo.require("dojo.json");
+	dojo.require("dojo.uri.*");
+	dojo.require("dojo.io.ScriptSrcIO");
+	dojo.rpc.YahooService = function (appId) {
+		this.appId = appId;
+		if (!appId) {
+			this.appId = "dojotoolkit";
+			dojo.debug("please initialize the YahooService class with your own", "application ID. Using the default may cause problems during", "deployment of your application");
+		}
+		if (djConfig["useXDomain"] && !djConfig["yahooServiceSmdUrl"]) {
+			dojo.debug("dojo.rpc.YahooService: When using cross-domain Dojo builds," + " please save yahoo.smd to your domain and set djConfig.yahooServiceSmdUrl" + " to the path on your domain to yahoo.smd");
+		}
+		this.connect(djConfig["yahooServiceSmdUrl"] || dojo.uri.moduleUri("dojo.rpc", "yahoo.smd"));
+		this.strictArgChecks = false;
+	};
+	dojo.inherits(dojo.rpc.YahooService, dojo.rpc.JsonService);
+	dojo.lang.extend(dojo.rpc.YahooService, {strictArgChecks:false, bind:function (method, parameters, deferredRequestHandler, url) {
+		var params = parameters;
+		if ((dojo.lang.isArrayLike(parameters)) && (parameters.length == 1)) {
+			params = parameters[0];
+		}
+		params.output = "json";
+		params.appid = this.appId;
+		dojo.io.bind({url:url || this.serviceUrl, transport:"ScriptSrcTransport", content:params, jsonParamName:"callback", mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:true});
+	}});
+}});
+
+
+__CPAN_FILE__ src/rpc/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:[["dojo.rpc.JsonService", false, false]]}], ["provide", "dojo.rpc.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:[["dojo.rpc.JsonService", false, false]]});
+	dojo.provide("dojo.rpc.*");
+}});
+
+
 __CPAN_FILE__ src/rpc/JsonService.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6661,6 +14241,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.rpc.JsonService");
 dojo.require("dojo.rpc.RpcService");
 dojo.require("dojo.io.*");
@@ -6721,7 +14303,241 @@
 }});
 
 
+__CPAN_FILE__ src/rpc/RpcService.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.rpc.RpcService"], ["require", "dojo.io.*"], ["require", "dojo.json"], ["require", "dojo.lang.func"], ["require", "dojo.Deferred"]], definePackage:function (dojo) {
+	dojo.provide("dojo.rpc.RpcService");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.Deferred");
+	dojo.rpc.RpcService = function (url) {
+		if (url) {
+			this.connect(url);
+		}
+	};
+	dojo.lang.extend(dojo.rpc.RpcService, {strictArgChecks:true, serviceUrl:"", parseResults:function (obj) {
+		return obj;
+	}, errorCallback:function (deferredRequestHandler) {
+		return function (type, e) {
+			deferredRequestHandler.errback(new Error(e.message));
+		};
+	}, resultCallback:function (deferredRequestHandler) {
+		var tf = dojo.lang.hitch(this, function (type, obj, e) {
+			if (obj["error"] != null) {
+				var err = new Error(obj.error);
+				err.id = obj.id;
+				deferredRequestHandler.errback(err);
+			} else {
+				var results = this.parseResults(obj);
+				deferredRequestHandler.callback(results);
+			}
+		});
+		return tf;
+	}, generateMethod:function (method, parameters, url) {
+		return dojo.lang.hitch(this, function () {
+			var deferredRequestHandler = new dojo.Deferred();
+			if ((this.strictArgChecks) && (parameters != null) && (arguments.length != parameters.length)) {
+				dojo.raise("Invalid number of parameters for remote method.");
+			} else {
+				this.bind(method, arguments, deferredRequestHandler, url);
+			}
+			return deferredRequestHandler;
+		});
+	}, processSmd:function (object) {
+		dojo.debug("RpcService: Processing returned SMD.");
+		if (object.methods) {
+			dojo.lang.forEach(object.methods, function (m) {
+				if (m && m["name"]) {
+					dojo.debug("RpcService: Creating Method: this.", m.name, "()");
+					this[m.name] = this.generateMethod(m.name, m.parameters, m["url"] || m["serviceUrl"] || m["serviceURL"]);
+					if (dojo.lang.isFunction(this[m.name])) {
+						dojo.debug("RpcService: Successfully created", m.name, "()");
+					} else {
+						dojo.debug("RpcService: Failed to create", m.name, "()");
+					}
+				}
+			}, this);
+		}
+		this.serviceUrl = object.serviceUrl || object.serviceURL;
+		dojo.debug("RpcService: Dojo RpcService is ready for use.");
+	}, connect:function (smdUrl) {
+		dojo.debug("RpcService: Attempting to load SMD document from:", smdUrl);
+		dojo.io.bind({url:smdUrl, mimetype:"text/json", load:dojo.lang.hitch(this, function (type, object, e) {
+			return this.processSmd(object);
+		}), sync:true});
+	}});
+}});
+
+
+__CPAN_FILE__ src/rpc/Deferred.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.rpc.Deferred"], ["require", "dojo.Deferred"]], definePackage:function (dojo) {
+	dojo.provide("dojo.rpc.Deferred");
+	dojo.require("dojo.Deferred");
+	dojo.deprecated("dojo.rpc.Deferred", "replaced by dojo.Deferred", "0.6");
+	dojo.rpc.Deferred = dojo.Deferred;
+	dojo.rpc.Deferred.prototype = dojo.Deferred.prototype;
+}});
+
+
 __CPAN_DIR__ src/validate
+__CPAN_FILE__ src/validate/datetime.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.datetime"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.datetime");
+	dojo.require("dojo.validate.common");
+	dojo.validate.isValidTime = function (value, flags) {
+		dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
+		var re = new RegExp("^" + dojo.regexp.time(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.is12HourTime = function (value) {
+		dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
+		return dojo.validate.isValidTime(value, {format:["h:mm:ss t", "h:mm t"]});
+	};
+	dojo.validate.is24HourTime = function (value) {
+		dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
+		return dojo.validate.isValidTime(value, {format:["HH:mm:ss", "HH:mm"]});
+	};
+	dojo.validate.isValidDate = function (dateValue, format) {
+		dojo.deprecated("dojo.validate.datetime", "use dojo.date.parse instead", "0.5");
+		if (typeof format == "object" && typeof format.format == "string") {
+			format = format.format;
+		}
+		if (typeof format != "string") {
+			format = "MM/DD/YYYY";
+		}
+		var reLiteral = format.replace(/([$^.*+?=!:|\/\\\(\)\[\]\{\}])/g, "\\$1");
+		reLiteral = reLiteral.replace("YYYY", "([0-9]{4})");
+		reLiteral = reLiteral.replace("MM", "(0[1-9]|10|11|12)");
+		reLiteral = reLiteral.replace("M", "([1-9]|10|11|12)");
+		reLiteral = reLiteral.replace("DDD", "(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])");
+		reLiteral = reLiteral.replace("DD", "(0[1-9]|[12][0-9]|30|31)");
+		reLiteral = reLiteral.replace("D", "([1-9]|[12][0-9]|30|31)");
+		reLiteral = reLiteral.replace("ww", "(0[1-9]|[1-4][0-9]|5[0-3])");
+		reLiteral = reLiteral.replace("d", "([1-7])");
+		reLiteral = "^" + reLiteral + "$";
+		var re = new RegExp(reLiteral);
+		if (!re.test(dateValue)) {
+			return false;
+		}
+		var year = 0, month = 1, date = 1, dayofyear = 1, week = 1, day = 1;
+		var tokens = format.match(/(YYYY|MM|M|DDD|DD|D|ww|d)/g);
+		var values = re.exec(dateValue);
+		for (var i = 0; i < tokens.length; i++) {
+			switch (tokens[i]) {
+			  case "YYYY":
+				year = Number(values[i + 1]);
+				break;
+			  case "M":
+			  case "MM":
+				month = Number(values[i + 1]);
+				break;
+			  case "D":
+			  case "DD":
+				date = Number(values[i + 1]);
+				break;
+			  case "DDD":
+				dayofyear = Number(values[i + 1]);
+				break;
+			  case "ww":
+				week = Number(values[i + 1]);
+				break;
+			  case "d":
+				day = Number(values[i + 1]);
+				break;
+			}
+		}
+		var leapyear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
+		if (date == 31 && (month == 4 || month == 6 || month == 9 || month == 11)) {
+			return false;
+		}
+		if (date >= 30 && month == 2) {
+			return false;
+		}
+		if (date == 29 && month == 2 && !leapyear) {
+			return false;
+		}
+		if (dayofyear == 366 && !leapyear) {
+			return false;
+		}
+		return true;
+	};
+}});
+
+
+__CPAN_FILE__ src/validate/us.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.us"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.us");
+	dojo.require("dojo.validate.common");
+	dojo.validate.us.isCurrency = function (value, flags) {
+		return dojo.validate.isCurrency(value, flags);
+	};
+	dojo.validate.us.isState = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.us.state(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.us.isPhoneNumber = function (value) {
+		var flags = {format:["###-###-####", "(###) ###-####", "(###) ### ####", "###.###.####", "###/###-####", "### ### ####", "###-###-#### x#???", "(###) ###-#### x#???", "(###) ### #### x#???", "###.###.#### x#???", "###/###-#### x#???", "### ### #### x#???", "##########"]};
+		return dojo.validate.isNumberFormat(value, flags);
+	};
+	dojo.validate.us.isSocialSecurityNumber = function (value) {
+		var flags = {format:["###-##-####", "### ## ####", "#########"]};
+		return dojo.validate.isNumberFormat(value, flags);
+	};
+	dojo.validate.us.isZipCode = function (value) {
+		var flags = {format:["#####-####", "##### ####", "#########", "#####"]};
+		return dojo.validate.isNumberFormat(value, flags);
+	};
+}});
+
+
 __CPAN_FILE__ src/validate/common.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6733,6 +14549,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.common");
 dojo.require("dojo.regexp");
 dojo.validate.isText = function (value, flags) {
@@ -6829,6 +14647,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.us");
 dojo.require("dojo.validate.common");
 dojo.validate.us.isCurrency = function (value, flags) {
@@ -6863,6 +14683,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.de");
 dojo.require("dojo.validate.common");
 dojo.validate.isGermanCurrency = function (value) {
@@ -6882,6 +14704,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.jp");
 dojo.require("dojo.validate.common");
 dojo.validate.isJapaneseCurrency = function (value) {
@@ -6890,6 +14714,267 @@
 };
 
 
+__CPAN_FILE__ src/validate/check.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.check"], ["require", "dojo.validate.common"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.check");
+	dojo.require("dojo.validate.common");
+	dojo.require("dojo.lang.common");
+	dojo.validate.check = function (form, profile) {
+		var missing = [];
+		var invalid = [];
+		var results = {isSuccessful:function () {
+			return (!this.hasInvalid() && !this.hasMissing());
+		}, hasMissing:function () {
+			return (missing.length > 0);
+		}, getMissing:function () {
+			return missing;
+		}, isMissing:function (elemname) {
+			for (var i = 0; i < missing.length; i++) {
+				if (elemname == missing[i]) {
+					return true;
+				}
+			}
+			return false;
+		}, hasInvalid:function () {
+			return (invalid.length > 0);
+		}, getInvalid:function () {
+			return invalid;
+		}, isInvalid:function (elemname) {
+			for (var i = 0; i < invalid.length; i++) {
+				if (elemname == invalid[i]) {
+					return true;
+				}
+			}
+			return false;
+		}};
+		if (profile.trim instanceof Array) {
+			for (var i = 0; i < profile.trim.length; i++) {
+				var elem = form[profile.trim[i]];
+				if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
+					continue;
+				}
+				elem.value = elem.value.replace(/(^\s*|\s*$)/g, "");
+			}
+		}
+		if (profile.uppercase instanceof Array) {
+			for (var i = 0; i < profile.uppercase.length; i++) {
+				var elem = form[profile.uppercase[i]];
+				if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
+					continue;
+				}
+				elem.value = elem.value.toUpperCase();
+			}
+		}
+		if (profile.lowercase instanceof Array) {
+			for (var i = 0; i < profile.lowercase.length; i++) {
+				var elem = form[profile.lowercase[i]];
+				if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
+					continue;
+				}
+				elem.value = elem.value.toLowerCase();
+			}
+		}
+		if (profile.ucfirst instanceof Array) {
+			for (var i = 0; i < profile.ucfirst.length; i++) {
+				var elem = form[profile.ucfirst[i]];
+				if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
+					continue;
+				}
+				elem.value = elem.value.replace(/\b\w+\b/g, function (word) {
+					return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();
+				});
+			}
+		}
+		if (profile.digit instanceof Array) {
+			for (var i = 0; i < profile.digit.length; i++) {
+				var elem = form[profile.digit[i]];
+				if (dj_undef("type", elem) || elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
+					continue;
+				}
+				elem.value = elem.value.replace(/\D/g, "");
+			}
+		}
+		if (profile.required instanceof Array) {
+			for (var i = 0; i < profile.required.length; i++) {
+				if (!dojo.lang.isString(profile.required[i])) {
+					continue;
+				}
+				var elem = form[profile.required[i]];
+				if (!dj_undef("type", elem) && (elem.type == "text" || elem.type == "textarea" || elem.type == "password") && /^\s*$/.test(elem.value)) {
+					missing[missing.length] = elem.name;
+				} else {
+					if (!dj_undef("type", elem) && (elem.type == "select-one" || elem.type == "select-multiple") && (elem.selectedIndex == -1 || /^\s*$/.test(elem.options[elem.selectedIndex].value))) {
+						missing[missing.length] = elem.name;
+					} else {
+						if (elem instanceof Array) {
+							var checked = false;
+							for (var j = 0; j < elem.length; j++) {
+								if (elem[j].checked) {
+									checked = true;
+								}
+							}
+							if (!checked) {
+								missing[missing.length] = elem[0].name;
+							}
+						}
+					}
+				}
+			}
+		}
+		if (profile.required instanceof Array) {
+			for (var i = 0; i < profile.required.length; i++) {
+				if (!dojo.lang.isObject(profile.required[i])) {
+					continue;
+				}
+				var elem, numRequired;
+				for (var name in profile.required[i]) {
+					elem = form[name];
+					numRequired = profile.required[i][name];
+				}
+				if (elem instanceof Array) {
+					var checked = 0;
+					for (var j = 0; j < elem.length; j++) {
+						if (elem[j].checked) {
+							checked++;
+						}
+					}
+					if (checked < numRequired) {
+						missing[missing.length] = elem[0].name;
+					}
+				} else {
+					if (!dj_undef("type", elem) && elem.type == "select-multiple") {
+						var selected = 0;
+						for (var j = 0; j < elem.options.length; j++) {
+							if (elem.options[j].selected && !/^\s*$/.test(elem.options[j].value)) {
+								selected++;
+							}
+						}
+						if (selected < numRequired) {
+							missing[missing.length] = elem.name;
+						}
+					}
+				}
+			}
+		}
+		if (dojo.lang.isObject(profile.dependencies) || dojo.lang.isObject(profile.dependancies)) {
+			if (profile["dependancies"]) {
+				dojo.deprecated("dojo.validate.check", "profile 'dependancies' is deprecated, please use " + "'dependencies'", "0.5");
+				profile.dependencies = profile.dependancies;
+			}
+			for (name in profile.dependencies) {
+				var elem = form[name];
+				if (dj_undef("type", elem)) {
+					continue;
+				}
+				if (elem.type != "text" && elem.type != "textarea" && elem.type != "password") {
+					continue;
+				}
+				if (/\S+/.test(elem.value)) {
+					continue;
+				}
+				if (results.isMissing(elem.name)) {
+					continue;
+				}
+				var target = form[profile.dependencies[name]];
+				if (target.type != "text" && target.type != "textarea" && target.type != "password") {
+					continue;
+				}
+				if (/^\s*$/.test(target.value)) {
+					continue;
+				}
+				missing[missing.length] = elem.name;
+			}
+		}
+		if (dojo.lang.isObject(profile.constraints)) {
+			for (name in profile.constraints) {
+				var elem = form[name];
+				if (!elem) {
+					continue;
+				}
+				if (!dj_undef("tagName", elem) && (elem.tagName.toLowerCase().indexOf("input") >= 0 || elem.tagName.toLowerCase().indexOf("textarea") >= 0) && /^\s*$/.test(elem.value)) {
+					continue;
+				}
+				var isValid = true;
+				if (dojo.lang.isFunction(profile.constraints[name])) {
+					isValid = profile.constraints[name](elem.value);
+				} else {
+					if (dojo.lang.isArray(profile.constraints[name])) {
+						if (dojo.lang.isArray(profile.constraints[name][0])) {
+							for (var i = 0; i < profile.constraints[name].length; i++) {
+								isValid = dojo.validate.evaluateConstraint(profile, profile.constraints[name][i], name, elem);
+								if (!isValid) {
+									break;
+								}
+							}
+						} else {
+							isValid = dojo.validate.evaluateConstraint(profile, profile.constraints[name], name, elem);
+						}
+					}
+				}
+				if (!isValid) {
+					invalid[invalid.length] = elem.name;
+				}
+			}
+		}
+		if (dojo.lang.isObject(profile.confirm)) {
+			for (name in profile.confirm) {
+				var elem = form[name];
+				var target = form[profile.confirm[name]];
+				if (dj_undef("type", elem) || dj_undef("type", target) || (elem.type != "text" && elem.type != "textarea" && elem.type != "password") || (target.type != elem.type) || (target.value == elem.value) || (results.isInvalid(elem.name)) || (/^\s*$/.test(target.value))) {
+					continue;
+				}
+				invalid[invalid.length] = elem.name;
+			}
+		}
+		return results;
+	};
+	dojo.validate.evaluateConstraint = function (profile, constraint, fieldName, elem) {
+		var isValidSomething = constraint[0];
+		var params = constraint.slice(1);
+		params.unshift(elem.value);
+		if (typeof isValidSomething != "undefined") {
+			return isValidSomething.apply(null, params);
+		}
+		return false;
+	};
+}});
+
+
+__CPAN_FILE__ src/validate/de.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.de"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.de");
+	dojo.require("dojo.validate.common");
+	dojo.validate.isGermanCurrency = function (value) {
+		var flags = {symbol:"\u20ac", placement:"after", signPlacement:"begin", decimal:",", separator:"."};
+		return dojo.validate.isCurrency(value, flags);
+	};
+}});
+
+
 __CPAN_FILE__ src/validate/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6901,11 +14986,203 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.validate");
 dojo.kwCompoundRequire({common:["dojo.validate.check", "dojo.validate.datetime", "dojo.validate.de", "dojo.validate.jp", "dojo.validate.us", "dojo.validate.web"]});
 dojo.provide("dojo.validate.*");
 
 
+__CPAN_FILE__ src/validate/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.validate"], ["kwCompoundRequire", {common:["dojo.validate.check", "dojo.validate.datetime", "dojo.validate.de", "dojo.validate.jp", "dojo.validate.us", "dojo.validate.web"]}], ["provide", "dojo.validate.*"]], definePackage:function (dojo) {
+	dojo.require("dojo.validate");
+	dojo.kwCompoundRequire({common:["dojo.validate.check", "dojo.validate.datetime", "dojo.validate.de", "dojo.validate.jp", "dojo.validate.us", "dojo.validate.web"]});
+	dojo.provide("dojo.validate.*");
+}});
+
+
+__CPAN_FILE__ src/validate/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.common"], ["require", "dojo.regexp"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.common");
+	dojo.require("dojo.regexp");
+	dojo.validate.isText = function (value, flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		if (/^\s*$/.test(value)) {
+			return false;
+		}
+		if (typeof flags.length == "number" && flags.length != value.length) {
+			return false;
+		}
+		if (typeof flags.minlength == "number" && flags.minlength > value.length) {
+			return false;
+		}
+		if (typeof flags.maxlength == "number" && flags.maxlength < value.length) {
+			return false;
+		}
+		return true;
+	};
+	dojo.validate.isInteger = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.integer(flags) + "$");
+		return re.test(value);
+	};
+	dojo.validate.isRealNumber = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$");
+		return re.test(value);
+	};
+	dojo.validate.isCurrency = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
+		return re.test(value);
+	};
+	dojo.validate._isInRangeCache = {};
+	dojo.validate.isInRange = function (value, flags) {
+		value = value.replace(dojo.lang.has(flags, "separator") ? flags.separator : ",", "", "g").replace(dojo.lang.has(flags, "symbol") ? flags.symbol : "$", "");
+		if (isNaN(value)) {
+			return false;
+		}
+		flags = (typeof flags == "object") ? flags : {};
+		var max = (typeof flags.max == "number") ? flags.max : Infinity;
+		var min = (typeof flags.min == "number") ? flags.min : -Infinity;
+		var dec = (typeof flags.decimal == "string") ? flags.decimal : ".";
+		var cache = dojo.validate._isInRangeCache;
+		var cacheIdx = value + "max" + max + "min" + min + "dec" + dec;
+		if (typeof cache[cacheIdx] != "undefined") {
+			return cache[cacheIdx];
+		}
+		var pattern = "[^" + dec + "\\deE+-]";
+		value = value.replace(RegExp(pattern, "g"), "");
+		value = value.replace(/^([+-]?)(\D*)/, "$1");
+		value = value.replace(/(\D*)$/, "");
+		pattern = "(\\d)[" + dec + "](\\d)";
+		value = value.replace(RegExp(pattern, "g"), "$1.$2");
+		value = Number(value);
+		if (value < min || value > max) {
+			cache[cacheIdx] = false;
+			return false;
+		}
+		cache[cacheIdx] = true;
+		return true;
+	};
+	dojo.validate.isNumberFormat = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.numberFormat(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.isValidLuhn = function (value) {
+		var sum, parity, curDigit;
+		if (typeof value != "string") {
+			value = String(value);
+		}
+		value = value.replace(/[- ]/g, "");
+		parity = value.length % 2;
+		sum = 0;
+		for (var i = 0; i < value.length; i++) {
+			curDigit = parseInt(value.charAt(i));
+			if (i % 2 == parity) {
+				curDigit *= 2;
+			}
+			if (curDigit > 9) {
+				curDigit -= 9;
+			}
+			sum += curDigit;
+		}
+		return !(sum % 10);
+	};
+}});
+
+
+__CPAN_FILE__ src/validate/web.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.web"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.web");
+	dojo.require("dojo.validate.common");
+	dojo.validate.isIpAddress = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.ipAddress(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.isUrl = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.url(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.isEmailAddress = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.emailAddress(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.isEmailAddressList = function (value, flags) {
+		var re = new RegExp("^" + dojo.regexp.emailAddressList(flags) + "$", "i");
+		return re.test(value);
+	};
+	dojo.validate.getEmailAddressList = function (value, flags) {
+		if (!flags) {
+			flags = {};
+		}
+		if (!flags.listSeparator) {
+			flags.listSeparator = "\\s;,";
+		}
+		if (dojo.validate.isEmailAddressList(value, flags)) {
+			return value.split(new RegExp("\\s*[" + flags.listSeparator + "]\\s*"));
+		}
+		return [];
+	};
+}});
+
+
+__CPAN_FILE__ src/validate/jp.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.jp"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.jp");
+	dojo.require("dojo.validate.common");
+	dojo.validate.isJapaneseCurrency = function (value) {
+		var flags = {symbol:"\xa5", fractional:false};
+		return dojo.validate.isCurrency(value, flags);
+	};
+}});
+
+
 __CPAN_FILE__ src/validate/datetime.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -6917,6 +15194,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.datetime");
 dojo.require("dojo.validate.common");
 dojo.validate.isValidTime = function (value, flags) {
@@ -6998,6 +15277,74 @@
 };
 
 
+__CPAN_FILE__ src/validate/creditCard.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.validate.creditCard"], ["require", "dojo.lang.common"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.validate.creditCard");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.validate.common");
+	dojo.validate.isValidCreditCard = function (value, ccType) {
+		if (value && ccType && ((ccType.toLowerCase() == "er" || dojo.validate.isValidLuhn(value)) && (dojo.validate.isValidCreditCardNumber(value, ccType.toLowerCase())))) {
+			return true;
+		}
+		return false;
+	};
+	dojo.validate.isValidCreditCardNumber = function (value, ccType) {
+		if (typeof value != "string") {
+			value = String(value);
+		}
+		value = value.replace(/[- ]/g, "");
+		var results = [];
+		var cardinfo = {"mc":"5[1-5][0-9]{14}", "ec":"5[1-5][0-9]{14}", "vi":"4([0-9]{12}|[0-9]{15})", "ax":"3[47][0-9]{13}", "dc":"3(0[0-5][0-9]{11}|[68][0-9]{12})", "bl":"3(0[0-5][0-9]{11}|[68][0-9]{12})", "di":"6011[0-9]{12}", "jcb":"(3[0-9]{15}|(2131|1800)[0-9]{11})", "er":"2(014|149)[0-9]{11}"};
+		if (ccType && dojo.lang.has(cardinfo, ccType.toLowerCase())) {
+			return Boolean(value.match(cardinfo[ccType.toLowerCase()]));
+		} else {
+			for (var p in cardinfo) {
+				if (value.match("^" + cardinfo[p] + "$") != null) {
+					results.push(p);
+				}
+			}
+			return (results.length) ? results.join("|") : false;
+		}
+	};
+	dojo.validate.isValidCvv = function (value, ccType) {
+		if (typeof value != "string") {
+			value = String(value);
+		}
+		var format;
+		switch (ccType.toLowerCase()) {
+		  case "mc":
+		  case "ec":
+		  case "vi":
+		  case "di":
+			format = "###";
+			break;
+		  case "ax":
+			format = "####";
+			break;
+		  default:
+			return false;
+		}
+		var flags = {format:format};
+		if ((value.length == format.length) && (dojo.validate.isNumberFormat(value, flags))) {
+			return true;
+		}
+		return false;
+	};
+}});
+
+
 __CPAN_FILE__ src/validate/web.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -7009,6 +15356,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.web");
 dojo.require("dojo.validate.common");
 dojo.validate.isIpAddress = function (value, flags) {
@@ -7052,6 +15401,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.creditCard");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.validate.common");
@@ -7116,6 +15467,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.validate.check");
 dojo.require("dojo.validate.common");
 dojo.require("dojo.lang.common");
@@ -7340,6 +15693,252 @@
 
 
 __CPAN_DIR__ src/animation
+__CPAN_FILE__ src/animation/Timer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.animation.Timer"], ["require", "dojo.lang.timing.Timer"]], definePackage:function (dojo) {
+	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;
+}});
+
+
+__CPAN_FILE__ src/animation/AnimationEvent.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.animation.AnimationEvent"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.animation.AnimationEvent");
+	dojo.require("dojo.lang.common");
+	dojo.deprecated("dojo.animation.AnimationEvent is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
+	dojo.animation.AnimationEvent = function (animation, type, coords, startTime, currentTime, endTime, duration, percent, fps) {
+		this.type = type;
+		this.animation = animation;
+		this.coords = coords;
+		this.x = coords[0];
+		this.y = coords[1];
+		this.z = coords[2];
+		this.startTime = startTime;
+		this.currentTime = currentTime;
+		this.endTime = endTime;
+		this.duration = duration;
+		this.percent = percent;
+		this.fps = fps;
+	};
+	dojo.extend(dojo.animation.AnimationEvent, {coordsAsInts:function () {
+		var cints = new Array(this.coords.length);
+		for (var i = 0; i < this.coords.length; i++) {
+			cints[i] = Math.round(this.coords[i]);
+		}
+		return cints;
+	}});
+}});
+
+
+__CPAN_FILE__ src/animation/Animation.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.animation.Animation"], ["require", "dojo.animation.AnimationEvent"], ["require", "dojo.lang.func"], ["require", "dojo.math"], ["require", "dojo.math.curves"]], definePackage:function (dojo) {
+	dojo.provide("dojo.animation.Animation");
+	dojo.require("dojo.animation.AnimationEvent");
+	dojo.require("dojo.lang.func");
+	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");
+	dojo.animation.Animation = function (curve, duration, accel, repeatCount, rate) {
+		if (dojo.lang.isArray(curve)) {
+			curve = new dojo.math.curves.Line(curve[0], curve[1]);
+		}
+		this.curve = curve;
+		this.duration = duration;
+		this.repeatCount = repeatCount || 0;
+		this.rate = rate || 25;
+		if (accel) {
+			if (dojo.lang.isFunction(accel.getValue)) {
+				this.accel = accel;
+			} else {
+				var i = 0.35 * accel + 0.5;
+				this.accel = new dojo.math.curves.CatmullRom([[0], [i], [1]], 0.45);
+			}
+		}
+	};
+	dojo.lang.extend(dojo.animation.Animation, {curve:null, duration:0, repeatCount:0, accel:null, onBegin:null, onAnimate:null, onEnd:null, onPlay:null, onPause:null, onStop:null, handler:null, _animSequence:null, _startTime:null, _endTime:null, _lastFrame:null, _timer:null, _percent:0, _active:false, _paused:false, _startRepeatCount:0, play:function (gotoStart) {
+		if (gotoStart) {
+			clearTimeout(this._timer);
+			this._active = false;
+			this._paused = false;
+			this._percent = 0;
+		} else {
+			if (this._active && !this._paused) {
+				return;
+			}
+		}
+		this._startTime = new Date().valueOf();
+		if (this._paused) {
+			this._startTime -= (this.duration * this._percent / 100);
+		}
+		this._endTime = this._startTime + this.duration;
+		this._lastFrame = this._startTime;
+		var e = new dojo.animation.AnimationEvent(this, null, this.curve.getValue(this._percent), this._startTime, this._startTime, this._endTime, this.duration, this._percent, 0);
+		this._active = true;
+		this._paused = false;
+		if (this._percent == 0) {
+			if (!this._startRepeatCount) {
+				this._startRepeatCount = this.repeatCount;
+			}
+			e.type = "begin";
+			if (typeof this.handler == "function") {
+				this.handler(e);
+			}
+			if (typeof this.onBegin == "function") {
+				this.onBegin(e);
+			}
+		}
+		e.type = "play";
+		if (typeof this.handler == "function") {
+			this.handler(e);
+		}
+		if (typeof this.onPlay == "function") {
+			this.onPlay(e);
+		}
+		if (this._animSequence) {
+			this._animSequence._setCurrent(this);
+		}
+		this._cycle();
+	}, pause:function () {
+		clearTimeout(this._timer);
+		if (!this._active) {
+			return;
+		}
+		this._paused = true;
+		var e = new dojo.animation.AnimationEvent(this, "pause", this.curve.getValue(this._percent), this._startTime, new Date().valueOf(), this._endTime, this.duration, this._percent, 0);
+		if (typeof this.handler == "function") {
+			this.handler(e);
+		}
+		if (typeof this.onPause == "function") {
+			this.onPause(e);
+		}
+	}, playPause:function () {
+		if (!this._active || this._paused) {
+			this.play();
+		} else {
+			this.pause();
+		}
+	}, gotoPercent:function (pct, andPlay) {
+		clearTimeout(this._timer);
+		this._active = true;
+		this._paused = true;
+		this._percent = pct;
+		if (andPlay) {
+			this.play();
+		}
+	}, stop:function (gotoEnd) {
+		clearTimeout(this._timer);
+		var step = this._percent / 100;
+		if (gotoEnd) {
+			step = 1;
+		}
+		var e = new dojo.animation.AnimationEvent(this, "stop", this.curve.getValue(step), this._startTime, new Date().valueOf(), this._endTime, this.duration, this._percent);
+		if (typeof this.handler == "function") {
+			this.handler(e);
+		}
+		if (typeof this.onStop == "function") {
+			this.onStop(e);
+		}
+		this._active = false;
+		this._paused = false;
+	}, status:function () {
+		if (this._active) {
+			return this._paused ? "paused" : "playing";
+		} else {
+			return "stopped";
+		}
+	}, _cycle:function () {
+		clearTimeout(this._timer);
+		if (this._active) {
+			var curr = new Date().valueOf();
+			var step = (curr - this._startTime) / (this._endTime - this._startTime);
+			var fps = 1000 / (curr - this._lastFrame);
+			this._lastFrame = curr;
+			if (step >= 1) {
+				step = 1;
+				this._percent = 100;
+			} else {
+				this._percent = step * 100;
+			}
+			if (this.accel && this.accel.getValue) {
+				step = this.accel.getValue(step);
+			}
+			var e = new dojo.animation.AnimationEvent(this, "animate", this.curve.getValue(step), this._startTime, curr, this._endTime, this.duration, this._percent, Math.round(fps));
+			if (typeof this.handler == "function") {
+				this.handler(e);
+			}
+			if (typeof this.onAnimate == "function") {
+				this.onAnimate(e);
+			}
+			if (step < 1) {
+				this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate);
+			} else {
+				e.type = "end";
+				this._active = false;
+				if (typeof this.handler == "function") {
+					this.handler(e);
+				}
+				if (typeof this.onEnd == "function") {
+					this.onEnd(e);
+				}
+				if (this.repeatCount > 0) {
+					this.repeatCount--;
+					this.play(true);
+				} else {
+					if (this.repeatCount == -1) {
+						this.play(true);
+					} else {
+						if (this._startRepeatCount) {
+							this.repeatCount = this._startRepeatCount;
+							this._startRepeatCount = 0;
+						}
+						if (this._animSequence) {
+							this._animSequence._playNext();
+						}
+					}
+				}
+			}
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/animation/Timer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -7351,6 +15950,8 @@
 		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");
@@ -7368,6 +15969,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.animation.Animation");
 dojo.require("dojo.animation.AnimationEvent");
 dojo.require("dojo.lang.func");
@@ -7548,6 +16151,8 @@
 		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");
@@ -7564,6 +16169,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.animation.AnimationSequence");
 dojo.require("dojo.animation.AnimationEvent");
 dojo.require("dojo.animation.Animation");
@@ -7681,6 +16288,158 @@
 }});
 
 
+__CPAN_FILE__ src/animation/AnimationSequence.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.animation.AnimationSequence"], ["require", "dojo.animation.AnimationEvent"], ["require", "dojo.animation.Animation"]], definePackage:function (dojo) {
+	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;
+				}
+			}
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/animation/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.animation.AnimationEvent", "dojo.animation.Animation", "dojo.animation.AnimationSequence"]}], ["provide", "dojo.animation.*"]], definePackage:function (dojo) {
+	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");
+}});
+
+
 __CPAN_FILE__ src/animation/AnimationEvent.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -7692,6 +16451,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.animation.AnimationEvent");
 dojo.require("dojo.lang.common");
 dojo.deprecated("dojo.animation.AnimationEvent is slated for removal in 0.5; use dojo.lfx.* instead.", "0.5");
@@ -7719,8 +16480,170 @@
 
 
 __CPAN_DIR__ src/debug
+__CPAN_FILE__ src/debug/Firebug.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.debug.Firebug"]], definePackage:function (dojo) {
+	dojo.provide("dojo.debug.Firebug");
+	dojo.deprecated("dojo.debug.Firebug is slated for removal in 0.5; use dojo.debug.console instead.", "0.5");
+	if (dojo.render.html.moz) {
+		if (console && console.log) {
+			var consoleLog = function () {
+				if (!djConfig.isDebug) {
+					return;
+				}
+				var args = dojo.lang.toArray(arguments);
+				args.splice(0, 0, "DEBUG: ");
+				console.log.apply(console, args);
+			};
+			dojo.debug = consoleLog;
+			dojo.debugDeep = consoleLog;
+			dojo.debugShallow = function (obj) {
+				if (!djConfig.isDebug) {
+					return;
+				}
+				if (dojo.lang.isArray(obj)) {
+					console.log("Array: ", obj);
+					for (var i = 0; x < obj.length; i++) {
+						console.log("	", "[" + i + "]", obj[i]);
+					}
+				} else {
+					console.log("Object: ", obj);
+					var propNames = [];
+					for (var prop in obj) {
+						propNames.push(prop);
+					}
+					propNames.sort();
+					dojo.lang.forEach(propNames, function (prop) {
+						try {
+							console.log("	", prop, obj[prop]);
+						}
+						catch (e) {
+							console.log("	", prop, "ERROR", e.message, e);
+						}
+					});
+				}
+			};
+		} else {
+			dojo.debug("dojo.debug.Firebug requires Firebug > 0.4");
+		}
+	}
+}});
+
+
 __CPAN_FILE__ src/debug/arrow_show.gif
 GIF89a	 	 Ä !/=)5*6$.",%4DZgt(8H&6F8HXAP_'3TaofrDSb*;Lht€q|ˆ,8!/<p|‡#1@#.(4ÿÿÿ                     !ù   ,    	 	  " †QbYFYB†£bŒòjrTR`"À5¨“á%°¼0—W ;
+__CPAN_FILE__ src/debug/console.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.debug.console"], ["require", "dojo.logging.ConsoleLogger"]], definePackage:function (dojo) {
+	dojo.provide("dojo.debug.console");
+	dojo.require("dojo.logging.ConsoleLogger");
+	if (window.console) {
+		if (console.info != null) {
+			dojo.hostenv.println = function () {
+				if (!djConfig.isDebug) {
+					return;
+				}
+				console.info.apply(console, arguments);
+			};
+			dojo.debug = dojo.hostenv.println;
+			dojo.debugDeep = dojo.debug;
+			dojo.debugShallow = function (obj, showMethods, sort) {
+				if (!djConfig.isDebug) {
+					return;
+				}
+				showMethods = (showMethods != false);
+				sort = (sort != false);
+				if (obj == null || obj.constructor == null) {
+					return dojo.debug(obj);
+				}
+				var type = obj.declaredClass;
+				if (type == null) {
+					type = obj.constructor.toString().match(/function\s*(.*)\(/);
+					if (type) {
+						type = type[1];
+					}
+				}
+				if (type) {
+					if (type == "String" || type == "Number") {
+						return dojo.debug(type + ": ", obj);
+					}
+					if (showMethods && !sort) {
+						var sortedObj = obj;
+					} else {
+						var propNames = [];
+						if (showMethods) {
+							for (var prop in obj) {
+								propNames.push(prop);
+							}
+						} else {
+							for (var prop in obj) {
+								if (typeof obj[prop] != "function") {
+									propNames.push(prop);
+								} else {
+									dojo.debug(prop);
+								}
+							}
+						}
+						if (sort) {
+							propNames.sort();
+						}
+						var sortedObj = {};
+						dojo.lang.forEach(propNames, function (prop) {
+							sortedObj[prop] = obj[prop];
+						});
+					}
+					return dojo.debug(type + ": %o\n%2.o", obj, sortedObj);
+				}
+				return dojo.debug(obj.constructor + ": ", obj);
+			};
+		} else {
+			if (console.log != null) {
+				dojo.hostenv.println = function () {
+					if (!djConfig.isDebug) {
+						return;
+					}
+					var args = dojo.lang.toArray(arguments);
+					console.log("DEBUG: " + args.join(" "));
+				};
+				dojo.debug = dojo.hostenv.println;
+			} else {
+				dojo.debug("dojo.debug.console requires Firebug > 0.4");
+			}
+		}
+	} else {
+		if (dojo.render.html.opera) {
+			if (opera && opera.postError) {
+				dojo.hostenv.println = opera.postError;
+			} else {
+				dojo.debug("dojo.debug.Opera requires Opera > 8.0");
+			}
+		}
+	}
+}});
+
+
 __CPAN_FILE__ src/debug/spacer.gif
 GIF89a	 	 ÷ @@@  è ×gÔˆ0ÿÿÿÔˆ*ç  ‘2  ¨   ÑPæà   é$ç0  ‘2  H   ØØçL  ‘2  H   ØØç$‘ëéhî‘8ÿÿÿ‘2‘«‘ëé¸éä      éÜ   çdÝtu꼐îûxÿÿÿûqÝu!    p   Ýu,  ØØ   péÜ  @      ê$éä                       @ê(H        péÜ pÿÿÿè,Ý›  ‚   çtHè(  ‚   èŒÝ  ‚     é@2   ò  €–Ò         æ‚°  é@2S`è@è   ‘È ÑHé\‘Q¨‘mé´   è¸   ‘È ØÐé„‘QHèÔ   ‘È ØÐé ‘QH‘méä     æ„Dº«Í    0    ÑPÔˆýà   0    çûl       ØØé@   ‘ÈHê‘Qá8‘mHr8H˜  ûqÕ†ç¼  é`çÈêîûxÿÿ  èä   êî‘pÿÿÿ‘m‘	¼    È ØØéÄ‘	’ ØØ   êÝíÝí b¦Èá  b¦Ô                éPH˜êDî‘pÿÿÿ‘mÂÂÞá     ÂÂãHr8H˜  ÝhªH˜H˜êPê ÿÿÿê¼Ã\”Á pÿÿÿÂÂãD•ÕH˜c c EµH  Hr8HÀ      ê†Ôê†Ôê†Ôê†Ô pê Ýltê¨HÀHÀæ࣠ æ‚°  !ù   ,    	 	   H° Áƒ*\Èp`@ ;
 __CPAN_FILE__ src/debug/Firebug.js
@@ -7734,6 +16657,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.debug.Firebug");
 dojo.deprecated("dojo.debug.Firebug is slated for removal in 0.5; use dojo.debug.console instead.", "0.5");
 if (dojo.render.html.moz) {
@@ -7793,6 +16718,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.debug.console");
 dojo.require("dojo.logging.ConsoleLogger");
 if (window.console) {
@@ -8254,6 +17181,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.selection.Selection");
 dojo.require("dojo.lang.array");
 dojo.require("dojo.lang.func");
@@ -8559,6 +17488,326 @@
 }});
 
 
+__CPAN_FILE__ src/selection/Selection.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.selection.Selection"], ["require", "dojo.lang.array"], ["require", "dojo.lang.func"], ["require", "dojo.lang.common"], ["require", "dojo.math"]], definePackage:function (dojo) {
+	dojo.provide("dojo.selection.Selection");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.math");
+	dojo.declare("dojo.selection.Selection", null, {initializer:function (items, isCollection) {
+		this.items = [];
+		this.selection = [];
+		this._pivotItems = [];
+		this.clearItems();
+		if (items) {
+			if (isCollection) {
+				this.setItemsCollection(items);
+			} else {
+				this.setItems(items);
+			}
+		}
+	}, items:null, selection:null, lastSelected:null, allowImplicit:true, length:0, isGrowable:true, _pivotItems:null, _pivotItem:null, onSelect:function (item) {
+	}, onDeselect:function (item) {
+	}, onSelectChange:function (item, selected) {
+	}, _find:function (item, inSelection) {
+		if (inSelection) {
+			return dojo.lang.find(this.selection, item);
+		} else {
+			return dojo.lang.find(this.items, item);
+		}
+	}, isSelectable:function (item) {
+		return true;
+	}, setItems:function () {
+		this.clearItems();
+		this.addItems.call(this, arguments);
+	}, setItemsCollection:function (collection) {
+		this.items = collection;
+	}, addItems:function () {
+		var args = dojo.lang.unnest(arguments);
+		for (var i = 0; i < args.length; i++) {
+			this.items.push(args[i]);
+		}
+	}, addItemsAt:function (item, before) {
+		if (this.items.length == 0) {
+			return this.addItems(dojo.lang.toArray(arguments, 2));
+		}
+		if (!this.isItem(item)) {
+			item = this.items[item];
+		}
+		if (!item) {
+			throw new Error("addItemsAt: item doesn't exist");
+		}
+		var idx = this._find(item);
+		if (idx > 0 && before) {
+			idx--;
+		}
+		for (var i = 2; i < arguments.length; i++) {
+			if (!this.isItem(arguments[i])) {
+				this.items.splice(idx++, 0, arguments[i]);
+			}
+		}
+	}, removeItem:function (item) {
+		var idx = this._find(item);
+		if (idx > -1) {
+			this.items.splice(idx, 1);
+		}
+		idx = this._find(item, true);
+		if (idx > -1) {
+			this.selection.splice(idx, 1);
+		}
+	}, clearItems:function () {
+		this.items = [];
+		this.deselectAll();
+	}, isItem:function (item) {
+		return this._find(item) > -1;
+	}, isSelected:function (item) {
+		return this._find(item, true) > -1;
+	}, selectFilter:function (item, selection, add, grow) {
+		return true;
+	}, update:function (item, add, grow, noToggle) {
+		if (!this.isItem(item)) {
+			return false;
+		}
+		if (this.isGrowable && grow) {
+			if ((!this.isSelected(item)) && this.selectFilter(item, this.selection, false, true)) {
+				this.grow(item);
+				this.lastSelected = item;
+			}
+		} else {
+			if (add) {
+				if (this.selectFilter(item, this.selection, true, false)) {
+					if (noToggle) {
+						if (this.select(item)) {
+							this.lastSelected = item;
+						}
+					} else {
+						if (this.toggleSelected(item)) {
+							this.lastSelected = item;
+						}
+					}
+				}
+			} else {
+				this.deselectAll();
+				this.select(item);
+			}
+		}
+		this.length = this.selection.length;
+		return true;
+	}, grow:function (toItem, fromItem) {
+		if (!this.isGrowable) {
+			return;
+		}
+		if (arguments.length == 1) {
+			fromItem = this._pivotItem;
+			if (!fromItem && this.allowImplicit) {
+				fromItem = this.items[0];
+			}
+		}
+		if (!toItem || !fromItem) {
+			return false;
+		}
+		var fromIdx = this._find(fromItem);
+		var toDeselect = {};
+		var lastIdx = -1;
+		if (this.lastSelected) {
+			lastIdx = this._find(this.lastSelected);
+			var step = fromIdx < lastIdx ? -1 : 1;
+			var range = dojo.math.range(lastIdx, fromIdx, step);
+			for (var i = 0; i < range.length; i++) {
+				toDeselect[range[i]] = true;
+			}
+		}
+		var toIdx = this._find(toItem);
+		var step = fromIdx < toIdx ? -1 : 1;
+		var shrink = lastIdx >= 0 && step == 1 ? lastIdx < toIdx : lastIdx > toIdx;
+		var range = dojo.math.range(toIdx, fromIdx, step);
+		if (range.length) {
+			for (var i = range.length - 1; i >= 0; i--) {
+				var item = this.items[range[i]];
+				if (this.selectFilter(item, this.selection, false, true)) {
+					if (this.select(item, true) || shrink) {
+						this.lastSelected = item;
+					}
+					if (range[i] in toDeselect) {
+						delete toDeselect[range[i]];
+					}
+				}
+			}
+		} else {
+			this.lastSelected = fromItem;
+		}
+		for (var i in toDeselect) {
+			if (this.items[i] == this.lastSelected) {
+			}
+			this.deselect(this.items[i]);
+		}
+		this._updatePivot();
+	}, growUp:function () {
+		if (!this.isGrowable) {
+			return;
+		}
+		var idx = this._find(this.lastSelected) - 1;
+		while (idx >= 0) {
+			if (this.selectFilter(this.items[idx], this.selection, false, true)) {
+				this.grow(this.items[idx]);
+				break;
+			}
+			idx--;
+		}
+	}, growDown:function () {
+		if (!this.isGrowable) {
+			return;
+		}
+		var idx = this._find(this.lastSelected);
+		if (idx < 0 && this.allowImplicit) {
+			this.select(this.items[0]);
+			idx = 0;
+		}
+		idx++;
+		while (idx > 0 && idx < this.items.length) {
+			if (this.selectFilter(this.items[idx], this.selection, false, true)) {
+				this.grow(this.items[idx]);
+				break;
+			}
+			idx++;
+		}
+	}, toggleSelected:function (item, noPivot) {
+		if (this.isItem(item)) {
+			if (this.select(item, noPivot)) {
+				return 1;
+			}
+			if (this.deselect(item)) {
+				return -1;
+			}
+		}
+		return 0;
+	}, select:function (item, noPivot) {
+		if (this.isItem(item) && !this.isSelected(item) && this.isSelectable(item)) {
+			this.selection.push(item);
+			this.lastSelected = item;
+			this.onSelect(item);
+			this.onSelectChange(item, true);
+			if (!noPivot) {
+				this._addPivot(item);
+			}
+			this.length = this.selection.length;
+			return true;
+		}
+		return false;
+	}, deselect:function (item) {
+		var idx = this._find(item, true);
+		if (idx > -1) {
+			this.selection.splice(idx, 1);
+			this.onDeselect(item);
+			this.onSelectChange(item, false);
+			if (item == this.lastSelected) {
+				this.lastSelected = null;
+			}
+			this._removePivot(item);
+			this.length = this.selection.length;
+			return true;
+		}
+		return false;
+	}, selectAll:function () {
+		for (var i = 0; i < this.items.length; i++) {
+			this.select(this.items[i]);
+		}
+	}, deselectAll:function () {
+		while (this.selection && this.selection.length) {
+			this.deselect(this.selection[0]);
+		}
+	}, selectNext:function () {
+		var idx = this._find(this.lastSelected);
+		while (idx > -1 && ++idx < this.items.length) {
+			if (this.isSelectable(this.items[idx])) {
+				this.deselectAll();
+				this.select(this.items[idx]);
+				return true;
+			}
+		}
+		return false;
+	}, selectPrevious:function () {
+		var idx = this._find(this.lastSelected);
+		while (idx-- > 0) {
+			if (this.isSelectable(this.items[idx])) {
+				this.deselectAll();
+				this.select(this.items[idx]);
+				return true;
+			}
+		}
+		return false;
+	}, selectFirst:function () {
+		this.deselectAll();
+		var idx = 0;
+		while (this.items[idx] && !this.select(this.items[idx])) {
+			idx++;
+		}
+		return this.items[idx] ? true : false;
+	}, selectLast:function () {
+		this.deselectAll();
+		var idx = this.items.length - 1;
+		while (this.items[idx] && !this.select(this.items[idx])) {
+			idx--;
+		}
+		return this.items[idx] ? true : false;
+	}, _addPivot:function (item, andClear) {
+		this._pivotItem = item;
+		if (andClear) {
+			this._pivotItems = [item];
+		} else {
+			this._pivotItems.push(item);
+		}
+	}, _removePivot:function (item) {
+		var i = dojo.lang.find(this._pivotItems, item);
+		if (i > -1) {
+			this._pivotItems.splice(i, 1);
+			this._pivotItem = this._pivotItems[this._pivotItems.length - 1];
+		}
+		this._updatePivot();
+	}, _updatePivot:function () {
+		if (this._pivotItems.length == 0) {
+			if (this.lastSelected) {
+				this._addPivot(this.lastSelected);
+			}
+		}
+	}, sorted:function () {
+		return dojo.lang.toArray(this.selection).sort(dojo.lang.hitch(this, function (a, b) {
+			var A = this._find(a), B = this._find(b);
+			if (A > B) {
+				return 1;
+			} else {
+				if (A < B) {
+					return -1;
+				} else {
+					return 0;
+				}
+			}
+		}));
+	}, updateSelected:function () {
+		for (var i = 0; i < this.selection.length; i++) {
+			if (this._find(this.selection[i]) < 0) {
+				var removed = this.selection.splice(i, 1);
+				this._removePivot(removed[0]);
+			}
+		}
+		this.length = this.selection.length;
+	}});
+}});
+
+
 __CPAN_DIR__ src/string
 __CPAN_FILE__ src/string/common.js
 /*
@@ -8571,6 +17820,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.string.common");
 dojo.string.trim = function (str, wh) {
 	if (!str.replace) {
@@ -8634,6 +17885,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.string.Builder");
 dojo.require("dojo.string");
 dojo.require("dojo.lang.common");
@@ -8727,6 +17980,114 @@
 };
 
 
+__CPAN_FILE__ src/string/Builder.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.string.Builder"], ["require", "dojo.string"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.string.Builder");
+	dojo.require("dojo.string");
+	dojo.require("dojo.lang.common");
+	dojo.string.Builder = function (str) {
+		this.arrConcat = (dojo.render.html.capable && dojo.render.html["ie"]);
+		var a = [];
+		var b = "";
+		var length = this.length = b.length;
+		if (this.arrConcat) {
+			if (b.length > 0) {
+				a.push(b);
+			}
+			b = "";
+		}
+		this.toString = this.valueOf = function () {
+			return (this.arrConcat) ? a.join("") : b;
+		};
+		this.append = function () {
+			for (var x = 0; x < arguments.length; x++) {
+				var s = arguments[x];
+				if (dojo.lang.isArrayLike(s)) {
+					this.append.apply(this, s);
+				} else {
+					if (this.arrConcat) {
+						a.push(s);
+					} else {
+						b += s;
+					}
+					length += s.length;
+					this.length = length;
+				}
+			}
+			return this;
+		};
+		this.clear = function () {
+			a = [];
+			b = "";
+			length = this.length = 0;
+			return this;
+		};
+		this.remove = function (f, l) {
+			var s = "";
+			if (this.arrConcat) {
+				b = a.join("");
+			}
+			a = [];
+			if (f > 0) {
+				s = b.substring(0, (f - 1));
+			}
+			b = s + b.substring(f + l);
+			length = this.length = b.length;
+			if (this.arrConcat) {
+				a.push(b);
+				b = "";
+			}
+			return this;
+		};
+		this.replace = function (o, n) {
+			if (this.arrConcat) {
+				b = a.join("");
+			}
+			a = [];
+			b = b.replace(o, n);
+			length = this.length = b.length;
+			if (this.arrConcat) {
+				a.push(b);
+				b = "";
+			}
+			return this;
+		};
+		this.insert = function (idx, s) {
+			if (this.arrConcat) {
+				b = a.join("");
+			}
+			a = [];
+			if (idx == 0) {
+				b = s + b;
+			} else {
+				var t = b.split("");
+				t.splice(idx, 0, s);
+				b = t.join("");
+			}
+			length = this.length = b.length;
+			if (this.arrConcat) {
+				a.push(b);
+				b = "";
+			}
+			return this;
+		};
+		this.append.apply(this, arguments);
+	};
+}});
+
+
 __CPAN_FILE__ src/string/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -8738,10 +18099,280 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.string", "dojo.string.common", "dojo.string.extras", "dojo.string.Builder"]});
 dojo.provide("dojo.string.*");
 
 
+__CPAN_FILE__ src/string/extras.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.string.extras"], ["require", "dojo.string.common"], ["require", "dojo.lang.common"], ["require", "dojo.lang.array"]], definePackage:function (dojo) {
+	dojo.provide("dojo.string.extras");
+	dojo.require("dojo.string.common");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.array");
+	dojo.string.substituteParams = function (template, hash) {
+		var map = (typeof hash == "object") ? hash : dojo.lang.toArray(arguments, 1);
+		return template.replace(/\%\{(\w+)\}/g, function (match, key) {
+			if (typeof (map[key]) != "undefined" && map[key] != null) {
+				return map[key];
+			}
+			dojo.raise("Substitution not found: " + key);
+		});
+	};
+	dojo.string.capitalize = function (str) {
+		if (!dojo.lang.isString(str)) {
+			return "";
+		}
+		if (arguments.length == 0) {
+			str = this;
+		}
+		var words = str.split(" ");
+		for (var i = 0; i < words.length; i++) {
+			words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
+		}
+		return words.join(" ");
+	};
+	dojo.string.isBlank = function (str) {
+		if (!dojo.lang.isString(str)) {
+			return true;
+		}
+		return (dojo.string.trim(str).length == 0);
+	};
+	dojo.string.encodeAscii = function (str) {
+		if (!dojo.lang.isString(str)) {
+			return str;
+		}
+		var ret = "";
+		var value = escape(str);
+		var match, re = /%u([0-9A-F]{4})/i;
+		while ((match = value.match(re))) {
+			var num = Number("0x" + match[1]);
+			var newVal = escape("&#" + num + ";");
+			ret += value.substring(0, match.index) + newVal;
+			value = value.substring(match.index + match[0].length);
+		}
+		ret += value.replace(/\+/g, "%2B");
+		return ret;
+	};
+	dojo.string.escape = function (type, str) {
+		var args = dojo.lang.toArray(arguments, 1);
+		switch (type.toLowerCase()) {
+		  case "xml":
+		  case "html":
+		  case "xhtml":
+			return dojo.string.escapeXml.apply(this, args);
+		  case "sql":
+			return dojo.string.escapeSql.apply(this, args);
+		  case "regexp":
+		  case "regex":
+			return dojo.string.escapeRegExp.apply(this, args);
+		  case "javascript":
+		  case "jscript":
+		  case "js":
+			return dojo.string.escapeJavaScript.apply(this, args);
+		  case "ascii":
+			return dojo.string.encodeAscii.apply(this, args);
+		  default:
+			return str;
+		}
+	};
+	dojo.string.escapeXml = function (str, noSingleQuotes) {
+		str = str.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
+		if (!noSingleQuotes) {
+			str = str.replace(/'/gm, "&#39;");
+		}
+		return str;
+	};
+	dojo.string.escapeSql = function (str) {
+		return str.replace(/'/gm, "''");
+	};
+	dojo.string.escapeRegExp = function (str) {
+		return str.replace(/\\/gm, "\\\\").replace(/([\f\b\n\t\r[\^$|?*+(){}])/gm, "\\$1");
+	};
+	dojo.string.escapeJavaScript = function (str) {
+		return str.replace(/(["'\f\b\n\t\r])/gm, "\\$1");
+	};
+	dojo.string.escapeString = function (str) {
+		return ("\"" + str.replace(/(["\\])/g, "\\$1") + "\"").replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r");
+	};
+	dojo.string.summary = function (str, len) {
+		if (!len || str.length <= len) {
+			return str;
+		}
+		return str.substring(0, len).replace(/\.+$/, "") + "...";
+	};
+	dojo.string.endsWith = function (str, end, ignoreCase) {
+		if (ignoreCase) {
+			str = str.toLowerCase();
+			end = end.toLowerCase();
+		}
+		if ((str.length - end.length) < 0) {
+			return false;
+		}
+		return str.lastIndexOf(end) == str.length - end.length;
+	};
+	dojo.string.endsWithAny = function (str) {
+		for (var i = 1; i < arguments.length; i++) {
+			if (dojo.string.endsWith(str, arguments[i])) {
+				return true;
+			}
+		}
+		return false;
+	};
+	dojo.string.startsWith = function (str, start, ignoreCase) {
+		if (ignoreCase) {
+			str = str.toLowerCase();
+			start = start.toLowerCase();
+		}
+		return str.indexOf(start) == 0;
+	};
+	dojo.string.startsWithAny = function (str) {
+		for (var i = 1; i < arguments.length; i++) {
+			if (dojo.string.startsWith(str, arguments[i])) {
+				return true;
+			}
+		}
+		return false;
+	};
+	dojo.string.has = function (str) {
+		for (var i = 1; i < arguments.length; i++) {
+			if (str.indexOf(arguments[i]) > -1) {
+				return true;
+			}
+		}
+		return false;
+	};
+	dojo.string.normalizeNewlines = function (text, newlineChar) {
+		if (newlineChar == "\n") {
+			text = text.replace(/\r\n/g, "\n");
+			text = text.replace(/\r/g, "\n");
+		} else {
+			if (newlineChar == "\r") {
+				text = text.replace(/\r\n/g, "\r");
+				text = text.replace(/\n/g, "\r");
+			} else {
+				text = text.replace(/([^\r])\n/g, "$1\r\n").replace(/\r([^\n])/g, "\r\n$1");
+			}
+		}
+		return text;
+	};
+	dojo.string.splitEscaped = function (str, charac) {
+		var components = [];
+		for (var i = 0, prevcomma = 0; i < str.length; i++) {
+			if (str.charAt(i) == "\\") {
+				i++;
+				continue;
+			}
+			if (str.charAt(i) == charac) {
+				components.push(str.substring(prevcomma, i));
+				prevcomma = i + 1;
+			}
+		}
+		components.push(str.substr(prevcomma));
+		return components;
+	};
+}});
+
+
+__CPAN_FILE__ src/string/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.string", "dojo.string.common", "dojo.string.extras", "dojo.string.Builder"]}], ["provide", "dojo.string.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.string", "dojo.string.common", "dojo.string.extras", "dojo.string.Builder"]});
+	dojo.provide("dojo.string.*");
+}});
+
+
+__CPAN_FILE__ src/string/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.string.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.string.common");
+	dojo.string.trim = function (str, wh) {
+		if (!str.replace) {
+			return str;
+		}
+		if (!str.length) {
+			return str;
+		}
+		var re = (wh > 0) ? (/^\s+/) : (wh < 0) ? (/\s+$/) : (/^\s+|\s+$/g);
+		return str.replace(re, "");
+	};
+	dojo.string.trimStart = function (str) {
+		return dojo.string.trim(str, 1);
+	};
+	dojo.string.trimEnd = function (str) {
+		return dojo.string.trim(str, -1);
+	};
+	dojo.string.repeat = function (str, count, separator) {
+		var out = "";
+		for (var i = 0; i < count; i++) {
+			out += str;
+			if (separator && i < count - 1) {
+				out += separator;
+			}
+		}
+		return out;
+	};
+	dojo.string.pad = function (str, len, c, dir) {
+		var out = String(str);
+		if (!c) {
+			c = "0";
+		}
+		if (!dir) {
+			dir = 1;
+		}
+		while (out.length < len) {
+			if (dir > 0) {
+				out = c + out;
+			} else {
+				out += c;
+			}
+		}
+		return out;
+	};
+	dojo.string.padLeft = function (str, len, c) {
+		return dojo.string.pad(str, len, c, 1);
+	};
+	dojo.string.padRight = function (str, len, c) {
+		return dojo.string.pad(str, len, c, -1);
+	};
+}});
+
+
 __CPAN_FILE__ src/string/extras.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -8753,6 +18384,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.string.extras");
 dojo.require("dojo.string.common");
 dojo.require("dojo.lang.common");
@@ -8932,6 +18565,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.util");
 dojo.require("dojo.html.layout");
 dojo.html.getElementWindow = function (element) {
@@ -9288,6 +18923,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.display");
 dojo.require("dojo.html.style");
 dojo.html._toggle = function (node, tester, setter) {
@@ -9424,6 +19061,419 @@
 };
 
 
+__CPAN_FILE__ src/html/layout.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.layout"], ["require", "dojo.html.common"], ["require", "dojo.html.style"], ["require", "dojo.html.display"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.layout");
+	dojo.require("dojo.html.common");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.display");
+	dojo.html.sumAncestorProperties = function (node, prop) {
+		node = dojo.byId(node);
+		if (!node) {
+			return 0;
+		}
+		var retVal = 0;
+		while (node) {
+			if (dojo.html.getComputedStyle(node, "position") == "fixed") {
+				return 0;
+			}
+			var val = node[prop];
+			if (val) {
+				retVal += val - 0;
+				if (node == dojo.body()) {
+					break;
+				}
+			}
+			node = node.parentNode;
+		}
+		return retVal;
+	};
+	dojo.html.setStyleAttributes = function (node, attributes) {
+		node = dojo.byId(node);
+		var splittedAttribs = attributes.replace(/(;)?\s*$/, "").split(";");
+		for (var i = 0; i < splittedAttribs.length; i++) {
+			var nameValue = splittedAttribs[i].split(":");
+			var name = nameValue[0].replace(/\s*$/, "").replace(/^\s*/, "").toLowerCase();
+			var value = nameValue[1].replace(/\s*$/, "").replace(/^\s*/, "");
+			switch (name) {
+			  case "opacity":
+				dojo.html.setOpacity(node, value);
+				break;
+			  case "content-height":
+				dojo.html.setContentBox(node, {height:value});
+				break;
+			  case "content-width":
+				dojo.html.setContentBox(node, {width:value});
+				break;
+			  case "outer-height":
+				dojo.html.setMarginBox(node, {height:value});
+				break;
+			  case "outer-width":
+				dojo.html.setMarginBox(node, {width:value});
+				break;
+			  default:
+				node.style[dojo.html.toCamelCase(name)] = value;
+			}
+		}
+	};
+	dojo.html.boxSizing = {MARGIN_BOX:"margin-box", BORDER_BOX:"border-box", PADDING_BOX:"padding-box", CONTENT_BOX:"content-box"};
+	dojo.html.getAbsolutePosition = dojo.html.abs = function (node, includeScroll, boxType) {
+		node = dojo.byId(node, node.ownerDocument);
+		var ret = {x:0, y:0};
+		var bs = dojo.html.boxSizing;
+		if (!boxType) {
+			boxType = bs.CONTENT_BOX;
+		}
+		var nativeBoxType = 2;
+		var targetBoxType;
+		switch (boxType) {
+		  case bs.MARGIN_BOX:
+			targetBoxType = 3;
+			break;
+		  case bs.BORDER_BOX:
+			targetBoxType = 2;
+			break;
+		  case bs.PADDING_BOX:
+		  default:
+			targetBoxType = 1;
+			break;
+		  case bs.CONTENT_BOX:
+			targetBoxType = 0;
+			break;
+		}
+		var h = dojo.render.html;
+		var db = document["body"] || document["documentElement"];
+		if (h.ie) {
+			with (node.getBoundingClientRect()) {
+				ret.x = left - 2;
+				ret.y = top - 2;
+			}
+		} else {
+			if (document.getBoxObjectFor) {
+				nativeBoxType = 1;
+				try {
+					var bo = document.getBoxObjectFor(node);
+					ret.x = bo.x - dojo.html.sumAncestorProperties(node, "scrollLeft");
+					ret.y = bo.y - dojo.html.sumAncestorProperties(node, "scrollTop");
+				}
+				catch (e) {
+				}
+			} else {
+				if (node["offsetParent"]) {
+					var endNode;
+					if ((h.safari) && (node.style.getPropertyValue("position") == "absolute") && (node.parentNode == db)) {
+						endNode = db;
+					} else {
+						endNode = db.parentNode;
+					}
+					if (node.parentNode != db) {
+						var nd = node;
+						if (dojo.render.html.opera) {
+							nd = db;
+						}
+						ret.x -= dojo.html.sumAncestorProperties(nd, "scrollLeft");
+						ret.y -= dojo.html.sumAncestorProperties(nd, "scrollTop");
+					}
+					var curnode = node;
+					do {
+						var n = curnode["offsetLeft"];
+						if (!h.opera || n > 0) {
+							ret.x += isNaN(n) ? 0 : n;
+						}
+						var m = curnode["offsetTop"];
+						ret.y += isNaN(m) ? 0 : m;
+						curnode = curnode.offsetParent;
+					} while ((curnode != endNode) && (curnode != null));
+				} else {
+					if (node["x"] && node["y"]) {
+						ret.x += isNaN(node.x) ? 0 : node.x;
+						ret.y += isNaN(node.y) ? 0 : node.y;
+					}
+				}
+			}
+		}
+		if (includeScroll) {
+			var scroll = dojo.html.getScroll();
+			ret.y += scroll.top;
+			ret.x += scroll.left;
+		}
+		var extentFuncArray = [dojo.html.getPaddingExtent, dojo.html.getBorderExtent, dojo.html.getMarginExtent];
+		if (nativeBoxType > targetBoxType) {
+			for (var i = targetBoxType; i < nativeBoxType; ++i) {
+				ret.y += extentFuncArray[i](node, "top");
+				ret.x += extentFuncArray[i](node, "left");
+			}
+		} else {
+			if (nativeBoxType < targetBoxType) {
+				for (var i = targetBoxType; i > nativeBoxType; --i) {
+					ret.y -= extentFuncArray[i - 1](node, "top");
+					ret.x -= extentFuncArray[i - 1](node, "left");
+				}
+			}
+		}
+		ret.top = ret.y;
+		ret.left = ret.x;
+		return ret;
+	};
+	dojo.html.isPositionAbsolute = function (node) {
+		return (dojo.html.getComputedStyle(node, "position") == "absolute");
+	};
+	dojo.html._sumPixelValues = function (node, selectors, autoIsZero) {
+		var total = 0;
+		for (var x = 0; x < selectors.length; x++) {
+			total += dojo.html.getPixelValue(node, selectors[x], autoIsZero);
+		}
+		return total;
+	};
+	dojo.html.getMargin = function (node) {
+		return {width:dojo.html._sumPixelValues(node, ["margin-left", "margin-right"], (dojo.html.getComputedStyle(node, "position") == "absolute")), height:dojo.html._sumPixelValues(node, ["margin-top", "margin-bottom"], (dojo.html.getComputedStyle(node, "position") == "absolute"))};
+	};
+	dojo.html.getBorder = function (node) {
+		return {width:dojo.html.getBorderExtent(node, "left") + dojo.html.getBorderExtent(node, "right"), height:dojo.html.getBorderExtent(node, "top") + dojo.html.getBorderExtent(node, "bottom")};
+	};
+	dojo.html.getBorderExtent = function (node, side) {
+		return (dojo.html.getStyle(node, "border-" + side + "-style") == "none" ? 0 : dojo.html.getPixelValue(node, "border-" + side + "-width"));
+	};
+	dojo.html.getMarginExtent = function (node, side) {
+		return dojo.html._sumPixelValues(node, ["margin-" + side], dojo.html.isPositionAbsolute(node));
+	};
+	dojo.html.getPaddingExtent = function (node, side) {
+		return dojo.html._sumPixelValues(node, ["padding-" + side], true);
+	};
+	dojo.html.getPadding = function (node) {
+		return {width:dojo.html._sumPixelValues(node, ["padding-left", "padding-right"], true), height:dojo.html._sumPixelValues(node, ["padding-top", "padding-bottom"], true)};
+	};
+	dojo.html.getPadBorder = function (node) {
+		var pad = dojo.html.getPadding(node);
+		var border = dojo.html.getBorder(node);
+		return {width:pad.width + border.width, height:pad.height + border.height};
+	};
+	dojo.html.getBoxSizing = function (node) {
+		var h = dojo.render.html;
+		var bs = dojo.html.boxSizing;
+		if (((h.ie) || (h.opera)) && node.nodeName.toLowerCase() != "img") {
+			var cm = document["compatMode"];
+			if ((cm == "BackCompat") || (cm == "QuirksMode")) {
+				return bs.BORDER_BOX;
+			} else {
+				return bs.CONTENT_BOX;
+			}
+		} else {
+			if (arguments.length == 0) {
+				node = document.documentElement;
+			}
+			var sizing;
+			if (!h.ie) {
+				sizing = dojo.html.getStyle(node, "-moz-box-sizing");
+				if (!sizing) {
+					sizing = dojo.html.getStyle(node, "box-sizing");
+				}
+			}
+			return (sizing ? sizing : bs.CONTENT_BOX);
+		}
+	};
+	dojo.html.isBorderBox = function (node) {
+		return (dojo.html.getBoxSizing(node) == dojo.html.boxSizing.BORDER_BOX);
+	};
+	dojo.html.getBorderBox = function (node) {
+		node = dojo.byId(node);
+		return {width:node.offsetWidth, height:node.offsetHeight};
+	};
+	dojo.html.getPaddingBox = function (node) {
+		var box = dojo.html.getBorderBox(node);
+		var border = dojo.html.getBorder(node);
+		return {width:box.width - border.width, height:box.height - border.height};
+	};
+	dojo.html.getContentBox = function (node) {
+		node = dojo.byId(node);
+		var padborder = dojo.html.getPadBorder(node);
+		return {width:node.offsetWidth - padborder.width, height:node.offsetHeight - padborder.height};
+	};
+	dojo.html.setContentBox = function (node, args) {
+		node = dojo.byId(node);
+		var width = 0;
+		var height = 0;
+		var isbb = dojo.html.isBorderBox(node);
+		var padborder = (isbb ? dojo.html.getPadBorder(node) : {width:0, height:0});
+		var ret = {};
+		if (typeof args.width != "undefined") {
+			width = args.width + padborder.width;
+			ret.width = dojo.html.setPositivePixelValue(node, "width", width);
+		}
+		if (typeof args.height != "undefined") {
+			height = args.height + padborder.height;
+			ret.height = dojo.html.setPositivePixelValue(node, "height", height);
+		}
+		return ret;
+	};
+	dojo.html.getMarginBox = function (node) {
+		var borderbox = dojo.html.getBorderBox(node);
+		var margin = dojo.html.getMargin(node);
+		return {width:borderbox.width + margin.width, height:borderbox.height + margin.height};
+	};
+	dojo.html.setMarginBox = function (node, args) {
+		node = dojo.byId(node);
+		var width = 0;
+		var height = 0;
+		var isbb = dojo.html.isBorderBox(node);
+		var padborder = (!isbb ? dojo.html.getPadBorder(node) : {width:0, height:0});
+		var margin = dojo.html.getMargin(node);
+		var ret = {};
+		if (typeof args.width != "undefined") {
+			width = args.width - padborder.width;
+			width -= margin.width;
+			ret.width = dojo.html.setPositivePixelValue(node, "width", width);
+		}
+		if (typeof args.height != "undefined") {
+			height = args.height - padborder.height;
+			height -= margin.height;
+			ret.height = dojo.html.setPositivePixelValue(node, "height", height);
+		}
+		return ret;
+	};
+	dojo.html.getElementBox = function (node, type) {
+		var bs = dojo.html.boxSizing;
+		switch (type) {
+		  case bs.MARGIN_BOX:
+			return dojo.html.getMarginBox(node);
+		  case bs.BORDER_BOX:
+			return dojo.html.getBorderBox(node);
+		  case bs.PADDING_BOX:
+			return dojo.html.getPaddingBox(node);
+		  case bs.CONTENT_BOX:
+		  default:
+			return dojo.html.getContentBox(node);
+		}
+	};
+	dojo.html.toCoordinateObject = dojo.html.toCoordinateArray = function (coords, includeScroll, boxtype) {
+		if (coords instanceof Array || typeof coords == "array") {
+			dojo.deprecated("dojo.html.toCoordinateArray", "use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead", "0.5");
+			while (coords.length < 4) {
+				coords.push(0);
+			}
+			while (coords.length > 4) {
+				coords.pop();
+			}
+			var ret = {left:coords[0], top:coords[1], width:coords[2], height:coords[3]};
+		} else {
+			if (!coords.nodeType && !(coords instanceof String || typeof coords == "string") && ("width" in coords || "height" in coords || "left" in coords || "x" in coords || "top" in coords || "y" in coords)) {
+				var ret = {left:coords.left || coords.x || 0, top:coords.top || coords.y || 0, width:coords.width || 0, height:coords.height || 0};
+			} else {
+				var node = dojo.byId(coords);
+				var pos = dojo.html.abs(node, includeScroll, boxtype);
+				var marginbox = dojo.html.getMarginBox(node);
+				var ret = {left:pos.left, top:pos.top, width:marginbox.width, height:marginbox.height};
+			}
+		}
+		ret.x = ret.left;
+		ret.y = ret.top;
+		return ret;
+	};
+	dojo.html.setMarginBoxWidth = dojo.html.setOuterWidth = function (node, width) {
+		return dojo.html._callDeprecated("setMarginBoxWidth", "setMarginBox", arguments, "width");
+	};
+	dojo.html.setMarginBoxHeight = dojo.html.setOuterHeight = function () {
+		return dojo.html._callDeprecated("setMarginBoxHeight", "setMarginBox", arguments, "height");
+	};
+	dojo.html.getMarginBoxWidth = dojo.html.getOuterWidth = function () {
+		return dojo.html._callDeprecated("getMarginBoxWidth", "getMarginBox", arguments, null, "width");
+	};
+	dojo.html.getMarginBoxHeight = dojo.html.getOuterHeight = function () {
+		return dojo.html._callDeprecated("getMarginBoxHeight", "getMarginBox", arguments, null, "height");
+	};
+	dojo.html.getTotalOffset = function (node, type, includeScroll) {
+		return dojo.html._callDeprecated("getTotalOffset", "getAbsolutePosition", arguments, null, type);
+	};
+	dojo.html.getAbsoluteX = function (node, includeScroll) {
+		return dojo.html._callDeprecated("getAbsoluteX", "getAbsolutePosition", arguments, null, "x");
+	};
+	dojo.html.getAbsoluteY = function (node, includeScroll) {
+		return dojo.html._callDeprecated("getAbsoluteY", "getAbsolutePosition", arguments, null, "y");
+	};
+	dojo.html.totalOffsetLeft = function (node, includeScroll) {
+		return dojo.html._callDeprecated("totalOffsetLeft", "getAbsolutePosition", arguments, null, "left");
+	};
+	dojo.html.totalOffsetTop = function (node, includeScroll) {
+		return dojo.html._callDeprecated("totalOffsetTop", "getAbsolutePosition", arguments, null, "top");
+	};
+	dojo.html.getMarginWidth = function (node) {
+		return dojo.html._callDeprecated("getMarginWidth", "getMargin", arguments, null, "width");
+	};
+	dojo.html.getMarginHeight = function (node) {
+		return dojo.html._callDeprecated("getMarginHeight", "getMargin", arguments, null, "height");
+	};
+	dojo.html.getBorderWidth = function (node) {
+		return dojo.html._callDeprecated("getBorderWidth", "getBorder", arguments, null, "width");
+	};
+	dojo.html.getBorderHeight = function (node) {
+		return dojo.html._callDeprecated("getBorderHeight", "getBorder", arguments, null, "height");
+	};
+	dojo.html.getPaddingWidth = function (node) {
+		return dojo.html._callDeprecated("getPaddingWidth", "getPadding", arguments, null, "width");
+	};
+	dojo.html.getPaddingHeight = function (node) {
+		return dojo.html._callDeprecated("getPaddingHeight", "getPadding", arguments, null, "height");
+	};
+	dojo.html.getPadBorderWidth = function (node) {
+		return dojo.html._callDeprecated("getPadBorderWidth", "getPadBorder", arguments, null, "width");
+	};
+	dojo.html.getPadBorderHeight = function (node) {
+		return dojo.html._callDeprecated("getPadBorderHeight", "getPadBorder", arguments, null, "height");
+	};
+	dojo.html.getBorderBoxWidth = dojo.html.getInnerWidth = function () {
+		return dojo.html._callDeprecated("getBorderBoxWidth", "getBorderBox", arguments, null, "width");
+	};
+	dojo.html.getBorderBoxHeight = dojo.html.getInnerHeight = function () {
+		return dojo.html._callDeprecated("getBorderBoxHeight", "getBorderBox", arguments, null, "height");
+	};
+	dojo.html.getContentBoxWidth = dojo.html.getContentWidth = function () {
+		return dojo.html._callDeprecated("getContentBoxWidth", "getContentBox", arguments, null, "width");
+	};
+	dojo.html.getContentBoxHeight = dojo.html.getContentHeight = function () {
+		return dojo.html._callDeprecated("getContentBoxHeight", "getContentBox", arguments, null, "height");
+	};
+	dojo.html.setContentBoxWidth = dojo.html.setContentWidth = function (node, width) {
+		return dojo.html._callDeprecated("setContentBoxWidth", "setContentBox", arguments, "width");
+	};
+	dojo.html.setContentBoxHeight = dojo.html.setContentHeight = function (node, height) {
+		return dojo.html._callDeprecated("setContentBoxHeight", "setContentBox", arguments, "height");
+	};
+}});
+
+
+__CPAN_FILE__ src/html/shadow.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.shadow"], ["require", "dojo.lfx.shadow"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.shadow");
+	dojo.require("dojo.lfx.shadow");
+	dojo.deprecated("dojo.html.shadow has been moved to dojo.lfx.", "0.5");
+	dojo.html.shadow = dojo.lfx.shadow;
+}});
+
+
 __CPAN_FILE__ src/html/common.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -9435,6 +19485,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.common");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.dom");
@@ -9617,6 +19669,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.style");
 dojo.require("dojo.html.common");
 dojo.require("dojo.uri.Uri");
@@ -9782,7 +19836,7 @@
 if (dojo.render.html.ie) {
 	dojo.html.getComputedStyle = function (node, property, value) {
 		node = dojo.byId(node);
-		if (!node || !node.style) {
+		if (!node || !node.currentStyle) {
 			return value;
 		}
 		return node.currentStyle[dojo.html.toCamelCase(property)];
@@ -10089,6 +20143,493 @@
 };
 
 
+__CPAN_FILE__ src/html/style.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.style"], ["require", "dojo.html.common"], ["require", "dojo.uri.Uri"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.style");
+	dojo.require("dojo.html.common");
+	dojo.require("dojo.uri.Uri");
+	dojo.html.getClass = function (node) {
+		node = dojo.byId(node);
+		if (!node) {
+			return "";
+		}
+		var cs = "";
+		if (node.className) {
+			cs = node.className;
+		} else {
+			if (dojo.html.hasAttribute(node, "class")) {
+				cs = dojo.html.getAttribute(node, "class");
+			}
+		}
+		return cs.replace(/^\s+|\s+$/g, "");
+	};
+	dojo.html.getClasses = function (node) {
+		var c = dojo.html.getClass(node);
+		return (c == "") ? [] : c.split(/\s+/g);
+	};
+	dojo.html.hasClass = function (node, classname) {
+		return (new RegExp("(^|\\s+)" + classname + "(\\s+|$)")).test(dojo.html.getClass(node));
+	};
+	dojo.html.prependClass = function (node, classStr) {
+		classStr += " " + dojo.html.getClass(node);
+		return dojo.html.setClass(node, classStr);
+	};
+	dojo.html.addClass = function (node, classStr) {
+		if (dojo.html.hasClass(node, classStr)) {
+			return false;
+		}
+		classStr = (dojo.html.getClass(node) + " " + classStr).replace(/^\s+|\s+$/g, "");
+		return dojo.html.setClass(node, classStr);
+	};
+	dojo.html.setClass = function (node, classStr) {
+		node = dojo.byId(node);
+		var cs = new String(classStr);
+		try {
+			if (typeof node.className == "string") {
+				node.className = cs;
+			} else {
+				if (node.setAttribute) {
+					node.setAttribute("class", classStr);
+					node.className = cs;
+				} else {
+					return false;
+				}
+			}
+		}
+		catch (e) {
+			dojo.debug("dojo.html.setClass() failed", e);
+		}
+		return true;
+	};
+	dojo.html.removeClass = function (node, classStr, allowPartialMatches) {
+		try {
+			if (!allowPartialMatches) {
+				var newcs = dojo.html.getClass(node).replace(new RegExp("(^|\\s+)" + classStr + "(\\s+|$)"), "$1$2");
+			} else {
+				var newcs = dojo.html.getClass(node).replace(classStr, "");
+			}
+			dojo.html.setClass(node, newcs);
+		}
+		catch (e) {
+			dojo.debug("dojo.html.removeClass() failed", e);
+		}
+		return true;
+	};
+	dojo.html.replaceClass = function (node, newClass, oldClass) {
+		dojo.html.removeClass(node, oldClass);
+		dojo.html.addClass(node, newClass);
+	};
+	dojo.html.classMatchType = {ContainsAll:0, ContainsAny:1, IsOnly:2};
+	dojo.html.getElementsByClass = function (classStr, parent, nodeType, classMatchType, useNonXpath) {
+		useNonXpath = false;
+		var _document = dojo.doc();
+		parent = dojo.byId(parent) || _document;
+		var classes = classStr.split(/\s+/g);
+		var nodes = [];
+		if (classMatchType != 1 && classMatchType != 2) {
+			classMatchType = 0;
+		}
+		var reClass = new RegExp("(\\s|^)((" + classes.join(")|(") + "))(\\s|$)");
+		var srtLength = classes.join(" ").length;
+		var candidateNodes = [];
+		if (!useNonXpath && _document.evaluate) {
+			var xpath = ".//" + (nodeType || "*") + "[contains(";
+			if (classMatchType != dojo.html.classMatchType.ContainsAny) {
+				xpath += "concat(' ', at class,' '), ' " + classes.join(" ') and contains(concat(' ', at class,' '), ' ") + " ')";
+				if (classMatchType == 2) {
+					xpath += " and string-length(@class)=" + srtLength + "]";
+				} else {
+					xpath += "]";
+				}
+			} else {
+				xpath += "concat(' ', at class,' '), ' " + classes.join(" ') or contains(concat(' ', at class,' '), ' ") + " ')]";
+			}
+			var xpathResult = _document.evaluate(xpath, parent, null, XPathResult.ANY_TYPE, null);
+			var result = xpathResult.iterateNext();
+			while (result) {
+				try {
+					candidateNodes.push(result);
+					result = xpathResult.iterateNext();
+				}
+				catch (e) {
+					break;
+				}
+			}
+			return candidateNodes;
+		} else {
+			if (!nodeType) {
+				nodeType = "*";
+			}
+			candidateNodes = parent.getElementsByTagName(nodeType);
+			var node, i = 0;
+		outer:
+			while (node = candidateNodes[i++]) {
+				var nodeClasses = dojo.html.getClasses(node);
+				if (nodeClasses.length == 0) {
+					continue outer;
+				}
+				var matches = 0;
+				for (var j = 0; j < nodeClasses.length; j++) {
+					if (reClass.test(nodeClasses[j])) {
+						if (classMatchType == dojo.html.classMatchType.ContainsAny) {
+							nodes.push(node);
+							continue outer;
+						} else {
+							matches++;
+						}
+					} else {
+						if (classMatchType == dojo.html.classMatchType.IsOnly) {
+							continue outer;
+						}
+					}
+				}
+				if (matches == classes.length) {
+					if ((classMatchType == dojo.html.classMatchType.IsOnly) && (matches == nodeClasses.length)) {
+						nodes.push(node);
+					} else {
+						if (classMatchType == dojo.html.classMatchType.ContainsAll) {
+							nodes.push(node);
+						}
+					}
+				}
+			}
+			return nodes;
+		}
+	};
+	dojo.html.getElementsByClassName = dojo.html.getElementsByClass;
+	dojo.html.toCamelCase = function (selector) {
+		var arr = selector.split("-"), cc = arr[0];
+		for (var i = 1; i < arr.length; i++) {
+			cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
+		}
+		return cc;
+	};
+	dojo.html.toSelectorCase = function (selector) {
+		return selector.replace(/([A-Z])/g, "-$1").toLowerCase();
+	};
+	if (dojo.render.html.ie) {
+		dojo.html.getComputedStyle = function (node, property, value) {
+			node = dojo.byId(node);
+			if (!node || !node.currentStyle) {
+				return value;
+			}
+			return node.currentStyle[dojo.html.toCamelCase(property)];
+		};
+		dojo.html.getComputedStyles = function (node) {
+			return node.currentStyle;
+		};
+	} else {
+		dojo.html.getComputedStyle = function (node, property, value) {
+			node = dojo.byId(node);
+			if (!node || !node.style) {
+				return value;
+			}
+			var s = document.defaultView.getComputedStyle(node, null);
+			return (s && s[dojo.html.toCamelCase(property)]) || "";
+		};
+		dojo.html.getComputedStyles = function (node) {
+			return document.defaultView.getComputedStyle(node, null);
+		};
+	}
+	dojo.html.getStyleProperty = function (node, cssSelector) {
+		node = dojo.byId(node);
+		return (node && node.style ? node.style[dojo.html.toCamelCase(cssSelector)] : undefined);
+	};
+	dojo.html.getStyle = function (node, cssSelector) {
+		var value = dojo.html.getStyleProperty(node, cssSelector);
+		return (value ? value : dojo.html.getComputedStyle(node, cssSelector));
+	};
+	dojo.html.setStyle = function (node, cssSelector, value) {
+		node = dojo.byId(node);
+		if (node && node.style) {
+			var camelCased = dojo.html.toCamelCase(cssSelector);
+			node.style[camelCased] = value;
+		}
+	};
+	dojo.html.setStyleText = function (target, text) {
+		try {
+			target.style.cssText = text;
+		}
+		catch (e) {
+			target.setAttribute("style", text);
+		}
+	};
+	dojo.html.copyStyle = function (target, source) {
+		if (!source.style.cssText) {
+			target.setAttribute("style", source.getAttribute("style"));
+		} else {
+			target.style.cssText = source.style.cssText;
+		}
+		dojo.html.addClass(target, dojo.html.getClass(source));
+	};
+	dojo.html.getUnitValue = function (node, cssSelector, autoIsZero) {
+		var s = dojo.html.getComputedStyle(node, cssSelector);
+		if ((!s) || ((s == "auto") && (autoIsZero))) {
+			return {value:0, units:"px"};
+		}
+		var match = s.match(/(\-?[\d.]+)([a-z%]*)/i);
+		if (!match) {
+			return dojo.html.getUnitValue.bad;
+		}
+		return {value:Number(match[1]), units:match[2].toLowerCase()};
+	};
+	dojo.html.getUnitValue.bad = {value:NaN, units:""};
+	if (dojo.render.html.ie) {
+		dojo.html.toPixelValue = function (element, styleValue) {
+			if (!styleValue) {
+				return 0;
+			}
+			if (styleValue.slice(-2) == "px") {
+				return parseFloat(styleValue);
+			}
+			var pixelValue = 0;
+			with (element) {
+				var sLeft = style.left;
+				var rsLeft = runtimeStyle.left;
+				runtimeStyle.left = currentStyle.left;
+				try {
+					style.left = styleValue || 0;
+					pixelValue = style.pixelLeft;
+					style.left = sLeft;
+					runtimeStyle.left = rsLeft;
+				}
+				catch (e) {
+				}
+			}
+			return pixelValue;
+		};
+	} else {
+		dojo.html.toPixelValue = function (element, styleValue) {
+			return (styleValue && (styleValue.slice(-2) == "px") ? parseFloat(styleValue) : 0);
+		};
+	}
+	dojo.html.getPixelValue = function (node, styleProperty, autoIsZero) {
+		return dojo.html.toPixelValue(node, dojo.html.getComputedStyle(node, styleProperty));
+	};
+	dojo.html.setPositivePixelValue = function (node, selector, value) {
+		if (isNaN(value)) {
+			return false;
+		}
+		node.style[selector] = Math.max(0, value) + "px";
+		return true;
+	};
+	dojo.html.styleSheet = null;
+	dojo.html.insertCssRule = function (selector, declaration, index) {
+		if (!dojo.html.styleSheet) {
+			if (document.createStyleSheet) {
+				dojo.html.styleSheet = document.createStyleSheet();
+			} else {
+				if (document.styleSheets[0]) {
+					dojo.html.styleSheet = document.styleSheets[0];
+				} else {
+					return null;
+				}
+			}
+		}
+		if (arguments.length < 3) {
+			if (dojo.html.styleSheet.cssRules) {
+				index = dojo.html.styleSheet.cssRules.length;
+			} else {
+				if (dojo.html.styleSheet.rules) {
+					index = dojo.html.styleSheet.rules.length;
+				} else {
+					return null;
+				}
+			}
+		}
+		if (dojo.html.styleSheet.insertRule) {
+			var rule = selector + " { " + declaration + " }";
+			return dojo.html.styleSheet.insertRule(rule, index);
+		} else {
+			if (dojo.html.styleSheet.addRule) {
+				return dojo.html.styleSheet.addRule(selector, declaration, index);
+			} else {
+				return null;
+			}
+		}
+	};
+	dojo.html.removeCssRule = function (index) {
+		if (!dojo.html.styleSheet) {
+			dojo.debug("no stylesheet defined for removing rules");
+			return false;
+		}
+		if (dojo.render.html.ie) {
+			if (!index) {
+				index = dojo.html.styleSheet.rules.length;
+				dojo.html.styleSheet.removeRule(index);
+			}
+		} else {
+			if (document.styleSheets[0]) {
+				if (!index) {
+					index = dojo.html.styleSheet.cssRules.length;
+				}
+				dojo.html.styleSheet.deleteRule(index);
+			}
+		}
+		return true;
+	};
+	dojo.html._insertedCssFiles = [];
+	dojo.html.insertCssFile = function (URI, doc, checkDuplicates, fail_ok) {
+		if (!URI) {
+			return;
+		}
+		if (!doc) {
+			doc = document;
+		}
+		var cssStr = dojo.hostenv.getText(URI, false, fail_ok);
+		if (cssStr === null) {
+			return;
+		}
+		cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
+		if (checkDuplicates) {
+			var idx = -1, node, ent = dojo.html._insertedCssFiles;
+			for (var i = 0; i < ent.length; i++) {
+				if ((ent[i].doc == doc) && (ent[i].cssText == cssStr)) {
+					idx = i;
+					node = ent[i].nodeRef;
+					break;
+				}
+			}
+			if (node) {
+				var styles = doc.getElementsByTagName("style");
+				for (var i = 0; i < styles.length; i++) {
+					if (styles[i] == node) {
+						return;
+					}
+				}
+				dojo.html._insertedCssFiles.shift(idx, 1);
+			}
+		}
+		var style = dojo.html.insertCssText(cssStr, doc);
+		dojo.html._insertedCssFiles.push({"doc":doc, "cssText":cssStr, "nodeRef":style});
+		if (style && djConfig.isDebug) {
+			style.setAttribute("dbgHref", URI);
+		}
+		return style;
+	};
+	dojo.html.insertCssText = function (cssStr, doc, URI) {
+		if (!cssStr) {
+			return;
+		}
+		if (!doc) {
+			doc = document;
+		}
+		if (URI) {
+			cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
+		}
+		var style = doc.createElement("style");
+		style.setAttribute("type", "text/css");
+		var head = doc.getElementsByTagName("head")[0];
+		if (!head) {
+			dojo.debug("No head tag in document, aborting styles");
+			return;
+		} else {
+			head.appendChild(style);
+		}
+		if (style.styleSheet) {
+			var setFunc = function () {
+				try {
+					style.styleSheet.cssText = cssStr;
+				}
+				catch (e) {
+					dojo.debug(e);
+				}
+			};
+			if (style.styleSheet.disabled) {
+				setTimeout(setFunc, 10);
+			} else {
+				setFunc();
+			}
+		} else {
+			var cssText = doc.createTextNode(cssStr);
+			style.appendChild(cssText);
+		}
+		return style;
+	};
+	dojo.html.fixPathsInCssText = function (cssStr, URI) {
+		if (!cssStr || !URI) {
+			return;
+		}
+		var match, str = "", url = "", urlChrs = "[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
+		var regex = new RegExp("url\\(\\s*(" + urlChrs + ")\\s*\\)");
+		var regexProtocol = /(file|https?|ftps?):\/\//;
+		regexTrim = new RegExp("^[\\s]*(['\"]?)(" + urlChrs + ")\\1[\\s]*?$");
+		if (dojo.render.html.ie55 || dojo.render.html.ie60) {
+			var regexIe = new RegExp("AlphaImageLoader\\((.*)src=['\"](" + urlChrs + ")['\"]");
+			while (match = regexIe.exec(cssStr)) {
+				url = match[2].replace(regexTrim, "$2");
+				if (!regexProtocol.exec(url)) {
+					url = (new dojo.uri.Uri(URI, url).toString());
+				}
+				str += cssStr.substring(0, match.index) + "AlphaImageLoader(" + match[1] + "src='" + url + "'";
+				cssStr = cssStr.substr(match.index + match[0].length);
+			}
+			cssStr = str + cssStr;
+			str = "";
+		}
+		while (match = regex.exec(cssStr)) {
+			url = match[1].replace(regexTrim, "$2");
+			if (!regexProtocol.exec(url)) {
+				url = (new dojo.uri.Uri(URI, url).toString());
+			}
+			str += cssStr.substring(0, match.index) + "url(" + url + ")";
+			cssStr = cssStr.substr(match.index + match[0].length);
+		}
+		return str + cssStr;
+	};
+	dojo.html.setActiveStyleSheet = function (title) {
+		var i = 0, a, els = dojo.doc().getElementsByTagName("link");
+		while (a = els[i++]) {
+			if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
+				a.disabled = true;
+				if (a.getAttribute("title") == title) {
+					a.disabled = false;
+				}
+			}
+		}
+	};
+	dojo.html.getActiveStyleSheet = function () {
+		var i = 0, a, els = dojo.doc().getElementsByTagName("link");
+		while (a = els[i++]) {
+			if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) {
+				return a.getAttribute("title");
+			}
+		}
+		return null;
+	};
+	dojo.html.getPreferredStyleSheet = function () {
+		var i = 0, a, els = dojo.doc().getElementsByTagName("link");
+		while (a = els[i++]) {
+			if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title")) {
+				return a.getAttribute("title");
+			}
+		}
+		return null;
+	};
+	dojo.html.applyBrowserClass = function (node) {
+		var drh = dojo.render.html;
+		var classes = {dj_ie:drh.ie, dj_ie55:drh.ie55, dj_ie6:drh.ie60, dj_ie7:drh.ie70, dj_iequirks:drh.ie && drh.quirks, dj_opera:drh.opera, dj_opera8:drh.opera && (Math.floor(dojo.render.version) == 8), dj_opera9:drh.opera && (Math.floor(dojo.render.version) == 9), dj_khtml:drh.khtml, dj_safari:drh.safari, dj_gecko:drh.mozilla};
+		for (var p in classes) {
+			if (classes[p]) {
+				dojo.html.addClass(node, p);
+			}
+		}
+	};
+}});
+
+
 __CPAN_FILE__ src/html/color.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -10100,6 +20641,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.html.style");
 dojo.provide("dojo.html.color");
 dojo.require("dojo.gfx.color");
@@ -10127,6 +20670,48 @@
 };
 
 
+__CPAN_FILE__ src/html/color.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.html.style"], ["provide", "dojo.html.color"], ["require", "dojo.gfx.color"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.require("dojo.html.style");
+	dojo.provide("dojo.html.color");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.lang.common");
+	dojo.html.getBackgroundColor = function (node) {
+		node = dojo.byId(node);
+		var color;
+		do {
+			color = dojo.html.getStyle(node, "background-color");
+			if (color.toLowerCase() == "rgba(0, 0, 0, 0)") {
+				color = "transparent";
+			}
+			if (node == document.getElementsByTagName("body")[0]) {
+				node = null;
+				break;
+			}
+			node = node.parentNode;
+		} while (node && dojo.lang.inArray(["transparent", ""], color));
+		if (color == "transparent") {
+			color = [255, 255, 255, 0];
+		} else {
+			color = dojo.gfx.color.extractRGB(color);
+		}
+		return color;
+	};
+}});
+
+
 __CPAN_FILE__ src/html/layout.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -10138,6 +20723,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.layout");
 dojo.require("dojo.html.common");
 dojo.require("dojo.html.style");
@@ -10526,6 +21113,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.html.common", "dojo.html.style"]});
 dojo.provide("dojo.html.*");
 
@@ -10541,6 +21130,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.metrics");
 dojo.require("dojo.html.layout");
 dojo.html.getScrollbar = function () {
@@ -10756,6 +21347,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.html.common");
 dojo.provide("dojo.html.selection");
 dojo.require("dojo.dom");
@@ -11084,6 +21677,1029 @@
 }});
 
 
+__CPAN_FILE__ src/html/iframe.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.iframe"], ["require", "dojo.html.util"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.iframe");
+	dojo.require("dojo.html.util");
+	dojo.html.iframeContentWindow = function (iframe_el) {
+		var win = dojo.html.getDocumentWindow(dojo.html.iframeContentDocument(iframe_el)) || dojo.html.iframeContentDocument(iframe_el).__parent__ || (iframe_el.name && document.frames[iframe_el.name]) || null;
+		return win;
+	};
+	dojo.html.iframeContentDocument = function (iframe_el) {
+		var doc = iframe_el.contentDocument || ((iframe_el.contentWindow) && (iframe_el.contentWindow.document)) || ((iframe_el.name) && (document.frames[iframe_el.name]) && (document.frames[iframe_el.name].document)) || null;
+		return doc;
+	};
+	dojo.html.BackgroundIframe = function (node) {
+		if (dojo.render.html.ie55 || dojo.render.html.ie60) {
+			var html = "<iframe src='javascript:false'" + " style='position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;" + "z-index: -1; filter:Alpha(Opacity=\"0\");' " + ">";
+			this.iframe = dojo.doc().createElement(html);
+			this.iframe.tabIndex = -1;
+			if (node) {
+				node.appendChild(this.iframe);
+				this.domNode = node;
+			} else {
+				dojo.body().appendChild(this.iframe);
+				this.iframe.style.display = "none";
+			}
+		}
+	};
+	dojo.lang.extend(dojo.html.BackgroundIframe, {iframe:null, onResized:function () {
+		if (this.iframe && this.domNode && this.domNode.parentNode) {
+			var outer = dojo.html.getMarginBox(this.domNode);
+			if (outer.width == 0 || outer.height == 0) {
+				dojo.lang.setTimeout(this, this.onResized, 100);
+				return;
+			}
+			this.iframe.style.width = outer.width + "px";
+			this.iframe.style.height = outer.height + "px";
+		}
+	}, size:function (node) {
+		if (!this.iframe) {
+			return;
+		}
+		var coords = dojo.html.toCoordinateObject(node, true, dojo.html.boxSizing.BORDER_BOX);
+		with (this.iframe.style) {
+			width = coords.width + "px";
+			height = coords.height + "px";
+			left = coords.left + "px";
+			top = coords.top + "px";
+		}
+	}, setZIndex:function (node) {
+		if (!this.iframe) {
+			return;
+		}
+		if (dojo.dom.isNode(node)) {
+			this.iframe.style.zIndex = dojo.html.getStyle(node, "z-index") - 1;
+		} else {
+			if (!isNaN(node)) {
+				this.iframe.style.zIndex = node;
+			}
+		}
+	}, show:function () {
+		if (this.iframe) {
+			this.iframe.style.display = "block";
+		}
+	}, hide:function () {
+		if (this.iframe) {
+			this.iframe.style.display = "none";
+		}
+	}, remove:function () {
+		if (this.iframe) {
+			dojo.html.removeNode(this.iframe, true);
+			delete this.iframe;
+			this.iframe = null;
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/html/metrics.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.metrics"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.metrics");
+	dojo.require("dojo.html.layout");
+	dojo.html.getScrollbar = function () {
+		var scroll = document.createElement("div");
+		scroll.style.width = "100px";
+		scroll.style.height = "100px";
+		scroll.style.overflow = "scroll";
+		scroll.style.position = "absolute";
+		scroll.style.top = "-300px";
+		scroll.style.left = "0px";
+		var test = document.createElement("div");
+		test.style.width = "400px";
+		test.style.height = "400px";
+		scroll.appendChild(test);
+		dojo.body().appendChild(scroll);
+		var width = scroll.offsetWidth - scroll.clientWidth;
+		dojo.body().removeChild(scroll);
+		scroll.removeChild(test);
+		scroll = test = null;
+		return {width:width};
+	};
+	dojo.html.getFontMeasurements = function () {
+		var heights = {"1em":0, "1ex":0, "100%":0, "12pt":0, "16px":0, "xx-small":0, "x-small":0, "small":0, "medium":0, "large":0, "x-large":0, "xx-large":0};
+		if (dojo.render.html.ie) {
+			document.documentElement.style.fontSize = "100%";
+		}
+		var div = document.createElement("div");
+		div.style.position = "absolute";
+		div.style.left = "-100px";
+		div.style.top = "0";
+		div.style.width = "30px";
+		div.style.height = "1000em";
+		div.style.border = "0";
+		div.style.margin = "0";
+		div.style.padding = "0";
+		div.style.outline = "0";
+		div.style.lineHeight = "1";
+		div.style.overflow = "hidden";
+		dojo.body().appendChild(div);
+		for (var p in heights) {
+			div.style.fontSize = p;
+			heights[p] = Math.round(div.offsetHeight * 12 / 16) * 16 / 12 / 1000;
+		}
+		dojo.body().removeChild(div);
+		div = null;
+		return heights;
+	};
+	dojo.html._fontMeasurements = null;
+	dojo.html.getCachedFontMeasurements = function (recalculate) {
+		if (recalculate || !dojo.html._fontMeasurements) {
+			dojo.html._fontMeasurements = dojo.html.getFontMeasurements();
+		}
+		return dojo.html._fontMeasurements;
+	};
+	dojo.html.measureFragment = function (node, html, boxType) {
+		var clone = node.cloneNode(true);
+		clone.innerHTML = html;
+		node.parentNode.appendChild(clone);
+		var ret = dojo.html.getElementBox(clone, boxType);
+		node.parentNode.removeChild(clone);
+		clone = null;
+		return ret;
+	};
+	dojo.html.getFittedFragment = function (node, html) {
+		function cl(node) {
+			var element = document.createElement(node.tagName);
+			element.id = node.id + "-clone";
+			element.className = node.className;
+			for (var j = 0; j < node.attributes.length; j++) {
+				if (node.attributes[j].specified) {
+					if (node.attributes[j].nodeName.toLowerCase() != "style" && node.attributes[j].nodeName.toLowerCase() != "edited" && node.attributes[j].nodeName.toLowerCase() != "contenteditable" && node.attributes[j].nodeName.toLowerCase() != "id" && node.attributes[j].nodeName.toLowerCase() != "class") {
+						element.setAttribute(node.attributes[j].nodeName.toLowerCase(), node.attributes[j].nodeValue);
+					}
+				}
+			}
+			return element;
+		}
+		var height = dojo.html.getFontMeasurements()["16px"];
+		var n = cl(node);
+		n.style.width = dojo.html.getBorderBox(node).width + "px";
+		n.style.height = (height + 4) + "px";
+		node.parentNode.appendChild(n);
+		var rem = dojo.html.fitToElement(n, html);
+		var ret = n.innerHTML;
+		n.parentNode.removeChild(n);
+		return ret;
+	};
+	dojo.html.fitToElement = function (node, html) {
+		function cl(node) {
+			var element = document.createElement(node.tagName);
+			element.id = node.id + "-clone";
+			element.className = node.className;
+			for (var j = 0; j < node.attributes.length; j++) {
+				if (node.attributes[j].specified) {
+					if (node.attributes[j].nodeName.toLowerCase() != "style" && node.attributes[j].nodeName.toLowerCase() != "edited" && node.attributes[j].nodeName.toLowerCase() != "contenteditable" && node.attributes[j].nodeName.toLowerCase() != "id" && node.attributes[j].nodeName.toLowerCase() != "class") {
+						element.setAttribute(node.attributes[j].nodeName.toLowerCase(), node.attributes[j].nodeValue);
+					}
+				}
+			}
+			return element;
+		}
+		var clone = cl(node);
+		node.parentNode.appendChild(clone);
+		var t = dojo.html.getBorderBox(node);
+		clone.style.width = t.width + "px";
+		var singletons = ["br", "img", "hr", "input", "!--"];
+		var chop = ["<BR>", "<br>", "<br/>", "<br />", "<p></p>", "<P></P>"];
+		var openTags = [];
+		var str = html;
+		var i = 0;
+		var limit = str.length;
+		var add = 0;
+		var doLoop = true;
+		clone.innerHTML = str;
+		while (doLoop) {
+			add = Math.round((limit - i) / 2);
+			if (add <= 1) {
+				doLoop = false;
+			}
+			i += add;
+			clone.innerHTML = str.substr(0, i);
+			if (clone.offsetHeight > t.height) {
+				limit = i;
+				i -= add;
+			}
+		}
+		if (str.substr(0, i) != str) {
+			var lastSpace = str.substr(0, i).lastIndexOf(" ");
+			var lastNewLine = str.substr(0, i).lastIndexOf("\n");
+			var lastGreater = str.substr(0, i).lastIndexOf(">");
+			var lastLess = str.substr(0, i).lastIndexOf("<");
+			if (lastLess <= lastGreater && lastNewLine == i - 1) {
+				i = i;
+			} else {
+				if (lastSpace != -1 && lastSpace > lastGreater && lastGreater > lastLess) {
+					i = lastSpace + 1;
+				} else {
+					if (lastLess > lastGreater) {
+						i = lastLess;
+					} else {
+						if (lastGreater != -1) {
+							i = lastGreater + 1;
+						}
+					}
+				}
+			}
+		}
+		str = str.substr(0, i);
+		var ret = html.substr(str.length);
+		var doPush = true;
+		var tags = str.split("<");
+		tags.shift();
+		for (var j = 0; j < tags.length; j++) {
+			tags[j] = tags[j].split(">")[0];
+			if (tags[j].charAt(tags[j].length - 1) == "/") {
+				continue;
+			}
+			if (tags[j].charAt(0) != "/") {
+				for (var k = 0; k < singletons.length; k++) {
+					if (tags[j].split(" ")[0].toLowerCase() == singletons[k]) {
+						doPush = false;
+					}
+				}
+				if (doPush) {
+					openTags.push(tags[j]);
+				}
+				doPush = true;
+			} else {
+				openTags.pop();
+			}
+		}
+		for (var j = 0; j < chop.length; j++) {
+			if (ret.charAt(0) == "\n") {
+				ret = ret.substr(1);
+			}
+			while (ret.indexOf(chop[j]) == 0) {
+				ret = ret.substr(chop[j].length);
+			}
+		}
+		for (var j = openTags.length - 1; j >= 0; j--) {
+			if (str.lastIndexOf(openTags[j]) == (str.length - openTags[j].length - 1)) {
+				str = str.substring(0, str.lastIndexOf(openTags[j]));
+			} else {
+				str += "</" + openTags[j] + ">";
+			}
+			if (ret.length > 0) {
+				ret = "<" + openTags[j] + ">" + ret;
+			}
+		}
+		for (var j = 0; j < chop.length; j++) {
+			if (ret.charAt(0) == "\n") {
+				ret = ret.substr(1);
+			}
+			while (ret.indexOf(chop[j]) == 0) {
+				ret = ret.substr(chop[j].length);
+			}
+		}
+		node.innerHTML = str;
+		clone.parentNode.removeChild(clone);
+		clone = null;
+		return ret;
+	};
+}});
+
+
+__CPAN_FILE__ src/html/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.html.common", "dojo.html.style"]}], ["provide", "dojo.html.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.html.common", "dojo.html.style"]});
+	dojo.provide("dojo.html.*");
+}});
+
+
+__CPAN_FILE__ src/html/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.common"], ["require", "dojo.lang.common"], ["require", "dojo.dom"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.common");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.dom");
+	dojo.lang.mixin(dojo.html, dojo.dom);
+	dojo.html.body = function () {
+		dojo.deprecated("dojo.html.body() moved to dojo.body()", "0.5");
+		return dojo.body();
+	};
+	dojo.html.getEventTarget = function (evt) {
+		if (!evt) {
+			evt = dojo.global().event || {};
+		}
+		var t = (evt.srcElement ? evt.srcElement : (evt.target ? evt.target : null));
+		while ((t) && (t.nodeType != 1)) {
+			t = t.parentNode;
+		}
+		return t;
+	};
+	dojo.html.getViewport = function () {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		var w = 0;
+		var h = 0;
+		if (dojo.render.html.mozilla) {
+			w = _document.documentElement.clientWidth;
+			h = _window.innerHeight;
+		} else {
+			if (!dojo.render.html.opera && _window.innerWidth) {
+				w = _window.innerWidth;
+				h = _window.innerHeight;
+			} else {
+				if (!dojo.render.html.opera && dojo.exists(_document, "documentElement.clientWidth")) {
+					var w2 = _document.documentElement.clientWidth;
+					if (!w || w2 && w2 < w) {
+						w = w2;
+					}
+					h = _document.documentElement.clientHeight;
+				} else {
+					if (dojo.body().clientWidth) {
+						w = dojo.body().clientWidth;
+						h = dojo.body().clientHeight;
+					}
+				}
+			}
+		}
+		return {width:w, height:h};
+	};
+	dojo.html.getScroll = function () {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		var top = _window.pageYOffset || _document.documentElement.scrollTop || dojo.body().scrollTop || 0;
+		var left = _window.pageXOffset || _document.documentElement.scrollLeft || dojo.body().scrollLeft || 0;
+		return {top:top, left:left, offset:{x:left, y:top}};
+	};
+	dojo.html.getParentByType = function (node, type) {
+		var _document = dojo.doc();
+		var parent = dojo.byId(node);
+		type = type.toLowerCase();
+		while ((parent) && (parent.nodeName.toLowerCase() != type)) {
+			if (parent == (_document["body"] || _document["documentElement"])) {
+				return null;
+			}
+			parent = parent.parentNode;
+		}
+		return parent;
+	};
+	dojo.html.getAttribute = function (node, attr) {
+		node = dojo.byId(node);
+		if ((!node) || (!node.getAttribute)) {
+			return null;
+		}
+		var ta = typeof attr == "string" ? attr : new String(attr);
+		var v = node.getAttribute(ta.toUpperCase());
+		if ((v) && (typeof v == "string") && (v != "")) {
+			return v;
+		}
+		if (v && v.value) {
+			return v.value;
+		}
+		if ((node.getAttributeNode) && (node.getAttributeNode(ta))) {
+			return (node.getAttributeNode(ta)).value;
+		} else {
+			if (node.getAttribute(ta)) {
+				return node.getAttribute(ta);
+			} else {
+				if (node.getAttribute(ta.toLowerCase())) {
+					return node.getAttribute(ta.toLowerCase());
+				}
+			}
+		}
+		return null;
+	};
+	dojo.html.hasAttribute = function (node, attr) {
+		return dojo.html.getAttribute(dojo.byId(node), attr) ? true : false;
+	};
+	dojo.html.getCursorPosition = function (e) {
+		e = e || dojo.global().event;
+		var cursor = {x:0, y:0};
+		if (e.pageX || e.pageY) {
+			cursor.x = e.pageX;
+			cursor.y = e.pageY;
+		} else {
+			var de = dojo.doc().documentElement;
+			var db = dojo.body();
+			cursor.x = e.clientX + ((de || db)["scrollLeft"]) - ((de || db)["clientLeft"]);
+			cursor.y = e.clientY + ((de || db)["scrollTop"]) - ((de || db)["clientTop"]);
+		}
+		return cursor;
+	};
+	dojo.html.isTag = function (node) {
+		node = dojo.byId(node);
+		if (node && node.tagName) {
+			for (var i = 1; i < arguments.length; i++) {
+				if (node.tagName.toLowerCase() == String(arguments[i]).toLowerCase()) {
+					return String(arguments[i]).toLowerCase();
+				}
+			}
+		}
+		return "";
+	};
+	if (dojo.render.html.ie && !dojo.render.html.ie70) {
+		if (window.location.href.substr(0, 6).toLowerCase() != "https:") {
+			(function () {
+				var xscript = dojo.doc().createElement("script");
+				xscript.src = "javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
+				dojo.doc().getElementsByTagName("head")[0].appendChild(xscript);
+			})();
+		}
+	} else {
+		dojo.html.createExternalElement = function (doc, tag) {
+			return doc.createElement(tag);
+		};
+	}
+	dojo.html._callDeprecated = function (inFunc, replFunc, args, argName, retValue) {
+		dojo.deprecated("dojo.html." + inFunc, "replaced by dojo.html." + replFunc + "(" + (argName ? "node, {" + argName + ": " + argName + "}" : "") + ")" + (retValue ? "." + retValue : ""), "0.5");
+		var newArgs = [];
+		if (argName) {
+			var argsIn = {};
+			argsIn[argName] = args[1];
+			newArgs.push(args[0]);
+			newArgs.push(argsIn);
+		} else {
+			newArgs = args;
+		}
+		var ret = dojo.html[replFunc].apply(dojo.html, args);
+		if (retValue) {
+			return ret[retValue];
+		} else {
+			return ret;
+		}
+	};
+	dojo.html.getViewportWidth = function () {
+		return dojo.html._callDeprecated("getViewportWidth", "getViewport", arguments, null, "width");
+	};
+	dojo.html.getViewportHeight = function () {
+		return dojo.html._callDeprecated("getViewportHeight", "getViewport", arguments, null, "height");
+	};
+	dojo.html.getViewportSize = function () {
+		return dojo.html._callDeprecated("getViewportSize", "getViewport", arguments);
+	};
+	dojo.html.getScrollTop = function () {
+		return dojo.html._callDeprecated("getScrollTop", "getScroll", arguments, null, "top");
+	};
+	dojo.html.getScrollLeft = function () {
+		return dojo.html._callDeprecated("getScrollLeft", "getScroll", arguments, null, "left");
+	};
+	dojo.html.getScrollOffset = function () {
+		return dojo.html._callDeprecated("getScrollOffset", "getScroll", arguments, null, "offset");
+	};
+}});
+
+
+__CPAN_FILE__ src/html/util.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.util"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.util");
+	dojo.require("dojo.html.layout");
+	dojo.html.getElementWindow = function (element) {
+		return dojo.html.getDocumentWindow(element.ownerDocument);
+	};
+	dojo.html.getDocumentWindow = function (doc) {
+		if (dojo.render.html.safari && !doc._parentWindow) {
+			var fix = function (win) {
+				win.document._parentWindow = win;
+				for (var i = 0; i < win.frames.length; i++) {
+					fix(win.frames[i]);
+				}
+			};
+			fix(window.top);
+		}
+		if (dojo.render.html.ie && window !== document.parentWindow && !doc._parentWindow) {
+			doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
+			var win = doc._parentWindow;
+			doc._parentWindow = null;
+			return win;
+		}
+		return doc._parentWindow || doc.parentWindow || doc.defaultView;
+	};
+	dojo.html.gravity = function (node, e) {
+		node = dojo.byId(node);
+		var mouse = dojo.html.getCursorPosition(e);
+		with (dojo.html) {
+			var absolute = getAbsolutePosition(node, true);
+			var bb = getBorderBox(node);
+			var nodecenterx = absolute.x + (bb.width / 2);
+			var nodecentery = absolute.y + (bb.height / 2);
+		}
+		with (dojo.html.gravity) {
+			return ((mouse.x < nodecenterx ? WEST : EAST) | (mouse.y < nodecentery ? NORTH : SOUTH));
+		}
+	};
+	dojo.html.gravity.NORTH = 1;
+	dojo.html.gravity.SOUTH = 1 << 1;
+	dojo.html.gravity.EAST = 1 << 2;
+	dojo.html.gravity.WEST = 1 << 3;
+	dojo.html.overElement = function (element, e) {
+		element = dojo.byId(element);
+		var mouse = dojo.html.getCursorPosition(e);
+		var bb = dojo.html.getBorderBox(element);
+		var absolute = dojo.html.getAbsolutePosition(element, true, dojo.html.boxSizing.BORDER_BOX);
+		var top = absolute.y;
+		var bottom = top + bb.height;
+		var left = absolute.x;
+		var right = left + bb.width;
+		return (mouse.x >= left && mouse.x <= right && mouse.y >= top && mouse.y <= bottom);
+	};
+	dojo.html.renderedTextContent = function (node) {
+		node = dojo.byId(node);
+		var result = "";
+		if (node == null) {
+			return result;
+		}
+		for (var i = 0; i < node.childNodes.length; i++) {
+			switch (node.childNodes[i].nodeType) {
+			  case 1:
+			  case 5:
+				var display = "unknown";
+				try {
+					display = dojo.html.getStyle(node.childNodes[i], "display");
+				}
+				catch (E) {
+				}
+				switch (display) {
+				  case "block":
+				  case "list-item":
+				  case "run-in":
+				  case "table":
+				  case "table-row-group":
+				  case "table-header-group":
+				  case "table-footer-group":
+				  case "table-row":
+				  case "table-column-group":
+				  case "table-column":
+				  case "table-cell":
+				  case "table-caption":
+					result += "\n";
+					result += dojo.html.renderedTextContent(node.childNodes[i]);
+					result += "\n";
+					break;
+				  case "none":
+					break;
+				  default:
+					if (node.childNodes[i].tagName && node.childNodes[i].tagName.toLowerCase() == "br") {
+						result += "\n";
+					} else {
+						result += dojo.html.renderedTextContent(node.childNodes[i]);
+					}
+					break;
+				}
+				break;
+			  case 3:
+			  case 2:
+			  case 4:
+				var text = node.childNodes[i].nodeValue;
+				var textTransform = "unknown";
+				try {
+					textTransform = dojo.html.getStyle(node, "text-transform");
+				}
+				catch (E) {
+				}
+				switch (textTransform) {
+				  case "capitalize":
+					var words = text.split(" ");
+					for (var i = 0; i < words.length; i++) {
+						words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
+					}
+					text = words.join(" ");
+					break;
+				  case "uppercase":
+					text = text.toUpperCase();
+					break;
+				  case "lowercase":
+					text = text.toLowerCase();
+					break;
+				  default:
+					break;
+				}
+				switch (textTransform) {
+				  case "nowrap":
+					break;
+				  case "pre-wrap":
+					break;
+				  case "pre-line":
+					break;
+				  case "pre":
+					break;
+				  default:
+					text = text.replace(/\s+/, " ");
+					if (/\s$/.test(result)) {
+						text.replace(/^\s/, "");
+					}
+					break;
+				}
+				result += text;
+				break;
+			  default:
+				break;
+			}
+		}
+		return result;
+	};
+	dojo.html.createNodesFromText = function (txt, trim) {
+		if (trim) {
+			txt = txt.replace(/^\s+|\s+$/g, "");
+		}
+		var tn = dojo.doc().createElement("div");
+		tn.style.visibility = "hidden";
+		dojo.body().appendChild(tn);
+		var tableType = "none";
+		if ((/^<t[dh][\s\r\n>]/i).test(txt.replace(/^\s+/))) {
+			txt = "<table><tbody><tr>" + txt + "</tr></tbody></table>";
+			tableType = "cell";
+		} else {
+			if ((/^<tr[\s\r\n>]/i).test(txt.replace(/^\s+/))) {
+				txt = "<table><tbody>" + txt + "</tbody></table>";
+				tableType = "row";
+			} else {
+				if ((/^<(thead|tbody|tfoot)[\s\r\n>]/i).test(txt.replace(/^\s+/))) {
+					txt = "<table>" + txt + "</table>";
+					tableType = "section";
+				}
+			}
+		}
+		tn.innerHTML = txt;
+		if (tn["normalize"]) {
+			tn.normalize();
+		}
+		var parent = null;
+		switch (tableType) {
+		  case "cell":
+			parent = tn.getElementsByTagName("tr")[0];
+			break;
+		  case "row":
+			parent = tn.getElementsByTagName("tbody")[0];
+			break;
+		  case "section":
+			parent = tn.getElementsByTagName("table")[0];
+			break;
+		  default:
+			parent = tn;
+			break;
+		}
+		var nodes = [];
+		for (var x = 0; x < parent.childNodes.length; x++) {
+			nodes.push(parent.childNodes[x].cloneNode(true));
+		}
+		tn.style.display = "none";
+		dojo.html.destroyNode(tn);
+		return nodes;
+	};
+	dojo.html.placeOnScreen = function (node, desiredX, desiredY, padding, hasScroll, corners, tryOnly) {
+		if (desiredX instanceof Array || typeof desiredX == "array") {
+			tryOnly = corners;
+			corners = hasScroll;
+			hasScroll = padding;
+			padding = desiredY;
+			desiredY = desiredX[1];
+			desiredX = desiredX[0];
+		}
+		if (corners instanceof String || typeof corners == "string") {
+			corners = corners.split(",");
+		}
+		if (!isNaN(padding)) {
+			padding = [Number(padding), Number(padding)];
+		} else {
+			if (!(padding instanceof Array || typeof padding == "array")) {
+				padding = [0, 0];
+			}
+		}
+		var scroll = dojo.html.getScroll().offset;
+		var view = dojo.html.getViewport();
+		node = dojo.byId(node);
+		var oldDisplay = node.style.display;
+		node.style.display = "";
+		var bb = dojo.html.getBorderBox(node);
+		var w = bb.width;
+		var h = bb.height;
+		node.style.display = oldDisplay;
+		if (!(corners instanceof Array || typeof corners == "array")) {
+			corners = ["TL"];
+		}
+		var bestx, besty, bestDistance = Infinity, bestCorner;
+		for (var cidex = 0; cidex < corners.length; ++cidex) {
+			var corner = corners[cidex];
+			var match = true;
+			var tryX = desiredX - (corner.charAt(1) == "L" ? 0 : w) + padding[0] * (corner.charAt(1) == "L" ? 1 : -1);
+			var tryY = desiredY - (corner.charAt(0) == "T" ? 0 : h) + padding[1] * (corner.charAt(0) == "T" ? 1 : -1);
+			if (hasScroll) {
+				tryX -= scroll.x;
+				tryY -= scroll.y;
+			}
+			if (tryX < 0) {
+				tryX = 0;
+				match = false;
+			}
+			if (tryY < 0) {
+				tryY = 0;
+				match = false;
+			}
+			var x = tryX + w;
+			if (x > view.width) {
+				x = view.width - w;
+				match = false;
+			} else {
+				x = tryX;
+			}
+			x = Math.max(padding[0], x) + scroll.x;
+			var y = tryY + h;
+			if (y > view.height) {
+				y = view.height - h;
+				match = false;
+			} else {
+				y = tryY;
+			}
+			y = Math.max(padding[1], y) + scroll.y;
+			if (match) {
+				bestx = x;
+				besty = y;
+				bestDistance = 0;
+				bestCorner = corner;
+				break;
+			} else {
+				var dist = Math.pow(x - tryX - scroll.x, 2) + Math.pow(y - tryY - scroll.y, 2);
+				if (bestDistance > dist) {
+					bestDistance = dist;
+					bestx = x;
+					besty = y;
+					bestCorner = corner;
+				}
+			}
+		}
+		if (!tryOnly) {
+			node.style.left = bestx + "px";
+			node.style.top = besty + "px";
+		}
+		return {left:bestx, top:besty, x:bestx, y:besty, dist:bestDistance, corner:bestCorner};
+	};
+	dojo.html.placeOnScreenPoint = function (node, desiredX, desiredY, padding, hasScroll) {
+		dojo.deprecated("dojo.html.placeOnScreenPoint", "use dojo.html.placeOnScreen() instead", "0.5");
+		return dojo.html.placeOnScreen(node, desiredX, desiredY, padding, hasScroll, ["TL", "TR", "BL", "BR"]);
+	};
+	dojo.html.placeOnScreenAroundElement = function (node, aroundNode, padding, aroundType, aroundCorners, tryOnly) {
+		var best, bestDistance = Infinity;
+		aroundNode = dojo.byId(aroundNode);
+		var oldDisplay = aroundNode.style.display;
+		aroundNode.style.display = "";
+		var mb = dojo.html.getElementBox(aroundNode, aroundType);
+		var aroundNodeW = mb.width;
+		var aroundNodeH = mb.height;
+		var aroundNodePos = dojo.html.getAbsolutePosition(aroundNode, true, aroundType);
+		aroundNode.style.display = oldDisplay;
+		for (var nodeCorner in aroundCorners) {
+			var pos, desiredX, desiredY;
+			var corners = aroundCorners[nodeCorner];
+			desiredX = aroundNodePos.x + (nodeCorner.charAt(1) == "L" ? 0 : aroundNodeW);
+			desiredY = aroundNodePos.y + (nodeCorner.charAt(0) == "T" ? 0 : aroundNodeH);
+			pos = dojo.html.placeOnScreen(node, desiredX, desiredY, padding, true, corners, true);
+			if (pos.dist == 0) {
+				best = pos;
+				break;
+			} else {
+				if (bestDistance > pos.dist) {
+					bestDistance = pos.dist;
+					best = pos;
+				}
+			}
+		}
+		if (!tryOnly) {
+			node.style.left = best.left + "px";
+			node.style.top = best.top + "px";
+		}
+		return best;
+	};
+	dojo.html.scrollIntoView = function (node) {
+		if (!node) {
+			return;
+		}
+		if (dojo.render.html.ie) {
+			if (dojo.html.getBorderBox(node.parentNode).height <= node.parentNode.scrollHeight) {
+				node.scrollIntoView(false);
+			}
+		} else {
+			if (dojo.render.html.mozilla) {
+				node.scrollIntoView(false);
+			} else {
+				var parent = node.parentNode;
+				var parentBottom = parent.scrollTop + dojo.html.getBorderBox(parent).height;
+				var nodeBottom = node.offsetTop + dojo.html.getMarginBox(node).height;
+				if (parentBottom < nodeBottom) {
+					parent.scrollTop += (nodeBottom - parentBottom);
+				} else {
+					if (parent.scrollTop > node.offsetTop) {
+						parent.scrollTop -= (parent.scrollTop - node.offsetTop);
+					}
+				}
+			}
+		}
+	};
+}});
+
+
+__CPAN_FILE__ src/html/display.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.html.display"], ["require", "dojo.html.style"]], definePackage:function (dojo) {
+	dojo.provide("dojo.html.display");
+	dojo.require("dojo.html.style");
+	dojo.html._toggle = function (node, tester, setter) {
+		node = dojo.byId(node);
+		setter(node, !tester(node));
+		return tester(node);
+	};
+	dojo.html.show = function (node) {
+		node = dojo.byId(node);
+		if (dojo.html.getStyleProperty(node, "display") == "none") {
+			dojo.html.setStyle(node, "display", (node.dojoDisplayCache || ""));
+			node.dojoDisplayCache = undefined;
+		}
+	};
+	dojo.html.hide = function (node) {
+		node = dojo.byId(node);
+		if (typeof node["dojoDisplayCache"] == "undefined") {
+			var d = dojo.html.getStyleProperty(node, "display");
+			if (d != "none") {
+				node.dojoDisplayCache = d;
+			}
+		}
+		dojo.html.setStyle(node, "display", "none");
+	};
+	dojo.html.setShowing = function (node, showing) {
+		dojo.html[(showing ? "show" : "hide")](node);
+	};
+	dojo.html.isShowing = function (node) {
+		return (dojo.html.getStyleProperty(node, "display") != "none");
+	};
+	dojo.html.toggleShowing = function (node) {
+		return dojo.html._toggle(node, dojo.html.isShowing, dojo.html.setShowing);
+	};
+	dojo.html.displayMap = {tr:"", td:"", th:"", img:"inline", span:"inline", input:"inline", button:"inline"};
+	dojo.html.suggestDisplayByTagName = function (node) {
+		node = dojo.byId(node);
+		if (node && node.tagName) {
+			var tag = node.tagName.toLowerCase();
+			return (tag in dojo.html.displayMap ? dojo.html.displayMap[tag] : "block");
+		}
+	};
+	dojo.html.setDisplay = function (node, display) {
+		dojo.html.setStyle(node, "display", ((display instanceof String || typeof display == "string") ? display : (display ? dojo.html.suggestDisplayByTagName(node) : "none")));
+	};
+	dojo.html.isDisplayed = function (node) {
+		return (dojo.html.getComputedStyle(node, "display") != "none");
+	};
+	dojo.html.toggleDisplay = function (node) {
+		return dojo.html._toggle(node, dojo.html.isDisplayed, dojo.html.setDisplay);
+	};
+	dojo.html.setVisibility = function (node, visibility) {
+		dojo.html.setStyle(node, "visibility", ((visibility instanceof String || typeof visibility == "string") ? visibility : (visibility ? "visible" : "hidden")));
+	};
+	dojo.html.isVisible = function (node) {
+		return (dojo.html.getComputedStyle(node, "visibility") != "hidden");
+	};
+	dojo.html.toggleVisibility = function (node) {
+		return dojo.html._toggle(node, dojo.html.isVisible, dojo.html.setVisibility);
+	};
+	dojo.html.setOpacity = function (node, opacity, dontFixOpacity) {
+		node = dojo.byId(node);
+		var h = dojo.render.html;
+		if (!dontFixOpacity) {
+			if (opacity >= 1) {
+				if (h.ie) {
+					dojo.html.clearOpacity(node);
+					return;
+				} else {
+					opacity = 0.999999;
+				}
+			} else {
+				if (opacity < 0) {
+					opacity = 0;
+				}
+			}
+		}
+		if (h.ie) {
+			if (node.nodeName.toLowerCase() == "tr") {
+				var tds = node.getElementsByTagName("td");
+				for (var x = 0; x < tds.length; x++) {
+					tds[x].style.filter = "Alpha(Opacity=" + opacity * 100 + ")";
+				}
+			}
+			node.style.filter = "Alpha(Opacity=" + opacity * 100 + ")";
+		} else {
+			if (h.moz) {
+				node.style.opacity = opacity;
+				node.style.MozOpacity = opacity;
+			} else {
+				if (h.safari) {
+					node.style.opacity = opacity;
+					node.style.KhtmlOpacity = opacity;
+				} else {
+					node.style.opacity = opacity;
+				}
+			}
+		}
+	};
+	dojo.html.clearOpacity = function (node) {
+		node = dojo.byId(node);
+		var ns = node.style;
+		var h = dojo.render.html;
+		if (h.ie) {
+			try {
+				if (node.filters && node.filters.alpha) {
+					ns.filter = "";
+				}
+			}
+			catch (e) {
+			}
+		} else {
+			if (h.moz) {
+				ns.opacity = 1;
+				ns.MozOpacity = 1;
+			} else {
+				if (h.safari) {
+					ns.opacity = 1;
+					ns.KhtmlOpacity = 1;
+				} else {
+					ns.opacity = 1;
+				}
+			}
+		}
+	};
+	dojo.html.getOpacity = function (node) {
+		node = dojo.byId(node);
+		var h = dojo.render.html;
+		if (h.ie) {
+			var opac = (node.filters && node.filters.alpha && typeof node.filters.alpha.opacity == "number" ? node.filters.alpha.opacity : 100) / 100;
+		} else {
+			var opac = node.style.opacity || node.style.MozOpacity || node.style.KhtmlOpacity || 1;
+		}
+		return opac >= 0.999999 ? 1 : Number(opac);
+	};
+}});
+
+
 __CPAN_FILE__ src/html/shadow.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -11095,12 +22711,357 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.shadow");
 dojo.require("dojo.lfx.shadow");
 dojo.deprecated("dojo.html.shadow has been moved to dojo.lfx.", "0.5");
 dojo.html.shadow = dojo.lfx.shadow;
 
 
+__CPAN_FILE__ src/html/selection.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.html.common"], ["provide", "dojo.html.selection"], ["require", "dojo.dom"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.require("dojo.html.common");
+	dojo.provide("dojo.html.selection");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.lang.common");
+	dojo.html.selectionType = {NONE:0, TEXT:1, CONTROL:2};
+	dojo.html.clearSelection = function () {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		try {
+			if (_window["getSelection"]) {
+				if (dojo.render.html.safari) {
+					_window.getSelection().collapse();
+				} else {
+					_window.getSelection().removeAllRanges();
+				}
+			} else {
+				if (_document.selection) {
+					if (_document.selection.empty) {
+						_document.selection.empty();
+					} else {
+						if (_document.selection.clear) {
+							_document.selection.clear();
+						}
+					}
+				}
+			}
+			return true;
+		}
+		catch (e) {
+			dojo.debug(e);
+			return false;
+		}
+	};
+	dojo.html.disableSelection = function (element) {
+		element = dojo.byId(element) || dojo.body();
+		var h = dojo.render.html;
+		if (h.mozilla) {
+			element.style.MozUserSelect = "none";
+		} else {
+			if (h.safari) {
+				element.style.KhtmlUserSelect = "none";
+			} else {
+				if (h.ie) {
+					element.unselectable = "on";
+				} else {
+					return false;
+				}
+			}
+		}
+		return true;
+	};
+	dojo.html.enableSelection = function (element) {
+		element = dojo.byId(element) || dojo.body();
+		var h = dojo.render.html;
+		if (h.mozilla) {
+			element.style.MozUserSelect = "";
+		} else {
+			if (h.safari) {
+				element.style.KhtmlUserSelect = "";
+			} else {
+				if (h.ie) {
+					element.unselectable = "off";
+				} else {
+					return false;
+				}
+			}
+		}
+		return true;
+	};
+	dojo.html.selectElement = function (element) {
+		dojo.deprecated("dojo.html.selectElement", "replaced by dojo.html.selection.selectElementChildren", 0.5);
+	};
+	dojo.html.selectInputText = function (element) {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		element = dojo.byId(element);
+		if (_document["selection"] && dojo.body()["createTextRange"]) {
+			var range = element.createTextRange();
+			range.moveStart("character", 0);
+			range.moveEnd("character", element.value.length);
+			range.select();
+		} else {
+			if (_window["getSelection"]) {
+				var selection = _window.getSelection();
+				element.setSelectionRange(0, element.value.length);
+			}
+		}
+		element.focus();
+	};
+	dojo.html.isSelectionCollapsed = function () {
+		dojo.deprecated("dojo.html.isSelectionCollapsed", "replaced by dojo.html.selection.isCollapsed", 0.5);
+		return dojo.html.selection.isCollapsed();
+	};
+	dojo.lang.mixin(dojo.html.selection, {getType:function () {
+		if (dojo.doc()["selection"]) {
+			return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()];
+		} else {
+			var stype = dojo.html.selectionType.TEXT;
+			var oSel;
+			try {
+				oSel = dojo.global().getSelection();
+			}
+			catch (e) {
+			}
+			if (oSel && oSel.rangeCount == 1) {
+				var oRange = oSel.getRangeAt(0);
+				if (oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != dojo.dom.TEXT_NODE) {
+					stype = dojo.html.selectionType.CONTROL;
+				}
+			}
+			return stype;
+		}
+	}, isCollapsed:function () {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		if (_document["selection"]) {
+			return _document.selection.createRange().text == "";
+		} else {
+			if (_window["getSelection"]) {
+				var selection = _window.getSelection();
+				if (dojo.lang.isString(selection)) {
+					return selection == "";
+				} else {
+					return selection.isCollapsed || selection.toString() == "";
+				}
+			}
+		}
+	}, getSelectedElement:function () {
+		if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
+			if (dojo.doc()["selection"]) {
+				var range = dojo.doc().selection.createRange();
+				if (range && range.item) {
+					return dojo.doc().selection.createRange().item(0);
+				}
+			} else {
+				var selection = dojo.global().getSelection();
+				return selection.anchorNode.childNodes[selection.anchorOffset];
+			}
+		}
+	}, getParentElement:function () {
+		if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
+			var p = dojo.html.selection.getSelectedElement();
+			if (p) {
+				return p.parentNode;
+			}
+		} else {
+			if (dojo.doc()["selection"]) {
+				return dojo.doc().selection.createRange().parentElement();
+			} else {
+				var selection = dojo.global().getSelection();
+				if (selection) {
+					var node = selection.anchorNode;
+					while (node && node.nodeType != dojo.dom.ELEMENT_NODE) {
+						node = node.parentNode;
+					}
+					return node;
+				}
+			}
+		}
+	}, getSelectedText:function () {
+		if (dojo.doc()["selection"]) {
+			if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
+				return null;
+			}
+			return dojo.doc().selection.createRange().text;
+		} else {
+			var selection = dojo.global().getSelection();
+			if (selection) {
+				return selection.toString();
+			}
+		}
+	}, getSelectedHtml:function () {
+		if (dojo.doc()["selection"]) {
+			if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) {
+				return null;
+			}
+			return dojo.doc().selection.createRange().htmlText;
+		} else {
+			var selection = dojo.global().getSelection();
+			if (selection && selection.rangeCount) {
+				var frag = selection.getRangeAt(0).cloneContents();
+				var div = document.createElement("div");
+				div.appendChild(frag);
+				return div.innerHTML;
+			}
+			return null;
+		}
+	}, hasAncestorElement:function (tagName) {
+		return (dojo.html.selection.getAncestorElement.apply(this, arguments) != null);
+	}, getAncestorElement:function (tagName) {
+		var node = dojo.html.selection.getSelectedElement() || dojo.html.selection.getParentElement();
+		while (node) {
+			if (dojo.html.selection.isTag(node, arguments).length > 0) {
+				return node;
+			}
+			node = node.parentNode;
+		}
+		return null;
+	}, isTag:function (node, tags) {
+		if (node && node.tagName) {
+			for (var i = 0; i < tags.length; i++) {
+				if (node.tagName.toLowerCase() == String(tags[i]).toLowerCase()) {
+					return String(tags[i]).toLowerCase();
+				}
+			}
+		}
+		return "";
+	}, selectElement:function (element) {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		element = dojo.byId(element);
+		if (_document.selection && dojo.body().createTextRange) {
+			try {
+				var range = dojo.body().createControlRange();
+				range.addElement(element);
+				range.select();
+			}
+			catch (e) {
+				dojo.html.selection.selectElementChildren(element);
+			}
+		} else {
+			if (_window["getSelection"]) {
+				var selection = _window.getSelection();
+				if (selection["removeAllRanges"]) {
+					var range = _document.createRange();
+					range.selectNode(element);
+					selection.removeAllRanges();
+					selection.addRange(range);
+				}
+			}
+		}
+	}, selectElementChildren:function (element) {
+		var _window = dojo.global();
+		var _document = dojo.doc();
+		element = dojo.byId(element);
+		if (_document.selection && dojo.body().createTextRange) {
+			var range = dojo.body().createTextRange();
+			range.moveToElementText(element);
+			range.select();
+		} else {
+			if (_window["getSelection"]) {
+				var selection = _window.getSelection();
+				if (selection["setBaseAndExtent"]) {
+					selection.setBaseAndExtent(element, 0, element, element.innerText.length - 1);
+				} else {
+					if (selection["selectAllChildren"]) {
+						selection.selectAllChildren(element);
+					}
+				}
+			}
+		}
+	}, getBookmark:function () {
+		var bookmark;
+		var _document = dojo.doc();
+		if (_document["selection"]) {
+			var range = _document.selection.createRange();
+			bookmark = range.getBookmark();
+		} else {
+			var selection;
+			try {
+				selection = dojo.global().getSelection();
+			}
+			catch (e) {
+			}
+			if (selection) {
+				var range = selection.getRangeAt(0);
+				bookmark = range.cloneRange();
+			} else {
+				dojo.debug("No idea how to store the current selection for this browser!");
+			}
+		}
+		return bookmark;
+	}, moveToBookmark:function (bookmark) {
+		var _document = dojo.doc();
+		if (_document["selection"]) {
+			var range = _document.selection.createRange();
+			range.moveToBookmark(bookmark);
+			range.select();
+		} else {
+			var selection;
+			try {
+				selection = dojo.global().getSelection();
+			}
+			catch (e) {
+			}
+			if (selection && selection["removeAllRanges"]) {
+				selection.removeAllRanges();
+				selection.addRange(bookmark);
+			} else {
+				dojo.debug("No idea how to restore selection for this browser!");
+			}
+		}
+	}, collapse:function (beginning) {
+		if (dojo.global()["getSelection"]) {
+			var selection = dojo.global().getSelection();
+			if (selection.removeAllRanges) {
+				if (beginning) {
+					selection.collapseToStart();
+				} else {
+					selection.collapseToEnd();
+				}
+			} else {
+				dojo.global().getSelection().collapse(beginning);
+			}
+		} else {
+			if (dojo.doc().selection) {
+				var range = dojo.doc().selection.createRange();
+				range.collapse(beginning);
+				range.select();
+			}
+		}
+	}, remove:function () {
+		if (dojo.doc().selection) {
+			var selection = dojo.doc().selection;
+			if (selection.type.toUpperCase() != "NONE") {
+				selection.clear();
+			}
+			return selection;
+		} else {
+			var selection = dojo.global().getSelection();
+			for (var i = 0; i < selection.rangeCount; i++) {
+				selection.getRangeAt(i).deleteContents();
+			}
+			return selection;
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/html/iframe.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -11112,6 +23073,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.html.iframe");
 dojo.require("dojo.html.util");
 dojo.html.iframeContentWindow = function (iframe_el) {
@@ -11232,6 +23195,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.event.browser");
 dojo.require("dojo.event.common");
 dojo._ie_clobber = new function () {
@@ -11723,6 +23688,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.event.common");
 dojo.provide("dojo.event.topic");
 dojo.event.topic = new function () {
@@ -11802,6 +23769,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.event.common");
 dojo.require("dojo.lang.array");
 dojo.require("dojo.lang.extras");
@@ -11956,6 +23925,13 @@
 		} else {
 			var ao = interpolateArgs(arguments, true);
 		}
+		if (dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")) {
+			if (dojo.render.html.ie) {
+				ao.srcFunc = "onkeydown";
+				this.connect(ao);
+			}
+			ao.srcFunc = "onkeypress";
+		}
 		if (dojo.lang.isArray(ao.srcObj) && ao.srcObj != "") {
 			var tmpAO = {};
 			for (var x in ao) {
@@ -12344,6 +24320,501 @@
 }});
 
 
+__CPAN_FILE__ src/event/browser.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.event.browser"], ["require", "dojo.event.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.event.browser");
+	dojo.require("dojo.event.common");
+	dojo._ie_clobber = new function () {
+		this.clobberNodes = [];
+		function nukeProp(node, prop) {
+			try {
+				node[prop] = null;
+			}
+			catch (e) {
+			}
+			try {
+				delete node[prop];
+			}
+			catch (e) {
+			}
+			try {
+				node.removeAttribute(prop);
+			}
+			catch (e) {
+			}
+		}
+		this.clobber = function (nodeRef) {
+			var na;
+			var tna;
+			if (nodeRef) {
+				tna = nodeRef.all || nodeRef.getElementsByTagName("*");
+				na = [nodeRef];
+				for (var x = 0; x < tna.length; x++) {
+					if (tna[x]["__doClobber__"]) {
+						na.push(tna[x]);
+					}
+				}
+			} else {
+				try {
+					window.onload = null;
+				}
+				catch (e) {
+				}
+				na = (this.clobberNodes.length) ? this.clobberNodes : document.all;
+			}
+			tna = null;
+			var basis = {};
+			for (var i = na.length - 1; i >= 0; i = i - 1) {
+				var el = na[i];
+				try {
+					if (el && el["__clobberAttrs__"]) {
+						for (var j = 0; j < el.__clobberAttrs__.length; j++) {
+							nukeProp(el, el.__clobberAttrs__[j]);
+						}
+						nukeProp(el, "__clobberAttrs__");
+						nukeProp(el, "__doClobber__");
+					}
+				}
+				catch (e) {
+				}
+			}
+			na = null;
+		};
+	};
+	if (dojo.render.html.ie) {
+		dojo.addOnUnload(function () {
+			dojo._ie_clobber.clobber();
+			try {
+				if ((dojo["widget"]) && (dojo.widget["manager"])) {
+					dojo.widget.manager.destroyAll();
+				}
+			}
+			catch (e) {
+			}
+			if (dojo.widget) {
+				for (var name in dojo.widget._templateCache) {
+					if (dojo.widget._templateCache[name].node) {
+						dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
+						dojo.widget._templateCache[name].node = null;
+						delete dojo.widget._templateCache[name].node;
+					}
+				}
+			}
+			try {
+				window.onload = null;
+			}
+			catch (e) {
+			}
+			try {
+				window.onunload = null;
+			}
+			catch (e) {
+			}
+			dojo._ie_clobber.clobberNodes = [];
+		});
+	}
+	dojo.event.browser = new function () {
+		var clobberIdx = 0;
+		this.normalizedEventName = function (eventName) {
+			switch (eventName) {
+			  case "CheckboxStateChange":
+			  case "DOMAttrModified":
+			  case "DOMMenuItemActive":
+			  case "DOMMenuItemInactive":
+			  case "DOMMouseScroll":
+			  case "DOMNodeInserted":
+			  case "DOMNodeRemoved":
+			  case "RadioStateChange":
+				return eventName;
+				break;
+			  default:
+				var lcn = eventName.toLowerCase();
+				return (lcn.indexOf("on") == 0) ? lcn.substr(2) : lcn;
+				break;
+			}
+		};
+		this.clean = function (node) {
+			if (dojo.render.html.ie) {
+				dojo._ie_clobber.clobber(node);
+			}
+		};
+		this.addClobberNode = function (node) {
+			if (!dojo.render.html.ie) {
+				return;
+			}
+			if (!node["__doClobber__"]) {
+				node.__doClobber__ = true;
+				dojo._ie_clobber.clobberNodes.push(node);
+				node.__clobberAttrs__ = [];
+			}
+		};
+		this.addClobberNodeAttrs = function (node, props) {
+			if (!dojo.render.html.ie) {
+				return;
+			}
+			this.addClobberNode(node);
+			for (var x = 0; x < props.length; x++) {
+				node.__clobberAttrs__.push(props[x]);
+			}
+		};
+		this.removeListener = function (node, evtName, fp, capture) {
+			if (!capture) {
+				var capture = false;
+			}
+			evtName = dojo.event.browser.normalizedEventName(evtName);
+			if (evtName == "key") {
+				if (dojo.render.html.ie) {
+					this.removeListener(node, "onkeydown", fp, capture);
+				}
+				evtName = "keypress";
+			}
+			if (node.removeEventListener) {
+				node.removeEventListener(evtName, fp, capture);
+			}
+		};
+		this.addListener = function (node, evtName, fp, capture, dontFix) {
+			if (!node) {
+				return;
+			}
+			if (!capture) {
+				var capture = false;
+			}
+			evtName = dojo.event.browser.normalizedEventName(evtName);
+			if (evtName == "key") {
+				if (dojo.render.html.ie) {
+					this.addListener(node, "onkeydown", fp, capture, dontFix);
+				}
+				evtName = "keypress";
+			}
+			if (!dontFix) {
+				var newfp = function (evt) {
+					if (!evt) {
+						evt = window.event;
+					}
+					var ret = fp(dojo.event.browser.fixEvent(evt, this));
+					if (capture) {
+						dojo.event.browser.stopEvent(evt);
+					}
+					return ret;
+				};
+			} else {
+				newfp = fp;
+			}
+			if (node.addEventListener) {
+				node.addEventListener(evtName, newfp, capture);
+				return newfp;
+			} else {
+				evtName = "on" + evtName;
+				if (typeof node[evtName] == "function") {
+					var oldEvt = node[evtName];
+					node[evtName] = function (e) {
+						oldEvt(e);
+						return newfp(e);
+					};
+				} else {
+					node[evtName] = newfp;
+				}
+				if (dojo.render.html.ie) {
+					this.addClobberNodeAttrs(node, [evtName]);
+				}
+				return newfp;
+			}
+		};
+		this.isEvent = function (obj) {
+			return (typeof obj != "undefined") && (obj) && (typeof Event != "undefined") && (obj.eventPhase);
+		};
+		this.currentEvent = null;
+		this.callListener = function (listener, curTarget) {
+			if (typeof listener != "function") {
+				dojo.raise("listener not a function: " + listener);
+			}
+			dojo.event.browser.currentEvent.currentTarget = curTarget;
+			return listener.call(curTarget, dojo.event.browser.currentEvent);
+		};
+		this._stopPropagation = function () {
+			dojo.event.browser.currentEvent.cancelBubble = true;
+		};
+		this._preventDefault = function () {
+			dojo.event.browser.currentEvent.returnValue = false;
+		};
+		this.keys = {KEY_BACKSPACE:8, KEY_TAB:9, KEY_CLEAR:12, KEY_ENTER:13, KEY_SHIFT:16, KEY_CTRL:17, KEY_ALT:18, KEY_PAUSE:19, KEY_CAPS_LOCK:20, KEY_ESCAPE:27, KEY_SPACE:32, KEY_PAGE_UP:33, KEY_PAGE_DOWN:34, KEY_END:35, KEY_HOME:36, KEY_LEFT_ARROW:37, KEY_UP_ARROW:38, KEY_RIGHT_ARROW:39, KEY_DOWN_ARROW:40, KEY_INSERT:45, KEY_DELETE:46, KEY_HELP:47, KEY_LEFT_WINDOW:91, KEY_RIGHT_WINDOW:92, KEY_SELECT:93, KEY_NUMPAD_0:96, KEY_NUMPAD_1:97, KEY_NUMPAD_2:98, KEY_NUMPAD_3:99, KEY_NUMPAD_4:100, KEY_NUMPAD_5:101, KEY_NUMPAD_6:102, KEY_NUMPAD_7:103, KEY_NUMPAD_8:104, KEY_NUMPAD_9:105, KEY_NUMPAD_MULTIPLY:106, KEY_NUMPAD_PLUS:107, KEY_NUMPAD_ENTER:108, KEY_NUMPAD_MINUS:109, KEY_NUMPAD_PERIOD:110, KEY_NUMPAD_DIVIDE:111, KEY_F1:112, KEY_F2:113, KEY_F3:114, KEY_F4:115, KEY_F5:116, KEY_F6:117, KEY_F7:118, KEY_F8:119, KEY_F9:120, KEY_F10:121, KEY_F11:122, KEY_F12:123, KEY_F13:124, KEY_F14:125, KEY_F15:126, KEY_NUM_LOCK:144, KEY_SCROLL_LOCK:145};
+		this.revKeys = [];
+		for (var key in this.keys) {
+			this.revKeys[this.keys[key]] = key;
+		}
+		this.fixEvent = function (evt, sender) {
+			if (!evt) {
+				if (window["event"]) {
+					evt = window.event;
+				}
+			}
+			if ((evt["type"]) && (evt["type"].indexOf("key") == 0)) {
+				evt.keys = this.revKeys;
+				for (var key in this.keys) {
+					evt[key] = this.keys[key];
+				}
+				if (evt["type"] == "keydown" && dojo.render.html.ie) {
+					switch (evt.keyCode) {
+					  case evt.KEY_SHIFT:
+					  case evt.KEY_CTRL:
+					  case evt.KEY_ALT:
+					  case evt.KEY_CAPS_LOCK:
+					  case evt.KEY_LEFT_WINDOW:
+					  case evt.KEY_RIGHT_WINDOW:
+					  case evt.KEY_SELECT:
+					  case evt.KEY_NUM_LOCK:
+					  case evt.KEY_SCROLL_LOCK:
+					  case evt.KEY_NUMPAD_0:
+					  case evt.KEY_NUMPAD_1:
+					  case evt.KEY_NUMPAD_2:
+					  case evt.KEY_NUMPAD_3:
+					  case evt.KEY_NUMPAD_4:
+					  case evt.KEY_NUMPAD_5:
+					  case evt.KEY_NUMPAD_6:
+					  case evt.KEY_NUMPAD_7:
+					  case evt.KEY_NUMPAD_8:
+					  case evt.KEY_NUMPAD_9:
+					  case evt.KEY_NUMPAD_PERIOD:
+						break;
+					  case evt.KEY_NUMPAD_MULTIPLY:
+					  case evt.KEY_NUMPAD_PLUS:
+					  case evt.KEY_NUMPAD_ENTER:
+					  case evt.KEY_NUMPAD_MINUS:
+					  case evt.KEY_NUMPAD_DIVIDE:
+						break;
+					  case evt.KEY_PAUSE:
+					  case evt.KEY_TAB:
+					  case evt.KEY_BACKSPACE:
+					  case evt.KEY_ENTER:
+					  case evt.KEY_ESCAPE:
+					  case evt.KEY_PAGE_UP:
+					  case evt.KEY_PAGE_DOWN:
+					  case evt.KEY_END:
+					  case evt.KEY_HOME:
+					  case evt.KEY_LEFT_ARROW:
+					  case evt.KEY_UP_ARROW:
+					  case evt.KEY_RIGHT_ARROW:
+					  case evt.KEY_DOWN_ARROW:
+					  case evt.KEY_INSERT:
+					  case evt.KEY_DELETE:
+					  case evt.KEY_F1:
+					  case evt.KEY_F2:
+					  case evt.KEY_F3:
+					  case evt.KEY_F4:
+					  case evt.KEY_F5:
+					  case evt.KEY_F6:
+					  case evt.KEY_F7:
+					  case evt.KEY_F8:
+					  case evt.KEY_F9:
+					  case evt.KEY_F10:
+					  case evt.KEY_F11:
+					  case evt.KEY_F12:
+					  case evt.KEY_F12:
+					  case evt.KEY_F13:
+					  case evt.KEY_F14:
+					  case evt.KEY_F15:
+					  case evt.KEY_CLEAR:
+					  case evt.KEY_HELP:
+						evt.key = evt.keyCode;
+						break;
+					  default:
+						if (evt.ctrlKey || evt.altKey) {
+							var unifiedCharCode = evt.keyCode;
+							if (unifiedCharCode >= 65 && unifiedCharCode <= 90 && evt.shiftKey == false) {
+								unifiedCharCode += 32;
+							}
+							if (unifiedCharCode >= 1 && unifiedCharCode <= 26 && evt.ctrlKey) {
+								unifiedCharCode += 96;
+							}
+							evt.key = String.fromCharCode(unifiedCharCode);
+						}
+					}
+				} else {
+					if (evt["type"] == "keypress") {
+						if (dojo.render.html.opera) {
+							if (evt.which == 0) {
+								evt.key = evt.keyCode;
+							} else {
+								if (evt.which > 0) {
+									switch (evt.which) {
+									  case evt.KEY_SHIFT:
+									  case evt.KEY_CTRL:
+									  case evt.KEY_ALT:
+									  case evt.KEY_CAPS_LOCK:
+									  case evt.KEY_NUM_LOCK:
+									  case evt.KEY_SCROLL_LOCK:
+										break;
+									  case evt.KEY_PAUSE:
+									  case evt.KEY_TAB:
+									  case evt.KEY_BACKSPACE:
+									  case evt.KEY_ENTER:
+									  case evt.KEY_ESCAPE:
+										evt.key = evt.which;
+										break;
+									  default:
+										var unifiedCharCode = evt.which;
+										if ((evt.ctrlKey || evt.altKey || evt.metaKey) && (evt.which >= 65 && evt.which <= 90 && evt.shiftKey == false)) {
+											unifiedCharCode += 32;
+										}
+										evt.key = String.fromCharCode(unifiedCharCode);
+									}
+								}
+							}
+						} else {
+							if (dojo.render.html.ie) {
+								if (!evt.ctrlKey && !evt.altKey && evt.keyCode >= evt.KEY_SPACE) {
+									evt.key = String.fromCharCode(evt.keyCode);
+								}
+							} else {
+								if (dojo.render.html.safari) {
+									switch (evt.keyCode) {
+									  case 25:
+										evt.key = evt.KEY_TAB;
+										evt.shift = true;
+										break;
+									  case 63232:
+										evt.key = evt.KEY_UP_ARROW;
+										break;
+									  case 63233:
+										evt.key = evt.KEY_DOWN_ARROW;
+										break;
+									  case 63234:
+										evt.key = evt.KEY_LEFT_ARROW;
+										break;
+									  case 63235:
+										evt.key = evt.KEY_RIGHT_ARROW;
+										break;
+									  case 63236:
+										evt.key = evt.KEY_F1;
+										break;
+									  case 63237:
+										evt.key = evt.KEY_F2;
+										break;
+									  case 63238:
+										evt.key = evt.KEY_F3;
+										break;
+									  case 63239:
+										evt.key = evt.KEY_F4;
+										break;
+									  case 63240:
+										evt.key = evt.KEY_F5;
+										break;
+									  case 63241:
+										evt.key = evt.KEY_F6;
+										break;
+									  case 63242:
+										evt.key = evt.KEY_F7;
+										break;
+									  case 63243:
+										evt.key = evt.KEY_F8;
+										break;
+									  case 63244:
+										evt.key = evt.KEY_F9;
+										break;
+									  case 63245:
+										evt.key = evt.KEY_F10;
+										break;
+									  case 63246:
+										evt.key = evt.KEY_F11;
+										break;
+									  case 63247:
+										evt.key = evt.KEY_F12;
+										break;
+									  case 63250:
+										evt.key = evt.KEY_PAUSE;
+										break;
+									  case 63272:
+										evt.key = evt.KEY_DELETE;
+										break;
+									  case 63273:
+										evt.key = evt.KEY_HOME;
+										break;
+									  case 63275:
+										evt.key = evt.KEY_END;
+										break;
+									  case 63276:
+										evt.key = evt.KEY_PAGE_UP;
+										break;
+									  case 63277:
+										evt.key = evt.KEY_PAGE_DOWN;
+										break;
+									  case 63302:
+										evt.key = evt.KEY_INSERT;
+										break;
+									  case 63248:
+									  case 63249:
+									  case 63289:
+										break;
+									  default:
+										evt.key = evt.charCode >= evt.KEY_SPACE ? String.fromCharCode(evt.charCode) : evt.keyCode;
+									}
+								} else {
+									evt.key = evt.charCode > 0 ? String.fromCharCode(evt.charCode) : evt.keyCode;
+								}
+							}
+						}
+					}
+				}
+			}
+			if (dojo.render.html.ie) {
+				if (!evt.target) {
+					evt.target = evt.srcElement;
+				}
+				if (!evt.currentTarget) {
+					evt.currentTarget = (sender ? sender : evt.srcElement);
+				}
+				if (!evt.layerX) {
+					evt.layerX = evt.offsetX;
+				}
+				if (!evt.layerY) {
+					evt.layerY = evt.offsetY;
+				}
+				var doc = (evt.srcElement && evt.srcElement.ownerDocument) ? evt.srcElement.ownerDocument : document;
+				var docBody = ((dojo.render.html.ie55) || (doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;
+				if (!evt.pageX) {
+					evt.pageX = evt.clientX + (docBody.scrollLeft || 0);
+				}
+				if (!evt.pageY) {
+					evt.pageY = evt.clientY + (docBody.scrollTop || 0);
+				}
+				if (evt.type == "mouseover") {
+					evt.relatedTarget = evt.fromElement;
+				}
+				if (evt.type == "mouseout") {
+					evt.relatedTarget = evt.toElement;
+				}
+				this.currentEvent = evt;
+				evt.callListener = this.callListener;
+				evt.stopPropagation = this._stopPropagation;
+				evt.preventDefault = this._preventDefault;
+			}
+			return evt;
+		};
+		this.stopEvent = function (evt) {
+			if (window.event) {
+				evt.cancelBubble = true;
+				evt.returnValue = false;
+			} else {
+				evt.preventDefault();
+				evt.stopPropagation();
+			}
+		};
+	};
+}});
+
+
 __CPAN_FILE__ src/event/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -12355,10 +24826,678 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.event.common", "dojo.event.topic"], browser:["dojo.event.browser"], dashboard:["dojo.event.browser"]});
 dojo.provide("dojo.event.*");
 
 
+__CPAN_FILE__ src/event/topic.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.event.common"], ["provide", "dojo.event.topic"]], definePackage:function (dojo) {
+	dojo.require("dojo.event.common");
+	dojo.provide("dojo.event.topic");
+	dojo.event.topic = new function () {
+		this.topics = {};
+		this.getTopic = function (topic) {
+			if (!this.topics[topic]) {
+				this.topics[topic] = new this.TopicImpl(topic);
+			}
+			return this.topics[topic];
+		};
+		this.registerPublisher = function (topic, obj, funcName) {
+			var topic = this.getTopic(topic);
+			topic.registerPublisher(obj, funcName);
+		};
+		this.subscribe = function (topic, obj, funcName) {
+			var topic = this.getTopic(topic);
+			topic.subscribe(obj, funcName);
+		};
+		this.unsubscribe = function (topic, obj, funcName) {
+			var topic = this.getTopic(topic);
+			topic.unsubscribe(obj, funcName);
+		};
+		this.destroy = function (topic) {
+			this.getTopic(topic).destroy();
+			delete this.topics[topic];
+		};
+		this.publishApply = function (topic, args) {
+			var topic = this.getTopic(topic);
+			topic.sendMessage.apply(topic, args);
+		};
+		this.publish = function (topic, message) {
+			var topic = this.getTopic(topic);
+			var args = [];
+			for (var x = 1; x < arguments.length; x++) {
+				args.push(arguments[x]);
+			}
+			topic.sendMessage.apply(topic, args);
+		};
+	};
+	dojo.event.topic.TopicImpl = function (topicName) {
+		this.topicName = topicName;
+		this.subscribe = function (listenerObject, listenerMethod) {
+			var tf = listenerMethod || listenerObject;
+			var to = (!listenerMethod) ? dj_global : listenerObject;
+			return dojo.event.kwConnect({srcObj:this, srcFunc:"sendMessage", adviceObj:to, adviceFunc:tf});
+		};
+		this.unsubscribe = function (listenerObject, listenerMethod) {
+			var tf = (!listenerMethod) ? listenerObject : listenerMethod;
+			var to = (!listenerMethod) ? null : listenerObject;
+			return dojo.event.kwDisconnect({srcObj:this, srcFunc:"sendMessage", adviceObj:to, adviceFunc:tf});
+		};
+		this._getJoinPoint = function () {
+			return dojo.event.MethodJoinPoint.getForMethod(this, "sendMessage");
+		};
+		this.setSquelch = function (shouldSquelch) {
+			this._getJoinPoint().squelch = shouldSquelch;
+		};
+		this.destroy = function () {
+			this._getJoinPoint().disconnect();
+		};
+		this.registerPublisher = function (publisherObject, publisherMethod) {
+			dojo.event.connect(publisherObject, publisherMethod, this, "sendMessage");
+		};
+		this.sendMessage = function (message) {
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/event/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.event.common", "dojo.event.topic"], browser:["dojo.event.browser"], dashboard:["dojo.event.browser"]}], ["provide", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.event.common", "dojo.event.topic"], browser:["dojo.event.browser"], dashboard:["dojo.event.browser"]});
+	dojo.provide("dojo.event.*");
+}});
+
+
+__CPAN_FILE__ src/event/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.event.common"], ["require", "dojo.lang.array"], ["require", "dojo.lang.extras"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.provide("dojo.event.common");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.lang.func");
+	dojo.event = new function () {
+		this._canTimeout = dojo.lang.isFunction(dj_global["setTimeout"]) || dojo.lang.isAlien(dj_global["setTimeout"]);
+		function interpolateArgs(args, searchForNames) {
+			var dl = dojo.lang;
+			var ao = {srcObj:dj_global, srcFunc:null, adviceObj:dj_global, adviceFunc:null, aroundObj:null, aroundFunc:null, adviceType:(args.length > 2) ? args[0] : "after", precedence:"last", once:false, delay:null, rate:0, adviceMsg:false, maxCalls:-1};
+			switch (args.length) {
+			  case 0:
+				return;
+			  case 1:
+				return;
+			  case 2:
+				ao.srcFunc = args[0];
+				ao.adviceFunc = args[1];
+				break;
+			  case 3:
+				if ((dl.isObject(args[0])) && (dl.isString(args[1])) && (dl.isString(args[2]))) {
+					ao.adviceType = "after";
+					ao.srcObj = args[0];
+					ao.srcFunc = args[1];
+					ao.adviceFunc = args[2];
+				} else {
+					if ((dl.isString(args[1])) && (dl.isString(args[2]))) {
+						ao.srcFunc = args[1];
+						ao.adviceFunc = args[2];
+					} else {
+						if ((dl.isObject(args[0])) && (dl.isString(args[1])) && (dl.isFunction(args[2]))) {
+							ao.adviceType = "after";
+							ao.srcObj = args[0];
+							ao.srcFunc = args[1];
+							var tmpName = dl.nameAnonFunc(args[2], ao.adviceObj, searchForNames);
+							ao.adviceFunc = tmpName;
+						} else {
+							if ((dl.isFunction(args[0])) && (dl.isObject(args[1])) && (dl.isString(args[2]))) {
+								ao.adviceType = "after";
+								ao.srcObj = dj_global;
+								var tmpName = dl.nameAnonFunc(args[0], ao.srcObj, searchForNames);
+								ao.srcFunc = tmpName;
+								ao.adviceObj = args[1];
+								ao.adviceFunc = args[2];
+							}
+						}
+					}
+				}
+				break;
+			  case 4:
+				if ((dl.isObject(args[0])) && (dl.isObject(args[2]))) {
+					ao.adviceType = "after";
+					ao.srcObj = args[0];
+					ao.srcFunc = args[1];
+					ao.adviceObj = args[2];
+					ao.adviceFunc = args[3];
+				} else {
+					if ((dl.isString(args[0])) && (dl.isString(args[1])) && (dl.isObject(args[2]))) {
+						ao.adviceType = args[0];
+						ao.srcObj = dj_global;
+						ao.srcFunc = args[1];
+						ao.adviceObj = args[2];
+						ao.adviceFunc = args[3];
+					} else {
+						if ((dl.isString(args[0])) && (dl.isFunction(args[1])) && (dl.isObject(args[2]))) {
+							ao.adviceType = args[0];
+							ao.srcObj = dj_global;
+							var tmpName = dl.nameAnonFunc(args[1], dj_global, searchForNames);
+							ao.srcFunc = tmpName;
+							ao.adviceObj = args[2];
+							ao.adviceFunc = args[3];
+						} else {
+							if ((dl.isString(args[0])) && (dl.isObject(args[1])) && (dl.isString(args[2])) && (dl.isFunction(args[3]))) {
+								ao.srcObj = args[1];
+								ao.srcFunc = args[2];
+								var tmpName = dl.nameAnonFunc(args[3], dj_global, searchForNames);
+								ao.adviceObj = dj_global;
+								ao.adviceFunc = tmpName;
+							} else {
+								if (dl.isObject(args[1])) {
+									ao.srcObj = args[1];
+									ao.srcFunc = args[2];
+									ao.adviceObj = dj_global;
+									ao.adviceFunc = args[3];
+								} else {
+									if (dl.isObject(args[2])) {
+										ao.srcObj = dj_global;
+										ao.srcFunc = args[1];
+										ao.adviceObj = args[2];
+										ao.adviceFunc = args[3];
+									} else {
+										ao.srcObj = ao.adviceObj = ao.aroundObj = dj_global;
+										ao.srcFunc = args[1];
+										ao.adviceFunc = args[2];
+										ao.aroundFunc = args[3];
+									}
+								}
+							}
+						}
+					}
+				}
+				break;
+			  case 6:
+				ao.srcObj = args[1];
+				ao.srcFunc = args[2];
+				ao.adviceObj = args[3];
+				ao.adviceFunc = args[4];
+				ao.aroundFunc = args[5];
+				ao.aroundObj = dj_global;
+				break;
+			  default:
+				ao.srcObj = args[1];
+				ao.srcFunc = args[2];
+				ao.adviceObj = args[3];
+				ao.adviceFunc = args[4];
+				ao.aroundObj = args[5];
+				ao.aroundFunc = args[6];
+				ao.once = args[7];
+				ao.delay = args[8];
+				ao.rate = args[9];
+				ao.adviceMsg = args[10];
+				ao.maxCalls = (!isNaN(parseInt(args[11]))) ? args[11] : -1;
+				break;
+			}
+			if (dl.isFunction(ao.aroundFunc)) {
+				var tmpName = dl.nameAnonFunc(ao.aroundFunc, ao.aroundObj, searchForNames);
+				ao.aroundFunc = tmpName;
+			}
+			if (dl.isFunction(ao.srcFunc)) {
+				ao.srcFunc = dl.getNameInObj(ao.srcObj, ao.srcFunc);
+			}
+			if (dl.isFunction(ao.adviceFunc)) {
+				ao.adviceFunc = dl.getNameInObj(ao.adviceObj, ao.adviceFunc);
+			}
+			if ((ao.aroundObj) && (dl.isFunction(ao.aroundFunc))) {
+				ao.aroundFunc = dl.getNameInObj(ao.aroundObj, ao.aroundFunc);
+			}
+			if (!ao.srcObj) {
+				dojo.raise("bad srcObj for srcFunc: " + ao.srcFunc);
+			}
+			if (!ao.adviceObj) {
+				dojo.raise("bad adviceObj for adviceFunc: " + ao.adviceFunc);
+			}
+			if (!ao.adviceFunc) {
+				dojo.debug("bad adviceFunc for srcFunc: " + ao.srcFunc);
+				dojo.debugShallow(ao);
+			}
+			return ao;
+		}
+		this.connect = function () {
+			if (arguments.length == 1) {
+				var ao = arguments[0];
+			} else {
+				var ao = interpolateArgs(arguments, true);
+			}
+			if (dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")) {
+				if (dojo.render.html.ie) {
+					ao.srcFunc = "onkeydown";
+					this.connect(ao);
+				}
+				ao.srcFunc = "onkeypress";
+			}
+			if (dojo.lang.isArray(ao.srcObj) && ao.srcObj != "") {
+				var tmpAO = {};
+				for (var x in ao) {
+					tmpAO[x] = ao[x];
+				}
+				var mjps = [];
+				dojo.lang.forEach(ao.srcObj, function (src) {
+					if ((dojo.render.html.capable) && (dojo.lang.isString(src))) {
+						src = dojo.byId(src);
+					}
+					tmpAO.srcObj = src;
+					mjps.push(dojo.event.connect.call(dojo.event, tmpAO));
+				});
+				return mjps;
+			}
+			var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc);
+			if (ao.adviceFunc) {
+				var mjp2 = dojo.event.MethodJoinPoint.getForMethod(ao.adviceObj, ao.adviceFunc);
+			}
+			mjp.kwAddAdvice(ao);
+			return mjp;
+		};
+		this.log = function (a1, a2) {
+			var kwArgs;
+			if ((arguments.length == 1) && (typeof a1 == "object")) {
+				kwArgs = a1;
+			} else {
+				kwArgs = {srcObj:a1, srcFunc:a2};
+			}
+			kwArgs.adviceFunc = function () {
+				var argsStr = [];
+				for (var x = 0; x < arguments.length; x++) {
+					argsStr.push(arguments[x]);
+				}
+				dojo.debug("(" + kwArgs.srcObj + ")." + kwArgs.srcFunc, ":", argsStr.join(", "));
+			};
+			this.kwConnect(kwArgs);
+		};
+		this.connectBefore = function () {
+			var args = ["before"];
+			for (var i = 0; i < arguments.length; i++) {
+				args.push(arguments[i]);
+			}
+			return this.connect.apply(this, args);
+		};
+		this.connectAround = function () {
+			var args = ["around"];
+			for (var i = 0; i < arguments.length; i++) {
+				args.push(arguments[i]);
+			}
+			return this.connect.apply(this, args);
+		};
+		this.connectOnce = function () {
+			var ao = interpolateArgs(arguments, true);
+			ao.once = true;
+			return this.connect(ao);
+		};
+		this.connectRunOnce = function () {
+			var ao = interpolateArgs(arguments, true);
+			ao.maxCalls = 1;
+			return this.connect(ao);
+		};
+		this._kwConnectImpl = function (kwArgs, disconnect) {
+			var fn = (disconnect) ? "disconnect" : "connect";
+			if (typeof kwArgs["srcFunc"] == "function") {
+				kwArgs.srcObj = kwArgs["srcObj"] || dj_global;
+				var tmpName = dojo.lang.nameAnonFunc(kwArgs.srcFunc, kwArgs.srcObj, true);
+				kwArgs.srcFunc = tmpName;
+			}
+			if (typeof kwArgs["adviceFunc"] == "function") {
+				kwArgs.adviceObj = kwArgs["adviceObj"] || dj_global;
+				var tmpName = dojo.lang.nameAnonFunc(kwArgs.adviceFunc, kwArgs.adviceObj, true);
+				kwArgs.adviceFunc = tmpName;
+			}
+			kwArgs.srcObj = kwArgs["srcObj"] || dj_global;
+			kwArgs.adviceObj = kwArgs["adviceObj"] || kwArgs["targetObj"] || dj_global;
+			kwArgs.adviceFunc = kwArgs["adviceFunc"] || kwArgs["targetFunc"];
+			return dojo.event[fn](kwArgs);
+		};
+		this.kwConnect = function (kwArgs) {
+			return this._kwConnectImpl(kwArgs, false);
+		};
+		this.disconnect = function () {
+			if (arguments.length == 1) {
+				var ao = arguments[0];
+			} else {
+				var ao = interpolateArgs(arguments, true);
+			}
+			if (!ao.adviceFunc) {
+				return;
+			}
+			if (dojo.lang.isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")) {
+				if (dojo.render.html.ie) {
+					ao.srcFunc = "onkeydown";
+					this.disconnect(ao);
+				}
+				ao.srcFunc = "onkeypress";
+			}
+			if (!ao.srcObj[ao.srcFunc]) {
+				return null;
+			}
+			var mjp = dojo.event.MethodJoinPoint.getForMethod(ao.srcObj, ao.srcFunc, true);
+			mjp.removeAdvice(ao.adviceObj, ao.adviceFunc, ao.adviceType, ao.once);
+			return mjp;
+		};
+		this.kwDisconnect = function (kwArgs) {
+			return this._kwConnectImpl(kwArgs, true);
+		};
+	};
+	dojo.event.MethodInvocation = function (join_point, obj, args) {
+		this.jp_ = join_point;
+		this.object = obj;
+		this.args = [];
+		for (var x = 0; x < args.length; x++) {
+			this.args[x] = args[x];
+		}
+		this.around_index = -1;
+	};
+	dojo.event.MethodInvocation.prototype.proceed = function () {
+		this.around_index++;
+		if (this.around_index >= this.jp_.around.length) {
+			return this.jp_.object[this.jp_.methodname].apply(this.jp_.object, this.args);
+		} else {
+			var ti = this.jp_.around[this.around_index];
+			var mobj = ti[0] || dj_global;
+			var meth = ti[1];
+			return mobj[meth].call(mobj, this);
+		}
+	};
+	dojo.event.MethodJoinPoint = function (obj, funcName) {
+		this.object = obj || dj_global;
+		this.methodname = funcName;
+		this.methodfunc = this.object[funcName];
+		this.squelch = false;
+	};
+	dojo.event.MethodJoinPoint.getForMethod = function (obj, funcName) {
+		if (!obj) {
+			obj = dj_global;
+		}
+		var ofn = obj[funcName];
+		if (!ofn) {
+			ofn = obj[funcName] = function () {
+			};
+			if (!obj[funcName]) {
+				dojo.raise("Cannot set do-nothing method on that object " + funcName);
+			}
+		} else {
+			if ((typeof ofn != "function") && (!dojo.lang.isFunction(ofn)) && (!dojo.lang.isAlien(ofn))) {
+				return null;
+			}
+		}
+		var jpname = funcName + "$joinpoint";
+		var jpfuncname = funcName + "$joinpoint$method";
+		var joinpoint = obj[jpname];
+		if (!joinpoint) {
+			var isNode = false;
+			if (dojo.event["browser"]) {
+				if ((obj["attachEvent"]) || (obj["nodeType"]) || (obj["addEventListener"])) {
+					isNode = true;
+					dojo.event.browser.addClobberNodeAttrs(obj, [jpname, jpfuncname, funcName]);
+				}
+			}
+			var origArity = ofn.length;
+			obj[jpfuncname] = ofn;
+			joinpoint = obj[jpname] = new dojo.event.MethodJoinPoint(obj, jpfuncname);
+			if (!isNode) {
+				obj[funcName] = function () {
+					return joinpoint.run.apply(joinpoint, arguments);
+				};
+			} else {
+				obj[funcName] = function () {
+					var args = [];
+					if (!arguments.length) {
+						var evt = null;
+						try {
+							if (obj.ownerDocument) {
+								evt = obj.ownerDocument.parentWindow.event;
+							} else {
+								if (obj.documentElement) {
+									evt = obj.documentElement.ownerDocument.parentWindow.event;
+								} else {
+									if (obj.event) {
+										evt = obj.event;
+									} else {
+										evt = window.event;
+									}
+								}
+							}
+						}
+						catch (e) {
+							evt = window.event;
+						}
+						if (evt) {
+							args.push(dojo.event.browser.fixEvent(evt, this));
+						}
+					} else {
+						for (var x = 0; x < arguments.length; x++) {
+							if ((x == 0) && (dojo.event.browser.isEvent(arguments[x]))) {
+								args.push(dojo.event.browser.fixEvent(arguments[x], this));
+							} else {
+								args.push(arguments[x]);
+							}
+						}
+					}
+					return joinpoint.run.apply(joinpoint, args);
+				};
+			}
+			obj[funcName].__preJoinArity = origArity;
+		}
+		return joinpoint;
+	};
+	dojo.lang.extend(dojo.event.MethodJoinPoint, {squelch:false, unintercept:function () {
+		this.object[this.methodname] = this.methodfunc;
+		this.before = [];
+		this.after = [];
+		this.around = [];
+	}, disconnect:dojo.lang.forward("unintercept"), run:function () {
+		var obj = this.object || dj_global;
+		var args = arguments;
+		var aargs = [];
+		for (var x = 0; x < args.length; x++) {
+			aargs[x] = args[x];
+		}
+		var unrollAdvice = function (marr) {
+			if (!marr) {
+				dojo.debug("Null argument to unrollAdvice()");
+				return;
+			}
+			var callObj = marr[0] || dj_global;
+			var callFunc = marr[1];
+			if (!callObj[callFunc]) {
+				dojo.raise("function \"" + callFunc + "\" does not exist on \"" + callObj + "\"");
+			}
+			var aroundObj = marr[2] || dj_global;
+			var aroundFunc = marr[3];
+			var msg = marr[6];
+			var maxCount = marr[7];
+			if (maxCount > -1) {
+				if (maxCount == 0) {
+					return;
+				}
+				marr[7]--;
+			}
+			var undef;
+			var to = {args:[], jp_:this, object:obj, proceed:function () {
+				return callObj[callFunc].apply(callObj, to.args);
+			}};
+			to.args = aargs;
+			var delay = parseInt(marr[4]);
+			var hasDelay = ((!isNaN(delay)) && (marr[4] !== null) && (typeof marr[4] != "undefined"));
+			if (marr[5]) {
+				var rate = parseInt(marr[5]);
+				var cur = new Date();
+				var timerSet = false;
+				if ((marr["last"]) && ((cur - marr.last) <= rate)) {
+					if (dojo.event._canTimeout) {
+						if (marr["delayTimer"]) {
+							clearTimeout(marr.delayTimer);
+						}
+						var tod = parseInt(rate * 2);
+						var mcpy = dojo.lang.shallowCopy(marr);
+						marr.delayTimer = setTimeout(function () {
+							mcpy[5] = 0;
+							unrollAdvice(mcpy);
+						}, tod);
+					}
+					return;
+				} else {
+					marr.last = cur;
+				}
+			}
+			if (aroundFunc) {
+				aroundObj[aroundFunc].call(aroundObj, to);
+			} else {
+				if ((hasDelay) && ((dojo.render.html) || (dojo.render.svg))) {
+					dj_global["setTimeout"](function () {
+						if (msg) {
+							callObj[callFunc].call(callObj, to);
+						} else {
+							callObj[callFunc].apply(callObj, args);
+						}
+					}, delay);
+				} else {
+					if (msg) {
+						callObj[callFunc].call(callObj, to);
+					} else {
+						callObj[callFunc].apply(callObj, args);
+					}
+				}
+			}
+		};
+		var unRollSquelch = function () {
+			if (this.squelch) {
+				try {
+					return unrollAdvice.apply(this, arguments);
+				}
+				catch (e) {
+					dojo.debug(e);
+				}
+			} else {
+				return unrollAdvice.apply(this, arguments);
+			}
+		};
+		if ((this["before"]) && (this.before.length > 0)) {
+			dojo.lang.forEach(this.before.concat(new Array()), unRollSquelch);
+		}
+		var result;
+		try {
+			if ((this["around"]) && (this.around.length > 0)) {
+				var mi = new dojo.event.MethodInvocation(this, obj, args);
+				result = mi.proceed();
+			} else {
+				if (this.methodfunc) {
+					result = this.object[this.methodname].apply(this.object, args);
+				}
+			}
+		}
+		catch (e) {
+			if (!this.squelch) {
+				dojo.debug(e, "when calling", this.methodname, "on", this.object, "with arguments", args);
+				dojo.raise(e);
+			}
+		}
+		if ((this["after"]) && (this.after.length > 0)) {
+			dojo.lang.forEach(this.after.concat(new Array()), unRollSquelch);
+		}
+		return (this.methodfunc) ? result : null;
+	}, getArr:function (kind) {
+		var type = "after";
+		if ((typeof kind == "string") && (kind.indexOf("before") != -1)) {
+			type = "before";
+		} else {
+			if (kind == "around") {
+				type = "around";
+			}
+		}
+		if (!this[type]) {
+			this[type] = [];
+		}
+		return this[type];
+	}, kwAddAdvice:function (args) {
+		this.addAdvice(args["adviceObj"], args["adviceFunc"], args["aroundObj"], args["aroundFunc"], args["adviceType"], args["precedence"], args["once"], args["delay"], args["rate"], args["adviceMsg"], args["maxCalls"]);
+	}, addAdvice:function (thisAdviceObj, thisAdvice, thisAroundObj, thisAround, adviceType, precedence, once, delay, rate, asMessage, maxCalls) {
+		var arr = this.getArr(adviceType);
+		if (!arr) {
+			dojo.raise("bad this: " + this);
+		}
+		var ao = [thisAdviceObj, thisAdvice, thisAroundObj, thisAround, delay, rate, asMessage, maxCalls];
+		if (once) {
+			if (this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr) >= 0) {
+				return;
+			}
+		}
+		if (precedence == "first") {
+			arr.unshift(ao);
+		} else {
+			arr.push(ao);
+		}
+	}, hasAdvice:function (thisAdviceObj, thisAdvice, adviceType, arr) {
+		if (!arr) {
+			arr = this.getArr(adviceType);
+		}
+		var ind = -1;
+		for (var x = 0; x < arr.length; x++) {
+			var aao = (typeof thisAdvice == "object") ? (new String(thisAdvice)).toString() : thisAdvice;
+			var a1o = (typeof arr[x][1] == "object") ? (new String(arr[x][1])).toString() : arr[x][1];
+			if ((arr[x][0] == thisAdviceObj) && (a1o == aao)) {
+				ind = x;
+			}
+		}
+		return ind;
+	}, removeAdvice:function (thisAdviceObj, thisAdvice, adviceType, once) {
+		var arr = this.getArr(adviceType);
+		var ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);
+		if (ind == -1) {
+			return false;
+		}
+		while (ind != -1) {
+			arr.splice(ind, 1);
+			if (once) {
+				break;
+			}
+			ind = this.hasAdvice(thisAdviceObj, thisAdvice, adviceType, arr);
+		}
+		return true;
+	}});
+}});
+
+
 __CPAN_DIR__ src/dnd
 __CPAN_FILE__ src/dnd/DragAndDrop.js
 /*
@@ -12371,6 +25510,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.func");
 dojo.require("dojo.lang.declare");
@@ -12447,6 +25588,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.TreeDragAndDropV3");
 dojo.require("dojo.dnd.HtmlDragAndDrop");
 dojo.require("dojo.lang.func");
@@ -12654,6 +25797,305 @@
 }});
 
 
+__CPAN_FILE__ src/dnd/HtmlDragManager.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.HtmlDragManager"], ["require", "dojo.dnd.DragAndDrop"], ["require", "dojo.event.*"], ["require", "dojo.lang.array"], ["require", "dojo.html.common"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.HtmlDragManager");
+	dojo.require("dojo.dnd.DragAndDrop");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.html.common");
+	dojo.require("dojo.html.layout");
+	dojo.declare("dojo.dnd.HtmlDragManager", dojo.dnd.DragManager, {disabled:false, nestedTargets:false, mouseDownTimer:null, dsCounter:0, dsPrefix:"dojoDragSource", dropTargetDimensions:[], currentDropTarget:null, previousDropTarget:null, _dragTriggered:false, selectedSources:[], dragObjects:[], dragSources:[], dropTargets:[], currentX:null, currentY:null, lastX:null, lastY:null, mouseDownX:null, mouseDownY:null, threshold:7, dropAcceptable:false, cancelEvent:function (e) {
+		e.stopPropagation();
+		e.preventDefault();
+	}, registerDragSource:function (ds) {
+		if (ds["domNode"]) {
+			var dp = this.dsPrefix;
+			var dpIdx = dp + "Idx_" + (this.dsCounter++);
+			ds.dragSourceId = dpIdx;
+			this.dragSources[dpIdx] = ds;
+			ds.domNode.setAttribute(dp, dpIdx);
+			if (dojo.render.html.ie) {
+				dojo.event.browser.addListener(ds.domNode, "ondragstart", this.cancelEvent);
+			}
+		}
+	}, unregisterDragSource:function (ds) {
+		if (ds["domNode"]) {
+			var dp = this.dsPrefix;
+			var dpIdx = ds.dragSourceId;
+			delete ds.dragSourceId;
+			delete this.dragSources[dpIdx];
+			ds.domNode.setAttribute(dp, null);
+			if (dojo.render.html.ie) {
+				dojo.event.browser.removeListener(ds.domNode, "ondragstart", this.cancelEvent);
+			}
+		}
+	}, registerDropTarget:function (dt) {
+		this.dropTargets.push(dt);
+	}, unregisterDropTarget:function (dt) {
+		var index = dojo.lang.find(this.dropTargets, dt, true);
+		if (index >= 0) {
+			this.dropTargets.splice(index, 1);
+		}
+	}, getDragSource:function (e) {
+		var tn = e.target;
+		if (tn === dojo.body()) {
+			return;
+		}
+		var ta = dojo.html.getAttribute(tn, this.dsPrefix);
+		while ((!ta) && (tn)) {
+			tn = tn.parentNode;
+			if ((!tn) || (tn === dojo.body())) {
+				return;
+			}
+			ta = dojo.html.getAttribute(tn, this.dsPrefix);
+		}
+		return this.dragSources[ta];
+	}, onKeyDown:function (e) {
+	}, onMouseDown:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		if (dojo.render.html.ie) {
+			if (e.button != 1) {
+				return;
+			}
+		} else {
+			if (e.which != 1) {
+				return;
+			}
+		}
+		var target = e.target.nodeType == dojo.html.TEXT_NODE ? e.target.parentNode : e.target;
+		if (dojo.html.isTag(target, "button", "textarea", "input", "select", "option")) {
+			return;
+		}
+		var ds = this.getDragSource(e);
+		if (!ds) {
+			return;
+		}
+		if (!dojo.lang.inArray(this.selectedSources, ds)) {
+			this.selectedSources.push(ds);
+			ds.onSelected();
+		}
+		this.mouseDownX = e.pageX;
+		this.mouseDownY = e.pageY;
+		e.preventDefault();
+		dojo.event.connect(document, "onmousemove", this, "onMouseMove");
+	}, onMouseUp:function (e, cancel) {
+		if (this.selectedSources.length == 0) {
+			return;
+		}
+		this.mouseDownX = null;
+		this.mouseDownY = null;
+		this._dragTriggered = false;
+		e.dragSource = this.dragSource;
+		if ((!e.shiftKey) && (!e.ctrlKey)) {
+			if (this.currentDropTarget) {
+				this.currentDropTarget.onDropStart();
+			}
+			dojo.lang.forEach(this.dragObjects, function (tempDragObj) {
+				var ret = null;
+				if (!tempDragObj) {
+					return;
+				}
+				if (this.currentDropTarget) {
+					e.dragObject = tempDragObj;
+					var ce = this.currentDropTarget.domNode.childNodes;
+					if (ce.length > 0) {
+						e.dropTarget = ce[0];
+						while (e.dropTarget == tempDragObj.domNode) {
+							e.dropTarget = e.dropTarget.nextSibling;
+						}
+					} else {
+						e.dropTarget = this.currentDropTarget.domNode;
+					}
+					if (this.dropAcceptable) {
+						ret = this.currentDropTarget.onDrop(e);
+					} else {
+						this.currentDropTarget.onDragOut(e);
+					}
+				}
+				e.dragStatus = this.dropAcceptable && ret ? "dropSuccess" : "dropFailure";
+				dojo.lang.delayThese([function () {
+					try {
+						tempDragObj.dragSource.onDragEnd(e);
+					}
+					catch (err) {
+						var ecopy = {};
+						for (var i in e) {
+							if (i == "type") {
+								ecopy.type = "mouseup";
+								continue;
+							}
+							ecopy[i] = e[i];
+						}
+						tempDragObj.dragSource.onDragEnd(ecopy);
+					}
+				}, function () {
+					tempDragObj.onDragEnd(e);
+				}]);
+			}, this);
+			this.selectedSources = [];
+			this.dragObjects = [];
+			this.dragSource = null;
+			if (this.currentDropTarget) {
+				this.currentDropTarget.onDropEnd();
+			}
+		} else {
+		}
+		dojo.event.disconnect(document, "onmousemove", this, "onMouseMove");
+		this.currentDropTarget = null;
+	}, onScroll:function () {
+		for (var i = 0; i < this.dragObjects.length; i++) {
+			if (this.dragObjects[i].updateDragOffset) {
+				this.dragObjects[i].updateDragOffset();
+			}
+		}
+		if (this.dragObjects.length) {
+			this.cacheTargetLocations();
+		}
+	}, _dragStartDistance:function (x, y) {
+		if ((!this.mouseDownX) || (!this.mouseDownX)) {
+			return;
+		}
+		var dx = Math.abs(x - this.mouseDownX);
+		var dx2 = dx * dx;
+		var dy = Math.abs(y - this.mouseDownY);
+		var dy2 = dy * dy;
+		return parseInt(Math.sqrt(dx2 + dy2), 10);
+	}, cacheTargetLocations:function () {
+		dojo.profile.start("cacheTargetLocations");
+		this.dropTargetDimensions = [];
+		dojo.lang.forEach(this.dropTargets, function (tempTarget) {
+			var tn = tempTarget.domNode;
+			if (!tn || !tempTarget.accepts([this.dragSource])) {
+				return;
+			}
+			var abs = dojo.html.getAbsolutePosition(tn, true);
+			var bb = dojo.html.getBorderBox(tn);
+			this.dropTargetDimensions.push([[abs.x, abs.y], [abs.x + bb.width, abs.y + bb.height], tempTarget]);
+		}, this);
+		dojo.profile.end("cacheTargetLocations");
+	}, onMouseMove:function (e) {
+		if ((dojo.render.html.ie) && (e.button != 1)) {
+			this.currentDropTarget = null;
+			this.onMouseUp(e, true);
+			return;
+		}
+		if ((this.selectedSources.length) && (!this.dragObjects.length)) {
+			var dx;
+			var dy;
+			if (!this._dragTriggered) {
+				this._dragTriggered = (this._dragStartDistance(e.pageX, e.pageY) > this.threshold);
+				if (!this._dragTriggered) {
+					return;
+				}
+				dx = e.pageX - this.mouseDownX;
+				dy = e.pageY - this.mouseDownY;
+			}
+			this.dragSource = this.selectedSources[0];
+			dojo.lang.forEach(this.selectedSources, function (tempSource) {
+				if (!tempSource) {
+					return;
+				}
+				var tdo = tempSource.onDragStart(e);
+				if (tdo) {
+					tdo.onDragStart(e);
+					tdo.dragOffset.y += dy;
+					tdo.dragOffset.x += dx;
+					tdo.dragSource = tempSource;
+					this.dragObjects.push(tdo);
+				}
+			}, this);
+			this.previousDropTarget = null;
+			this.cacheTargetLocations();
+		}
+		dojo.lang.forEach(this.dragObjects, function (dragObj) {
+			if (dragObj) {
+				dragObj.onDragMove(e);
+			}
+		});
+		if (this.currentDropTarget) {
+			var c = dojo.html.toCoordinateObject(this.currentDropTarget.domNode, true);
+			var dtp = [[c.x, c.y], [c.x + c.width, c.y + c.height]];
+		}
+		if ((!this.nestedTargets) && (dtp) && (this.isInsideBox(e, dtp))) {
+			if (this.dropAcceptable) {
+				this.currentDropTarget.onDragMove(e, this.dragObjects);
+			}
+		} else {
+			var bestBox = this.findBestTarget(e);
+			if (bestBox.target === null) {
+				if (this.currentDropTarget) {
+					this.currentDropTarget.onDragOut(e);
+					this.previousDropTarget = this.currentDropTarget;
+					this.currentDropTarget = null;
+				}
+				this.dropAcceptable = false;
+				return;
+			}
+			if (this.currentDropTarget !== bestBox.target) {
+				if (this.currentDropTarget) {
+					this.previousDropTarget = this.currentDropTarget;
+					this.currentDropTarget.onDragOut(e);
+				}
+				this.currentDropTarget = bestBox.target;
+				e.dragObjects = this.dragObjects;
+				this.dropAcceptable = this.currentDropTarget.onDragOver(e);
+			} else {
+				if (this.dropAcceptable) {
+					this.currentDropTarget.onDragMove(e, this.dragObjects);
+				}
+			}
+		}
+	}, findBestTarget:function (e) {
+		var _this = this;
+		var bestBox = new Object();
+		bestBox.target = null;
+		bestBox.points = null;
+		dojo.lang.every(this.dropTargetDimensions, function (tmpDA) {
+			if (!_this.isInsideBox(e, tmpDA)) {
+				return true;
+			}
+			bestBox.target = tmpDA[2];
+			bestBox.points = tmpDA;
+			return Boolean(_this.nestedTargets);
+		});
+		return bestBox;
+	}, isInsideBox:function (e, coords) {
+		if ((e.pageX > coords[0][0]) && (e.pageX < coords[1][0]) && (e.pageY > coords[0][1]) && (e.pageY < coords[1][1])) {
+			return true;
+		}
+		return false;
+	}, onMouseOver:function (e) {
+	}, onMouseOut:function (e) {
+	}});
+	dojo.dnd.dragManager = new dojo.dnd.HtmlDragManager();
+	(function () {
+		var d = document;
+		var dm = dojo.dnd.dragManager;
+		dojo.event.connect(d, "onkeydown", dm, "onKeyDown");
+		dojo.event.connect(d, "onmouseover", dm, "onMouseOver");
+		dojo.event.connect(d, "onmouseout", dm, "onMouseOut");
+		dojo.event.connect(d, "onmousedown", dm, "onMouseDown");
+		dojo.event.connect(d, "onmouseup", dm, "onMouseUp");
+		dojo.event.connect(window, "onscroll", dm, "onScroll");
+	})();
+}});
+
+
 __CPAN_FILE__ src/dnd/Sortable.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -12665,6 +26107,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.Sortable");
 dojo.require("dojo.dnd.*");
 dojo.dnd.Sortable = function () {
@@ -12678,6 +26122,263 @@
 }});
 
 
+__CPAN_FILE__ src/dnd/TreeDragAndDrop.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.TreeDragAndDrop"], ["require", "dojo.dnd.HtmlDragAndDrop"], ["require", "dojo.lang.func"], ["require", "dojo.lang.array"], ["require", "dojo.lang.extras"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.TreeDragAndDrop");
+	dojo.require("dojo.dnd.HtmlDragAndDrop");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.html.layout");
+	dojo.dnd.TreeDragSource = function (node, syncController, type, treeNode) {
+		this.controller = syncController;
+		this.treeNode = treeNode;
+		dojo.dnd.HtmlDragSource.call(this, node, type);
+	};
+	dojo.inherits(dojo.dnd.TreeDragSource, dojo.dnd.HtmlDragSource);
+	dojo.lang.extend(dojo.dnd.TreeDragSource, {onDragStart:function () {
+		var dragObject = dojo.dnd.HtmlDragSource.prototype.onDragStart.call(this);
+		dragObject.treeNode = this.treeNode;
+		dragObject.onDragStart = dojo.lang.hitch(dragObject, function (e) {
+			this.savedSelectedNode = this.treeNode.tree.selector.selectedNode;
+			if (this.savedSelectedNode) {
+				this.savedSelectedNode.unMarkSelected();
+			}
+			var result = dojo.dnd.HtmlDragObject.prototype.onDragStart.apply(this, arguments);
+			var cloneGrid = this.dragClone.getElementsByTagName("img");
+			for (var i = 0; i < cloneGrid.length; i++) {
+				cloneGrid.item(i).style.backgroundImage = "url()";
+			}
+			return result;
+		});
+		dragObject.onDragEnd = function (e) {
+			if (this.savedSelectedNode) {
+				this.savedSelectedNode.markSelected();
+			}
+			return dojo.dnd.HtmlDragObject.prototype.onDragEnd.apply(this, arguments);
+		};
+		return dragObject;
+	}, onDragEnd:function (e) {
+		var res = dojo.dnd.HtmlDragSource.prototype.onDragEnd.call(this, e);
+		return res;
+	}});
+	dojo.dnd.TreeDropTarget = function (domNode, controller, type, treeNode) {
+		this.treeNode = treeNode;
+		this.controller = controller;
+		dojo.dnd.HtmlDropTarget.apply(this, [domNode, type]);
+	};
+	dojo.inherits(dojo.dnd.TreeDropTarget, dojo.dnd.HtmlDropTarget);
+	dojo.lang.extend(dojo.dnd.TreeDropTarget, {autoExpandDelay:1500, autoExpandTimer:null, position:null, indicatorStyle:"2px black solid", showIndicator:function (position) {
+		if (this.position == position) {
+			return;
+		}
+		this.hideIndicator();
+		this.position = position;
+		if (position == "before") {
+			this.treeNode.labelNode.style.borderTop = this.indicatorStyle;
+		} else {
+			if (position == "after") {
+				this.treeNode.labelNode.style.borderBottom = this.indicatorStyle;
+			} else {
+				if (position == "onto") {
+					this.treeNode.markSelected();
+				}
+			}
+		}
+	}, hideIndicator:function () {
+		this.treeNode.labelNode.style.borderBottom = "";
+		this.treeNode.labelNode.style.borderTop = "";
+		this.treeNode.unMarkSelected();
+		this.position = null;
+	}, onDragOver:function (e) {
+		var accepts = dojo.dnd.HtmlDropTarget.prototype.onDragOver.apply(this, arguments);
+		if (accepts && this.treeNode.isFolder && !this.treeNode.isExpanded) {
+			this.setAutoExpandTimer();
+		}
+		return accepts;
+	}, accepts:function (dragObjects) {
+		var accepts = dojo.dnd.HtmlDropTarget.prototype.accepts.apply(this, arguments);
+		if (!accepts) {
+			return false;
+		}
+		var sourceTreeNode = dragObjects[0].treeNode;
+		if (dojo.lang.isUndefined(sourceTreeNode) || !sourceTreeNode || !sourceTreeNode.isTreeNode) {
+			dojo.raise("Source is not TreeNode or not found");
+		}
+		if (sourceTreeNode === this.treeNode) {
+			return false;
+		}
+		return true;
+	}, setAutoExpandTimer:function () {
+		var _this = this;
+		var autoExpand = function () {
+			if (dojo.dnd.dragManager.currentDropTarget === _this) {
+				_this.controller.expand(_this.treeNode);
+			}
+		};
+		this.autoExpandTimer = dojo.lang.setTimeout(autoExpand, _this.autoExpandDelay);
+	}, getDNDMode:function () {
+		return this.treeNode.tree.DNDMode;
+	}, getAcceptPosition:function (e, sourceTreeNode) {
+		var DNDMode = this.getDNDMode();
+		if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO && !(!this.treeNode.actionIsDisabled(dojo.widget.TreeNode.prototype.actions.ADDCHILD) && sourceTreeNode.parent !== this.treeNode && this.controller.canMove(sourceTreeNode, this.treeNode))) {
+			DNDMode &= ~dojo.widget.Tree.prototype.DNDModes.ONTO;
+		}
+		var position = this.getPosition(e, DNDMode);
+		if (position == "onto" || (!this.isAdjacentNode(sourceTreeNode, position) && this.controller.canMove(sourceTreeNode, this.treeNode.parent))) {
+			return position;
+		} else {
+			return false;
+		}
+	}, onDragOut:function (e) {
+		this.clearAutoExpandTimer();
+		this.hideIndicator();
+	}, clearAutoExpandTimer:function () {
+		if (this.autoExpandTimer) {
+			clearTimeout(this.autoExpandTimer);
+			this.autoExpandTimer = null;
+		}
+	}, onDragMove:function (e, dragObjects) {
+		var sourceTreeNode = dragObjects[0].treeNode;
+		var position = this.getAcceptPosition(e, sourceTreeNode);
+		if (position) {
+			this.showIndicator(position);
+		}
+	}, isAdjacentNode:function (sourceNode, position) {
+		if (sourceNode === this.treeNode) {
+			return true;
+		}
+		if (sourceNode.getNextSibling() === this.treeNode && position == "before") {
+			return true;
+		}
+		if (sourceNode.getPreviousSibling() === this.treeNode && position == "after") {
+			return true;
+		}
+		return false;
+	}, getPosition:function (e, DNDMode) {
+		var node = dojo.byId(this.treeNode.labelNode);
+		var mousey = e.pageY || e.clientY + dojo.body().scrollTop;
+		var nodey = dojo.html.getAbsolutePosition(node).y;
+		var height = dojo.html.getBorderBox(node).height;
+		var relY = mousey - nodey;
+		var p = relY / height;
+		var position = "";
+		if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO && DNDMode & dojo.widget.Tree.prototype.DNDModes.BETWEEN) {
+			if (p <= 0.3) {
+				position = "before";
+			} else {
+				if (p <= 0.7) {
+					position = "onto";
+				} else {
+					position = "after";
+				}
+			}
+		} else {
+			if (DNDMode & dojo.widget.Tree.prototype.DNDModes.BETWEEN) {
+				if (p <= 0.5) {
+					position = "before";
+				} else {
+					position = "after";
+				}
+			} else {
+				if (DNDMode & dojo.widget.Tree.prototype.DNDModes.ONTO) {
+					position = "onto";
+				}
+			}
+		}
+		return position;
+	}, getTargetParentIndex:function (sourceTreeNode, position) {
+		var index = position == "before" ? this.treeNode.getParentIndex() : this.treeNode.getParentIndex() + 1;
+		if (this.treeNode.parent === sourceTreeNode.parent && this.treeNode.getParentIndex() > sourceTreeNode.getParentIndex()) {
+			index--;
+		}
+		return index;
+	}, onDrop:function (e) {
+		var position = this.position;
+		this.onDragOut(e);
+		var sourceTreeNode = e.dragObject.treeNode;
+		if (!dojo.lang.isObject(sourceTreeNode)) {
+			dojo.raise("TreeNode not found in dragObject");
+		}
+		if (position == "onto") {
+			return this.controller.move(sourceTreeNode, this.treeNode, 0);
+		} else {
+			var index = this.getTargetParentIndex(sourceTreeNode, position);
+			return this.controller.move(sourceTreeNode, this.treeNode.parent, index);
+		}
+	}});
+	dojo.dnd.TreeDNDController = function (treeController) {
+		this.treeController = treeController;
+		this.dragSources = {};
+		this.dropTargets = {};
+	};
+	dojo.lang.extend(dojo.dnd.TreeDNDController, {listenTree:function (tree) {
+		dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
+		dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
+		dojo.event.topic.subscribe(tree.eventNames.moveTo, this, "onMoveTo");
+		dojo.event.topic.subscribe(tree.eventNames.addChild, this, "onAddChild");
+		dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");
+		dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+	}, unlistenTree:function (tree) {
+		dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
+		dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
+		dojo.event.topic.unsubscribe(tree.eventNames.moveTo, this, "onMoveTo");
+		dojo.event.topic.unsubscribe(tree.eventNames.addChild, this, "onAddChild");
+		dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");
+		dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+	}, onTreeDestroy:function (message) {
+		this.unlistenTree(message.source);
+	}, onCreateDOMNode:function (message) {
+		this.registerDNDNode(message.source);
+	}, onAddChild:function (message) {
+		this.registerDNDNode(message.child);
+	}, onMoveFrom:function (message) {
+		var _this = this;
+		dojo.lang.forEach(message.child.getDescendants(), function (node) {
+			_this.unregisterDNDNode(node);
+		});
+	}, onMoveTo:function (message) {
+		var _this = this;
+		dojo.lang.forEach(message.child.getDescendants(), function (node) {
+			_this.registerDNDNode(node);
+		});
+	}, registerDNDNode:function (node) {
+		if (!node.tree.DNDMode) {
+			return;
+		}
+		var source = null;
+		var target = null;
+		if (!node.actionIsDisabled(node.actions.MOVE)) {
+			var source = new dojo.dnd.TreeDragSource(node.labelNode, this, node.tree.widgetId, node);
+			this.dragSources[node.widgetId] = source;
+		}
+		var target = new dojo.dnd.TreeDropTarget(node.labelNode, this.treeController, node.tree.DNDAcceptTypes, node);
+		this.dropTargets[node.widgetId] = target;
+	}, unregisterDNDNode:function (node) {
+		if (this.dragSources[node.widgetId]) {
+			dojo.dnd.dragManager.unregisterDragSource(this.dragSources[node.widgetId]);
+			delete this.dragSources[node.widgetId];
+		}
+		if (this.dropTargets[node.widgetId]) {
+			dojo.dnd.dragManager.unregisterDropTarget(this.dropTargets[node.widgetId]);
+			delete this.dropTargets[node.widgetId];
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/dnd/HtmlDragManager.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -12689,6 +26390,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.HtmlDragManager");
 dojo.require("dojo.dnd.DragAndDrop");
 dojo.require("dojo.event.*");
@@ -12973,6 +26676,459 @@
 })();
 
 
+__CPAN_FILE__ src/dnd/HtmlDragAndDrop.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.HtmlDragAndDrop"], ["require", "dojo.dnd.HtmlDragManager"], ["require", "dojo.dnd.DragAndDrop"], ["require", "dojo.html.*"], ["require", "dojo.html.display"], ["require", "dojo.html.util"], ["require", "dojo.html.selection"], ["require", "dojo.html.iframe"], ["require", "dojo.lang.extras"], ["require", "dojo.lfx.*"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.HtmlDragAndDrop");
+	dojo.require("dojo.dnd.HtmlDragManager");
+	dojo.require("dojo.dnd.DragAndDrop");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.util");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.html.iframe");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.event.*");
+	dojo.declare("dojo.dnd.HtmlDragSource", dojo.dnd.DragSource, {dragClass:"", onDragStart:function () {
+		var dragObj = new dojo.dnd.HtmlDragObject(this.dragObject, this.type);
+		if (this.dragClass) {
+			dragObj.dragClass = this.dragClass;
+		}
+		if (this.constrainToContainer) {
+			dragObj.constrainTo(this.constrainingContainer || this.domNode.parentNode);
+		}
+		return dragObj;
+	}, setDragHandle:function (node) {
+		node = dojo.byId(node);
+		dojo.dnd.dragManager.unregisterDragSource(this);
+		this.domNode = node;
+		dojo.dnd.dragManager.registerDragSource(this);
+	}, setDragTarget:function (node) {
+		this.dragObject = node;
+	}, constrainTo:function (container) {
+		this.constrainToContainer = true;
+		if (container) {
+			this.constrainingContainer = container;
+		}
+	}, onSelected:function () {
+		for (var i = 0; i < this.dragObjects.length; i++) {
+			dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragSource(this.dragObjects[i]));
+		}
+	}, addDragObjects:function (el) {
+		for (var i = 0; i < arguments.length; i++) {
+			this.dragObjects.push(dojo.byId(arguments[i]));
+		}
+	}}, function (node, type) {
+		node = dojo.byId(node);
+		this.dragObjects = [];
+		this.constrainToContainer = false;
+		if (node) {
+			this.domNode = node;
+			this.dragObject = node;
+			this.type = (type) || (this.domNode.nodeName.toLowerCase());
+			dojo.dnd.DragSource.prototype.reregister.call(this);
+		}
+	});
+	dojo.declare("dojo.dnd.HtmlDragObject", dojo.dnd.DragObject, {dragClass:"", opacity:0.5, createIframe:true, disableX:false, disableY:false, createDragNode:function () {
+		var node = this.domNode.cloneNode(true);
+		if (this.dragClass) {
+			dojo.html.addClass(node, this.dragClass);
+		}
+		if (this.opacity < 1) {
+			dojo.html.setOpacity(node, this.opacity);
+		}
+		var ltn = node.tagName.toLowerCase();
+		var isTr = (ltn == "tr");
+		if ((isTr) || (ltn == "tbody")) {
+			var doc = this.domNode.ownerDocument;
+			var table = doc.createElement("table");
+			if (isTr) {
+				var tbody = doc.createElement("tbody");
+				table.appendChild(tbody);
+				tbody.appendChild(node);
+			} else {
+				table.appendChild(node);
+			}
+			var tmpSrcTr = ((isTr) ? this.domNode : this.domNode.firstChild);
+			var tmpDstTr = ((isTr) ? node : node.firstChild);
+			var domTds = tmpSrcTr.childNodes;
+			var cloneTds = tmpDstTr.childNodes;
+			for (var i = 0; i < domTds.length; i++) {
+				if ((cloneTds[i]) && (cloneTds[i].style)) {
+					cloneTds[i].style.width = dojo.html.getContentBox(domTds[i]).width + "px";
+				}
+			}
+			node = table;
+		}
+		if ((dojo.render.html.ie55 || dojo.render.html.ie60) && this.createIframe) {
+			with (node.style) {
+				top = "0px";
+				left = "0px";
+			}
+			var outer = document.createElement("div");
+			outer.appendChild(node);
+			this.bgIframe = new dojo.html.BackgroundIframe(outer);
+			outer.appendChild(this.bgIframe.iframe);
+			node = outer;
+		}
+		node.style.zIndex = 999;
+		return node;
+	}, onDragStart:function (e) {
+		dojo.html.clearSelection();
+		this.scrollOffset = dojo.html.getScroll().offset;
+		this.dragStartPosition = dojo.html.getAbsolutePosition(this.domNode, true);
+		this.dragOffset = {y:this.dragStartPosition.y - e.pageY, x:this.dragStartPosition.x - e.pageX};
+		this.dragClone = this.createDragNode();
+		this.containingBlockPosition = this.domNode.offsetParent ? dojo.html.getAbsolutePosition(this.domNode.offsetParent, true) : {x:0, y:0};
+		if (this.constrainToContainer) {
+			this.constraints = this.getConstraints();
+		}
+		with (this.dragClone.style) {
+			position = "absolute";
+			top = this.dragOffset.y + e.pageY + "px";
+			left = this.dragOffset.x + e.pageX + "px";
+		}
+		dojo.body().appendChild(this.dragClone);
+		dojo.event.topic.publish("dragStart", {source:this});
+	}, getConstraints:function () {
+		if (this.constrainingContainer.nodeName.toLowerCase() == "body") {
+			var viewport = dojo.html.getViewport();
+			var width = viewport.width;
+			var height = viewport.height;
+			var scroll = dojo.html.getScroll().offset;
+			var x = scroll.x;
+			var y = scroll.y;
+		} else {
+			var content = dojo.html.getContentBox(this.constrainingContainer);
+			width = content.width;
+			height = content.height;
+			x = this.containingBlockPosition.x + dojo.html.getPixelValue(this.constrainingContainer, "padding-left", true) + dojo.html.getBorderExtent(this.constrainingContainer, "left");
+			y = this.containingBlockPosition.y + dojo.html.getPixelValue(this.constrainingContainer, "padding-top", true) + dojo.html.getBorderExtent(this.constrainingContainer, "top");
+		}
+		var mb = dojo.html.getMarginBox(this.domNode);
+		return {minX:x, minY:y, maxX:x + width - mb.width, maxY:y + height - mb.height};
+	}, updateDragOffset:function () {
+		var scroll = dojo.html.getScroll().offset;
+		if (scroll.y != this.scrollOffset.y) {
+			var diff = scroll.y - this.scrollOffset.y;
+			this.dragOffset.y += diff;
+			this.scrollOffset.y = scroll.y;
+		}
+		if (scroll.x != this.scrollOffset.x) {
+			var diff = scroll.x - this.scrollOffset.x;
+			this.dragOffset.x += diff;
+			this.scrollOffset.x = scroll.x;
+		}
+	}, onDragMove:function (e) {
+		this.updateDragOffset();
+		var x = this.dragOffset.x + e.pageX;
+		var y = this.dragOffset.y + e.pageY;
+		if (this.constrainToContainer) {
+			if (x < this.constraints.minX) {
+				x = this.constraints.minX;
+			}
+			if (y < this.constraints.minY) {
+				y = this.constraints.minY;
+			}
+			if (x > this.constraints.maxX) {
+				x = this.constraints.maxX;
+			}
+			if (y > this.constraints.maxY) {
+				y = this.constraints.maxY;
+			}
+		}
+		this.setAbsolutePosition(x, y);
+		dojo.event.topic.publish("dragMove", {source:this});
+	}, setAbsolutePosition:function (x, y) {
+		if (!this.disableY) {
+			this.dragClone.style.top = y + "px";
+		}
+		if (!this.disableX) {
+			this.dragClone.style.left = x + "px";
+		}
+	}, onDragEnd:function (e) {
+		switch (e.dragStatus) {
+		  case "dropSuccess":
+			dojo.html.removeNode(this.dragClone);
+			this.dragClone = null;
+			break;
+		  case "dropFailure":
+			var startCoords = dojo.html.getAbsolutePosition(this.dragClone, true);
+			var endCoords = {left:this.dragStartPosition.x + 1, top:this.dragStartPosition.y + 1};
+			var anim = dojo.lfx.slideTo(this.dragClone, endCoords, 300);
+			var dragObject = this;
+			dojo.event.connect(anim, "onEnd", function (e) {
+				dojo.html.removeNode(dragObject.dragClone);
+				dragObject.dragClone = null;
+			});
+			anim.play();
+			break;
+		}
+		dojo.event.topic.publish("dragEnd", {source:this});
+	}, constrainTo:function (container) {
+		this.constrainToContainer = true;
+		if (container) {
+			this.constrainingContainer = container;
+		} else {
+			this.constrainingContainer = this.domNode.parentNode;
+		}
+	}}, function (node, type) {
+		this.domNode = dojo.byId(node);
+		this.type = type;
+		this.constrainToContainer = false;
+		this.dragSource = null;
+		dojo.dnd.DragObject.prototype.register.call(this);
+	});
+	dojo.declare("dojo.dnd.HtmlDropTarget", dojo.dnd.DropTarget, {vertical:false, onDragOver:function (e) {
+		if (!this.accepts(e.dragObjects)) {
+			return false;
+		}
+		this.childBoxes = [];
+		for (var i = 0, child; i < this.domNode.childNodes.length; i++) {
+			child = this.domNode.childNodes[i];
+			if (child.nodeType != dojo.html.ELEMENT_NODE) {
+				continue;
+			}
+			var pos = dojo.html.getAbsolutePosition(child, true);
+			var inner = dojo.html.getBorderBox(child);
+			this.childBoxes.push({top:pos.y, bottom:pos.y + inner.height, left:pos.x, right:pos.x + inner.width, height:inner.height, width:inner.width, node:child});
+		}
+		return true;
+	}, _getNodeUnderMouse:function (e) {
+		for (var i = 0, child; i < this.childBoxes.length; i++) {
+			with (this.childBoxes[i]) {
+				if (e.pageX >= left && e.pageX <= right && e.pageY >= top && e.pageY <= bottom) {
+					return i;
+				}
+			}
+		}
+		return -1;
+	}, createDropIndicator:function () {
+		this.dropIndicator = document.createElement("div");
+		with (this.dropIndicator.style) {
+			position = "absolute";
+			zIndex = 999;
+			if (this.vertical) {
+				borderLeftWidth = "1px";
+				borderLeftColor = "black";
+				borderLeftStyle = "solid";
+				height = dojo.html.getBorderBox(this.domNode).height + "px";
+				top = dojo.html.getAbsolutePosition(this.domNode, true).y + "px";
+			} else {
+				borderTopWidth = "1px";
+				borderTopColor = "black";
+				borderTopStyle = "solid";
+				width = dojo.html.getBorderBox(this.domNode).width + "px";
+				left = dojo.html.getAbsolutePosition(this.domNode, true).x + "px";
+			}
+		}
+	}, onDragMove:function (e, dragObjects) {
+		var i = this._getNodeUnderMouse(e);
+		if (!this.dropIndicator) {
+			this.createDropIndicator();
+		}
+		var gravity = this.vertical ? dojo.html.gravity.WEST : dojo.html.gravity.NORTH;
+		var hide = false;
+		if (i < 0) {
+			if (this.childBoxes.length) {
+				var before = (dojo.html.gravity(this.childBoxes[0].node, e) & gravity);
+				if (before) {
+					hide = true;
+				}
+			} else {
+				var before = true;
+			}
+		} else {
+			var child = this.childBoxes[i];
+			var before = (dojo.html.gravity(child.node, e) & gravity);
+			if (child.node === dragObjects[0].dragSource.domNode) {
+				hide = true;
+			} else {
+				var currentPosChild = before ? (i > 0 ? this.childBoxes[i - 1] : child) : (i < this.childBoxes.length - 1 ? this.childBoxes[i + 1] : child);
+				if (currentPosChild.node === dragObjects[0].dragSource.domNode) {
+					hide = true;
+				}
+			}
+		}
+		if (hide) {
+			this.dropIndicator.style.display = "none";
+			return;
+		} else {
+			this.dropIndicator.style.display = "";
+		}
+		this.placeIndicator(e, dragObjects, i, before);
+		if (!dojo.html.hasParent(this.dropIndicator)) {
+			dojo.body().appendChild(this.dropIndicator);
+		}
+	}, placeIndicator:function (e, dragObjects, boxIndex, before) {
+		var targetProperty = this.vertical ? "left" : "top";
+		var child;
+		if (boxIndex < 0) {
+			if (this.childBoxes.length) {
+				child = before ? this.childBoxes[0] : this.childBoxes[this.childBoxes.length - 1];
+			} else {
+				this.dropIndicator.style[targetProperty] = dojo.html.getAbsolutePosition(this.domNode, true)[this.vertical ? "x" : "y"] + "px";
+			}
+		} else {
+			child = this.childBoxes[boxIndex];
+		}
+		if (child) {
+			this.dropIndicator.style[targetProperty] = (before ? child[targetProperty] : child[this.vertical ? "right" : "bottom"]) + "px";
+			if (this.vertical) {
+				this.dropIndicator.style.height = child.height + "px";
+				this.dropIndicator.style.top = child.top + "px";
+			} else {
+				this.dropIndicator.style.width = child.width + "px";
+				this.dropIndicator.style.left = child.left + "px";
+			}
+		}
+	}, onDragOut:function (e) {
+		if (this.dropIndicator) {
+			dojo.html.removeNode(this.dropIndicator);
+			delete this.dropIndicator;
+		}
+	}, onDrop:function (e) {
+		this.onDragOut(e);
+		var i = this._getNodeUnderMouse(e);
+		var gravity = this.vertical ? dojo.html.gravity.WEST : dojo.html.gravity.NORTH;
+		if (i < 0) {
+			if (this.childBoxes.length) {
+				if (dojo.html.gravity(this.childBoxes[0].node, e) & gravity) {
+					return this.insert(e, this.childBoxes[0].node, "before");
+				} else {
+					return this.insert(e, this.childBoxes[this.childBoxes.length - 1].node, "after");
+				}
+			}
+			return this.insert(e, this.domNode, "append");
+		}
+		var child = this.childBoxes[i];
+		if (dojo.html.gravity(child.node, e) & gravity) {
+			return this.insert(e, child.node, "before");
+		} else {
+			return this.insert(e, child.node, "after");
+		}
+	}, insert:function (e, refNode, position) {
+		var node = e.dragObject.domNode;
+		if (position == "before") {
+			return dojo.html.insertBefore(node, refNode);
+		} else {
+			if (position == "after") {
+				return dojo.html.insertAfter(node, refNode);
+			} else {
+				if (position == "append") {
+					refNode.appendChild(node);
+					return true;
+				}
+			}
+		}
+		return false;
+	}}, function (node, types) {
+		if (arguments.length == 0) {
+			return;
+		}
+		this.domNode = dojo.byId(node);
+		dojo.dnd.DropTarget.call(this);
+		if (types && dojo.lang.isString(types)) {
+			types = [types];
+		}
+		this.acceptedTypes = types || [];
+		dojo.dnd.dragManager.registerDropTarget(this);
+	});
+}});
+
+
+__CPAN_FILE__ src/dnd/DragAndDrop.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.lang.common"], ["require", "dojo.lang.func"], ["require", "dojo.lang.declare"], ["provide", "dojo.dnd.DragAndDrop"], ["require", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.declare");
+	dojo.provide("dojo.dnd.DragAndDrop");
+	dojo.declare("dojo.dnd.DragSource", null, {type:"", onDragEnd:function (evt) {
+	}, onDragStart:function (evt) {
+	}, onSelected:function (evt) {
+	}, unregister:function () {
+		dojo.dnd.dragManager.unregisterDragSource(this);
+	}, reregister:function () {
+		dojo.dnd.dragManager.registerDragSource(this);
+	}});
+	dojo.declare("dojo.dnd.DragObject", null, {type:"", register:function () {
+		var dm = dojo.dnd.dragManager;
+		if (dm["registerDragObject"]) {
+			dm.registerDragObject(this);
+		}
+	}, onDragStart:function (evt) {
+	}, onDragMove:function (evt) {
+	}, onDragOver:function (evt) {
+	}, onDragOut:function (evt) {
+	}, onDragEnd:function (evt) {
+	}, onDragLeave:dojo.lang.forward("onDragOut"), onDragEnter:dojo.lang.forward("onDragOver"), ondragout:dojo.lang.forward("onDragOut"), ondragover:dojo.lang.forward("onDragOver")});
+	dojo.declare("dojo.dnd.DropTarget", null, {acceptsType:function (type) {
+		if (!dojo.lang.inArray(this.acceptedTypes, "*")) {
+			if (!dojo.lang.inArray(this.acceptedTypes, type)) {
+				return false;
+			}
+		}
+		return true;
+	}, accepts:function (dragObjects) {
+		if (!dojo.lang.inArray(this.acceptedTypes, "*")) {
+			for (var i = 0; i < dragObjects.length; i++) {
+				if (!dojo.lang.inArray(this.acceptedTypes, dragObjects[i].type)) {
+					return false;
+				}
+			}
+		}
+		return true;
+	}, unregister:function () {
+		dojo.dnd.dragManager.unregisterDropTarget(this);
+	}, onDragOver:function (evt) {
+	}, onDragOut:function (evt) {
+	}, onDragMove:function (evt) {
+	}, onDropStart:function (evt) {
+	}, onDrop:function (evt) {
+	}, onDropEnd:function () {
+	}}, function () {
+		this.acceptedTypes = [];
+	});
+	dojo.dnd.DragEvent = function () {
+		this.dragSource = null;
+		this.dragObject = null;
+		this.target = null;
+		this.eventStatus = "success";
+	};
+	dojo.declare("dojo.dnd.DragManager", null, {selectedSources:[], dragObjects:[], dragSources:[], registerDragSource:function (source) {
+	}, dropTargets:[], registerDropTarget:function (target) {
+	}, lastDragTarget:null, currentDragTarget:null, onKeyDown:function () {
+	}, onMouseOut:function () {
+	}, onMouseMove:function () {
+	}, onMouseUp:function () {
+	}});
+}});
+
+
 __CPAN_FILE__ src/dnd/HtmlDragCopy.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -12984,6 +27140,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.HtmlDragCopy");
 dojo.require("dojo.dnd.*");
 dojo.declare("dojo.dnd.HtmlDragCopySource", dojo.dnd.HtmlDragSource, function (node, type, copyOnce) {
@@ -13043,6 +27201,228 @@
 }});
 
 
+__CPAN_FILE__ src/dnd/TreeDragAndDropV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.TreeDragAndDropV3"], ["require", "dojo.dnd.HtmlDragAndDrop"], ["require", "dojo.lang.func"], ["require", "dojo.lang.array"], ["require", "dojo.lang.extras"], ["require", "dojo.Deferred"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.TreeDragAndDropV3");
+	dojo.require("dojo.dnd.HtmlDragAndDrop");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.Deferred");
+	dojo.require("dojo.html.layout");
+	dojo.dnd.TreeDragSourceV3 = function (node, syncController, type, treeNode) {
+		this.controller = syncController;
+		this.treeNode = treeNode;
+		dojo.dnd.HtmlDragSource.call(this, node, type);
+	};
+	dojo.inherits(dojo.dnd.TreeDragSourceV3, dojo.dnd.HtmlDragSource);
+	dojo.dnd.TreeDropTargetV3 = function (domNode, controller, type, treeNode) {
+		this.treeNode = treeNode;
+		this.controller = controller;
+		dojo.dnd.HtmlDropTarget.call(this, domNode, type);
+	};
+	dojo.inherits(dojo.dnd.TreeDropTargetV3, dojo.dnd.HtmlDropTarget);
+	dojo.lang.extend(dojo.dnd.TreeDropTargetV3, {autoExpandDelay:1500, autoExpandTimer:null, position:null, indicatorStyle:"2px black groove", showIndicator:function (position) {
+		if (this.position == position) {
+			return;
+		}
+		this.hideIndicator();
+		this.position = position;
+		var node = this.treeNode;
+		node.contentNode.style.width = dojo.html.getBorderBox(node.labelNode).width + "px";
+		if (position == "onto") {
+			node.contentNode.style.border = this.indicatorStyle;
+		} else {
+			if (position == "before") {
+				node.contentNode.style.borderTop = this.indicatorStyle;
+			} else {
+				if (position == "after") {
+					node.contentNode.style.borderBottom = this.indicatorStyle;
+				}
+			}
+		}
+	}, hideIndicator:function () {
+		this.treeNode.contentNode.style.borderBottom = "";
+		this.treeNode.contentNode.style.borderTop = "";
+		this.treeNode.contentNode.style.border = "";
+		this.treeNode.contentNode.style.width = "";
+		this.position = null;
+	}, onDragOver:function (e) {
+		var accepts = dojo.dnd.HtmlDropTarget.prototype.onDragOver.apply(this, arguments);
+		if (accepts && this.treeNode.isFolder && !this.treeNode.isExpanded) {
+			this.setAutoExpandTimer();
+		}
+		if (accepts) {
+			this.cacheNodeCoords();
+		}
+		return accepts;
+	}, accepts:function (dragObjects) {
+		var accepts = dojo.dnd.HtmlDropTarget.prototype.accepts.apply(this, arguments);
+		if (!accepts) {
+			return false;
+		}
+		for (var i = 0; i < dragObjects.length; i++) {
+			var sourceTreeNode = dragObjects[i].treeNode;
+			if (sourceTreeNode === this.treeNode) {
+				return false;
+			}
+		}
+		return true;
+	}, setAutoExpandTimer:function () {
+		var _this = this;
+		var autoExpand = function () {
+			if (dojo.dnd.dragManager.currentDropTarget === _this) {
+				_this.controller.expand(_this.treeNode);
+				dojo.dnd.dragManager.cacheTargetLocations();
+			}
+		};
+		this.autoExpandTimer = dojo.lang.setTimeout(autoExpand, _this.autoExpandDelay);
+	}, getAcceptPosition:function (e, dragObjects) {
+		var DndMode = this.treeNode.tree.DndMode;
+		if (DndMode & dojo.widget.TreeV3.prototype.DndModes.ONTO && this.treeNode.actionIsDisabledNow(this.treeNode.actions.ADDCHILD)) {
+			DndMode &= ~dojo.widget.TreeV3.prototype.DndModes.ONTO;
+		}
+		var position = this.getPosition(e, DndMode);
+		if (position == "onto") {
+			return position;
+		}
+		for (var i = 0; i < dragObjects.length; i++) {
+			var source = dragObjects[i].dragSource;
+			if (source.treeNode && this.isAdjacentNode(source.treeNode, position)) {
+				continue;
+			}
+			if (!this.controller.canMove(source.treeNode ? source.treeNode : source, this.treeNode.parent)) {
+				return false;
+			}
+		}
+		return position;
+	}, onDropEnd:function (e) {
+		this.clearAutoExpandTimer();
+		this.hideIndicator();
+	}, onDragOut:function (e) {
+		this.clearAutoExpandTimer();
+		this.hideIndicator();
+	}, clearAutoExpandTimer:function () {
+		if (this.autoExpandTimer) {
+			clearTimeout(this.autoExpandTimer);
+			this.autoExpandTimer = null;
+		}
+	}, onDragMove:function (e, dragObjects) {
+		var position = this.getAcceptPosition(e, dragObjects);
+		if (position) {
+			this.showIndicator(position);
+		}
+	}, isAdjacentNode:function (sourceNode, position) {
+		if (sourceNode === this.treeNode) {
+			return true;
+		}
+		if (sourceNode.getNextSibling() === this.treeNode && position == "before") {
+			return true;
+		}
+		if (sourceNode.getPreviousSibling() === this.treeNode && position == "after") {
+			return true;
+		}
+		return false;
+	}, cacheNodeCoords:function () {
+		var node = this.treeNode.contentNode;
+		this.cachedNodeY = dojo.html.getAbsolutePosition(node).y;
+		this.cachedNodeHeight = dojo.html.getBorderBox(node).height;
+	}, getPosition:function (e, DndMode) {
+		var mousey = e.pageY || e.clientY + dojo.body().scrollTop;
+		var relY = mousey - this.cachedNodeY;
+		var p = relY / this.cachedNodeHeight;
+		var position = "";
+		if (DndMode & dojo.widget.TreeV3.prototype.DndModes.ONTO && DndMode & dojo.widget.TreeV3.prototype.DndModes.BETWEEN) {
+			if (p <= 0.33) {
+				position = "before";
+			} else {
+				if (p <= 0.66 || this.treeNode.isExpanded && this.treeNode.children.length && !this.treeNode.isLastChild()) {
+					position = "onto";
+				} else {
+					position = "after";
+				}
+			}
+		} else {
+			if (DndMode & dojo.widget.TreeV3.prototype.DndModes.BETWEEN) {
+				if (p <= 0.5 || this.treeNode.isExpanded && this.treeNode.children.length && !this.treeNode.isLastChild()) {
+					position = "before";
+				} else {
+					position = "after";
+				}
+			} else {
+				if (DndMode & dojo.widget.TreeV3.prototype.DndModes.ONTO) {
+					position = "onto";
+				}
+			}
+		}
+		return position;
+	}, getTargetParentIndex:function (source, position) {
+		var index = position == "before" ? this.treeNode.getParentIndex() : this.treeNode.getParentIndex() + 1;
+		if (source.treeNode && this.treeNode.parent === source.treeNode.parent && this.treeNode.getParentIndex() > source.treeNode.getParentIndex()) {
+			index--;
+		}
+		return index;
+	}, onDrop:function (e) {
+		var position = this.position;
+		var source = e.dragObject.dragSource;
+		var targetParent, targetIndex;
+		if (position == "onto") {
+			targetParent = this.treeNode;
+			targetIndex = 0;
+		} else {
+			targetIndex = this.getTargetParentIndex(source, position);
+			targetParent = this.treeNode.parent;
+		}
+		var r = this.getDropHandler(e, source, targetParent, targetIndex)();
+		return r;
+	}, getDropHandler:function (e, source, targetParent, targetIndex) {
+		var handler;
+		var _this = this;
+		handler = function () {
+			var result;
+			if (source.treeNode) {
+				result = _this.controller.move(source.treeNode, targetParent, targetIndex, true);
+			} else {
+				if (dojo.lang.isFunction(source.onDrop)) {
+					source.onDrop(targetParent, targetIndex);
+				}
+				var treeNode = source.getTreeNode();
+				if (treeNode) {
+					result = _this.controller.createChild(targetParent, targetIndex, treeNode, true);
+				} else {
+					result = true;
+				}
+			}
+			if (result instanceof dojo.Deferred) {
+				var isSuccess = result.fired == 0;
+				if (!isSuccess) {
+					_this.handleDropError(source, targetParent, targetIndex, result);
+				}
+				return isSuccess;
+			} else {
+				return result;
+			}
+		};
+		return handler;
+	}, handleDropError:function (source, parent, index, result) {
+		dojo.debug("TreeDropTargetV3.handleDropError: DND error occured");
+		dojo.debugShallow(result);
+	}});
+}});
+
+
 __CPAN_FILE__ src/dnd/HtmlDragMove.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13054,6 +27434,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.HtmlDragMove");
 dojo.require("dojo.dnd.*");
 dojo.declare("dojo.dnd.HtmlDragMoveSource", dojo.dnd.HtmlDragSource, {onDragStart:function () {
@@ -13108,10 +27490,70 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.dnd.DragAndDrop"], browser:["dojo.dnd.HtmlDragAndDrop"], dashboard:["dojo.dnd.HtmlDragAndDrop"]});
 dojo.provide("dojo.dnd.*");
 
 
+__CPAN_FILE__ src/dnd/HtmlDragMove.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.HtmlDragMove"], ["require", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.HtmlDragMove");
+	dojo.require("dojo.dnd.*");
+	dojo.declare("dojo.dnd.HtmlDragMoveSource", dojo.dnd.HtmlDragSource, {onDragStart:function () {
+		var dragObj = new dojo.dnd.HtmlDragMoveObject(this.dragObject, this.type);
+		if (this.constrainToContainer) {
+			dragObj.constrainTo(this.constrainingContainer);
+		}
+		return dragObj;
+	}, onSelected:function () {
+		for (var i = 0; i < this.dragObjects.length; i++) {
+			dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragMoveSource(this.dragObjects[i]));
+		}
+	}});
+	dojo.declare("dojo.dnd.HtmlDragMoveObject", dojo.dnd.HtmlDragObject, {onDragStart:function (e) {
+		dojo.html.clearSelection();
+		this.dragClone = this.domNode;
+		if (dojo.html.getComputedStyle(this.domNode, "position") != "absolute") {
+			this.domNode.style.position = "relative";
+		}
+		var left = parseInt(dojo.html.getComputedStyle(this.domNode, "left"));
+		var top = parseInt(dojo.html.getComputedStyle(this.domNode, "top"));
+		this.dragStartPosition = {x:isNaN(left) ? 0 : left, y:isNaN(top) ? 0 : top};
+		this.scrollOffset = dojo.html.getScroll().offset;
+		this.dragOffset = {y:this.dragStartPosition.y - e.pageY, x:this.dragStartPosition.x - e.pageX};
+		this.containingBlockPosition = {x:0, y:0};
+		if (this.constrainToContainer) {
+			this.constraints = this.getConstraints();
+		}
+		dojo.event.connect(this.domNode, "onclick", this, "_squelchOnClick");
+	}, onDragEnd:function (e) {
+	}, setAbsolutePosition:function (x, y) {
+		if (!this.disableY) {
+			this.domNode.style.top = y + "px";
+		}
+		if (!this.disableX) {
+			this.domNode.style.left = x + "px";
+		}
+	}, _squelchOnClick:function (e) {
+		dojo.event.browser.stopEvent(e);
+		dojo.event.disconnect(this.domNode, "onclick", this, "_squelchOnClick");
+	}});
+}});
+
+
 __CPAN_FILE__ src/dnd/HtmlDragAndDrop.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13123,6 +27565,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.HtmlDragAndDrop");
 dojo.require("dojo.dnd.HtmlDragManager");
 dojo.require("dojo.dnd.DragAndDrop");
@@ -13481,6 +27925,127 @@
 });
 
 
+__CPAN_FILE__ src/dnd/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.dnd.DragAndDrop"], browser:["dojo.dnd.HtmlDragAndDrop"], dashboard:["dojo.dnd.HtmlDragAndDrop"]}], ["provide", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.dnd.DragAndDrop"], browser:["dojo.dnd.HtmlDragAndDrop"], dashboard:["dojo.dnd.HtmlDragAndDrop"]});
+	dojo.provide("dojo.dnd.*");
+}});
+
+
+__CPAN_FILE__ src/dnd/HtmlDragCopy.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.HtmlDragCopy"], ["require", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.HtmlDragCopy");
+	dojo.require("dojo.dnd.*");
+	dojo.declare("dojo.dnd.HtmlDragCopySource", dojo.dnd.HtmlDragSource, function (node, type, copyOnce) {
+		this.copyOnce = copyOnce;
+		this.makeCopy = true;
+	}, {onDragStart:function () {
+		var dragObj = new dojo.dnd.HtmlDragCopyObject(this.dragObject, this.type, this);
+		if (this.dragClass) {
+			dragObj.dragClass = this.dragClass;
+		}
+		if (this.constrainToContainer) {
+			dragObj.constrainTo(this.constrainingContainer || this.domNode.parentNode);
+		}
+		return dragObj;
+	}, onSelected:function () {
+		for (var i = 0; i < this.dragObjects.length; i++) {
+			dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragCopySource(this.dragObjects[i]));
+		}
+	}});
+	dojo.declare("dojo.dnd.HtmlDragCopyObject", dojo.dnd.HtmlDragObject, function (dragObject, type, source) {
+		this.copySource = source;
+	}, {onDragStart:function (e) {
+		dojo.dnd.HtmlDragCopyObject.superclass.onDragStart.apply(this, arguments);
+		if (this.copySource.makeCopy) {
+			this.sourceNode = this.domNode;
+			this.domNode = this.domNode.cloneNode(true);
+		}
+	}, onDragEnd:function (e) {
+		switch (e.dragStatus) {
+		  case "dropFailure":
+			var startCoords = dojo.html.getAbsolutePosition(this.dragClone, true);
+			var endCoords = {left:this.dragStartPosition.x + 1, top:this.dragStartPosition.y + 1};
+			var anim = dojo.lfx.slideTo(this.dragClone, endCoords, 500, dojo.lfx.easeOut);
+			var dragObject = this;
+			dojo.event.connect(anim, "onEnd", function (e) {
+				dojo.lang.setTimeout(function () {
+					dojo.html.removeNode(dragObject.dragClone);
+					dragObject.dragClone = null;
+					if (dragObject.copySource.makeCopy) {
+						dojo.html.removeNode(dragObject.domNode);
+						dragObject.domNode = dragObject.sourceNode;
+						dragObject.sourceNode = null;
+					}
+				}, 200);
+			});
+			anim.play();
+			dojo.event.topic.publish("dragEnd", {source:this});
+			return;
+		}
+		dojo.dnd.HtmlDragCopyObject.superclass.onDragEnd.apply(this, arguments);
+		this.copySource.dragObject = this.domNode;
+		if (this.copySource.copyOnce) {
+			this.copySource.makeCopy = false;
+		}
+		new dojo.dnd.HtmlDragCopySource(this.sourceNode, this.type, this.copySource.copyOnce);
+		this.sourceNode = null;
+	}});
+}});
+
+
+__CPAN_FILE__ src/dnd/Sortable.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.dnd.Sortable"], ["require", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.dnd.Sortable");
+	dojo.require("dojo.dnd.*");
+	dojo.dnd.Sortable = function () {
+	};
+	dojo.lang.extend(dojo.dnd.Sortable, {ondragstart:function (e) {
+		var dragObject = e.target;
+		while (dragObject.parentNode && dragObject.parentNode != this) {
+			dragObject = dragObject.parentNode;
+		}
+		return dragObject;
+	}});
+}});
+
+
 __CPAN_FILE__ src/dnd/TreeDragAndDrop.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13492,6 +28057,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.dnd.TreeDragAndDrop");
 dojo.require("dojo.dnd.HtmlDragAndDrop");
 dojo.require("dojo.lang.func");
@@ -13735,6 +28302,27 @@
 
 
 __CPAN_DIR__ src/graphics
+__CPAN_FILE__ src/graphics/Colorspace.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.graphics.Colorspace"], ["require", "dojo.gfx.Colorspace"]], definePackage:function (dojo) {
+	dojo.provide("dojo.graphics.Colorspace");
+	dojo.require("dojo.gfx.Colorspace");
+	dojo.deprecated("dojo.graphics.Colorspace: use dojo.gfx.Colorspace instead.", "0.5");
+	dojo.graphics.Colorspace = dojo.gfx.Colorspace;
+}});
+
+
 __CPAN_FILE__ src/graphics/color.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13746,6 +28334,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.graphics.color");
 dojo.require("dojo.gfx.color");
 dojo.deprecated("dojo.graphics.color.Color is now dojo.gfx.color.Color.", "0.5");
@@ -13773,6 +28363,48 @@
 };
 
 
+__CPAN_FILE__ src/graphics/color.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.graphics.color"], ["require", "dojo.gfx.color"]], definePackage:function (dojo) {
+	dojo.provide("dojo.graphics.color");
+	dojo.require("dojo.gfx.color");
+	dojo.deprecated("dojo.graphics.color.Color is now dojo.gfx.color.Color.", "0.5");
+	dojo.graphics.color.Color = dojo.gfx.color.Color;
+	dojo.graphics.color.named = dojo.gfx.color.named;
+	dojo.graphics.color.blend = function (a, b, weight) {
+		dojo.deprecated("dojo.graphics.color.blend is now dojo.gfx.color.blend", "0.5");
+		return dojo.gfx.color.blend(a, b, weight);
+	};
+	dojo.graphics.color.blendHex = function (a, b, weight) {
+		dojo.deprecated("dojo.graphics.color.blendHex is now dojo.gfx.color.blendHex", "0.5");
+		return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight));
+	};
+	dojo.graphics.color.extractRGB = function (color) {
+		dojo.deprecated("dojo.graphics.color.extractRGB is now dojo.gfx.color.extractRGB", "0.5");
+		return dojo.gfx.color.extractRGB(color);
+	};
+	dojo.graphics.color.hex2rgb = function (hex) {
+		dojo.deprecated("dojo.graphics.color.hex2rgb is now dojo.gfx.color.hex2rgb", "0.5");
+		return dojo.gfx.color.hex2rgb(hex);
+	};
+	dojo.graphics.color.rgb2hex = function (r, g, b) {
+		dojo.deprecated("dojo.graphics.color.rgb2hex is now dojo.gfx.color.rgb2hex", "0.5");
+		return dojo.gfx.color.rgb2hex;
+	};
+}});
+
+
 __CPAN_FILE__ src/graphics/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13784,6 +28416,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.graphics.*");
 
 
@@ -13798,13 +28432,69 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.graphics.Colorspace");
 dojo.require("dojo.gfx.Colorspace");
 dojo.deprecated("dojo.graphics.Colorspace: use dojo.gfx.Colorspace instead.", "0.5");
 dojo.graphics.Colorspace = dojo.gfx.Colorspace;
 
 
+__CPAN_FILE__ src/graphics/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.graphics.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.graphics.*");
+}});
+
+
 __CPAN_DIR__ src/graphics/color
+__CPAN_FILE__ src/graphics/color/hsl.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.graphics.color.hsl"], ["require", "dojo.gfx.color.hsl"]], definePackage:function (dojo) {
+	dojo.provide("dojo.graphics.color.hsl");
+	dojo.require("dojo.gfx.color.hsl");
+	dojo.deprecated("dojo.graphics.color.hsl has been replaced with dojo.gfx.color.hsl", "0.5");
+	dojo.graphics.color.rgb2hsl = function (r, g, b) {
+		dojo.deprecated("dojo.graphics.color.rgb2hsl has been replaced with dojo.gfx.color.rgb2hsl", "0.5");
+		return dojo.gfx.color.rgb2hsl(r, g, b);
+	};
+	dojo.graphics.color.hsl2rgb = function (h, s, l) {
+		dojo.deprecated("dojo.graphics.color.hsl2rgb has been replaced with dojo.gfx.color.hsl2rgb", "0.5");
+		return dojo.gfx.color.hsl2rgb(h, s, l);
+	};
+	dojo.graphics.color.hsl2hex = function (h, s, l) {
+		dojo.deprecated("dojo.graphics.color.hsl2hex has been replaced with dojo.gfx.color.hsl2hex", "0.5");
+		return dojo.gfx.color.hsl2hex(h, s, l);
+	};
+	dojo.graphics.color.hex2hsl = function (hex) {
+		dojo.deprecated("dojo.graphics.color.hex2hsl has been replaced with dojo.gfx.color.hex2hsl", "0.5");
+		return dojo.gfx.color.hex2hsl(hex);
+	};
+}});
+
+
 __CPAN_FILE__ src/graphics/color/hsl.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13816,6 +28506,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.graphics.color.hsl");
 dojo.require("dojo.gfx.color.hsl");
 dojo.deprecated("dojo.graphics.color.hsl has been replaced with dojo.gfx.color.hsl", "0.5");
@@ -13837,6 +28529,34 @@
 };
 
 
+__CPAN_FILE__ src/graphics/color/hsv.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.graphics.color.hsv"], ["require", "dojo.gfx.color.hsv"]], definePackage:function (dojo) {
+	dojo.provide("dojo.graphics.color.hsv");
+	dojo.require("dojo.gfx.color.hsv");
+	dojo.deprecated("dojo.graphics.color.hsv has been replaced by dojo.gfx.color.hsv", "0.5");
+	dojo.graphics.color.rgb2hsv = function (r, g, b) {
+		dojo.deprecated("dojo.graphics.color.rgb2hsv has been replaced by dojo.gfx.color.rgb2hsv", "0.5");
+		return dojo.gfx.color.rgb2hsv(r, g, b);
+	};
+	dojo.graphics.color.hsv2rgb = function (h, s, v) {
+		dojo.deprecated("dojo.graphics.color.hsv2rgb has been replaced by dojo.gfx.color.hsv2rgb", "0.5");
+		return dojo.gfx.color.hsv2rgb(h, s, v);
+	};
+}});
+
+
 __CPAN_FILE__ src/graphics/color/hsv.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13848,6 +28568,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.graphics.color.hsv");
 dojo.require("dojo.gfx.color.hsv");
 dojo.deprecated("dojo.graphics.color.hsv has been replaced by dojo.gfx.color.hsv", "0.5");
@@ -13862,6 +28584,131 @@
 
 
 __CPAN_DIR__ src/widget
+__CPAN_FILE__ src/widget/TreeCommon.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeCommon"], ["require", "dojo.widget.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeCommon");
+	dojo.require("dojo.widget.*");
+	dojo.declare("dojo.widget.TreeCommon", null, {listenTreeEvents:[], listenedTrees:{}, listenNodeFilter:null, listenTree:function (tree) {
+		var _this = this;
+		if (this.listenedTrees[tree.widgetId]) {
+			return;
+		}
+		dojo.lang.forEach(this.listenTreeEvents, function (event) {
+			var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);
+			dojo.event.topic.subscribe(tree.eventNames[event], _this, eventHandler);
+		});
+		var filter;
+		if (this.listenNodeFilter) {
+			this.processDescendants(tree, this.listenNodeFilter, this.listenNode, true);
+		}
+		this.listenedTrees[tree.widgetId] = true;
+	}, listenNode:function () {
+	}, unlistenNode:function () {
+	}, unlistenTree:function (tree, nodeFilter) {
+		var _this = this;
+		if (!this.listenedTrees[tree.widgetId]) {
+			return;
+		}
+		dojo.lang.forEach(this.listenTreeEvents, function (event) {
+			var eventHandler = "on" + event.charAt(0).toUpperCase() + event.substr(1);
+			dojo.event.topic.unsubscribe(tree.eventNames[event], _this, eventHandler);
+		});
+		if (this.listenNodeFilter) {
+			this.processDescendants(tree, this.listenNodeFilter, this.unlistenNode, true);
+		}
+		delete this.listenedTrees[tree.widgetId];
+	}, checkPathCondition:function (domElement, condition) {
+		while (domElement && !domElement.widgetId) {
+			if (condition.call(null, domElement)) {
+				return true;
+			}
+			domElement = domElement.parentNode;
+		}
+		return false;
+	}, domElement2TreeNode:function (domElement) {
+		while (domElement && !domElement.widgetId) {
+			domElement = domElement.parentNode;
+		}
+		if (!domElement) {
+			return null;
+		}
+		var widget = dojo.widget.byId(domElement.widgetId);
+		if (!widget.isTreeNode) {
+			return null;
+		}
+		return widget;
+	}, processDescendants:function (elem, filter, func, skipFirst) {
+		var _this = this;
+		if (!skipFirst) {
+			if (!filter.call(_this, elem)) {
+				return;
+			}
+			func.call(_this, elem);
+		}
+		var stack = [elem];
+		while (elem = stack.pop()) {
+			dojo.lang.forEach(elem.children, function (elem) {
+				if (filter.call(_this, elem)) {
+					func.call(_this, elem);
+					stack.push(elem);
+				}
+			});
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/ResizableTextarea.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ResizableTextarea"], ["require", "dojo.widget.*"], ["require", "dojo.widget.LayoutContainer"], ["require", "dojo.widget.ResizeHandle"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ResizableTextarea");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.LayoutContainer");
+	dojo.require("dojo.widget.ResizeHandle");
+	dojo.widget.defineWidget("dojo.widget.ResizableTextarea", dojo.widget.HtmlWidget, {templateString:"<div>\n\t<div style=\"border: 2px solid black; width: 90%; height: 200px;\"\n\t\tdojoAttachPoint=\"rootLayoutNode\">\n\t\t<div dojoAttachPoint=\"textAreaContainerNode\" \n\t\t\tstyle=\"border: 0px; margin: 0px; overflow: hidden;\">\n\t\t</div>\n\t\t<div dojoAttachPoint=\"statusBarContainerNode\" class=\"statusBar\">\n\t\t\t<div dojoAttachPoint=\"statusLabelNode\" \n\t\t\t\tclass=\"statusPanel\"\n\t\t\t\tstyle=\"padding-right: 0px; z-index: 1;\">drag to resize</div>\n\t\t\t<div dojoAttachPoint=\"resizeHandleNode\"></div>\n\t\t</div>\n\t</div>\n</div>\n", templateCssString:"div.statusBar {\n\tbackground-color: ThreeDFace;\n\theight: 28px;\n\tpadding: 1px;\n\toverflow: hidden;\n\tfont-size: 12px;\n}\n\ndiv.statusPanel {\n\tbackground-color: ThreeDFace;\n\tborder: 1px solid;\n\tborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n\tmargin: 1px;\n\tpadding: 2px 6px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ResizableTextarea.css"), fillInTemplate:function (args, frag) {
+		this.textAreaNode = this.getFragNodeRef(frag).cloneNode(true);
+		dojo.body().appendChild(this.domNode);
+		this.rootLayout = dojo.widget.createWidget("LayoutContainer", {minHeight:50, minWidth:100}, this.rootLayoutNode);
+		this.textAreaContainer = dojo.widget.createWidget("LayoutContainer", {layoutAlign:"client"}, this.textAreaContainerNode);
+		this.rootLayout.addChild(this.textAreaContainer);
+		this.textAreaContainer.domNode.appendChild(this.textAreaNode);
+		with (this.textAreaNode.style) {
+			width = "100%";
+			height = "100%";
+		}
+		this.statusBar = dojo.widget.createWidget("LayoutContainer", {layoutAlign:"bottom", minHeight:28}, this.statusBarContainerNode);
+		this.rootLayout.addChild(this.statusBar);
+		this.statusLabel = dojo.widget.createWidget("LayoutContainer", {layoutAlign:"client", minWidth:50}, this.statusLabelNode);
+		this.statusBar.addChild(this.statusLabel);
+		this.resizeHandle = dojo.widget.createWidget("ResizeHandle", {targetElmId:this.rootLayout.widgetId}, this.resizeHandleNode);
+		this.statusBar.addChild(this.resizeHandle);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeToggleOnSelect.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13873,6 +28720,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeToggleOnSelect");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.widget.defineWidget("dojo.widget.TreeToggleOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", selectEvent:"select", initialize:function () {
@@ -13885,6 +28734,73 @@
 }});
 
 
+__CPAN_FILE__ src/widget/CurrencyTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.CurrencyTextbox"], ["require", "dojo.widget.IntegerTextbox"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.CurrencyTextbox");
+	dojo.require("dojo.widget.IntegerTextbox");
+	dojo.require("dojo.validate.common");
+	dojo.widget.defineWidget("dojo.widget.CurrencyTextbox", dojo.widget.IntegerTextbox, {mixInProperties:function (localProperties, frag) {
+		dojo.widget.CurrencyTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.fractional) {
+			this.flags.fractional = (localProperties.fractional == "true");
+		} else {
+			if (localProperties.cents) {
+				dojo.deprecated("dojo.widget.IntegerTextbox", "use fractional attr instead of cents", "0.5");
+				this.flags.fractional = (localProperties.cents == "true");
+			}
+		}
+		if (localProperties.symbol) {
+			this.flags.symbol = localProperties.symbol;
+		}
+		if (localProperties.min) {
+			this.flags.min = parseFloat(localProperties.min);
+		}
+		if (localProperties.max) {
+			this.flags.max = parseFloat(localProperties.max);
+		}
+	}, isValid:function () {
+		return dojo.validate.isCurrency(this.textbox.value, this.flags);
+	}, isInRange:function () {
+		return dojo.validate.isInRange(this.textbox.value, this.flags);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeExtension.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeExtension"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeCommon"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeExtension");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeCommon");
+	dojo.widget.defineWidget("dojo.widget.TreeExtension", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
+		this.listenedTrees = {};
+	}, {});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeEditor.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13896,6 +28812,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.RichText");
@@ -13952,6 +28870,271 @@
 }});
 
 
+__CPAN_FILE__ src/widget/GoogleMap.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.GoogleMap"], ["require", "dojo.event.*"], ["require", "dojo.math"], ["require", "dojo.widget.*"], ["require", "dojo.uri.Uri"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.GoogleMap");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.math");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.uri.Uri");
+	dojo.require("dojo.widget.HtmlWidget");
+	(function () {
+		var gkey = djConfig["gMapKey"] || djConfig["googleMapKey"];
+		var uri = new dojo.uri.Uri(window.location.href);
+		if (uri.host == "www.dojotoolkit.org") {
+			gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hRqjp7ri2mNiOEYqetD3xnFHpt5rBSjszDd1sdufPyQKUTyCf_YxoIxvw";
+		} else {
+			if (uri.host == "blog.dojotoolkit.org") {
+				gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hSkep6Av1xaMhVn3yCLkorJeXeLARQ6fammI_P3qSGleTJhoI5_1JmP_Q";
+			} else {
+				if (uri.host == "archive.dojotoolkit.org") {
+					gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hTaQpDt0dyGLIHbXMPTzg1kWeAfwRTwZNyrUfbfxYE9yIvRivEjcXoDTg";
+				} else {
+					if (uri.host == "dojotoolkit.org") {
+						gkey = "ABQIAAAACUNdgv_7FGOmUslbm9l6_hSaOaO_TgJ5c3mtQFnk5JO2zD5dZBRZk-ieqVs7BORREYNzAERmcJoEjQ";
+					}
+				}
+			}
+		}
+		if (!dojo.hostenv.post_load_) {
+			if (!gkey || gkey == "") {
+				dojo.raise("dojo.widget.GoogleMap: The Google Map widget requires a proper API key in order to be used.");
+			}
+			var tag = "<scr" + "ipt src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=" + gkey + "'></scri" + "pt>";
+			if (!dj_global["GMap2"]) {
+				document.write(tag);
+			}
+		} else {
+			dojo.debug("Cannot initialize Google Map system after the page has been loaded! Please either manually include the script block provided by Google in your page or require() the GoogleMap widget before onload has fired.");
+		}
+	})();
+	dojo.widget.defineWidget("dojo.widget.GoogleMap", dojo.widget.HtmlWidget, function () {
+		this.map = null;
+		this.geocoder = null;
+		this.data = [];
+		this.datasrc = "";
+		this.controls = ["largemap", "scale", "maptype"];
+	}, {templatePath:null, templateCssPath:null, isContainer:false, _defaultPoint:{lat:39.10662, lng:-94.578209}, setControls:function () {
+		var methodmap = {largemap:GLargeMapControl, smallmap:GSmallMapControl, smallzoom:GSmallZoomControl, scale:GScaleControl, maptype:GMapTypeControl, overview:GOverviewMapControl};
+		for (var i = 0; i < this.controls.length; i++) {
+			this.map.addControl(new (methodmap[this.controls[i].toLowerCase()])());
+		}
+	}, findCenter:function (bounds) {
+		if (this.data.length == 1) {
+			return (new GLatLng(this.data[0].lat, this.data[0].lng));
+		}
+		var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2;
+		var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2;
+		return (new GLatLng(clat, clng));
+	}, createPinpoint:function (pt, overlay) {
+		var m = new GMarker(pt);
+		if (overlay) {
+			GEvent.addListener(m, "click", function () {
+				m.openInfoWindowHtml("<div>" + overlay + "</div>");
+			});
+		}
+		return m;
+	}, plot:function (obj) {
+		var p = new GLatLng(obj.lat, obj.lng);
+		var d = obj.description || null;
+		var m = this.createPinpoint(p, d);
+		this.map.addOverlay(m);
+	}, plotAddress:function (address) {
+		var self = this;
+		this.geocoder.getLocations(address, function (response) {
+			if (!response || response.Status.code != 200) {
+				alert("The address \"" + address + "\" was not found.");
+				return;
+			}
+			var obj = {lat:response.Placemark[0].Point.coordinates[1], lng:response.Placemark[0].Point.coordinates[0], description:response.Placemark[0].address};
+			self.data.push(obj);
+			self.render();
+		});
+	}, parse:function (table) {
+		this.data = [];
+		var h = table.getElementsByTagName("thead")[0];
+		if (!h) {
+			return;
+		}
+		var a = [];
+		var cols = h.getElementsByTagName("td");
+		if (cols.length == 0) {
+			cols = h.getElementsByTagName("th");
+		}
+		for (var i = 0; i < cols.length; i++) {
+			var c = cols[i].innerHTML.toLowerCase();
+			if (c == "long") {
+				c = "lng";
+			}
+			a.push(c);
+		}
+		var b = table.getElementsByTagName("tbody")[0];
+		if (!b) {
+			return;
+		}
+		for (var i = 0; i < b.childNodes.length; i++) {
+			if (!(b.childNodes[i].nodeName && b.childNodes[i].nodeName.toLowerCase() == "tr")) {
+				continue;
+			}
+			var cells = b.childNodes[i].getElementsByTagName("td");
+			var o = {};
+			for (var j = 0; j < a.length; j++) {
+				var col = a[j];
+				if (col == "lat" || col == "lng") {
+					o[col] = parseFloat(cells[j].innerHTML);
+				} else {
+					o[col] = cells[j].innerHTML;
+				}
+			}
+			this.data.push(o);
+		}
+	}, render:function () {
+		if (this.data.length == 0) {
+			this.map.setCenter(new GLatLng(this._defaultPoint.lat, this._defaultPoint.lng), 4);
+			return;
+		}
+		this.map.clearOverlays();
+		var bounds = new GLatLngBounds();
+		var d = this.data;
+		for (var i = 0; i < d.length; i++) {
+			bounds.extend(new GLatLng(d[i].lat, d[i].lng));
+		}
+		var zoom = Math.min((this.map.getBoundsZoomLevel(bounds) - 1), 14);
+		this.map.setCenter(this.findCenter(bounds), zoom);
+		for (var i = 0; i < this.data.length; i++) {
+			this.plot(this.data[i]);
+		}
+	}, initialize:function (args, frag) {
+		if (this.datasrc) {
+			this.parse(dojo.byId(this.datasrc));
+		} else {
+			if (this.domNode.getElementsByTagName("table")[0]) {
+				this.parse(this.domNode.getElementsByTagName("table")[0]);
+			}
+		}
+	}, postCreate:function () {
+		while (this.domNode.childNodes.length > 0) {
+			this.domNode.removeChild(this.domNode.childNodes[0]);
+		}
+		if (this.domNode.style.position != "absolute") {
+			this.domNode.style.position = "relative";
+		}
+		this.map = new GMap2(this.domNode);
+		try {
+			this.geocoder = new GClientGeocoder();
+		}
+		catch (ex) {
+		}
+		this.render();
+		this.setControls();
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeTimeoutIterator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeTimeoutIterator"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"], ["require", "dojo.widget.TreeCommon"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeTimeoutIterator");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.TreeCommon");
+	dojo.declare("dojo.widget.TreeTimeoutIterator", null, function (elem, callFunc, callObj) {
+		var _this = this;
+		this.currentParent = elem;
+		this.callFunc = callFunc;
+		this.callObj = callObj ? callObj : this;
+		this.stack = [];
+	}, {maxStackDepth:Number.POSITIVE_INFINITY, stack:null, currentParent:null, currentIndex:0, filterFunc:function () {
+		return true;
+	}, finishFunc:function () {
+		return true;
+	}, setFilter:function (func, obj) {
+		this.filterFunc = func;
+		this.filterObj = obj;
+	}, setMaxLevel:function (level) {
+		this.maxStackDepth = level - 2;
+	}, forward:function (timeout) {
+		var _this = this;
+		if (this.timeout) {
+			var tid = setTimeout(function () {
+				_this.processNext();
+				clearTimeout(tid);
+			}, _this.timeout);
+		} else {
+			return this.processNext();
+		}
+	}, start:function (processFirst) {
+		if (processFirst) {
+			return this.callFunc.call(this.callObj, this.currentParent, this);
+		}
+		return this.processNext();
+	}, processNext:function () {
+		var handler;
+		var _this = this;
+		var found;
+		var next;
+		if (this.maxStackDepth == -2) {
+			return;
+		}
+		while (true) {
+			var children = this.currentParent.children;
+			if (children && children.length) {
+				do {
+					next = children[this.currentIndex];
+				} while (this.currentIndex++ < children.length && !(found = this.filterFunc.call(this.filterObj, next)));
+				if (found) {
+					if (next.isFolder && this.stack.length <= this.maxStackDepth) {
+						this.moveParent(next, 0);
+					}
+					return this.callFunc.call(this.callObj, next, this);
+				}
+			}
+			if (this.stack.length) {
+				this.popParent();
+				continue;
+			}
+			break;
+		}
+		return this.finishFunc.call(this.finishObj);
+	}, setFinish:function (func, obj) {
+		this.finishFunc = func;
+		this.finishObj = obj;
+	}, popParent:function () {
+		var p = this.stack.pop();
+		this.currentParent = p[0];
+		this.currentIndex = p[1];
+	}, moveParent:function (nextParent, nextIndex) {
+		this.stack.push([this.currentParent, this.currentIndex]);
+		this.currentParent = nextParent;
+		this.currentIndex = nextIndex;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Form.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -13963,6 +29146,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Form");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -14219,6 +29404,350 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeControllerExtension.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeControllerExtension"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeControllerExtension");
+	dojo.declare("dojo.widget.TreeControllerExtension", null, {saveExpandedIndices:function (node, field) {
+		var obj = {};
+		for (var i = 0; i < node.children.length; i++) {
+			if (node.children[i].isExpanded) {
+				var key = dojo.lang.isUndefined(field) ? i : node.children[i][field];
+				obj[key] = this.saveExpandedIndices(node.children[i], field);
+			}
+		}
+		return obj;
+	}, restoreExpandedIndices:function (node, savedIndices, field) {
+		var _this = this;
+		var handler = function (node, savedIndices) {
+			this.node = node;
+			this.savedIndices = savedIndices;
+			this.process = function () {
+				_this.restoreExpandedIndices(this.node, this.savedIndices, field);
+			};
+		};
+		for (var i = 0; i < node.children.length; i++) {
+			var child = node.children[i];
+			var found = false;
+			var key = -1;
+			if (dojo.lang.isUndefined(field) && savedIndices[i]) {
+				found = true;
+				key = i;
+			}
+			if (field) {
+				for (var key in savedIndices) {
+					if (key == child[field]) {
+						found = true;
+						break;
+					}
+				}
+			}
+			if (found) {
+				var h = new handler(child, savedIndices[key]);
+				_this.expand(child, false, h, h.process);
+			} else {
+				if (child.isExpanded) {
+					dojo.lang.forEach(child.getDescendants(), function (elem) {
+						_this.collapse(elem);
+					});
+				}
+			}
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TimePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TimePicker"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.event.*"], ["require", "dojo.date.serialize"], ["require", "dojo.date.format"], ["require", "dojo.dom"], ["require", "dojo.html.style"], ["xdRequireLocalization", "dojo.i18n.calendar", "gregorian", null, "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br", "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br"], ["xdRequireLocalization", "dojo.widget", "TimePicker", null, "ROOT", "ROOT"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TimePicker");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.date.serialize");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.html.style");
+	dojo.widget.defineWidget("dojo.widget.TimePicker", dojo.widget.HtmlWidget, function () {
+		this.time = "";
+		this.useDefaultTime = false;
+		this.useDefaultMinutes = false;
+		this.storedTime = "";
+		this.currentTime = {};
+		this.classNames = {selectedTime:"selectedItem"};
+		this.any = "any";
+		this.selectedTime = {hour:"", minute:"", amPm:"", anyTime:false};
+		this.hourIndexMap = ["", 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 11, 0];
+		this.minuteIndexMap = [0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 11];
+	}, {isContainer:false, templateString:"<div class=\"timePickerContainer\" dojoAttachPoint=\"timePickerContainerNode\">\n\t<table class=\"timeContainer\" cellspacing=\"0\" >\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<td class=\"timeCorner cornerTopLeft\" valign=\"top\">&nbsp;</td>\n\t\t\t\t<td class=\"timeLabelContainer hourSelector\">${this.calendar.field-hour}</td>\n\t\t\t\t<td class=\"timeLabelContainer minutesHeading\">${this.calendar.field-minute}</td>\n\t\t\t\t<td class=\"timeCorner cornerTopRight\" valign=\"top\">&nbsp;</td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td valign=\"top\" colspan=\"2\" class=\"hours\">\n\t\t\t\t\t<table align=\"center\">\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"hourContainerNode\"  \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedHour;\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>12</td>\n\t\t\t\t\t\t\t\t<td>6</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>1</td>\n\t\t\t\t\t\t\t\t<td>7</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>2</td>\n\t\t\t\t\t\t\t\t<td>8</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>3</td>\n\t\t\t\t\t\t\t\t<td>9</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>4</td>\n\t\t\t\t\t\t\t\t<td>10</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>5</td>\n\t\t\t\t\t\t\t\t<td>11</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"minutes\" colspan=\"2\">\n\t\t\t\t\t<table align=\"center\">\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"minuteContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedMinute;\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>00</td>\n\t\t\t\t\t\t\t\t<td>30</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>05</td>\n\t\t\t\t\t\t\t\t<td>35</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>10</td>\n\t\t\t\t\t\t\t\t<td>40</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>15</td>\n\t\t\t\t\t\t\t\t<td>45</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>20</td>\n\t\t\t\t\t\t\t\t<td>50</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>25</td>\n\t\t\t\t\t\t\t\t<td>55</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td class=\"cornerBottomLeft\">&nbsp;</td>\n\t\t\t\t<td valign=\"top\" class=\"timeOptions\">\n\t\t\t\t\t<table class=\"amPmContainer\">\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"amPmContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedAmPm;\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td id=\"am\">${this.calendar.am}</td>\n\t\t\t\t\t\t\t\t<td id=\"pm\">${this.calendar.pm}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"timeOptions\">\n\t\t\t\t\t<div dojoAttachPoint=\"anyTimeContainerNode\" \n\t\t\t\t\t\tdojoAttachEvent=\"onClick: onSetSelectedAnyTime;\" \n\t\t\t\t\t\tclass=\"anyTimeContainer\">${this.widgetStrings.any}</div>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"cornerBottomRight\">&nbsp;</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:"/*Time Picker */\n.timePickerContainer {\n\twidth:122px;\n\tfont-family:Tahoma, Myriad, Helvetica, Arial, Verdana, sans-serif;\n\tfont-size:16px;\n}\n\n.timeContainer {\n\tborder-collapse:collapse;\n\tborder-spacing:0;\n}\n\n.timeContainer thead {\n\tcolor:#293a4b;\n\tfont-size:0.9em;\n\tfont-weight:700;\n}\n\n.timeContainer thead td {\n\tpadding:0.25em;\n\tfont-size:0.80em;\n\tborder-bottom:1px solid #6782A8;\n}\n\n.timeCorner {\n\twidth:10px;\n}\n\n.cornerTopLeft {\n\tbackground: url(\"images/dpCurveTL.png\") top left no-repeat;\n}\n\n.cornerTopRight {\n\tbackground: url(\"images/dpCurveTR.png\") top right no-repeat;\n}\n\n.timeLabelContainer {\n\tbackground: url(\"images/dpMonthBg.png\") top left repeat-x;\n}\n\n.hours, .minutes, .timeBorder {\n\tbackground: #7591bc url(\"images/dpBg.gif\") top left repeat-x;\n\n}\n\n.hours td, .minutes td {\n\tpadding:0.2em;\n\ttext-align:center;\n\tfont-size:0.7em;\n\tfont-weight:bold;\n\tcursor:pointer;\n\tcursor:hand;\n\tcolor:#fff;\n}\n\n.minutes {\n\tborder-left:1px solid #f5d1db;\n}\n\n.hours {\n\tborder-right:1px solid #6782A8;\n}\n\n.hourSelector {\n\tborder-right:1px solid #6782A8;\n\tpadding:5px;\n\tpadding-right:10px;\n}\n\n.minutesSelector {\n\tpadding:5px;\n\tborder-left:1px solid #f5c7d4;\n\ttext-align:center;\n}\n\n.minutesHeading {\n\tpadding-left:9px !important;\n}\n\n.timeOptions {\n\tbackground-color:#F9C9D7;\n}\n\n.timeContainer .cornerBottomLeft, .timeContainer .cornerBottomRight, .timeContainer .timeOptions {\n\tborder-top:1px solid #6782A8;\n}\n\n.timeContainer .cornerBottomLeft {\n\tbackground: url(\"images/dpCurveBL.png\") bottom left no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n.timeContainer .cornerBottomRight {\n\tbackground: url(\"images/dpCurveBR.png\") bottom right no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n.timeOptions {\n\tcolor:#fff;\n\tbackground:url(\"images/dpYearBg.png\") top left repeat-x;\n\n}\n\n.selectedItem {\n\tbackground-color:#fff;\n\tcolor:#6782a8 !important;\n}\n\n.timeOptions .selectedItem {\n\tcolor:#fff !important;\n\tbackground-color:#9ec3fb !important;\n}\n\n.anyTimeContainer {\n\ttext-align:center;\n\tfont-weight:bold;\n\tfont-size:0.7em;\n\tpadding:0.1em;\n\tcursor:pointer;\n\tcursor:hand;\n\tcolor:#fff !important;\n}\n\n.amPmContainer {\n\twidth:100%;\n}\n\n.amPmContainer td {\n\ttext-align:center;\n\tfont-size:0.7em;\n\tfont-weight:bold;\n\tcursor:pointer;\n\tcursor:hand;\n\tcolor:#fff;\n}\n\n\n\n/*.timePickerContainer {\n\tmargin:1.75em 0 0.5em 0;\n\twidth:10em;\n\tfloat:left;\n}\n\n.timeContainer {\n\tborder-collapse:collapse;\n\tborder-spacing:0;\n}\n\n.timeContainer thead td{\n\tborder-bottom:1px solid #e6e6e6;\n\tpadding:0 0.4em 0.2em 0.4em;\n}\n\n.timeContainer td {\n\tfont-size:0.9em;\n\tpadding:0 0.25em 0 0.25em;\n\ttext-align:left;\n\tcursor:pointer;cursor:hand;\n}\n\n.timeContainer td.minutesHeading {\n\tborder-left:1px solid #e6e6e6;\n\tborder-right:1px solid #e6e6e6;\t\n}\n\n.timeContainer .minutes {\n\tborder-left:1px solid #e6e6e6;\n\tborder-right:1px solid #e6e6e6;\n}\n\n.selectedItem {\n\tbackground-color:#3a3a3a;\n\tcolor:#ffffff;\n}*/\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TimePicker.css"), postMixInProperties:function (localProperties, frag) {
+		dojo.widget.TimePicker.superclass.postMixInProperties.apply(this, arguments);
+		this.calendar = dojo.i18n.getLocalization("dojo.i18n.calendar", "gregorian", this.lang);
+		this.widgetStrings = dojo.i18n.getLocalization("dojo.widget", "TimePicker", this.lang);
+	}, fillInTemplate:function (args, frag) {
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+		if (args.value) {
+			if (args.value instanceof Date) {
+				this.storedTime = dojo.date.toRfc3339(args.value);
+			} else {
+				this.storedTime = args.value;
+			}
+		}
+		this.initData();
+		this.initUI();
+	}, initData:function () {
+		if (this.storedTime.indexOf("T") != -1 && this.storedTime.split("T")[1] && this.storedTime != " " && this.storedTime.split("T")[1] != "any") {
+			this.time = dojo.widget.TimePicker.util.fromRfcDateTime(this.storedTime, this.useDefaultMinutes, this.selectedTime.anyTime);
+		} else {
+			if (this.useDefaultTime) {
+				this.time = dojo.widget.TimePicker.util.fromRfcDateTime("", this.useDefaultMinutes, this.selectedTime.anyTime);
+			} else {
+				this.selectedTime.anyTime = true;
+				this.time = dojo.widget.TimePicker.util.fromRfcDateTime("", 0, 1);
+			}
+		}
+	}, initUI:function () {
+		if (!this.selectedTime.anyTime && this.time) {
+			var amPmHour = dojo.widget.TimePicker.util.toAmPmHour(this.time.getHours());
+			var hour = amPmHour[0];
+			var isAm = amPmHour[1];
+			var minute = this.time.getMinutes();
+			var minuteIndex = parseInt(minute / 5);
+			this.onSetSelectedHour(this.hourIndexMap[hour]);
+			this.onSetSelectedMinute(this.minuteIndexMap[minuteIndex]);
+			this.onSetSelectedAmPm(isAm);
+		} else {
+			this.onSetSelectedAnyTime();
+		}
+	}, setTime:function (date) {
+		if (date) {
+			this.selectedTime.anyTime = false;
+			this.setDateTime(dojo.date.toRfc3339(date));
+		} else {
+			this.selectedTime.anyTime = true;
+		}
+		this.initData();
+		this.initUI();
+	}, setDateTime:function (rfcDate) {
+		this.storedTime = rfcDate;
+	}, onClearSelectedHour:function (evt) {
+		this.clearSelectedHour();
+	}, onClearSelectedMinute:function (evt) {
+		this.clearSelectedMinute();
+	}, onClearSelectedAmPm:function (evt) {
+		this.clearSelectedAmPm();
+	}, onClearSelectedAnyTime:function (evt) {
+		this.clearSelectedAnyTime();
+		if (this.selectedTime.anyTime) {
+			this.selectedTime.anyTime = false;
+			this.time = dojo.widget.TimePicker.util.fromRfcDateTime("", this.useDefaultMinutes);
+			this.initUI();
+		}
+	}, clearSelectedHour:function () {
+		var hourNodes = this.hourContainerNode.getElementsByTagName("td");
+		for (var i = 0; i < hourNodes.length; i++) {
+			dojo.html.setClass(hourNodes.item(i), "");
+		}
+	}, clearSelectedMinute:function () {
+		var minuteNodes = this.minuteContainerNode.getElementsByTagName("td");
+		for (var i = 0; i < minuteNodes.length; i++) {
+			dojo.html.setClass(minuteNodes.item(i), "");
+		}
+	}, clearSelectedAmPm:function () {
+		var amPmNodes = this.amPmContainerNode.getElementsByTagName("td");
+		for (var i = 0; i < amPmNodes.length; i++) {
+			dojo.html.setClass(amPmNodes.item(i), "");
+		}
+	}, clearSelectedAnyTime:function () {
+		dojo.html.setClass(this.anyTimeContainerNode, "anyTimeContainer");
+	}, onSetSelectedHour:function (evt) {
+		this.onClearSelectedAnyTime();
+		this.onClearSelectedHour();
+		this.setSelectedHour(evt);
+		this.onSetTime();
+	}, setSelectedHour:function (evt) {
+		if (evt && evt.target) {
+			if (evt.target.nodeType == dojo.dom.ELEMENT_NODE) {
+				var eventTarget = evt.target;
+			} else {
+				var eventTarget = evt.target.parentNode;
+			}
+			dojo.event.browser.stopEvent(evt);
+			dojo.html.setClass(eventTarget, this.classNames.selectedTime);
+			this.selectedTime["hour"] = eventTarget.innerHTML;
+		} else {
+			if (!isNaN(evt)) {
+				var hourNodes = this.hourContainerNode.getElementsByTagName("td");
+				if (hourNodes.item(evt)) {
+					dojo.html.setClass(hourNodes.item(evt), this.classNames.selectedTime);
+					this.selectedTime["hour"] = hourNodes.item(evt).innerHTML;
+				}
+			}
+		}
+		this.selectedTime.anyTime = false;
+	}, onSetSelectedMinute:function (evt) {
+		this.onClearSelectedAnyTime();
+		this.onClearSelectedMinute();
+		this.setSelectedMinute(evt);
+		this.selectedTime.anyTime = false;
+		this.onSetTime();
+	}, setSelectedMinute:function (evt) {
+		if (evt && evt.target) {
+			if (evt.target.nodeType == dojo.dom.ELEMENT_NODE) {
+				var eventTarget = evt.target;
+			} else {
+				var eventTarget = evt.target.parentNode;
+			}
+			dojo.event.browser.stopEvent(evt);
+			dojo.html.setClass(eventTarget, this.classNames.selectedTime);
+			this.selectedTime["minute"] = eventTarget.innerHTML;
+		} else {
+			if (!isNaN(evt)) {
+				var minuteNodes = this.minuteContainerNode.getElementsByTagName("td");
+				if (minuteNodes.item(evt)) {
+					dojo.html.setClass(minuteNodes.item(evt), this.classNames.selectedTime);
+					this.selectedTime["minute"] = minuteNodes.item(evt).innerHTML;
+				}
+			}
+		}
+	}, onSetSelectedAmPm:function (evt) {
+		this.onClearSelectedAnyTime();
+		this.onClearSelectedAmPm();
+		this.setSelectedAmPm(evt);
+		this.selectedTime.anyTime = false;
+		this.onSetTime();
+	}, setSelectedAmPm:function (evt) {
+		var eventTarget = evt.target;
+		if (evt && eventTarget) {
+			if (eventTarget.nodeType != dojo.dom.ELEMENT_NODE) {
+				eventTarget = eventTarget.parentNode;
+			}
+			dojo.event.browser.stopEvent(evt);
+			this.selectedTime.amPm = eventTarget.id;
+			dojo.html.setClass(eventTarget, this.classNames.selectedTime);
+		} else {
+			evt = evt ? 0 : 1;
+			var amPmNodes = this.amPmContainerNode.getElementsByTagName("td");
+			if (amPmNodes.item(evt)) {
+				this.selectedTime.amPm = amPmNodes.item(evt).id;
+				dojo.html.setClass(amPmNodes.item(evt), this.classNames.selectedTime);
+			}
+		}
+	}, onSetSelectedAnyTime:function (evt) {
+		this.onClearSelectedHour();
+		this.onClearSelectedMinute();
+		this.onClearSelectedAmPm();
+		this.setSelectedAnyTime();
+		this.onSetTime();
+	}, setSelectedAnyTime:function (evt) {
+		this.selectedTime.anyTime = true;
+		dojo.html.setClass(this.anyTimeContainerNode, this.classNames.selectedTime + " " + "anyTimeContainer");
+	}, onClick:function (evt) {
+		dojo.event.browser.stopEvent(evt);
+	}, onSetTime:function () {
+		if (this.selectedTime.anyTime) {
+			this.time = new Date();
+			var tempDateTime = dojo.widget.TimePicker.util.toRfcDateTime(this.time);
+			this.setDateTime(tempDateTime.split("T")[0]);
+		} else {
+			var hour = 12;
+			var minute = 0;
+			var isAm = false;
+			if (this.selectedTime["hour"]) {
+				hour = parseInt(this.selectedTime["hour"], 10);
+			}
+			if (this.selectedTime["minute"]) {
+				minute = parseInt(this.selectedTime["minute"], 10);
+			}
+			if (this.selectedTime["amPm"]) {
+				isAm = (this.selectedTime["amPm"].toLowerCase() == "am");
+			}
+			this.time = new Date();
+			this.time.setHours(dojo.widget.TimePicker.util.fromAmPmHour(hour, isAm));
+			this.time.setMinutes(minute);
+			this.setDateTime(dojo.widget.TimePicker.util.toRfcDateTime(this.time));
+		}
+		this.onValueChanged(this.time);
+	}, onValueChanged:function (date) {
+	}});
+	dojo.widget.TimePicker.util = new function () {
+		this.toRfcDateTime = function (jsDate) {
+			if (!jsDate) {
+				jsDate = new Date();
+			}
+			jsDate.setSeconds(0);
+			return dojo.date.strftime(jsDate, "%Y-%m-%dT%H:%M:00%z");
+		};
+		this.fromRfcDateTime = function (rfcDate, useDefaultMinutes, isAnyTime) {
+			var tempDate = new Date();
+			if (!rfcDate || rfcDate.indexOf("T") == -1) {
+				if (useDefaultMinutes) {
+					tempDate.setMinutes(Math.floor(tempDate.getMinutes() / 5) * 5);
+				} else {
+					tempDate.setMinutes(0);
+				}
+			} else {
+				var tempTime = rfcDate.split("T")[1].split(":");
+				var tempDate = new Date();
+				tempDate.setHours(tempTime[0]);
+				tempDate.setMinutes(tempTime[1]);
+			}
+			return tempDate;
+		};
+		this.toAmPmHour = function (hour) {
+			var amPmHour = hour;
+			var isAm = true;
+			if (amPmHour == 0) {
+				amPmHour = 12;
+			} else {
+				if (amPmHour > 12) {
+					amPmHour = amPmHour - 12;
+					isAm = false;
+				} else {
+					if (amPmHour == 12) {
+						isAm = false;
+					}
+				}
+			}
+			return [amPmHour, isAm];
+		};
+		this.fromAmPmHour = function (amPmHour, isAm) {
+			var hour = parseInt(amPmHour, 10);
+			if (isAm && hour == 12) {
+				hour = 0;
+			} else {
+				if (!isAm && hour < 12) {
+					hour = hour + 12;
+				}
+			}
+			return hour;
+		};
+	};
+}});
+
+
 __CPAN_FILE__ src/widget/Widget.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -14230,6 +29759,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Widget");
 dojo.require("dojo.lang.func");
 dojo.require("dojo.lang.array");
@@ -14542,6 +30073,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DropdownDatePicker");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.DropdownContainer");
@@ -14641,6 +30174,310 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Dialog.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Dialog"], ["require", "dojo.widget.*"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.event.*"], ["require", "dojo.gfx.color"], ["require", "dojo.html.layout"], ["require", "dojo.html.display"], ["require", "dojo.html.iframe"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Dialog");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.iframe");
+	dojo.declare("dojo.widget.ModalDialogBase", null, {isContainer:true, focusElement:"", bgColor:"black", bgOpacity:0.4, followScroll:true, closeOnBackgroundClick:false, trapTabs:function (e) {
+		if (e.target == this.tabStartOuter) {
+			if (this._fromTrap) {
+				this.tabStart.focus();
+				this._fromTrap = false;
+			} else {
+				this._fromTrap = true;
+				this.tabEnd.focus();
+			}
+		} else {
+			if (e.target == this.tabStart) {
+				if (this._fromTrap) {
+					this._fromTrap = false;
+				} else {
+					this._fromTrap = true;
+					this.tabEnd.focus();
+				}
+			} else {
+				if (e.target == this.tabEndOuter) {
+					if (this._fromTrap) {
+						this.tabEnd.focus();
+						this._fromTrap = false;
+					} else {
+						this._fromTrap = true;
+						this.tabStart.focus();
+					}
+				} else {
+					if (e.target == this.tabEnd) {
+						if (this._fromTrap) {
+							this._fromTrap = false;
+						} else {
+							this._fromTrap = true;
+							this.tabStart.focus();
+						}
+					}
+				}
+			}
+		}
+	}, clearTrap:function (e) {
+		var _this = this;
+		setTimeout(function () {
+			_this._fromTrap = false;
+		}, 100);
+	}, postCreate:function () {
+		with (this.domNode.style) {
+			position = "absolute";
+			zIndex = 999;
+			display = "none";
+			overflow = "visible";
+		}
+		var b = dojo.body();
+		b.appendChild(this.domNode);
+		this.bg = document.createElement("div");
+		this.bg.className = "dialogUnderlay";
+		with (this.bg.style) {
+			position = "absolute";
+			left = top = "0px";
+			zIndex = 998;
+			display = "none";
+		}
+		b.appendChild(this.bg);
+		this.setBackgroundColor(this.bgColor);
+		this.bgIframe = new dojo.html.BackgroundIframe();
+		if (this.bgIframe.iframe) {
+			with (this.bgIframe.iframe.style) {
+				position = "absolute";
+				left = top = "0px";
+				zIndex = 90;
+				display = "none";
+			}
+		}
+		if (this.closeOnBackgroundClick) {
+			dojo.event.kwConnect({srcObj:this.bg, srcFunc:"onclick", adviceObj:this, adviceFunc:"onBackgroundClick", once:true});
+		}
+	}, uninitialize:function () {
+		this.bgIframe.remove();
+		dojo.html.removeNode(this.bg, true);
+	}, setBackgroundColor:function (color) {
+		if (arguments.length >= 3) {
+			color = new dojo.gfx.color.Color(arguments[0], arguments[1], arguments[2]);
+		} else {
+			color = new dojo.gfx.color.Color(color);
+		}
+		this.bg.style.backgroundColor = color.toString();
+		return this.bgColor = color;
+	}, setBackgroundOpacity:function (op) {
+		if (arguments.length == 0) {
+			op = this.bgOpacity;
+		}
+		dojo.html.setOpacity(this.bg, op);
+		try {
+			this.bgOpacity = dojo.html.getOpacity(this.bg);
+		}
+		catch (e) {
+			this.bgOpacity = op;
+		}
+		return this.bgOpacity;
+	}, _sizeBackground:function () {
+		if (this.bgOpacity > 0) {
+			var viewport = dojo.html.getViewport();
+			var h = viewport.height;
+			var w = viewport.width;
+			with (this.bg.style) {
+				width = w + "px";
+				height = h + "px";
+			}
+			var scroll_offset = dojo.html.getScroll().offset;
+			this.bg.style.top = scroll_offset.y + "px";
+			this.bg.style.left = scroll_offset.x + "px";
+			var viewport = dojo.html.getViewport();
+			if (viewport.width != w) {
+				this.bg.style.width = viewport.width + "px";
+			}
+			if (viewport.height != h) {
+				this.bg.style.height = viewport.height + "px";
+			}
+		}
+		this.bgIframe.size(this.bg);
+	}, _showBackground:function () {
+		if (this.bgOpacity > 0) {
+			this.bg.style.display = "block";
+		}
+		if (this.bgIframe.iframe) {
+			this.bgIframe.iframe.style.display = "block";
+		}
+	}, placeModalDialog:function () {
+		var scroll_offset = dojo.html.getScroll().offset;
+		var viewport_size = dojo.html.getViewport();
+		var mb;
+		if (this.isShowing()) {
+			mb = dojo.html.getMarginBox(this.domNode);
+		} else {
+			dojo.html.setVisibility(this.domNode, false);
+			dojo.html.show(this.domNode);
+			mb = dojo.html.getMarginBox(this.domNode);
+			dojo.html.hide(this.domNode);
+			dojo.html.setVisibility(this.domNode, true);
+		}
+		var x = scroll_offset.x + (viewport_size.width - mb.width) / 2;
+		var y = scroll_offset.y + (viewport_size.height - mb.height) / 2;
+		with (this.domNode.style) {
+			left = x + "px";
+			top = y + "px";
+		}
+	}, _onKey:function (evt) {
+		if (evt.key) {
+			var node = evt.target;
+			while (node != null) {
+				if (node == this.domNode) {
+					return;
+				}
+				node = node.parentNode;
+			}
+			if (evt.key != evt.KEY_TAB) {
+				dojo.event.browser.stopEvent(evt);
+			} else {
+				if (!dojo.render.html.opera) {
+					try {
+						this.tabStart.focus();
+					}
+					catch (e) {
+					}
+				}
+			}
+		}
+	}, showModalDialog:function () {
+		if (this.followScroll && !this._scrollConnected) {
+			this._scrollConnected = true;
+			dojo.event.connect(window, "onscroll", this, "_onScroll");
+		}
+		dojo.event.connect(document.documentElement, "onkey", this, "_onKey");
+		this.placeModalDialog();
+		this.setBackgroundOpacity();
+		this._sizeBackground();
+		this._showBackground();
+		this._fromTrap = true;
+		setTimeout(dojo.lang.hitch(this, function () {
+			try {
+				this.tabStart.focus();
+			}
+			catch (e) {
+			}
+		}), 50);
+	}, hideModalDialog:function () {
+		if (this.focusElement) {
+			dojo.byId(this.focusElement).focus();
+			dojo.byId(this.focusElement).blur();
+		}
+		this.bg.style.display = "none";
+		this.bg.style.width = this.bg.style.height = "1px";
+		if (this.bgIframe.iframe) {
+			this.bgIframe.iframe.style.display = "none";
+		}
+		dojo.event.disconnect(document.documentElement, "onkey", this, "_onKey");
+		if (this._scrollConnected) {
+			this._scrollConnected = false;
+			dojo.event.disconnect(window, "onscroll", this, "_onScroll");
+		}
+	}, _onScroll:function () {
+		var scroll_offset = dojo.html.getScroll().offset;
+		this.bg.style.top = scroll_offset.y + "px";
+		this.bg.style.left = scroll_offset.x + "px";
+		this.placeModalDialog();
+	}, checkSize:function () {
+		if (this.isShowing()) {
+			this._sizeBackground();
+			this.placeModalDialog();
+			this.onResized();
+		}
+	}, onBackgroundClick:function () {
+		if (this.lifetime - this.timeRemaining >= this.blockDuration) {
+			return;
+		}
+		this.hide();
+	}});
+	dojo.widget.defineWidget("dojo.widget.Dialog", [dojo.widget.ContentPane, dojo.widget.ModalDialogBase], {templateString:"<div id=\"${this.widgetId}\" class=\"dojoDialog\" dojoattachpoint=\"wrapper\">\n\t<span dojoattachpoint=\"tabStartOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\"\ttabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabStart\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoattachpoint=\"containerNode\" style=\"position: relative; z-index: 2;\"></div>\n\t<span dojoattachpoint=\"tabEnd\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabEndOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n</div>\n", blockDuration:0, lifetime:0, closeNode:"", postMixInProperties:function () {
+		dojo.widget.Dialog.superclass.postMixInProperties.apply(this, arguments);
+		if (this.closeNode) {
+			this.setCloseControl(this.closeNode);
+		}
+	}, postCreate:function () {
+		dojo.widget.Dialog.superclass.postCreate.apply(this, arguments);
+		dojo.widget.ModalDialogBase.prototype.postCreate.apply(this, arguments);
+	}, show:function () {
+		if (this.lifetime) {
+			this.timeRemaining = this.lifetime;
+			if (this.timerNode) {
+				this.timerNode.innerHTML = Math.ceil(this.timeRemaining / 1000);
+			}
+			if (this.blockDuration && this.closeNode) {
+				if (this.lifetime > this.blockDuration) {
+					this.closeNode.style.visibility = "hidden";
+				} else {
+					this.closeNode.style.display = "none";
+				}
+			}
+			if (this.timer) {
+				clearInterval(this.timer);
+			}
+			this.timer = setInterval(dojo.lang.hitch(this, "_onTick"), 100);
+		}
+		this.showModalDialog();
+		dojo.widget.Dialog.superclass.show.call(this);
+	}, onLoad:function () {
+		this.placeModalDialog();
+		dojo.widget.Dialog.superclass.onLoad.call(this);
+	}, fillInTemplate:function () {
+	}, hide:function () {
+		this.hideModalDialog();
+		dojo.widget.Dialog.superclass.hide.call(this);
+		if (this.timer) {
+			clearInterval(this.timer);
+		}
+	}, setTimerNode:function (node) {
+		this.timerNode = node;
+	}, setCloseControl:function (node) {
+		this.closeNode = dojo.byId(node);
+		dojo.event.connect(this.closeNode, "onclick", this, "hide");
+	}, setShowControl:function (node) {
+		node = dojo.byId(node);
+		dojo.event.connect(node, "onclick", this, "show");
+	}, _onTick:function () {
+		if (this.timer) {
+			this.timeRemaining -= 100;
+			if (this.lifetime - this.timeRemaining >= this.blockDuration) {
+				if (this.closeNode) {
+					this.closeNode.style.visibility = "visible";
+				}
+			}
+			if (!this.timeRemaining) {
+				clearInterval(this.timer);
+				this.hide();
+			} else {
+				if (this.timerNode) {
+					this.timerNode.innerHTML = Math.ceil(this.timeRemaining / 1000);
+				}
+			}
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Button.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -14652,6 +30489,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Button");
 dojo.require("dojo.lang.extras");
 dojo.require("dojo.html.*");
@@ -14900,6 +30739,165 @@
 }});
 
 
+__CPAN_FILE__ src/widget/DropdownTimePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DropdownTimePicker"], ["require", "dojo.widget.*"], ["require", "dojo.widget.DropdownContainer"], ["require", "dojo.widget.TimePicker"], ["require", "dojo.event.*"], ["require", "dojo.html.*"], ["require", "dojo.date.format"], ["require", "dojo.date.serialize"], ["require", "dojo.i18n.common"], ["xdRequireLocalization", "dojo.widget", "DropdownTimePicker", null, "ROOT", "ROOT"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DropdownTimePicker");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.DropdownContainer");
+	dojo.require("dojo.widget.TimePicker");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.date.serialize");
+	dojo.require("dojo.i18n.common");
+	dojo.widget.defineWidget("dojo.widget.DropdownTimePicker", dojo.widget.DropdownContainer, {iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/timeIcon.gif"), formatLength:"short", displayFormat:"", timeFormat:"", saveFormat:"", value:"", name:"", postMixInProperties:function () {
+		dojo.widget.DropdownTimePicker.superclass.postMixInProperties.apply(this, arguments);
+		var messages = dojo.i18n.getLocalization("dojo.widget", "DropdownTimePicker", this.lang);
+		this.iconAlt = messages.selectTime;
+		if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
+			this.value = new Date();
+		}
+		if (this.value && isNaN(this.value)) {
+			var orig = this.value;
+			this.value = dojo.date.fromRfc3339(this.value);
+			if (!this.value) {
+				var d = dojo.date.format(new Date(), {selector:"dateOnly", datePattern:"yyyy-MM-dd"});
+				var c = orig.split(":");
+				for (var i = 0; i < c.length; ++i) {
+					if (c[i].length == 1) {
+						c[i] = "0" + c[i];
+					}
+				}
+				orig = c.join(":");
+				this.value = dojo.date.fromRfc3339(d + "T" + orig);
+				dojo.deprecated("dojo.widget.DropdownTimePicker", "time attributes must be passed in Rfc3339 format", "0.5");
+			}
+		}
+		if (this.value && !isNaN(this.value)) {
+			this.value = new Date(this.value);
+		}
+	}, fillInTemplate:function () {
+		dojo.widget.DropdownTimePicker.superclass.fillInTemplate.apply(this, arguments);
+		var value = "";
+		if (this.value instanceof Date) {
+			value = this.value;
+		} else {
+			if (this.value) {
+				var orig = this.value;
+				var d = dojo.date.format(new Date(), {selector:"dateOnly", datePattern:"yyyy-MM-dd"});
+				var c = orig.split(":");
+				for (var i = 0; i < c.length; ++i) {
+					if (c[i].length == 1) {
+						c[i] = "0" + c[i];
+					}
+				}
+				orig = c.join(":");
+				value = dojo.date.fromRfc3339(d + "T" + orig);
+			}
+		}
+		var tpArgs = {widgetContainerId:this.widgetId, lang:this.lang, value:value};
+		this.timePicker = dojo.widget.createWidget("TimePicker", tpArgs, this.containerNode, "child");
+		dojo.event.connect(this.timePicker, "onValueChanged", this, "_updateText");
+		if (this.value) {
+			this._updateText();
+		}
+		this.containerNode.style.zIndex = this.zIndex;
+		this.containerNode.explodeClassName = "timeContainer";
+		this.valueNode.name = this.name;
+	}, getValue:function () {
+		return this.valueNode.value;
+	}, getTime:function () {
+		return this.timePicker.storedTime;
+	}, setValue:function (rfcDate) {
+		this.setTime(rfcDate);
+	}, setTime:function (dateObj) {
+		var value = "";
+		if (dateObj instanceof Date) {
+			value = dateObj;
+		} else {
+			if (this.value) {
+				var orig = this.value;
+				var d = dojo.date.format(new Date(), {selector:"dateOnly", datePattern:"yyyy-MM-dd"});
+				var c = orig.split(":");
+				for (var i = 0; i < c.length; ++i) {
+					if (c[i].length == 1) {
+						c[i] = "0" + c[i];
+					}
+				}
+				orig = c.join(":");
+				value = dojo.date.fromRfc3339(d + "T" + orig);
+			}
+		}
+		this.timePicker.setTime(value);
+		this._syncValueNode();
+	}, _updateText:function () {
+		if (this.timePicker.selectedTime.anyTime) {
+			this.inputNode.value = "";
+		} else {
+			if (this.timeFormat) {
+				dojo.deprecated("dojo.widget.DropdownTimePicker", "Must use displayFormat attribute instead of timeFormat.  See dojo.date.format for specification.", "0.5");
+				this.inputNode.value = dojo.date.strftime(this.timePicker.time, this.timeFormat, this.lang);
+			} else {
+				this.inputNode.value = dojo.date.format(this.timePicker.time, {formatLength:this.formatLength, timePattern:this.displayFormat, selector:"timeOnly", locale:this.lang});
+			}
+		}
+		this._syncValueNode();
+		this.onValueChanged(this.getTime());
+		this.hideContainer();
+	}, onValueChanged:function (dateObj) {
+	}, onInputChange:function () {
+		if (this.dateFormat) {
+			dojo.deprecated("dojo.widget.DropdownTimePicker", "Cannot parse user input.  Must use displayFormat attribute instead of dateFormat.  See dojo.date.format for specification.", "0.5");
+		} else {
+			var input = dojo.string.trim(this.inputNode.value);
+			if (input) {
+				var inputTime = dojo.date.parse(input, {formatLength:this.formatLength, timePattern:this.displayFormat, selector:"timeOnly", locale:this.lang});
+				if (inputTime) {
+					this.setTime(inputTime);
+				}
+			} else {
+				this.valueNode.value = input;
+			}
+		}
+		if (input) {
+			this._updateText();
+		}
+	}, _syncValueNode:function () {
+		var time = this.timePicker.time;
+		var value;
+		switch (this.saveFormat.toLowerCase()) {
+		  case "rfc":
+		  case "iso":
+		  case "":
+			value = dojo.date.toRfc3339(time, "timeOnly");
+			break;
+		  case "posix":
+		  case "unix":
+			value = Number(time);
+			break;
+		  default:
+			value = dojo.date.format(time, {datePattern:this.saveFormat, selector:"timeOnly", locale:this.lang});
+		}
+		this.valueNode.value = value;
+	}, destroy:function (finalize) {
+		this.timePicker.destroy(finalize);
+		dojo.widget.DropdownTimePicker.superclass.destroy.apply(this, arguments);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeLoadingControllerV3.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -14911,6 +30909,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeLoadingControllerV3");
 dojo.require("dojo.widget.TreeBasicControllerV3");
 dojo.require("dojo.event.*");
@@ -15150,6 +31150,111 @@
 }});
 
 
+__CPAN_FILE__ src/widget/HtmlWidget.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.DomWidget"], ["require", "dojo.html.util"], ["require", "dojo.html.display"], ["require", "dojo.html.layout"], ["require", "dojo.lang.extras"], ["require", "dojo.lang.func"], ["require", "dojo.lfx.toggle"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.DomWidget");
+	dojo.require("dojo.html.util");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lfx.toggle");
+	dojo.declare("dojo.widget.HtmlWidget", dojo.widget.DomWidget, {templateCssPath:null, templatePath:null, lang:"", toggle:"plain", toggleDuration:150, initialize:function (args, frag) {
+	}, postMixInProperties:function (args, frag) {
+		if (this.lang === "") {
+			this.lang = null;
+		}
+		this.toggleObj = dojo.lfx.toggle[this.toggle.toLowerCase()] || dojo.lfx.toggle.plain;
+	}, createNodesFromText:function (txt, wrap) {
+		return dojo.html.createNodesFromText(txt, wrap);
+	}, destroyRendering:function (finalize) {
+		try {
+			if (this.bgIframe) {
+				this.bgIframe.remove();
+				delete this.bgIframe;
+			}
+			if (!finalize && this.domNode) {
+				dojo.event.browser.clean(this.domNode);
+			}
+			dojo.widget.HtmlWidget.superclass.destroyRendering.call(this);
+		}
+		catch (e) {
+		}
+	}, isShowing:function () {
+		return dojo.html.isShowing(this.domNode);
+	}, toggleShowing:function () {
+		if (this.isShowing()) {
+			this.hide();
+		} else {
+			this.show();
+		}
+	}, show:function () {
+		if (this.isShowing()) {
+			return;
+		}
+		this.animationInProgress = true;
+		this.toggleObj.show(this.domNode, this.toggleDuration, null, dojo.lang.hitch(this, this.onShow), this.explodeSrc);
+	}, onShow:function () {
+		this.animationInProgress = false;
+		this.checkSize();
+	}, hide:function () {
+		if (!this.isShowing()) {
+			return;
+		}
+		this.animationInProgress = true;
+		this.toggleObj.hide(this.domNode, this.toggleDuration, null, dojo.lang.hitch(this, this.onHide), this.explodeSrc);
+	}, onHide:function () {
+		this.animationInProgress = false;
+	}, _isResized:function (w, h) {
+		if (!this.isShowing()) {
+			return false;
+		}
+		var wh = dojo.html.getMarginBox(this.domNode);
+		var width = w || wh.width;
+		var height = h || wh.height;
+		if (this.width == width && this.height == height) {
+			return false;
+		}
+		this.width = width;
+		this.height = height;
+		return true;
+	}, checkSize:function () {
+		if (!this._isResized()) {
+			return;
+		}
+		this.onResized();
+	}, resizeTo:function (w, h) {
+		dojo.html.setMarginBox(this.domNode, {width:w, height:h});
+		if (this.isShowing()) {
+			this.onResized();
+		}
+	}, resizeSoon:function () {
+		if (this.isShowing()) {
+			dojo.lang.setTimeout(this, this.onResized, 0);
+		}
+	}, onResized:function () {
+		dojo.lang.forEach(this.children, function (child) {
+			if (child.checkSize) {
+				child.checkSize();
+			}
+		});
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Tooltip.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -15161,6 +31266,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Tooltip");
 dojo.require("dojo.widget.ContentPane");
 dojo.require("dojo.widget.PopupContainer");
@@ -15268,6 +31375,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeLinkExtension");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeExtension");
@@ -15314,6 +31423,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeContextMenuV3");
 dojo.require("dojo.event.*");
 dojo.require("dojo.io.*");
@@ -15388,6 +31499,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeCommon");
 dojo.require("dojo.widget.*");
 dojo.declare("dojo.widget.TreeCommon", null, {listenTreeEvents:[], listenedTrees:{}, listenNodeFilter:null, listenTree:function (tree) {
@@ -15470,6 +31583,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Toaster");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.lfx.*");
@@ -15633,6 +31748,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ContentPane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.io.*");
@@ -16063,6 +32180,159 @@
 }});
 
 
+__CPAN_FILE__ src/widget/MonthlyCalendar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.MonthlyCalendar"], ["require", "dojo.date.common"], ["require", "dojo.date.format"], ["require", "dojo.widget.*"], ["require", "dojo.widget.DatePicker"], ["require", "dojo.event.*"], ["require", "dojo.html.*"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.MonthlyCalendar");
+	dojo.require("dojo.date.common");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.DatePicker");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.MonthlyCalendar");
+	dojo.widget.defineWidget("dojo.widget.MonthlyCalendar", dojo.widget.DatePicker, {dayWidth:"wide", templateString:"<div class=\"datePickerContainer\" dojoAttachPoint=\"datePickerContainerNode\">\n\t<h3 class=\"monthLabel\">\n\t<!--\n\t<span \n\t\tdojoAttachPoint=\"decreaseWeekNode\" \n\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\tclass=\"incrementControl\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/decrementWeek.gif\" alt=\"&uarr;\" />\n\t</span>\n\t-->\n\t<span \n\t\tdojoAttachPoint=\"decreaseMonthNode\" \n\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/decrementMonth.gif\" \n\t\t\talt=\"&uarr;\" dojoAttachPoint=\"decrementMonthImageNode\">\n\t</span>\n\t<span dojoAttachPoint=\"monthLabelNode\" class=\"month\">July</span>\n\t<span \n\t\tdojoAttachPoint=\"increaseMonthNode\" \n\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/incrementMonth.gif\" \n\t\t\talt=\"&darr;\"  dojoAttachPoint=\"incrementMonthImageNode\">\n\t</span>\n\t<!--\n\t\t<span dojoAttachPoint=\"increaseWeekNode\" \n\t\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\t\tclass=\"incrementControl\">\n\t\t\t<img src=\"${dojoWidgetModuleUri}templates/incrementWeek.gif\" \n\t\t\talt=\"&darr;\" />\n\t\t</span>\n\t-->\n\t</h3>\n\t<table class=\"calendarContainer\">\n\t\t<thead>\n\t\t\t<tr dojoAttachPoint=\"dayLabelsRow\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody dojoAttachPoint=\"calendarDatesContainerNode\" \n\t\t\tdojoAttachEvent=\"onClick: onSetDate;\">\n\t\t\t<tr dojoAttachPoint=\"calendarRow0\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow1\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow2\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow3\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow4\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t\t<tr dojoAttachPoint=\"calendarRow5\">\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n\t<h3 class=\"yearLabel\">\n\t\t<span dojoAttachPoint=\"previousYearLabelNode\"\n\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"previousYear\"></span>\n\t\t<span class=\"selectedYear\" dojoAttachPoint=\"currentYearLabelNode\"></span>\n\t\t<span dojoAttachPoint=\"nextYearLabelNode\" \n\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"nextYear\"></span>\n\t</h3>\n</div>\n", templateCssString:".datePickerContainer {\n\tmargin:0.5em 2em 0.5em 0;\n\t/*width:10em;*/\n\tfloat:left;\n}\n\n.previousMonth {\n\tbackground-color:#bbbbbb;\n}\n\n.currentMonth {\n\tbackground-color:#8f8f8f;\n}\n\n.nextMonth {\n\tbackground-color:#eeeeee;\n}\n\n.currentDate {\n\ttext-decoration:underline;\n\tfont-style:italic;\n}\n\n.selectedItem {\n\tbackground-color:#3a3a3a;\n\tcolor:#ffffff;\n}\n\n.calendarContainer {\n\tborder-collapse:collapse;\n\tborder-spacing:0;\n\tborder-bottom:1px solid #e6e6e6;\n\toverflow: hidden;\n\ttext-align: right;\n}\n\n.calendarContainer thead{\n\tborder-bottom:1px solid #e6e6e6;\n}\n\n.calendarContainer tbody * td {\n		height: 100px;\n		border: 1px solid gray;\n}\n\n.calendarContainer td {\n		width: 100px;\n		padding: 2px;\n\tvertical-align: top;\n}\n\n.monthLabel {\n\tfont-size:0.9em;\n\tfont-weight:400;\n\tmargin:0;\n\ttext-align:center;\n}\n\n.monthLabel .month {\n\tpadding:0 0.4em 0 0.4em;\n}\n\n.yearLabel {\n\tfont-size:0.9em;\n\tfont-weight:400;\n\tmargin:0.25em 0 0 0;\n\ttext-align:right;\n\tcolor:#a3a3a3;\n}\n\n.yearLabel .selectedYear {\n\tcolor:#000;\n\tpadding:0 0.2em;\n}\n\n.nextYear, .previousYear {\n\tcursor:pointer;cursor:hand;\n}\n\n.incrementControl {\n\tcursor:pointer;cursor:hand;\n\twidth:1em;\n}\n\n.dojoMonthlyCalendarEvent {\n\tfont-size:0.7em;\n\toverflow: hidden;\n\tfont-color: grey;\n\twhite-space: nowrap;\n\ttext-align: left;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/MonthlyCalendar.css"), initializer:function () {
+		this.iCalendars = [];
+	}, addCalendar:function (cal) {
+		dojo.debug("Adding Calendar");
+		this.iCalendars.push(cal);
+		dojo.debug("Starting init");
+		this.initUI();
+		dojo.debug("done init");
+	}, createDayContents:function (node, mydate) {
+		dojo.html.removeChildren(node);
+		node.appendChild(document.createTextNode(mydate.getDate()));
+		for (var x = 0; x < this.iCalendars.length; x++) {
+			var evts = this.iCalendars[x].getEvents(mydate);
+			if ((dojo.lang.isArray(evts)) && (evts.length > 0)) {
+				for (var y = 0; y < evts.length; y++) {
+					var el = document.createElement("div");
+					dojo.html.addClass(el, "dojoMonthlyCalendarEvent");
+					el.appendChild(document.createTextNode(evts[y].summary.value));
+					el.width = dojo.html.getContentBox(node).width;
+					node.appendChild(el);
+				}
+			}
+		}
+	}, initUI:function () {
+		var dayLabels = dojo.date.getNames("days", this.dayWidth, "standAlone", this.lang);
+		var dayLabelNodes = this.dayLabelsRow.getElementsByTagName("td");
+		for (var i = 0; i < 7; i++) {
+			dayLabelNodes.item(i).innerHTML = dayLabels[i];
+		}
+		this.selectedIsUsed = false;
+		this.currentIsUsed = false;
+		var currentClassName = "";
+		var previousDate = new Date();
+		var calendarNodes = this.calendarDatesContainerNode.getElementsByTagName("td");
+		var currentCalendarNode;
+		previousDate.setHours(8);
+		var nextDate = new Date(this.firstSaturday.year, this.firstSaturday.month, this.firstSaturday.date, 8);
+		var lastDay = new Date(this.firstSaturday.year, this.firstSaturday.month, this.firstSaturday.date + 42, 8);
+		if (this.iCalendars.length > 0) {
+			for (var x = 0; x < this.iCalendars.length; x++) {
+				this.iCalendars[x].preComputeRecurringEvents(lastDay);
+			}
+		}
+		if (this.firstSaturday.date < 7) {
+			var dayInWeek = 6;
+			for (var i = this.firstSaturday.date; i > 0; i--) {
+				currentCalendarNode = calendarNodes.item(dayInWeek);
+				this.createDayContents(currentCalendarNode, nextDate);
+				dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "current"));
+				dayInWeek--;
+				previousDate = nextDate;
+				nextDate = this.incrementDate(nextDate, false);
+			}
+			for (var i = dayInWeek; i > -1; i--) {
+				currentCalendarNode = calendarNodes.item(i);
+				this.createDayContents(currentCalendarNode, nextDate);
+				dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "previous"));
+				previousDate = nextDate;
+				nextDate = this.incrementDate(nextDate, false);
+			}
+		} else {
+			nextDate.setDate(1);
+			for (var i = 0; i < 7; i++) {
+				currentCalendarNode = calendarNodes.item(i);
+				this.createDayContents(currentCalendarNode, nextDate);
+				dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "current"));
+				previousDate = nextDate;
+				nextDate = this.incrementDate(nextDate, true);
+			}
+		}
+		previousDate.setDate(this.firstSaturday.date);
+		previousDate.setMonth(this.firstSaturday.month);
+		previousDate.setFullYear(this.firstSaturday.year);
+		nextDate = this.incrementDate(previousDate, true);
+		var count = 7;
+		currentCalendarNode = calendarNodes.item(count);
+		while ((nextDate.getMonth() == previousDate.getMonth()) && (count < 42)) {
+			this.createDayContents(currentCalendarNode, nextDate);
+			dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "current"));
+			currentCalendarNode = calendarNodes.item(++count);
+			previousDate = nextDate;
+			nextDate = this.incrementDate(nextDate, true);
+		}
+		while (count < 42) {
+			this.createDayContents(currentCalendarNode, nextDate);
+			dojo.html.setClass(currentCalendarNode, this.getDateClassName(nextDate, "next"));
+			currentCalendarNode = calendarNodes.item(++count);
+			previousDate = nextDate;
+			nextDate = this.incrementDate(nextDate, true);
+		}
+		this.setMonthLabel(this.firstSaturday.month);
+		this.setYearLabels(this.firstSaturday.year);
+	}});
+	dojo.widget.MonthlyCalendar.util = new function () {
+		this.toRfcDate = function (jsDate) {
+			if (!jsDate) {
+				jsDate = this.today;
+			}
+			var year = jsDate.getFullYear();
+			var month = jsDate.getMonth() + 1;
+			if (month < 10) {
+				month = "0" + month.toString();
+			}
+			var date = jsDate.getDate();
+			if (date < 10) {
+				date = "0" + date.toString();
+			}
+			return year + "-" + month + "-" + date + "T00:00:00+00:00";
+		};
+		this.fromRfcDate = function (rfcDate) {
+			var tempDate = rfcDate.split("-");
+			if (tempDate.length < 3) {
+				return new Date();
+			}
+			return new Date(parseInt(tempDate[0]), (parseInt(tempDate[1], 10) - 1), parseInt(tempDate[2].substr(0, 2), 10));
+		};
+		this.initFirstSaturday = function (month, year) {
+			if (!month) {
+				month = this.date.getMonth();
+			}
+			if (!year) {
+				year = this.date.getFullYear();
+			}
+			var firstOfMonth = new Date(year, month, 1);
+			return {year:year, month:month, date:7 - firstOfMonth.getDay()};
+		};
+	};
+}});
+
+
 __CPAN_FILE__ src/widget/Select.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -16074,6 +32344,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Select");
 dojo.require("dojo.widget.ComboBox");
 dojo.require("dojo.widget.*");
@@ -16113,6 +32385,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeTimeoutIterator");
 dojo.require("dojo.event.*");
 dojo.require("dojo.json");
@@ -16201,6 +32475,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DocPane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.io.*");
@@ -16452,6 +32728,59 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TaskBar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TaskBar"], ["require", "dojo.widget.*"], ["require", "dojo.widget.FloatingPane"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.event.*"], ["require", "dojo.html.selection"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TaskBar");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.FloatingPane");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.selection");
+	dojo.widget.defineWidget("dojo.widget.TaskBarItem", dojo.widget.HtmlWidget, {iconSrc:"", caption:"Untitled", templateString:"<div class=\"dojoTaskBarItem\" dojoAttachEvent=\"onClick\">\n</div>\n", templateCssString:".dojoTaskBarItem {\n\tdisplay: inline-block;\n\tbackground-color: ThreeDFace;\n\tborder: outset 2px;\n\tmargin-right: 5px;\n\tcursor: pointer;\n\theight: 35px;\n\twidth: 100px;\n\tfont-size: 10pt;\n\twhite-space: nowrap;\n\ttext-align: center;\n\tfloat: left;\n\toverflow: hidden;\n}\n\n.dojoTaskBarItem img {\n\tvertical-align: middle;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\t\n\theight: 32px;\n\twidth: 32px;\n}\n\n.dojoTaskBarItem a {\n\t color: black;\n\ttext-decoration: none;\n}\n\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TaskBar.css"), fillInTemplate:function () {
+		if (this.iconSrc) {
+			var img = document.createElement("img");
+			img.src = this.iconSrc;
+			this.domNode.appendChild(img);
+		}
+		this.domNode.appendChild(document.createTextNode(this.caption));
+		dojo.html.disableSelection(this.domNode);
+	}, postCreate:function () {
+		this.window = dojo.widget.getWidgetById(this.windowId);
+		this.window.explodeSrc = this.domNode;
+		dojo.event.connect(this.window, "destroy", this, "destroy");
+	}, onClick:function () {
+		this.window.toggleDisplay();
+	}});
+	dojo.widget.defineWidget("dojo.widget.TaskBar", dojo.widget.FloatingPane, function () {
+		this._addChildStack = [];
+	}, {resizable:false, titleBarDisplay:false, addChild:function (child) {
+		if (!this.containerNode) {
+			this._addChildStack.push(child);
+		} else {
+			if (this._addChildStack.length > 0) {
+				var oarr = this._addChildStack;
+				this._addChildStack = [];
+				dojo.lang.forEach(oarr, this.addChild, this);
+			}
+		}
+		var tbi = dojo.widget.createWidget("TaskBarItem", {windowId:child.widgetId, caption:child.title, iconSrc:child.iconSrc});
+		dojo.widget.TaskBar.superclass.addChild.call(this, tbi);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2Toolbar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -16463,6 +32792,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Toolbar");
 dojo.require("dojo.lang.*");
 dojo.require("dojo.widget.*");
@@ -16948,6 +33279,113 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Checkbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Checkbox"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.event.*"], ["require", "dojo.html.style"], ["require", "dojo.html.selection"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Checkbox");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.selection");
+	dojo.widget.defineWidget("dojo.widget.Checkbox", dojo.widget.HtmlWidget, {templateString:"<span style=\"display: inline-block;\" tabIndex=\"${this.tabIndex}\" waiRole=\"checkbox\" id=\"${this.id}\">\n\t<img dojoAttachPoint=\"imageNode\" class=\"dojoHtmlCheckbox\" src=\"${dojoWidgetModuleUri}templates/images/blank.gif\" alt=\"\" />\n\t<input type=\"checkbox\" name=\"${this.name}\" style=\"display: none\" value=\"${this.value}\"\n\t\tdojoAttachPoint=\"inputNode\">\n</span>\n", templateCssString:".dojoHtmlCheckbox {\n\tborder: 0px;\n\twidth: 16px;\n\theight: 16px;\n\tmargin: 2px;\n\tvertical-align: middle;\n}\n\n.dojoHtmlCheckboxOn {\n\tbackground: url(check.gif) 0px 0px;\n}\n.dojoHtmlCheckboxOff {\n\tbackground: url(check.gif) -16px 0px;\n}\n.dojoHtmlCheckboxDisabledOn {\n\tbackground: url(check.gif) -32px 0px;\n}\n.dojoHtmlCheckboxDisabledOff {\n\tbackground: url(check.gif) -48px 0px;\n}\n.dojoHtmlCheckboxOnHover {\n\tbackground: url(check.gif) -64px 0px;\n}\n.dojoHtmlCheckboxOffHover {\n\tbackground: url(check.gif) -80px 0px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Checkbox.css"), name:"", id:"", checked:false, tabIndex:"", value:"on", postMixInProperties:function () {
+		dojo.widget.Checkbox.superclass.postMixInProperties.apply(this, arguments);
+		if (!this.disabled && this.tabIndex == "") {
+			this.tabIndex = "0";
+		}
+	}, fillInTemplate:function () {
+		this._setInfo();
+	}, postCreate:function () {
+		var notcon = true;
+		this.id = this.id != "" ? this.id : this.widgetId;
+		if (this.id != "") {
+			var labels = document.getElementsByTagName("label");
+			if (labels != null && labels.length > 0) {
+				for (var i = 0; i < labels.length; i++) {
+					if (labels[i].htmlFor == this.id) {
+						labels[i].id = (labels[i].htmlFor + "label");
+						this._connectEvents(labels[i]);
+						dojo.widget.wai.setAttr(this.domNode, "waiState", "labelledby", labels[i].id);
+						break;
+					}
+				}
+			}
+		}
+		this._connectEvents(this.domNode);
+		this.inputNode.checked = this.checked;
+	}, _connectEvents:function (node) {
+		dojo.event.connect(node, "onmouseover", this, "mouseOver");
+		dojo.event.connect(node, "onmouseout", this, "mouseOut");
+		dojo.event.connect(node, "onkey", this, "onKey");
+		dojo.event.connect(node, "onclick", this, "_onClick");
+		dojo.html.disableSelection(node);
+	}, _onClick:function (e) {
+		if (this.disabled == false) {
+			this.checked = !this.checked;
+			this._setInfo();
+		}
+		e.preventDefault();
+		e.stopPropagation();
+		this.onClick();
+	}, setValue:function (bool) {
+		if (this.disabled == false) {
+			this.checked = bool;
+			this._setInfo();
+		}
+	}, onClick:function () {
+	}, onKey:function (e) {
+		var k = dojo.event.browser.keys;
+		if (e.key == " ") {
+			this._onClick(e);
+		}
+	}, mouseOver:function (e) {
+		this._hover(e, true);
+	}, mouseOut:function (e) {
+		this._hover(e, false);
+	}, _hover:function (e, isOver) {
+		if (this.disabled == false) {
+			var state = this.checked ? "On" : "Off";
+			var style = "dojoHtmlCheckbox" + state + "Hover";
+			if (isOver) {
+				dojo.html.addClass(this.imageNode, style);
+			} else {
+				dojo.html.removeClass(this.imageNode, style);
+			}
+		}
+	}, _setInfo:function () {
+		var state = "dojoHtmlCheckbox" + (this.disabled ? "Disabled" : "") + (this.checked ? "On" : "Off");
+		dojo.html.setClass(this.imageNode, "dojoHtmlCheckbox " + state);
+		this.inputNode.checked = this.checked;
+		if (this.disabled) {
+			this.inputNode.setAttribute("disabled", true);
+		} else {
+			this.inputNode.removeAttribute("disabled");
+		}
+		dojo.widget.wai.setAttr(this.domNode, "waiState", "checked", this.checked);
+	}});
+	dojo.widget.defineWidget("dojo.widget.a11y.Checkbox", dojo.widget.Checkbox, {templateString:"<span class='dojoHtmlCheckbox'>\n\t<input type=\"checkbox\" name=\"${this.name}\" tabIndex=\"${this.tabIndex}\" id=\"${this.id}\" value=\"${this.value}\"\n\t\t dojoAttachEvent=\"onClick: _onClick;\" dojoAttachPoint=\"inputNode\"> \n</span>\n", fillInTemplate:function () {
+	}, postCreate:function (args, frag) {
+		this.inputNode.checked = this.checked;
+		if (this.disabled) {
+			this.inputNode.setAttribute("disabled", true);
+		}
+	}, _onClick:function () {
+		this.onClick();
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Slider.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -16959,6 +33397,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Slider");
 dojo.require("dojo.event.*");
 dojo.require("dojo.dnd.*");
@@ -17423,6 +33863,356 @@
 }});
 
 
+__CPAN_FILE__ src/widget/DropdownDatePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DropdownDatePicker"], ["require", "dojo.widget.*"], ["require", "dojo.widget.DropdownContainer"], ["require", "dojo.widget.DatePicker"], ["require", "dojo.event.*"], ["require", "dojo.html.*"], ["require", "dojo.date.format"], ["require", "dojo.date.serialize"], ["require", "dojo.string.common"], ["require", "dojo.i18n.common"], ["xdRequireLocalization", "dojo.widget", "DropdownDatePicker", null, "ROOT", "ROOT"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DropdownDatePicker");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.DropdownContainer");
+	dojo.require("dojo.widget.DatePicker");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.date.serialize");
+	dojo.require("dojo.string.common");
+	dojo.require("dojo.i18n.common");
+	dojo.widget.defineWidget("dojo.widget.DropdownDatePicker", dojo.widget.DropdownContainer, {iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/dateIcon.gif"), formatLength:"short", displayFormat:"", saveFormat:"", value:"", name:"", displayWeeks:6, adjustWeeks:false, startDate:"1492-10-12", endDate:"2941-10-12", weekStartsOn:"", staticDisplay:false, postMixInProperties:function (localProperties, frag) {
+		dojo.widget.DropdownDatePicker.superclass.postMixInProperties.apply(this, arguments);
+		var messages = dojo.i18n.getLocalization("dojo.widget", "DropdownDatePicker", this.lang);
+		this.iconAlt = messages.selectDate;
+		if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
+			this.value = new Date();
+		}
+		if (this.value && isNaN(this.value)) {
+			var orig = this.value;
+			this.value = dojo.date.fromRfc3339(this.value);
+			if (!this.value) {
+				this.value = new Date(orig);
+				dojo.deprecated("dojo.widget.DropdownDatePicker", "date attributes must be passed in Rfc3339 format", "0.5");
+			}
+		}
+		if (this.value && !isNaN(this.value)) {
+			this.value = new Date(this.value);
+		}
+	}, fillInTemplate:function (args, frag) {
+		dojo.widget.DropdownDatePicker.superclass.fillInTemplate.call(this, args, frag);
+		var dpArgs = {widgetContainerId:this.widgetId, lang:this.lang, value:this.value, startDate:this.startDate, endDate:this.endDate, displayWeeks:this.displayWeeks, weekStartsOn:this.weekStartsOn, adjustWeeks:this.adjustWeeks, staticDisplay:this.staticDisplay};
+		this.datePicker = dojo.widget.createWidget("DatePicker", dpArgs, this.containerNode, "child");
+		dojo.event.connect(this.datePicker, "onValueChanged", this, "_updateText");
+		dojo.event.connect(this.inputNode, "onChange", this, "_updateText");
+		if (this.value) {
+			this._updateText();
+		}
+		this.containerNode.explodeClassName = "calendarBodyContainer";
+		this.valueNode.name = this.name;
+	}, getValue:function () {
+		return this.valueNode.value;
+	}, getDate:function () {
+		return this.datePicker.value;
+	}, setValue:function (rfcDate) {
+		this.setDate(rfcDate);
+	}, setDate:function (dateObj) {
+		this.datePicker.setDate(dateObj);
+		this._syncValueNode();
+	}, _updateText:function () {
+		this.inputNode.value = this.datePicker.value ? dojo.date.format(this.datePicker.value, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang}) : "";
+		if (this.value < this.datePicker.startDate || this.value > this.datePicker.endDate) {
+			this.inputNode.value = "";
+		}
+		this._syncValueNode();
+		this.onValueChanged(this.getDate());
+		this.hideContainer();
+	}, onValueChanged:function (dateObj) {
+	}, onInputChange:function () {
+		var input = dojo.string.trim(this.inputNode.value);
+		if (input) {
+			var inputDate = dojo.date.parse(input, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang});
+			if (!this.datePicker._isDisabledDate(inputDate)) {
+				this.setDate(inputDate);
+			}
+		} else {
+			if (input == "") {
+				this.datePicker.setDate("");
+			}
+			this.valueNode.value = input;
+		}
+		if (input) {
+			this._updateText();
+		}
+	}, _syncValueNode:function () {
+		var date = this.datePicker.value;
+		var value = "";
+		switch (this.saveFormat.toLowerCase()) {
+		  case "rfc":
+		  case "iso":
+		  case "":
+			value = dojo.date.toRfc3339(date, "dateOnly");
+			break;
+		  case "posix":
+		  case "unix":
+			value = Number(date);
+			break;
+		  default:
+			if (date) {
+				value = dojo.date.format(date, {datePattern:this.saveFormat, selector:"dateOnly", locale:this.lang});
+			}
+		}
+		this.valueNode.value = value;
+	}, destroy:function (finalize) {
+		this.datePicker.destroy(finalize);
+		dojo.widget.DropdownDatePicker.superclass.destroy.apply(this, arguments);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Chart.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Chart"], ["require", "dojo.widget.*"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.color.hsl"], ["requireIf", dojo.render.svg.capable, "dojo.widget.svg.Chart"], ["requireIf", !dojo.render.svg.capable && dojo.render.vml.capable, "dojo.widget.vml.Chart"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Chart");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.gfx.color.hsl");
+	dojo.declare("dojo.widget.Chart", null, function () {
+		this.series = [];
+	}, {isContainer:false, assignColors:function () {
+		var hue = 30;
+		var sat = 120;
+		var lum = 120;
+		var steps = Math.round(330 / this.series.length);
+		for (var i = 0; i < this.series.length; i++) {
+			var c = dojo.gfx.color.hsl2rgb(hue, sat, lum);
+			if (!this.series[i].color) {
+				this.series[i].color = dojo.gfx.color.rgb2hex(c[0], c[1], c[2]);
+			}
+			hue += steps;
+		}
+	}, parseData:function (table) {
+		var thead = table.getElementsByTagName("thead")[0];
+		var tbody = table.getElementsByTagName("tbody")[0];
+		if (!(thead && tbody)) {
+			dojo.raise("dojo.widget.Chart: supplied table must define a head and a body.");
+		}
+		var columns = thead.getElementsByTagName("tr")[0].getElementsByTagName("th");
+		for (var i = 1; i < columns.length; i++) {
+			var key = "column" + i;
+			var label = columns[i].innerHTML;
+			var plotType = columns[i].getAttribute("plotType") || "line";
+			var color = columns[i].getAttribute("color");
+			var ds = new dojo.widget.Chart.DataSeries(key, label, plotType, color);
+			this.series.push(ds);
+		}
+		var rows = tbody.rows;
+		var xMin = Number.MAX_VALUE, xMax = Number.MIN_VALUE;
+		var yMin = Number.MAX_VALUE, yMax = Number.MIN_VALUE;
+		var ignore = ["accesskey", "align", "bgcolor", "class", "colspan", "height", "id", "nowrap", "rowspan", "style", "tabindex", "title", "valign", "width"];
+		for (var i = 0; i < rows.length; i++) {
+			var row = rows[i];
+			var cells = row.cells;
+			var x = Number.MIN_VALUE;
+			for (var j = 0; j < cells.length; j++) {
+				if (j == 0) {
+					x = parseFloat(cells[j].innerHTML);
+					xMin = Math.min(xMin, x);
+					xMax = Math.max(xMax, x);
+				} else {
+					var ds = this.series[j - 1];
+					var y = parseFloat(cells[j].innerHTML);
+					yMin = Math.min(yMin, y);
+					yMax = Math.max(yMax, y);
+					var o = {x:x, value:y};
+					var attrs = cells[j].attributes;
+					for (var k = 0; k < attrs.length; k++) {
+						var attr = attrs.item(k);
+						var bIgnore = false;
+						for (var l = 0; l < ignore.length; l++) {
+							if (attr.nodeName.toLowerCase() == ignore[l]) {
+								bIgnore = true;
+								break;
+							}
+						}
+						if (!bIgnore) {
+							o[attr.nodeName] = attr.nodeValue;
+						}
+					}
+					ds.add(o);
+				}
+			}
+		}
+		return {x:{min:xMin, max:xMax}, y:{min:yMin, max:yMax}};
+	}});
+	dojo.declare("dojo.widget.Chart.DataSeries", null, function (key, label, plotType, color) {
+		this.id = "DataSeries" + dojo.widget.Chart.DataSeries.count++;
+		this.key = key;
+		this.label = label || this.id;
+		this.plotType = plotType || "line";
+		this.color = color;
+		this.values = [];
+	}, {add:function (v) {
+		if (v.x == null || v.value == null) {
+			dojo.raise("dojo.widget.Chart.DataSeries.add: v must have both an 'x' and 'value' property.");
+		}
+		this.values.push(v);
+	}, clear:function () {
+		this.values = [];
+	}, createRange:function (len) {
+		var idx = this.values.length - 1;
+		var length = (len || this.values.length);
+		return {"index":idx, "length":length, "start":Math.max(idx - length, 0)};
+	}, getMean:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var t = 0;
+		var c = 0;
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				t += n;
+				c++;
+			}
+		}
+		t /= Math.max(c, 1);
+		return t;
+	}, getMovingAverage:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var t = 0;
+		var c = 0;
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				t += n;
+				c++;
+			}
+		}
+		t /= Math.max(c, 1);
+		return t;
+	}, getVariance:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var t = 0;
+		var s = 0;
+		var c = 0;
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				t += n;
+				s += Math.pow(n, 2);
+				c++;
+			}
+		}
+		return (s / c) - Math.pow(t / c, 2);
+	}, getStandardDeviation:function (len) {
+		return Math.sqrt(this.getVariance(len));
+	}, getMax:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var t = 0;
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				t = Math.max(n, t);
+			}
+		}
+		return t;
+	}, getMin:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var t = 0;
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				t = Math.min(n, t);
+			}
+		}
+		return t;
+	}, getMedian:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var a = [];
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				var b = false;
+				for (var j = 0; j < a.length && !b; j++) {
+					if (n == a[j]) {
+						b = true;
+					}
+				}
+				if (!b) {
+					a.push(n);
+				}
+			}
+		}
+		a.sort();
+		if (a.length > 0) {
+			return a[Math.ceil(a.length / 2)];
+		}
+		return 0;
+	}, getMode:function (len) {
+		var range = this.createRange(len);
+		if (range.index < 0) {
+			return 0;
+		}
+		var o = {};
+		var ret = 0;
+		var m = 0;
+		for (var i = range.index; i >= range.start; i--) {
+			var n = parseFloat(this.values[i].value);
+			if (!isNaN(n)) {
+				if (!o[this.values[i].value]) {
+					o[this.values[i].value] = 1;
+				} else {
+					o[this.values[i].value]++;
+				}
+			}
+		}
+		for (var p in o) {
+			if (m < o[p]) {
+				m = o[p];
+				ret = p;
+			}
+		}
+		return parseFloat(ret);
+	}});
+	dojo.requireIf(dojo.render.svg.capable, "dojo.widget.svg.Chart");
+	dojo.requireIf(!dojo.render.svg.capable && dojo.render.vml.capable, "dojo.widget.vml.Chart");
+}});
+
+
 __CPAN_FILE__ src/widget/AnimatedPng.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17434,6 +34224,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.AnimatedPng");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -17470,6 +34262,57 @@
 }});
 
 
+__CPAN_FILE__ src/widget/DateTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DateTextbox"], ["require", "dojo.widget.ValidationTextbox"], ["require", "dojo.date.format"], ["require", "dojo.validate.datetime"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DateTextbox");
+	dojo.require("dojo.widget.ValidationTextbox");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.validate.datetime");
+	dojo.widget.defineWidget("dojo.widget.DateTextbox", dojo.widget.ValidationTextbox, {displayFormat:"", formatLength:"short", mixInProperties:function (localProperties) {
+		dojo.widget.DateTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.format) {
+			this.flags.format = localProperties.format;
+		}
+	}, isValid:function () {
+		if (this.flags.format) {
+			dojo.deprecated("dojo.widget.DateTextbox", "format attribute is deprecated; use displayFormat or formatLength instead", "0.5");
+			return dojo.validate.isValidDate(this.textbox.value, this.flags.format);
+		}
+		return dojo.date.parse(this.textbox.value, {formatLength:this.formatLength, selector:"dateOnly", locale:this.lang, datePattern:this.displayFormat});
+	}});
+	dojo.widget.defineWidget("dojo.widget.TimeTextbox", dojo.widget.ValidationTextbox, {displayFormat:"", formatLength:"short", mixInProperties:function (localProperties) {
+		dojo.widget.TimeTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.format) {
+			this.flags.format = localProperties.format;
+		}
+		if (localProperties.amsymbol) {
+			this.flags.amSymbol = localProperties.amsymbol;
+		}
+		if (localProperties.pmsymbol) {
+			this.flags.pmSymbol = localProperties.pmsymbol;
+		}
+	}, isValid:function () {
+		if (this.flags.format) {
+			dojo.deprecated("dojo.widget.TimeTextbox", "format attribute is deprecated; use displayFormat or formatLength instead", "0.5");
+			return dojo.validate.isValidTime(this.textbox.value, this.flags);
+		}
+		return dojo.date.parse(this.textbox.value, {formatLength:this.formatLength, selector:"timeOnly", locale:this.lang, timePattern:this.displayFormat});
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeDocIconExtension.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17481,6 +34324,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeDocIconExtension");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeExtension");
@@ -17524,6 +34369,298 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Manager.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Manager"], ["require", "dojo.lang.array"], ["require", "dojo.lang.func"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Manager");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.event.*");
+	dojo.widget.manager = new function () {
+		this.widgets = [];
+		this.widgetIds = [];
+		this.topWidgets = {};
+		var widgetTypeCtr = {};
+		var renderPrefixCache = [];
+		this.getUniqueId = function (widgetType) {
+			var widgetId;
+			do {
+				widgetId = widgetType + "_" + (widgetTypeCtr[widgetType] != undefined ? ++widgetTypeCtr[widgetType] : widgetTypeCtr[widgetType] = 0);
+			} while (this.getWidgetById(widgetId));
+			return widgetId;
+		};
+		this.add = function (widget) {
+			this.widgets.push(widget);
+			if (!widget.extraArgs["id"]) {
+				widget.extraArgs["id"] = widget.extraArgs["ID"];
+			}
+			if (widget.widgetId == "") {
+				if (widget["id"]) {
+					widget.widgetId = widget["id"];
+				} else {
+					if (widget.extraArgs["id"]) {
+						widget.widgetId = widget.extraArgs["id"];
+					} else {
+						widget.widgetId = this.getUniqueId(widget.ns + "_" + widget.widgetType);
+					}
+				}
+			}
+			if (this.widgetIds[widget.widgetId]) {
+				dojo.debug("widget ID collision on ID: " + widget.widgetId);
+			}
+			this.widgetIds[widget.widgetId] = widget;
+		};
+		this.destroyAll = function () {
+			for (var x = this.widgets.length - 1; x >= 0; x--) {
+				try {
+					this.widgets[x].destroy(true);
+					delete this.widgets[x];
+				}
+				catch (e) {
+				}
+			}
+		};
+		this.remove = function (widgetIndex) {
+			if (dojo.lang.isNumber(widgetIndex)) {
+				var tw = this.widgets[widgetIndex].widgetId;
+				delete this.topWidgets[tw];
+				delete this.widgetIds[tw];
+				this.widgets.splice(widgetIndex, 1);
+			} else {
+				this.removeById(widgetIndex);
+			}
+		};
+		this.removeById = function (id) {
+			if (!dojo.lang.isString(id)) {
+				id = id["widgetId"];
+				if (!id) {
+					dojo.debug("invalid widget or id passed to removeById");
+					return;
+				}
+			}
+			for (var i = 0; i < this.widgets.length; i++) {
+				if (this.widgets[i].widgetId == id) {
+					this.remove(i);
+					break;
+				}
+			}
+		};
+		this.getWidgetById = function (id) {
+			if (dojo.lang.isString(id)) {
+				return this.widgetIds[id];
+			}
+			return id;
+		};
+		this.getWidgetsByType = function (type) {
+			var lt = type.toLowerCase();
+			var getType = (type.indexOf(":") < 0 ? function (x) {
+				return x.widgetType.toLowerCase();
+			} : function (x) {
+				return x.getNamespacedType();
+			});
+			var ret = [];
+			dojo.lang.forEach(this.widgets, function (x) {
+				if (getType(x) == lt) {
+					ret.push(x);
+				}
+			});
+			return ret;
+		};
+		this.getWidgetsByFilter = function (unaryFunc, onlyOne) {
+			var ret = [];
+			dojo.lang.every(this.widgets, function (x) {
+				if (unaryFunc(x)) {
+					ret.push(x);
+					if (onlyOne) {
+						return false;
+					}
+				}
+				return true;
+			});
+			return (onlyOne ? ret[0] : ret);
+		};
+		this.getAllWidgets = function () {
+			return this.widgets.concat();
+		};
+		this.getWidgetByNode = function (node) {
+			var w = this.getAllWidgets();
+			node = dojo.byId(node);
+			for (var i = 0; i < w.length; i++) {
+				if (w[i].domNode == node) {
+					return w[i];
+				}
+			}
+			return null;
+		};
+		this.byId = this.getWidgetById;
+		this.byType = this.getWidgetsByType;
+		this.byFilter = this.getWidgetsByFilter;
+		this.byNode = this.getWidgetByNode;
+		var knownWidgetImplementations = {};
+		var widgetPackages = ["dojo.widget"];
+		for (var i = 0; i < widgetPackages.length; i++) {
+			widgetPackages[widgetPackages[i]] = true;
+		}
+		this.registerWidgetPackage = function (pname) {
+			if (!widgetPackages[pname]) {
+				widgetPackages[pname] = true;
+				widgetPackages.push(pname);
+			}
+		};
+		this.getWidgetPackageList = function () {
+			return dojo.lang.map(widgetPackages, function (elt) {
+				return (elt !== true ? elt : undefined);
+			});
+		};
+		this.getImplementation = function (widgetName, ctorObject, mixins, ns) {
+			var impl = this.getImplementationName(widgetName, ns);
+			if (impl) {
+				var ret = ctorObject ? new impl(ctorObject) : new impl();
+				return ret;
+			}
+		};
+		function buildPrefixCache() {
+			for (var renderer in dojo.render) {
+				if (dojo.render[renderer]["capable"] === true) {
+					var prefixes = dojo.render[renderer].prefixes;
+					for (var i = 0; i < prefixes.length; i++) {
+						renderPrefixCache.push(prefixes[i].toLowerCase());
+					}
+				}
+			}
+		}
+		var findImplementationInModule = function (lowerCaseWidgetName, module) {
+			if (!module) {
+				return null;
+			}
+			for (var i = 0, l = renderPrefixCache.length, widgetModule; i <= l; i++) {
+				widgetModule = (i < l ? module[renderPrefixCache[i]] : module);
+				if (!widgetModule) {
+					continue;
+				}
+				for (var name in widgetModule) {
+					if (name.toLowerCase() == lowerCaseWidgetName) {
+						return widgetModule[name];
+					}
+				}
+			}
+			return null;
+		};
+		var findImplementation = function (lowerCaseWidgetName, moduleName) {
+			var module = dojo.evalObjPath(moduleName, false);
+			return (module ? findImplementationInModule(lowerCaseWidgetName, module) : null);
+		};
+		this.getImplementationName = function (widgetName, ns) {
+			var lowerCaseWidgetName = widgetName.toLowerCase();
+			ns = ns || "dojo";
+			var imps = knownWidgetImplementations[ns] || (knownWidgetImplementations[ns] = {});
+			var impl = imps[lowerCaseWidgetName];
+			if (impl) {
+				return impl;
+			}
+			if (!renderPrefixCache.length) {
+				buildPrefixCache();
+			}
+			var nsObj = dojo.ns.get(ns);
+			if (!nsObj) {
+				dojo.ns.register(ns, ns + ".widget");
+				nsObj = dojo.ns.get(ns);
+			}
+			if (nsObj) {
+				nsObj.resolve(widgetName);
+			}
+			impl = findImplementation(lowerCaseWidgetName, nsObj.module);
+			if (impl) {
+				return (imps[lowerCaseWidgetName] = impl);
+			}
+			nsObj = dojo.ns.require(ns);
+			if ((nsObj) && (nsObj.resolver)) {
+				nsObj.resolve(widgetName);
+				impl = findImplementation(lowerCaseWidgetName, nsObj.module);
+				if (impl) {
+					return (imps[lowerCaseWidgetName] = impl);
+				}
+			}
+			dojo.deprecated("dojo.widget.Manager.getImplementationName", "Could not locate widget implementation for \"" + widgetName + "\" in \"" + nsObj.module + "\" registered to namespace \"" + nsObj.name + "\". " + "Developers must specify correct namespaces for all non-Dojo widgets", "0.5");
+			for (var i = 0; i < widgetPackages.length; i++) {
+				impl = findImplementation(lowerCaseWidgetName, widgetPackages[i]);
+				if (impl) {
+					return (imps[lowerCaseWidgetName] = impl);
+				}
+			}
+			throw new Error("Could not locate widget implementation for \"" + widgetName + "\" in \"" + nsObj.module + "\" registered to namespace \"" + nsObj.name + "\"");
+		};
+		this.resizing = false;
+		this.onWindowResized = function () {
+			if (this.resizing) {
+				return;
+			}
+			try {
+				this.resizing = true;
+				for (var id in this.topWidgets) {
+					var child = this.topWidgets[id];
+					if (child.checkSize) {
+						child.checkSize();
+					}
+				}
+			}
+			catch (e) {
+			}
+			finally {
+				this.resizing = false;
+			}
+		};
+		if (typeof window != "undefined") {
+			dojo.addOnLoad(this, "onWindowResized");
+			dojo.event.connect(window, "onresize", this, "onWindowResized");
+		}
+	};
+	(function () {
+		var dw = dojo.widget;
+		var dwm = dw.manager;
+		var h = dojo.lang.curry(dojo.lang, "hitch", dwm);
+		var g = function (oldName, newName) {
+			dw[(newName || oldName)] = h(oldName);
+		};
+		g("add", "addWidget");
+		g("destroyAll", "destroyAllWidgets");
+		g("remove", "removeWidget");
+		g("removeById", "removeWidgetById");
+		g("getWidgetById");
+		g("getWidgetById", "byId");
+		g("getWidgetsByType");
+		g("getWidgetsByFilter");
+		g("getWidgetsByType", "byType");
+		g("getWidgetsByFilter", "byFilter");
+		g("getWidgetByNode", "byNode");
+		dw.all = function (n) {
+			var widgets = dwm.getAllWidgets.apply(dwm, arguments);
+			if (arguments.length > 0) {
+				return widgets[n];
+			}
+			return widgets;
+		};
+		g("registerWidgetPackage");
+		g("getImplementation", "getWidgetImplementation");
+		g("getImplementationName", "getWidgetImplementationName");
+		dw.widgets = dwm.widgets;
+		dw.widgetIds = dwm.widgetIds;
+		dw.root = dwm.root;
+	})();
+}});
+
+
 __CPAN_FILE__ src/widget/TreeRPCController.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17535,6 +34672,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeRPCController");
 dojo.require("dojo.event.*");
 dojo.require("dojo.json");
@@ -17607,6 +34746,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeEmphasizeOnSelect");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeSelectorV3");
@@ -17622,6 +34763,60 @@
 }});
 
 
+__CPAN_FILE__ src/widget/RealNumberTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.RealNumberTextbox"], ["require", "dojo.widget.IntegerTextbox"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.RealNumberTextbox");
+	dojo.require("dojo.widget.IntegerTextbox");
+	dojo.require("dojo.validate.common");
+	dojo.widget.defineWidget("dojo.widget.RealNumberTextbox", dojo.widget.IntegerTextbox, {mixInProperties:function (localProperties, frag) {
+		dojo.widget.RealNumberTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.places) {
+			this.flags.places = Number(localProperties.places);
+		}
+		if ((localProperties.exponent == "true") || (localProperties.exponent == "always")) {
+			this.flags.exponent = true;
+		} else {
+			if ((localProperties.exponent == "false") || (localProperties.exponent == "never")) {
+				this.flags.exponent = false;
+			} else {
+				this.flags.exponent = [true, false];
+			}
+		}
+		if ((localProperties.esigned == "true") || (localProperties.esigned == "always")) {
+			this.flags.eSigned = true;
+		} else {
+			if ((localProperties.esigned == "false") || (localProperties.esigned == "never")) {
+				this.flags.eSigned = false;
+			} else {
+				this.flags.eSigned = [true, false];
+			}
+		}
+		if (localProperties.min) {
+			this.flags.min = parseFloat(localProperties.min);
+		}
+		if (localProperties.max) {
+			this.flags.max = parseFloat(localProperties.max);
+		}
+	}, isValid:function () {
+		return dojo.validate.isRealNumber(this.textbox.value, this.flags);
+	}, isInRange:function () {
+		return dojo.validate.isInRange(this.textbox.value, this.flags);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeRpcControllerV3.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17633,6 +34828,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeRpcControllerV3");
 dojo.require("dojo.event.*");
 dojo.require("dojo.json");
@@ -17804,6 +35001,103 @@
 }});
 
 
+__CPAN_FILE__ src/widget/IntegerTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.IntegerTextbox"], ["require", "dojo.widget.ValidationTextbox"], ["require", "dojo.validate.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.IntegerTextbox");
+	dojo.require("dojo.widget.ValidationTextbox");
+	dojo.require("dojo.validate.common");
+	dojo.widget.defineWidget("dojo.widget.IntegerTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties, frag) {
+		dojo.widget.IntegerTextbox.superclass.mixInProperties.apply(this, arguments);
+		if ((localProperties.signed == "true") || (localProperties.signed == "always")) {
+			this.flags.signed = true;
+		} else {
+			if ((localProperties.signed == "false") || (localProperties.signed == "never")) {
+				this.flags.signed = false;
+				this.flags.min = 0;
+			} else {
+				this.flags.signed = [true, false];
+			}
+		}
+		if (localProperties.separator) {
+			this.flags.separator = localProperties.separator;
+		}
+		if (localProperties.min) {
+			this.flags.min = parseInt(localProperties.min);
+		}
+		if (localProperties.max) {
+			this.flags.max = parseInt(localProperties.max);
+		}
+	}, isValid:function () {
+		return dojo.validate.isInteger(this.textbox.value, this.flags);
+	}, isInRange:function () {
+		return dojo.validate.isInRange(this.textbox.value, this.flags);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/ShowAction.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ShowAction"], ["require", "dojo.widget.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ShowAction");
+	dojo.require("dojo.widget.*");
+	dojo.widget.defineWidget("dojo.widget.ShowAction", dojo.widget.HtmlWidget, {on:"", action:"fade", duration:350, from:"", to:"", auto:"false", postMixInProperties:function () {
+		if (dojo.render.html.opera) {
+			this.action = this.action.split("/").pop();
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/DebugConsole.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DebugConsole"], ["require", "dojo.widget.Widget"], ["require", "dojo.widget.*"], ["require", "dojo.widget.FloatingPane"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DebugConsole");
+	dojo.require("dojo.widget.Widget");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.FloatingPane");
+	dojo.widget.defineWidget("dojo.widget.DebugConsole", dojo.widget.FloatingPane, {fillInTemplate:function () {
+		dojo.widget.DebugConsole.superclass.fillInTemplate.apply(this, arguments);
+		this.containerNode.id = "debugConsoleClientPane";
+		djConfig.isDebug = true;
+		djConfig.debugContainerId = this.containerNode.id;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TaskBar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17815,6 +35109,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TaskBar");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.FloatingPane");
@@ -17864,6 +35160,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TabContainer");
 dojo.require("dojo.lang.func");
 dojo.require("dojo.widget.*");
@@ -17953,6 +35251,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TitlePane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.ContentPane");
@@ -17985,6 +35285,164 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeBasicController.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeBasicController"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"], ["require", "dojo.dnd.TreeDragAndDrop"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeBasicController");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.widget.defineWidget("dojo.widget.TreeBasicController", dojo.widget.HtmlWidget, {widgetType:"TreeBasicController", DNDController:"", dieWithTree:false, initialize:function (args, frag) {
+		if (this.DNDController == "create") {
+			dojo.require("dojo.dnd.TreeDragAndDrop");
+			this.DNDController = new dojo.dnd.TreeDNDController(this);
+		}
+	}, listenTree:function (tree) {
+		dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
+		dojo.event.topic.subscribe(tree.eventNames.treeClick, this, "onTreeClick");
+		dojo.event.topic.subscribe(tree.eventNames.treeCreate, this, "onTreeCreate");
+		dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+		if (this.DNDController) {
+			this.DNDController.listenTree(tree);
+		}
+	}, unlistenTree:function (tree) {
+		dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
+		dojo.event.topic.unsubscribe(tree.eventNames.treeClick, this, "onTreeClick");
+		dojo.event.topic.unsubscribe(tree.eventNames.treeCreate, this, "onTreeCreate");
+		dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+	}, onTreeDestroy:function (message) {
+		var tree = message.source;
+		this.unlistenTree(tree);
+		if (this.dieWithTree) {
+			this.destroy();
+		}
+	}, onCreateDOMNode:function (message) {
+		var node = message.source;
+		if (node.expandLevel > 0) {
+			this.expandToLevel(node, node.expandLevel);
+		}
+	}, onTreeCreate:function (message) {
+		var tree = message.source;
+		var _this = this;
+		if (tree.expandLevel) {
+			dojo.lang.forEach(tree.children, function (child) {
+				_this.expandToLevel(child, tree.expandLevel - 1);
+			});
+		}
+	}, expandToLevel:function (node, level) {
+		if (level == 0) {
+			return;
+		}
+		var children = node.children;
+		var _this = this;
+		var handler = function (node, expandLevel) {
+			this.node = node;
+			this.expandLevel = expandLevel;
+			this.process = function () {
+				for (var i = 0; i < this.node.children.length; i++) {
+					var child = node.children[i];
+					_this.expandToLevel(child, this.expandLevel);
+				}
+			};
+		};
+		var h = new handler(node, level - 1);
+		this.expand(node, false, h, h.process);
+	}, onTreeClick:function (message) {
+		var node = message.source;
+		if (node.isLocked()) {
+			return false;
+		}
+		if (node.isExpanded) {
+			this.collapse(node);
+		} else {
+			this.expand(node);
+		}
+	}, expand:function (node, sync, callObj, callFunc) {
+		node.expand();
+		if (callFunc) {
+			callFunc.apply(callObj, [node]);
+		}
+	}, collapse:function (node) {
+		node.collapse();
+	}, canMove:function (child, newParent) {
+		if (child.actionIsDisabled(child.actions.MOVE)) {
+			return false;
+		}
+		if (child.parent !== newParent && newParent.actionIsDisabled(newParent.actions.ADDCHILD)) {
+			return false;
+		}
+		var node = newParent;
+		while (node.isTreeNode) {
+			if (node === child) {
+				return false;
+			}
+			node = node.parent;
+		}
+		return true;
+	}, move:function (child, newParent, index) {
+		if (!this.canMove(child, newParent)) {
+			return false;
+		}
+		var result = this.doMove(child, newParent, index);
+		if (!result) {
+			return result;
+		}
+		if (newParent.isTreeNode) {
+			this.expand(newParent);
+		}
+		return result;
+	}, doMove:function (child, newParent, index) {
+		child.tree.move(child, newParent, index);
+		return true;
+	}, canRemoveNode:function (child) {
+		if (child.actionIsDisabled(child.actions.REMOVE)) {
+			return false;
+		}
+		return true;
+	}, removeNode:function (node, callObj, callFunc) {
+		if (!this.canRemoveNode(node)) {
+			return false;
+		}
+		return this.doRemoveNode(node, callObj, callFunc);
+	}, doRemoveNode:function (node, callObj, callFunc) {
+		node.tree.removeNode(node);
+		if (callFunc) {
+			callFunc.apply(dojo.lang.isUndefined(callObj) ? this : callObj, [node]);
+		}
+	}, canCreateChild:function (parent, index, data) {
+		if (parent.actionIsDisabled(parent.actions.ADDCHILD)) {
+			return false;
+		}
+		return true;
+	}, createChild:function (parent, index, data, callObj, callFunc) {
+		if (!this.canCreateChild(parent, index, data)) {
+			return false;
+		}
+		return this.doCreateChild.apply(this, arguments);
+	}, doCreateChild:function (parent, index, data, callObj, callFunc) {
+		var widgetType = data.widgetType ? data.widgetType : "TreeNode";
+		var newChild = dojo.widget.createWidget(widgetType, data);
+		parent.addChild(newChild, index);
+		this.expand(parent);
+		if (callFunc) {
+			callFunc.apply(callObj, [newChild]);
+		}
+		return newChild;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/CurrencyTextbox.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -17996,6 +35454,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.CurrencyTextbox");
 dojo.require("dojo.widget.IntegerTextbox");
 dojo.require("dojo.validate.common");
@@ -18025,6 +35485,25 @@
 }});
 
 
+__CPAN_FILE__ src/widget/validate.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.validate"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.validate");
+	dojo.deprecated("dojo.widget.validate", "use one of the specific widgets in dojo.widget.<name>Textbox instead", "0.5");
+}});
+
+
 __CPAN_FILE__ src/widget/Clock.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -18036,6 +35515,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Clock");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.gfx.*");
@@ -18178,6 +35659,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeBasicControllerV3");
 dojo.require("dojo.event.*");
 dojo.require("dojo.json");
@@ -18639,6 +36122,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeDisableWrapExtension");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeExtension");
@@ -18665,6 +36150,33 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeToggleOnSelect.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeToggleOnSelect"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeToggleOnSelect");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.TreeToggleOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", selectEvent:"select", initialize:function () {
+		this.selector = dojo.widget.byId(this.selector);
+		this.controller = dojo.widget.byId(this.controller);
+		dojo.event.topic.subscribe(this.selector.eventNames[this.selectEvent], this, "onSelectEvent");
+	}, onSelectEvent:function (message) {
+		var node = message.node;
+		node.isExpanded ? this.controller.collapse(node) : this.controller.expand(node);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Toggler.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -18676,6 +36188,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Toggler");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.event.*");
@@ -18691,6 +36205,818 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeLoadingController.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeLoadingController"], ["require", "dojo.widget.TreeBasicController"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeLoadingController");
+	dojo.require("dojo.widget.TreeBasicController");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.widget.defineWidget("dojo.widget.TreeLoadingController", dojo.widget.TreeBasicController, {RPCUrl:"", RPCActionParam:"action", RPCErrorHandler:function (type, obj, evt) {
+		alert("RPC Error: " + (obj.message || "no message"));
+	}, preventCache:true, getRPCUrl:function (action) {
+		if (this.RPCUrl == "local") {
+			var dir = document.location.href.substr(0, document.location.href.lastIndexOf("/"));
+			var localUrl = dir + "/" + action;
+			return localUrl;
+		}
+		if (!this.RPCUrl) {
+			dojo.raise("Empty RPCUrl: can't load");
+		}
+		return this.RPCUrl + (this.RPCUrl.indexOf("?") > -1 ? "&" : "?") + this.RPCActionParam + "=" + action;
+	}, loadProcessResponse:function (node, result, callObj, callFunc) {
+		if (!dojo.lang.isUndefined(result.error)) {
+			this.RPCErrorHandler("server", result.error);
+			return false;
+		}
+		var newChildren = result;
+		if (!dojo.lang.isArray(newChildren)) {
+			dojo.raise("loadProcessResponse: Not array loaded: " + newChildren);
+		}
+		for (var i = 0; i < newChildren.length; i++) {
+			newChildren[i] = dojo.widget.createWidget(node.widgetType, newChildren[i]);
+			node.addChild(newChildren[i]);
+		}
+		node.state = node.loadStates.LOADED;
+		if (dojo.lang.isFunction(callFunc)) {
+			callFunc.apply(dojo.lang.isUndefined(callObj) ? this : callObj, [node, newChildren]);
+		}
+	}, getInfo:function (obj) {
+		return obj.getInfo();
+	}, runRPC:function (kw) {
+		var _this = this;
+		var handle = function (type, data, evt) {
+			if (kw.lock) {
+				dojo.lang.forEach(kw.lock, function (t) {
+					t.unlock();
+				});
+			}
+			if (type == "load") {
+				kw.load.call(this, data);
+			} else {
+				this.RPCErrorHandler(type, data, evt);
+			}
+		};
+		if (kw.lock) {
+			dojo.lang.forEach(kw.lock, function (t) {
+				t.lock();
+			});
+		}
+		dojo.io.bind({url:kw.url, handle:dojo.lang.hitch(this, handle), mimetype:"text/json", preventCache:_this.preventCache, sync:kw.sync, content:{data:dojo.json.serialize(kw.params)}});
+	}, loadRemote:function (node, sync, callObj, callFunc) {
+		var _this = this;
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
+		this.runRPC({url:this.getRPCUrl("getChildren"), load:function (result) {
+			_this.loadProcessResponse(node, result, callObj, callFunc);
+		}, sync:sync, lock:[node], params:params});
+	}, expand:function (node, sync, callObj, callFunc) {
+		if (node.state == node.loadStates.UNCHECKED && node.isFolder) {
+			this.loadRemote(node, sync, this, function (node, newChildren) {
+				this.expand(node, sync, callObj, callFunc);
+			});
+			return;
+		}
+		dojo.widget.TreeBasicController.prototype.expand.apply(this, arguments);
+	}, doMove:function (child, newParent, index) {
+		if (newParent.isTreeNode && newParent.state == newParent.loadStates.UNCHECKED) {
+			this.loadRemote(newParent, true);
+		}
+		return dojo.widget.TreeBasicController.prototype.doMove.apply(this, arguments);
+	}, doCreateChild:function (parent, index, data, callObj, callFunc) {
+		if (parent.state == parent.loadStates.UNCHECKED) {
+			this.loadRemote(parent, true);
+		}
+		return dojo.widget.TreeBasicController.prototype.doCreateChild.apply(this, arguments);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/FilteringTable.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.FilteringTable"], ["require", "dojo.date.format"], ["require", "dojo.math"], ["require", "dojo.collections.Store"], ["require", "dojo.html.*"], ["require", "dojo.html.util"], ["require", "dojo.html.style"], ["require", "dojo.html.selection"], ["require", "dojo.event.*"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.FilteringTable");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.math");
+	dojo.require("dojo.collections.Store");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.util");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.FilteringTable", dojo.widget.HtmlWidget, function () {
+		this.store = new dojo.collections.Store();
+		this.valueField = "Id";
+		this.multiple = false;
+		this.maxSelect = 0;
+		this.maxSortable = 1;
+		this.minRows = 0;
+		this.defaultDateFormat = "%D";
+		this.isInitialized = false;
+		this.alternateRows = false;
+		this.columns = [];
+		this.sortInformation = [{index:0, direction:0}];
+		this.headClass = "";
+		this.tbodyClass = "";
+		this.headerClass = "";
+		this.headerUpClass = "selectedUp";
+		this.headerDownClass = "selectedDown";
+		this.rowClass = "";
+		this.rowAlternateClass = "alt";
+		this.rowSelectedClass = "selected";
+		this.columnSelected = "sorted-column";
+	}, {isContainer:false, templatePath:null, templateCssPath:null, getTypeFromString:function (s) {
+		var parts = s.split("."), i = 0, obj = dj_global;
+		do {
+			obj = obj[parts[i++]];
+		} while (i < parts.length && obj);
+		return (obj != dj_global) ? obj : null;
+	}, getByRow:function (row) {
+		return this.store.getByKey(dojo.html.getAttribute(row, "value"));
+	}, getDataByRow:function (row) {
+		return this.store.getDataByKey(dojo.html.getAttribute(row, "value"));
+	}, getRow:function (obj) {
+		var rows = this.domNode.tBodies[0].rows;
+		for (var i = 0; i < rows.length; i++) {
+			if (this.store.getDataByKey(dojo.html.getAttribute(rows[i], "value")) == obj) {
+				return rows[i];
+			}
+		}
+		return null;
+	}, getColumnIndex:function (fieldPath) {
+		for (var i = 0; i < this.columns.length; i++) {
+			if (this.columns[i].getField() == fieldPath) {
+				return i;
+			}
+		}
+		return -1;
+	}, getSelectedData:function () {
+		var data = this.store.get();
+		var a = [];
+		for (var i = 0; i < data.length; i++) {
+			if (data[i].isSelected) {
+				a.push(data[i].src);
+			}
+		}
+		if (this.multiple) {
+			return a;
+		} else {
+			return a[0];
+		}
+	}, isSelected:function (obj) {
+		var data = this.store.get();
+		for (var i = 0; i < data.length; i++) {
+			if (data[i].src == obj) {
+				return true;
+			}
+		}
+		return false;
+	}, isValueSelected:function (val) {
+		var v = this.store.getByKey(val);
+		if (v) {
+			return v.isSelected;
+		}
+		return false;
+	}, isIndexSelected:function (idx) {
+		var v = this.store.getByIndex(idx);
+		if (v) {
+			return v.isSelected;
+		}
+		return false;
+	}, isRowSelected:function (row) {
+		var v = this.getByRow(row);
+		if (v) {
+			return v.isSelected;
+		}
+		return false;
+	}, reset:function () {
+		this.store.clearData();
+		this.columns = [];
+		this.sortInformation = [{index:0, direction:0}];
+		this.resetSelections();
+		this.isInitialized = false;
+		this.onReset();
+	}, resetSelections:function () {
+		this.store.forEach(function (element) {
+			element.isSelected = false;
+		});
+	}, onReset:function () {
+	}, select:function (obj) {
+		var data = this.store.get();
+		for (var i = 0; i < data.length; i++) {
+			if (data[i].src == obj) {
+				data[i].isSelected = true;
+				break;
+			}
+		}
+		this.onDataSelect(obj);
+	}, selectByValue:function (val) {
+		this.select(this.store.getDataByKey(val));
+	}, selectByIndex:function (idx) {
+		this.select(this.store.getDataByIndex(idx));
+	}, selectByRow:function (row) {
+		this.select(this.getDataByRow(row));
+	}, selectAll:function () {
+		this.store.forEach(function (element) {
+			element.isSelected = true;
+		});
+	}, onDataSelect:function (obj) {
+	}, toggleSelection:function (obj) {
+		var data = this.store.get();
+		for (var i = 0; i < data.length; i++) {
+			if (data[i].src == obj) {
+				data[i].isSelected = !data[i].isSelected;
+				break;
+			}
+		}
+		this.onDataToggle(obj);
+	}, toggleSelectionByValue:function (val) {
+		this.toggleSelection(this.store.getDataByKey(val));
+	}, toggleSelectionByIndex:function (idx) {
+		this.toggleSelection(this.store.getDataByIndex(idx));
+	}, toggleSelectionByRow:function (row) {
+		this.toggleSelection(this.getDataByRow(row));
+	}, toggleAll:function () {
+		this.store.forEach(function (element) {
+			element.isSelected = !element.isSelected;
+		});
+	}, onDataToggle:function (obj) {
+	}, _meta:{field:null, format:null, filterer:null, noSort:false, sortType:"String", dataType:String, sortFunction:null, filterFunction:null, label:null, align:"left", valign:"middle", getField:function () {
+		return this.field || this.label;
+	}, getType:function () {
+		return this.dataType;
+	}}, createMetaData:function (obj) {
+		for (var p in this._meta) {
+			if (!obj[p]) {
+				obj[p] = this._meta[p];
+			}
+		}
+		if (!obj.label) {
+			obj.label = obj.field;
+		}
+		if (!obj.filterFunction) {
+			obj.filterFunction = this._defaultFilter;
+		}
+		return obj;
+	}, parseMetadata:function (head) {
+		this.columns = [];
+		this.sortInformation = [];
+		var row = head.getElementsByTagName("tr")[0];
+		var cells = row.getElementsByTagName("td");
+		if (cells.length == 0) {
+			cells = row.getElementsByTagName("th");
+		}
+		for (var i = 0; i < cells.length; i++) {
+			var o = this.createMetaData({});
+			if (dojo.html.hasAttribute(cells[i], "align")) {
+				o.align = dojo.html.getAttribute(cells[i], "align");
+			}
+			if (dojo.html.hasAttribute(cells[i], "valign")) {
+				o.valign = dojo.html.getAttribute(cells[i], "valign");
+			}
+			if (dojo.html.hasAttribute(cells[i], "nosort")) {
+				o.noSort = (dojo.html.getAttribute(cells[i], "nosort") == "true");
+			}
+			if (dojo.html.hasAttribute(cells[i], "sortusing")) {
+				var trans = dojo.html.getAttribute(cells[i], "sortusing");
+				var f = this.getTypeFromString(trans);
+				if (f != null && f != window && typeof (f) == "function") {
+					o.sortFunction = f;
+				}
+			}
+			o.label = dojo.html.renderedTextContent(cells[i]);
+			if (dojo.html.hasAttribute(cells[i], "field")) {
+				o.field = dojo.html.getAttribute(cells[i], "field");
+			} else {
+				if (o.label.length > 0) {
+					o.field = o.label;
+				} else {
+					o.field = "field" + i;
+				}
+			}
+			if (dojo.html.hasAttribute(cells[i], "format")) {
+				o.format = dojo.html.getAttribute(cells[i], "format");
+			}
+			if (dojo.html.hasAttribute(cells[i], "dataType")) {
+				var sortType = dojo.html.getAttribute(cells[i], "dataType");
+				if (sortType.toLowerCase() == "html" || sortType.toLowerCase() == "markup") {
+					o.sortType = "__markup__";
+				} else {
+					var type = this.getTypeFromString(sortType);
+					if (type) {
+						o.sortType = sortType;
+						o.dataType = type;
+					}
+				}
+			}
+			if (dojo.html.hasAttribute(cells[i], "filterusing")) {
+				var trans = dojo.html.getAttribute(cells[i], "filterusing");
+				var f = this.getTypeFromString(trans);
+				if (f != null && f != window && typeof (f) == "function") {
+					o.filterFunction = f;
+				}
+			}
+			this.columns.push(o);
+			if (dojo.html.hasAttribute(cells[i], "sort")) {
+				var info = {index:i, direction:0};
+				var dir = dojo.html.getAttribute(cells[i], "sort");
+				if (!isNaN(parseInt(dir))) {
+					dir = parseInt(dir);
+					info.direction = (dir != 0) ? 1 : 0;
+				} else {
+					info.direction = (dir.toLowerCase() == "desc") ? 1 : 0;
+				}
+				this.sortInformation.push(info);
+			}
+		}
+		if (this.sortInformation.length == 0) {
+			this.sortInformation.push({index:0, direction:0});
+		} else {
+			if (this.sortInformation.length > this.maxSortable) {
+				this.sortInformation.length = this.maxSortable;
+			}
+		}
+	}, parseData:function (body) {
+		if (body.rows.length == 0 && this.columns.length == 0) {
+			return;
+		}
+		var self = this;
+		this["__selected__"] = [];
+		var arr = this.store.getFromHtml(this.columns, body, function (obj, row) {
+			if (typeof (obj[self.valueField]) == "undefined" || obj[self.valueField] == null) {
+				obj[self.valueField] = dojo.html.getAttribute(row, "value");
+			}
+			if (dojo.html.getAttribute(row, "selected") == "true") {
+				self["__selected__"].push(obj);
+			}
+		});
+		this.store.setData(arr, true);
+		this.render();
+		for (var i = 0; i < this["__selected__"].length; i++) {
+			this.select(this["__selected__"][i]);
+		}
+		this.renderSelections();
+		delete this["__selected__"];
+		this.isInitialized = true;
+	}, onSelect:function (e) {
+		var row = dojo.html.getParentByType(e.target, "tr");
+		if (dojo.html.hasAttribute(row, "emptyRow")) {
+			return;
+		}
+		var body = dojo.html.getParentByType(row, "tbody");
+		if (this.multiple) {
+			if (e.shiftKey) {
+				var startRow;
+				var rows = body.rows;
+				for (var i = 0; i < rows.length; i++) {
+					if (rows[i] == row) {
+						break;
+					}
+					if (this.isRowSelected(rows[i])) {
+						startRow = rows[i];
+					}
+				}
+				if (!startRow) {
+					startRow = row;
+					for (; i < rows.length; i++) {
+						if (this.isRowSelected(rows[i])) {
+							row = rows[i];
+							break;
+						}
+					}
+				}
+				this.resetSelections();
+				if (startRow == row) {
+					this.toggleSelectionByRow(row);
+				} else {
+					var doSelect = false;
+					for (var i = 0; i < rows.length; i++) {
+						if (rows[i] == startRow) {
+							doSelect = true;
+						}
+						if (doSelect) {
+							this.selectByRow(rows[i]);
+						}
+						if (rows[i] == row) {
+							doSelect = false;
+						}
+					}
+				}
+			} else {
+				this.toggleSelectionByRow(row);
+			}
+		} else {
+			this.resetSelections();
+			this.toggleSelectionByRow(row);
+		}
+		this.renderSelections();
+	}, onSort:function (e) {
+		var oldIndex = this.sortIndex;
+		var oldDirection = this.sortDirection;
+		var source = e.target;
+		var row = dojo.html.getParentByType(source, "tr");
+		var cellTag = "td";
+		if (row.getElementsByTagName(cellTag).length == 0) {
+			cellTag = "th";
+		}
+		var headers = row.getElementsByTagName(cellTag);
+		var header = dojo.html.getParentByType(source, cellTag);
+		for (var i = 0; i < headers.length; i++) {
+			dojo.html.setClass(headers[i], this.headerClass);
+			if (headers[i] == header) {
+				if (this.sortInformation[0].index != i) {
+					this.sortInformation.unshift({index:i, direction:0});
+				} else {
+					this.sortInformation[0] = {index:i, direction:(~this.sortInformation[0].direction) & 1};
+				}
+			}
+		}
+		this.sortInformation.length = Math.min(this.sortInformation.length, this.maxSortable);
+		for (var i = 0; i < this.sortInformation.length; i++) {
+			var idx = this.sortInformation[i].index;
+			var dir = (~this.sortInformation[i].direction) & 1;
+			dojo.html.setClass(headers[idx], dir == 0 ? this.headerDownClass : this.headerUpClass);
+		}
+		this.render();
+	}, onFilter:function () {
+	}, _defaultFilter:function (obj) {
+		return true;
+	}, setFilter:function (field, fn) {
+		for (var i = 0; i < this.columns.length; i++) {
+			if (this.columns[i].getField() == field) {
+				this.columns[i].filterFunction = fn;
+				break;
+			}
+		}
+		this.applyFilters();
+	}, setFilterByIndex:function (idx, fn) {
+		this.columns[idx].filterFunction = fn;
+		this.applyFilters();
+	}, clearFilter:function (field) {
+		for (var i = 0; i < this.columns.length; i++) {
+			if (this.columns[i].getField() == field) {
+				this.columns[i].filterFunction = this._defaultFilter;
+				break;
+			}
+		}
+		this.applyFilters();
+	}, clearFilterByIndex:function (idx) {
+		this.columns[idx].filterFunction = this._defaultFilter;
+		this.applyFilters();
+	}, clearFilters:function () {
+		for (var i = 0; i < this.columns.length; i++) {
+			this.columns[i].filterFunction = this._defaultFilter;
+		}
+		var rows = this.domNode.tBodies[0].rows;
+		for (var i = 0; i < rows.length; i++) {
+			rows[i].style.display = "";
+			if (this.alternateRows) {
+				dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](rows[i], this.rowAlternateClass);
+			}
+		}
+		this.onFilter();
+	}, applyFilters:function () {
+		var alt = 0;
+		var rows = this.domNode.tBodies[0].rows;
+		for (var i = 0; i < rows.length; i++) {
+			var b = true;
+			var row = rows[i];
+			for (var j = 0; j < this.columns.length; j++) {
+				var value = this.store.getField(this.getDataByRow(row), this.columns[j].getField());
+				if (this.columns[j].getType() == Date && value != null && !value.getYear) {
+					value = new Date(value);
+				}
+				if (!this.columns[j].filterFunction(value)) {
+					b = false;
+					break;
+				}
+			}
+			row.style.display = (b ? "" : "none");
+			if (b && this.alternateRows) {
+				dojo.html[((alt++ % 2 == 1) ? "addClass" : "removeClass")](row, this.rowAlternateClass);
+			}
+		}
+		this.onFilter();
+	}, createSorter:function (info) {
+		var self = this;
+		var sortFunctions = [];
+		function createSortFunction(fieldIndex, dir) {
+			var meta = self.columns[fieldIndex];
+			var field = meta.getField();
+			return function (rowA, rowB) {
+				if (dojo.html.hasAttribute(rowA, "emptyRow")) {
+					return 1;
+				}
+				if (dojo.html.hasAttribute(rowB, "emptyRow")) {
+					return -1;
+				}
+				var a = self.store.getField(self.getDataByRow(rowA), field);
+				var b = self.store.getField(self.getDataByRow(rowB), field);
+				var ret = 0;
+				if (a > b) {
+					ret = 1;
+				}
+				if (a < b) {
+					ret = -1;
+				}
+				return dir * ret;
+			};
+		}
+		var current = 0;
+		var max = Math.min(info.length, this.maxSortable, this.columns.length);
+		while (current < max) {
+			var direction = (info[current].direction == 0) ? 1 : -1;
+			sortFunctions.push(createSortFunction(info[current].index, direction));
+			current++;
+		}
+		return function (rowA, rowB) {
+			var idx = 0;
+			while (idx < sortFunctions.length) {
+				var ret = sortFunctions[idx++](rowA, rowB);
+				if (ret != 0) {
+					return ret;
+				}
+			}
+			return 0;
+		};
+	}, createRow:function (obj) {
+		var row = document.createElement("tr");
+		dojo.html.disableSelection(row);
+		if (obj.key != null) {
+			row.setAttribute("value", obj.key);
+		}
+		for (var j = 0; j < this.columns.length; j++) {
+			var cell = document.createElement("td");
+			cell.setAttribute("align", this.columns[j].align);
+			cell.setAttribute("valign", this.columns[j].valign);
+			dojo.html.disableSelection(cell);
+			var val = this.store.getField(obj.src, this.columns[j].getField());
+			if (typeof (val) == "undefined") {
+				val = "";
+			}
+			this.fillCell(cell, this.columns[j], val);
+			row.appendChild(cell);
+		}
+		return row;
+	}, fillCell:function (cell, meta, val) {
+		if (meta.sortType == "__markup__") {
+			cell.innerHTML = val;
+		} else {
+			if (meta.getType() == Date) {
+				val = new Date(val);
+				if (!isNaN(val)) {
+					var format = this.defaultDateFormat;
+					if (meta.format) {
+						format = meta.format;
+					}
+					cell.innerHTML = dojo.date.strftime(val, format);
+				} else {
+					cell.innerHTML = val;
+				}
+			} else {
+				if ("Number number int Integer float Float".indexOf(meta.getType()) > -1) {
+					if (val.length == 0) {
+						val = "0";
+					}
+					var n = parseFloat(val, 10) + "";
+					if (n.indexOf(".") > -1) {
+						n = dojo.math.round(parseFloat(val, 10), 2);
+					}
+					cell.innerHTML = n;
+				} else {
+					cell.innerHTML = val;
+				}
+			}
+		}
+	}, prefill:function () {
+		this.isInitialized = false;
+		var body = this.domNode.tBodies[0];
+		while (body.childNodes.length > 0) {
+			body.removeChild(body.childNodes[0]);
+		}
+		if (this.minRows > 0) {
+			for (var i = 0; i < this.minRows; i++) {
+				var row = document.createElement("tr");
+				if (this.alternateRows) {
+					dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](row, this.rowAlternateClass);
+				}
+				row.setAttribute("emptyRow", "true");
+				for (var j = 0; j < this.columns.length; j++) {
+					var cell = document.createElement("td");
+					cell.innerHTML = "&nbsp;";
+					row.appendChild(cell);
+				}
+				body.appendChild(row);
+			}
+		}
+	}, init:function () {
+		this.isInitialized = false;
+		var head = this.domNode.getElementsByTagName("thead")[0];
+		if (head.getElementsByTagName("tr").length == 0) {
+			var row = document.createElement("tr");
+			for (var i = 0; i < this.columns.length; i++) {
+				var cell = document.createElement("td");
+				cell.setAttribute("align", this.columns[i].align);
+				cell.setAttribute("valign", this.columns[i].valign);
+				dojo.html.disableSelection(cell);
+				cell.innerHTML = this.columns[i].label;
+				row.appendChild(cell);
+				if (!this.columns[i].noSort) {
+					dojo.event.connect(cell, "onclick", this, "onSort");
+				}
+			}
+			dojo.html.prependChild(row, head);
+		}
+		if (this.store.get().length == 0) {
+			return false;
+		}
+		var idx = this.domNode.tBodies[0].rows.length;
+		if (!idx || idx == 0 || this.domNode.tBodies[0].rows[0].getAttribute("emptyRow") == "true") {
+			idx = 0;
+			var body = this.domNode.tBodies[0];
+			while (body.childNodes.length > 0) {
+				body.removeChild(body.childNodes[0]);
+			}
+			var data = this.store.get();
+			for (var i = 0; i < data.length; i++) {
+				var row = this.createRow(data[i]);
+				body.appendChild(row);
+				idx++;
+			}
+		}
+		if (this.minRows > 0 && idx < this.minRows) {
+			idx = this.minRows - idx;
+			for (var i = 0; i < idx; i++) {
+				row = document.createElement("tr");
+				row.setAttribute("emptyRow", "true");
+				for (var j = 0; j < this.columns.length; j++) {
+					cell = document.createElement("td");
+					cell.innerHTML = "&nbsp;";
+					row.appendChild(cell);
+				}
+				body.appendChild(row);
+			}
+		}
+		var row = this.domNode.getElementsByTagName("thead")[0].rows[0];
+		var cellTag = "td";
+		if (row.getElementsByTagName(cellTag).length == 0) {
+			cellTag = "th";
+		}
+		var headers = row.getElementsByTagName(cellTag);
+		for (var i = 0; i < headers.length; i++) {
+			dojo.html.setClass(headers[i], this.headerClass);
+		}
+		for (var i = 0; i < this.sortInformation.length; i++) {
+			var idx = this.sortInformation[i].index;
+			var dir = (~this.sortInformation[i].direction) & 1;
+			dojo.html.setClass(headers[idx], dir == 0 ? this.headerDownClass : this.headerUpClass);
+		}
+		this.isInitialized = true;
+		return this.isInitialized;
+	}, render:function () {
+		if (!this.isInitialized) {
+			var b = this.init();
+			if (!b) {
+				this.prefill();
+				return;
+			}
+		}
+		var rows = [];
+		var body = this.domNode.tBodies[0];
+		var emptyRowIdx = -1;
+		for (var i = 0; i < body.rows.length; i++) {
+			rows.push(body.rows[i]);
+		}
+		var sortFunction = this.createSorter(this.sortInformation);
+		if (sortFunction) {
+			rows.sort(sortFunction);
+		}
+		for (var i = 0; i < rows.length; i++) {
+			if (this.alternateRows) {
+				dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](rows[i], this.rowAlternateClass);
+			}
+			dojo.html[(this.isRowSelected(body.rows[i]) ? "addClass" : "removeClass")](body.rows[i], this.rowSelectedClass);
+			body.appendChild(rows[i]);
+		}
+	}, renderSelections:function () {
+		var body = this.domNode.tBodies[0];
+		for (var i = 0; i < body.rows.length; i++) {
+			dojo.html[(this.isRowSelected(body.rows[i]) ? "addClass" : "removeClass")](body.rows[i], this.rowSelectedClass);
+		}
+	}, initialize:function () {
+		var self = this;
+		dojo.event.connect(this.store, "onSetData", function () {
+			self.store.forEach(function (element) {
+				element.isSelected = false;
+			});
+			self.isInitialized = false;
+			var body = self.domNode.tBodies[0];
+			if (body) {
+				while (body.childNodes.length > 0) {
+					body.removeChild(body.childNodes[0]);
+				}
+			}
+			self.render();
+		});
+		dojo.event.connect(this.store, "onClearData", function () {
+			self.isInitialized = false;
+			self.render();
+		});
+		dojo.event.connect(this.store, "onAddData", function (addedObject) {
+			var row = self.createRow(addedObject);
+			self.domNode.tBodies[0].appendChild(row);
+			self.render();
+		});
+		dojo.event.connect(this.store, "onAddDataRange", function (arr) {
+			for (var i = 0; i < arr.length; i++) {
+				arr[i].isSelected = false;
+				var row = self.createRow(arr[i]);
+				self.domNode.tBodies[0].appendChild(row);
+			}
+			self.render();
+		});
+		dojo.event.connect(this.store, "onRemoveData", function (removedObject) {
+			var rows = self.domNode.tBodies[0].rows;
+			for (var i = 0; i < rows.length; i++) {
+				if (self.getDataByRow(rows[i]) == removedObject.src) {
+					rows[i].parentNode.removeChild(rows[i]);
+					break;
+				}
+			}
+			self.render();
+		});
+		dojo.event.connect(this.store, "onUpdateField", function (obj, fieldPath, val) {
+			var row = self.getRow(obj);
+			var idx = self.getColumnIndex(fieldPath);
+			if (row && row.cells[idx] && self.columns[idx]) {
+				self.fillCell(row.cells[idx], self.columns[idx], val);
+			}
+		});
+	}, postCreate:function () {
+		this.store.keyField = this.valueField;
+		if (this.domNode) {
+			if (this.domNode.nodeName.toLowerCase() != "table") {
+			}
+			if (this.domNode.getElementsByTagName("thead")[0]) {
+				var head = this.domNode.getElementsByTagName("thead")[0];
+				if (this.headClass.length > 0) {
+					head.className = this.headClass;
+				}
+				dojo.html.disableSelection(this.domNode);
+				this.parseMetadata(head);
+				var header = "td";
+				if (head.getElementsByTagName(header).length == 0) {
+					header = "th";
+				}
+				var headers = head.getElementsByTagName(header);
+				for (var i = 0; i < headers.length; i++) {
+					if (!this.columns[i].noSort) {
+						dojo.event.connect(headers[i], "onclick", this, "onSort");
+					}
+				}
+			} else {
+				this.domNode.appendChild(document.createElement("thead"));
+			}
+			if (this.domNode.tBodies.length < 1) {
+				var body = document.createElement("tbody");
+				this.domNode.appendChild(body);
+			} else {
+				var body = this.domNode.tBodies[0];
+			}
+			if (this.tbodyClass.length > 0) {
+				body.className = this.tbodyClass;
+			}
+			dojo.event.connect(body, "onclick", this, "onSelect");
+			this.parseData(body);
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeLoadingController.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -18702,6 +37028,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeLoadingController");
 dojo.require("dojo.widget.TreeBasicController");
 dojo.require("dojo.event.*");
@@ -18796,6 +37124,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.RegexpTextbox");
 dojo.require("dojo.widget.ValidationTextbox");
 dojo.widget.defineWidget("dojo.widget.RegexpTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties, frag) {
@@ -18812,6 +37142,117 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Tooltip.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Tooltip"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.widget.PopupContainer"], ["require", "dojo.uri.Uri"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.html.style"], ["require", "dojo.html.util"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Tooltip");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.widget.PopupContainer");
+	dojo.require("dojo.uri.Uri");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.util");
+	dojo.widget.defineWidget("dojo.widget.Tooltip", [dojo.widget.ContentPane, dojo.widget.PopupContainerBase], {caption:"", showDelay:500, hideDelay:100, connectId:"", templateCssString:".dojoTooltip {\n\tborder: solid black 1px;\n\tbackground: beige;\n\tcolor: black;\n\tposition: absolute;\n\tfont-size: small;\n\tpadding: 2px 2px 2px 2px;\n\tz-index: 10;\n\tdisplay: block;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TooltipTemplate.css"), fillInTemplate:function (args, frag) {
+		if (this.caption != "") {
+			this.domNode.appendChild(document.createTextNode(this.caption));
+		}
+		this._connectNode = dojo.byId(this.connectId);
+		dojo.widget.Tooltip.superclass.fillInTemplate.call(this, args, frag);
+		this.addOnLoad(this, "_loadedContent");
+		dojo.html.addClass(this.domNode, "dojoTooltip");
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+		this.applyPopupBasicStyle();
+	}, postCreate:function (args, frag) {
+		dojo.event.connect(this._connectNode, "onmouseover", this, "_onMouseOver");
+		dojo.widget.Tooltip.superclass.postCreate.call(this, args, frag);
+	}, _onMouseOver:function (e) {
+		this._mouse = {x:e.pageX, y:e.pageY};
+		if (!this._tracking) {
+			dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
+			this._tracking = true;
+		}
+		this._onHover(e);
+	}, _onMouseMove:function (e) {
+		this._mouse = {x:e.pageX, y:e.pageY};
+		if (dojo.html.overElement(this._connectNode, e) || dojo.html.overElement(this.domNode, e)) {
+			this._onHover(e);
+		} else {
+			this._onUnHover(e);
+		}
+	}, _onHover:function (e) {
+		if (this._hover) {
+			return;
+		}
+		this._hover = true;
+		if (this._hideTimer) {
+			clearTimeout(this._hideTimer);
+			delete this._hideTimer;
+		}
+		if (!this.isShowingNow && !this._showTimer) {
+			this._showTimer = setTimeout(dojo.lang.hitch(this, "open"), this.showDelay);
+		}
+	}, _onUnHover:function (e) {
+		if (!this._hover) {
+			return;
+		}
+		this._hover = false;
+		if (this._showTimer) {
+			clearTimeout(this._showTimer);
+			delete this._showTimer;
+		}
+		if (this.isShowingNow && !this._hideTimer) {
+			this._hideTimer = setTimeout(dojo.lang.hitch(this, "close"), this.hideDelay);
+		}
+		if (!this.isShowingNow) {
+			dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
+			this._tracking = false;
+		}
+	}, open:function () {
+		if (this.isShowingNow) {
+			return;
+		}
+		dojo.widget.PopupContainerBase.prototype.open.call(this, this._mouse.x, this._mouse.y, null, [this._mouse.x, this._mouse.y], "TL,TR,BL,BR", [10, 15]);
+	}, close:function () {
+		if (this.isShowingNow) {
+			if (this._showTimer) {
+				clearTimeout(this._showTimer);
+				delete this._showTimer;
+			}
+			if (this._hideTimer) {
+				clearTimeout(this._hideTimer);
+				delete this._hideTimer;
+			}
+			dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
+			this._tracking = false;
+			dojo.widget.PopupContainerBase.prototype.close.call(this);
+		}
+	}, _position:function () {
+		this.move(this._mouse.x, this._mouse.y, [10, 15], "TL,TR,BL,BR");
+	}, _loadedContent:function () {
+		if (this.isShowingNow) {
+			this._position();
+		}
+	}, checkSize:function () {
+	}, uninitialize:function () {
+		this.close();
+		dojo.event.disconnect(this._connectNode, "onmouseover", this, "_onMouseOver");
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Tree.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -18823,6 +37264,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Tree");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.event.*");
@@ -19048,6 +37491,433 @@
 }});
 
 
+__CPAN_FILE__ src/widget/LayoutContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.LayoutContainer"], ["require", "dojo.widget.*"], ["require", "dojo.widget.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.LayoutContainer");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.html.layout");
+	dojo.widget.defineWidget("dojo.widget.LayoutContainer", dojo.widget.HtmlWidget, {isContainer:true, layoutChildPriority:"top-bottom", postCreate:function () {
+		dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
+	}, addChild:function (child, overrideContainerNode, pos, ref, insertIndex) {
+		dojo.widget.LayoutContainer.superclass.addChild.call(this, child, overrideContainerNode, pos, ref, insertIndex);
+		dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
+	}, removeChild:function (pane) {
+		dojo.widget.LayoutContainer.superclass.removeChild.call(this, pane);
+		dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
+	}, onResized:function () {
+		dojo.widget.html.layout(this.domNode, this.children, this.layoutChildPriority);
+	}, show:function () {
+		this.domNode.style.display = "";
+		this.checkSize();
+		this.domNode.style.display = "none";
+		this.domNode.style.visibility = "";
+		dojo.widget.LayoutContainer.superclass.show.call(this);
+	}});
+	dojo.lang.extend(dojo.widget.Widget, {layoutAlign:"none"});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeDndControllerV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeDndControllerV3"], ["require", "dojo.dnd.TreeDragAndDropV3"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeDndControllerV3");
+	dojo.require("dojo.dnd.TreeDragAndDropV3");
+	dojo.require("dojo.experimental");
+	dojo.experimental("Tree drag'n'drop' has lots of problems/bugs, it requires dojo drag'n'drop overhaul to work, probably in 0.5");
+	dojo.widget.defineWidget("dojo.widget.TreeDndControllerV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
+		this.dragSources = {};
+		this.dropTargets = {};
+		this.listenedTrees = {};
+	}, {listenTreeEvents:["afterChangeTree", "beforeTreeDestroy", "afterAddChild"], listenNodeFilter:function (elem) {
+		return elem instanceof dojo.widget.Widget;
+	}, initialize:function (args) {
+		this.treeController = dojo.lang.isString(args.controller) ? dojo.widget.byId(args.controller) : args.controller;
+		if (!this.treeController) {
+			dojo.raise("treeController must be declared");
+		}
+	}, onBeforeTreeDestroy:function (message) {
+		this.unlistenTree(message.source);
+	}, onAfterAddChild:function (message) {
+		this.listenNode(message.child);
+	}, onAfterChangeTree:function (message) {
+		if (!message.oldTree) {
+			return;
+		}
+		if (!message.newTree || !this.listenedTrees[message.newTree.widgetId]) {
+			this.processDescendants(message.node, this.listenNodeFilter, this.unlistenNode);
+		}
+		if (!this.listenedTrees[message.oldTree.widgetId]) {
+			this.processDescendants(message.node, this.listenNodeFilter, this.listenNode);
+		}
+	}, listenNode:function (node) {
+		if (!node.tree.DndMode) {
+			return;
+		}
+		if (this.dragSources[node.widgetId] || this.dropTargets[node.widgetId]) {
+			return;
+		}
+		var source = null;
+		var target = null;
+		if (!node.actionIsDisabled(node.actions.MOVE)) {
+			var source = this.makeDragSource(node);
+			this.dragSources[node.widgetId] = source;
+		}
+		var target = this.makeDropTarget(node);
+		this.dropTargets[node.widgetId] = target;
+	}, makeDragSource:function (node) {
+		return new dojo.dnd.TreeDragSourceV3(node.contentNode, this, node.tree.widgetId, node);
+	}, makeDropTarget:function (node) {
+		return new dojo.dnd.TreeDropTargetV3(node.contentNode, this.treeController, node.tree.DndAcceptTypes, node);
+	}, unlistenNode:function (node) {
+		if (this.dragSources[node.widgetId]) {
+			dojo.dnd.dragManager.unregisterDragSource(this.dragSources[node.widgetId]);
+			delete this.dragSources[node.widgetId];
+		}
+		if (this.dropTargets[node.widgetId]) {
+			dojo.dnd.dragManager.unregisterDropTarget(this.dropTargets[node.widgetId]);
+			delete this.dropTargets[node.widgetId];
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeNodeV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeNodeV3"], ["require", "dojo.html.*"], ["require", "dojo.event.*"], ["require", "dojo.io.*"], ["require", "dojo.widget.TreeWithNode"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeNodeV3");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.TreeWithNode");
+	dojo.widget.defineWidget("dojo.widget.TreeNodeV3", [dojo.widget.HtmlWidget, dojo.widget.TreeWithNode], function () {
+		this.actionsDisabled = [];
+		this.object = {};
+	}, {tryLazyInit:true, actions:{MOVE:"MOVE", DETACH:"DETACH", EDIT:"EDIT", ADDCHILD:"ADDCHILD", SELECT:"SELECT"}, labelClass:"", contentClass:"", expandNode:null, labelNode:null, nodeDocType:"", selected:false, getnodeDocType:function () {
+		return this.nodeDocType;
+	}, cloneProperties:["actionsDisabled", "tryLazyInit", "nodeDocType", "objectId", "object", "title", "isFolder", "isExpanded", "state"], clone:function (deep) {
+		var ret = new this.constructor();
+		for (var i = 0; i < this.cloneProperties.length; i++) {
+			var prop = this.cloneProperties[i];
+			ret[prop] = dojo.lang.shallowCopy(this[prop], true);
+		}
+		if (this.tree.unsetFolderOnEmpty && !deep && this.isFolder) {
+			ret.isFolder = false;
+		}
+		ret.toggleObj = this.toggleObj;
+		dojo.widget.manager.add(ret);
+		ret.tree = this.tree;
+		ret.buildRendering({}, {});
+		ret.initialize({}, {});
+		if (deep && this.children.length) {
+			for (var i = 0; i < this.children.length; i++) {
+				var child = this.children[i];
+				if (child.clone) {
+					ret.children.push(child.clone(deep));
+				} else {
+					ret.children.push(dojo.lang.shallowCopy(child, deep));
+				}
+			}
+			ret.setChildren();
+		}
+		return ret;
+	}, markProcessing:function () {
+		this.markProcessingSavedClass = dojo.html.getClass(this.expandNode);
+		dojo.html.setClass(this.expandNode, this.tree.classPrefix + "ExpandLoading");
+	}, unmarkProcessing:function () {
+		dojo.html.setClass(this.expandNode, this.markProcessingSavedClass);
+	}, buildRendering:function (args, fragment, parent) {
+		if (args.tree) {
+			this.tree = dojo.lang.isString(args.tree) ? dojo.widget.manager.getWidgetById(args.tree) : args.tree;
+		} else {
+			if (parent && parent.tree) {
+				this.tree = parent.tree;
+			}
+		}
+		if (!this.tree) {
+			dojo.raise("Can't evaluate tree from arguments or parent");
+		}
+		this.domNode = this.tree.nodeTemplate.cloneNode(true);
+		this.expandNode = this.domNode.firstChild;
+		this.contentNode = this.domNode.childNodes[1];
+		this.labelNode = this.contentNode.firstChild;
+		if (this.labelClass) {
+			dojo.html.addClass(this.labelNode, this.labelClass);
+		}
+		if (this.contentClass) {
+			dojo.html.addClass(this.contentNode, this.contentClass);
+		}
+		this.domNode.widgetId = this.widgetId;
+		this.labelNode.innerHTML = this.title;
+	}, isTreeNode:true, object:{}, title:"", isFolder:null, contentNode:null, expandClass:"", isExpanded:false, containerNode:null, getInfo:function () {
+		var info = {widgetId:this.widgetId, objectId:this.objectId, index:this.getParentIndex()};
+		return info;
+	}, setFolder:function () {
+		this.isFolder = true;
+		this.viewSetExpand();
+		if (!this.containerNode) {
+			this.viewAddContainer();
+		}
+		dojo.event.topic.publish(this.tree.eventNames.afterSetFolder, {source:this});
+	}, initialize:function (args, frag, parent) {
+		if (args.isFolder) {
+			this.isFolder = true;
+		}
+		if (this.children.length || this.isFolder) {
+			this.setFolder();
+		} else {
+			this.viewSetExpand();
+		}
+		for (var i = 0; i < this.actionsDisabled.length; i++) {
+			this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
+		}
+		dojo.event.topic.publish(this.tree.eventNames.afterChangeTree, {oldTree:null, newTree:this.tree, node:this});
+	}, unsetFolder:function () {
+		this.isFolder = false;
+		this.viewSetExpand();
+		dojo.event.topic.publish(this.tree.eventNames.afterUnsetFolder, {source:this});
+	}, insertNode:function (parent, index) {
+		if (!index) {
+			index = 0;
+		}
+		if (index == 0) {
+			dojo.html.prependChild(this.domNode, parent.containerNode);
+		} else {
+			dojo.html.insertAfter(this.domNode, parent.children[index - 1].domNode);
+		}
+	}, updateTree:function (newTree) {
+		if (this.tree === newTree) {
+			return;
+		}
+		var oldTree = this.tree;
+		dojo.lang.forEach(this.getDescendants(), function (elem) {
+			elem.tree = newTree;
+		});
+		if (oldTree.classPrefix != newTree.classPrefix) {
+			var stack = [this.domNode];
+			var elem;
+			var reg = new RegExp("(^|\\s)" + oldTree.classPrefix, "g");
+			while (elem = stack.pop()) {
+				for (var i = 0; i < elem.childNodes.length; i++) {
+					var childNode = elem.childNodes[i];
+					if (childNode.nodeDocType != 1) {
+						continue;
+					}
+					dojo.html.setClass(childNode, dojo.html.getClass(childNode).replace(reg, "$1" + newTree.classPrefix));
+					stack.push(childNode);
+				}
+			}
+		}
+		var message = {oldTree:oldTree, newTree:newTree, node:this};
+		dojo.event.topic.publish(this.tree.eventNames.afterChangeTree, message);
+		dojo.event.topic.publish(newTree.eventNames.afterChangeTree, message);
+	}, addedTo:function (parent, index, dontPublishEvent) {
+		if (this.tree !== parent.tree) {
+			this.updateTree(parent.tree);
+		}
+		if (parent.isTreeNode) {
+			if (!parent.isFolder) {
+				parent.setFolder();
+				parent.state = parent.loadStates.LOADED;
+			}
+		}
+		var siblingsCount = parent.children.length;
+		this.insertNode(parent, index);
+		this.viewAddLayout();
+		if (siblingsCount > 1) {
+			if (index == 0 && parent.children[1] instanceof dojo.widget.Widget) {
+				parent.children[1].viewUpdateLayout();
+			}
+			if (index == siblingsCount - 1 && parent.children[siblingsCount - 2] instanceof dojo.widget.Widget) {
+				parent.children[siblingsCount - 2].viewUpdateLayout();
+			}
+		} else {
+			if (parent.isTreeNode) {
+				parent.viewSetHasChildren();
+			}
+		}
+		if (!dontPublishEvent) {
+			var message = {child:this, index:index, parent:parent};
+			dojo.event.topic.publish(this.tree.eventNames.afterAddChild, message);
+		}
+	}, createSimple:function (args, parent) {
+		if (args.tree) {
+			var tree = args.tree;
+		} else {
+			if (parent) {
+				var tree = parent.tree;
+			} else {
+				dojo.raise("createSimple: can't evaluate tree");
+			}
+		}
+		tree = dojo.widget.byId(tree);
+		var treeNode = new tree.defaultChildWidget();
+		for (var x in args) {
+			treeNode[x] = args[x];
+		}
+		treeNode.toggleObj = dojo.lfx.toggle[treeNode.toggle.toLowerCase()] || dojo.lfx.toggle.plain;
+		dojo.widget.manager.add(treeNode);
+		treeNode.buildRendering(args, {}, parent);
+		treeNode.initialize(args, {}, parent);
+		if (treeNode.parent) {
+			delete dojo.widget.manager.topWidgets[treeNode.widgetId];
+		}
+		return treeNode;
+	}, viewUpdateLayout:function () {
+		this.viewRemoveLayout();
+		this.viewAddLayout();
+	}, viewAddContainer:function () {
+		this.containerNode = this.tree.containerNodeTemplate.cloneNode(true);
+		this.domNode.appendChild(this.containerNode);
+	}, viewAddLayout:function () {
+		if (this.parent["isTree"]) {
+			dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode) + " " + this.tree.classPrefix + "IsRoot");
+		}
+		if (this.isLastChild()) {
+			dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode) + " " + this.tree.classPrefix + "IsLast");
+		}
+	}, viewRemoveLayout:function () {
+		dojo.html.removeClass(this.domNode, this.tree.classPrefix + "IsRoot");
+		dojo.html.removeClass(this.domNode, this.tree.classPrefix + "IsLast");
+	}, viewGetExpandClass:function () {
+		if (this.isFolder) {
+			return this.isExpanded ? "ExpandOpen" : "ExpandClosed";
+		} else {
+			return "ExpandLeaf";
+		}
+	}, viewSetExpand:function () {
+		var expand = this.tree.classPrefix + this.viewGetExpandClass();
+		var reg = new RegExp("(^|\\s)" + this.tree.classPrefix + "Expand\\w+", "g");
+		dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode).replace(reg, "") + " " + expand);
+		this.viewSetHasChildrenAndExpand();
+	}, viewGetChildrenClass:function () {
+		return "Children" + (this.children.length ? "Yes" : "No");
+	}, viewSetHasChildren:function () {
+		var clazz = this.tree.classPrefix + this.viewGetChildrenClass();
+		var reg = new RegExp("(^|\\s)" + this.tree.classPrefix + "Children\\w+", "g");
+		dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode).replace(reg, "") + " " + clazz);
+		this.viewSetHasChildrenAndExpand();
+	}, viewSetHasChildrenAndExpand:function () {
+		var clazz = this.tree.classPrefix + "State" + this.viewGetChildrenClass() + "-" + this.viewGetExpandClass();
+		var reg = new RegExp("(^|\\s)" + this.tree.classPrefix + "State[\\w-]+", "g");
+		dojo.html.setClass(this.domNode, dojo.html.getClass(this.domNode).replace(reg, "") + " " + clazz);
+	}, viewUnfocus:function () {
+		dojo.html.removeClass(this.labelNode, this.tree.classPrefix + "LabelFocused");
+	}, viewFocus:function () {
+		dojo.html.addClass(this.labelNode, this.tree.classPrefix + "LabelFocused");
+	}, viewEmphasize:function () {
+		dojo.html.clearSelection(this.labelNode);
+		dojo.html.addClass(this.labelNode, this.tree.classPrefix + "NodeEmphasized");
+	}, viewUnemphasize:function () {
+		dojo.html.removeClass(this.labelNode, this.tree.classPrefix + "NodeEmphasized");
+	}, detach:function () {
+		if (!this.parent) {
+			return;
+		}
+		var parent = this.parent;
+		var index = this.getParentIndex();
+		this.doDetach.apply(this, arguments);
+		dojo.event.topic.publish(this.tree.eventNames.afterDetach, {child:this, parent:parent, index:index});
+	}, doDetach:function () {
+		var parent = this.parent;
+		if (!parent) {
+			return;
+		}
+		var index = this.getParentIndex();
+		this.viewRemoveLayout();
+		dojo.widget.DomWidget.prototype.removeChild.call(parent, this);
+		var siblingsCount = parent.children.length;
+		if (siblingsCount > 0) {
+			if (index == 0) {
+				parent.children[0].viewUpdateLayout();
+			}
+			if (index == siblingsCount) {
+				parent.children[siblingsCount - 1].viewUpdateLayout();
+			}
+		} else {
+			if (parent.isTreeNode) {
+				parent.viewSetHasChildren();
+			}
+		}
+		if (this.tree.unsetFolderOnEmpty && !parent.children.length && parent.isTreeNode) {
+			parent.unsetFolder();
+		}
+		this.parent = null;
+	}, destroy:function () {
+		dojo.event.topic.publish(this.tree.eventNames.beforeNodeDestroy, {source:this});
+		this.detach();
+		return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
+	}, expand:function () {
+		if (this.isExpanded) {
+			return;
+		}
+		if (this.tryLazyInit) {
+			this.setChildren();
+			this.tryLazyInit = false;
+		}
+		this.isExpanded = true;
+		this.viewSetExpand();
+		this.showChildren();
+	}, collapse:function () {
+		if (!this.isExpanded) {
+			return;
+		}
+		this.isExpanded = false;
+		this.hideChildren();
+	}, hideChildren:function () {
+		this.tree.toggleObj.hide(this.containerNode, this.tree.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onHideChildren"));
+	}, showChildren:function () {
+		this.tree.toggleObj.show(this.containerNode, this.tree.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onShowChildren"));
+	}, onShowChildren:function () {
+		this.onShow();
+		dojo.event.topic.publish(this.tree.eventNames.afterExpand, {source:this});
+	}, onHideChildren:function () {
+		this.viewSetExpand();
+		this.onHide();
+		dojo.event.topic.publish(this.tree.eventNames.afterCollapse, {source:this});
+	}, setTitle:function (title) {
+		var oldTitle = this.title;
+		this.labelNode.innerHTML = this.title = title;
+		dojo.event.topic.publish(this.tree.eventNames.afterSetTitle, {source:this, oldTitle:oldTitle});
+	}, toString:function () {
+		return "[" + this.widgetType + ", " + this.title + "]";
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Chart.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -19059,6 +37929,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Chart");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.gfx.color");
@@ -19292,6 +38164,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Textbox");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -19301,7 +38175,7 @@
 dojo.require("dojo.lang.array");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.i18n.common");
-dojo.requireLocalization("dojo.widget", "validate", null, "fr,ja,zh-cn,ROOT");
+dojo.requireLocalization("dojo.widget", "validate", null, "zh-cn,ja,ROOT,fr");
 dojo.widget.defineWidget("dojo.widget.Textbox", dojo.widget.HtmlWidget, {className:"", name:"", value:"", type:"", trim:false, uppercase:false, lowercase:false, ucFirst:false, digit:false, htmlfloat:"none", templateString:"<span style='float:${this.htmlfloat};'>\n\t<input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus'\n\t\tid='${this.widgetId}' name='${this.name}'\n\t\tclass='${this.className}' type='${this.type}' >\n</span>\n", textbox:null, fillInTemplate:function () {
 	this.textbox.value = this.value;
 }, filter:function () {
@@ -19333,6 +38207,900 @@
 }});
 
 
+__CPAN_FILE__ src/widget/ComboBox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ComboBox"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.io.*"], ["require", "dojo.html.*"], ["require", "dojo.string"], ["require", "dojo.widget.html.stabile"], ["require", "dojo.widget.PopupContainer"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ComboBox");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.string");
+	dojo.require("dojo.widget.html.stabile");
+	dojo.require("dojo.widget.PopupContainer");
+	dojo.declare("dojo.widget.incrementalComboBoxDataProvider", null, function (options) {
+		this.searchUrl = options.dataUrl;
+		this._cache = {};
+		this._inFlight = false;
+		this._lastRequest = null;
+		this.allowCache = false;
+	}, {_addToCache:function (keyword, data) {
+		if (this.allowCache) {
+			this._cache[keyword] = data;
+		}
+	}, startSearch:function (searchStr, callback) {
+		if (this._inFlight) {
+		}
+		var tss = encodeURIComponent(searchStr);
+		var realUrl = dojo.string.substituteParams(this.searchUrl, {"searchString":tss});
+		var _this = this;
+		var request = this._lastRequest = dojo.io.bind({url:realUrl, method:"get", mimetype:"text/json", load:function (type, data, evt) {
+			_this._inFlight = false;
+			if (!dojo.lang.isArray(data)) {
+				var arrData = [];
+				for (var key in data) {
+					arrData.push([data[key], key]);
+				}
+				data = arrData;
+			}
+			_this._addToCache(searchStr, data);
+			if (request == _this._lastRequest) {
+				callback(data);
+			}
+		}});
+		this._inFlight = true;
+	}});
+	dojo.declare("dojo.widget.basicComboBoxDataProvider", null, function (options, node) {
+		this._data = [];
+		this.searchLimit = 30;
+		this.searchType = "STARTSTRING";
+		this.caseSensitive = false;
+		if (!dj_undef("dataUrl", options) && !dojo.string.isBlank(options.dataUrl)) {
+			this._getData(options.dataUrl);
+		} else {
+			if ((node) && (node.nodeName.toLowerCase() == "select")) {
+				var opts = node.getElementsByTagName("option");
+				var ol = opts.length;
+				var data = [];
+				for (var x = 0; x < ol; x++) {
+					var text = opts[x].textContent || opts[x].innerText || opts[x].innerHTML;
+					var keyValArr = [String(text), String(opts[x].value)];
+					data.push(keyValArr);
+					if (opts[x].selected) {
+						options.setAllValues(keyValArr[0], keyValArr[1]);
+					}
+				}
+				this.setData(data);
+			}
+		}
+	}, {_getData:function (url) {
+		dojo.io.bind({url:url, load:dojo.lang.hitch(this, function (type, data, evt) {
+			if (!dojo.lang.isArray(data)) {
+				var arrData = [];
+				for (var key in data) {
+					arrData.push([data[key], key]);
+				}
+				data = arrData;
+			}
+			this.setData(data);
+		}), mimetype:"text/json"});
+	}, startSearch:function (searchStr, callback) {
+		this._performSearch(searchStr, callback);
+	}, _performSearch:function (searchStr, callback) {
+		var st = this.searchType;
+		var ret = [];
+		if (!this.caseSensitive) {
+			searchStr = searchStr.toLowerCase();
+		}
+		for (var x = 0; x < this._data.length; x++) {
+			if ((this.searchLimit > 0) && (ret.length >= this.searchLimit)) {
+				break;
+			}
+			var dataLabel = new String((!this.caseSensitive) ? this._data[x][0].toLowerCase() : this._data[x][0]);
+			if (dataLabel.length < searchStr.length) {
+				continue;
+			}
+			if (st == "STARTSTRING") {
+				if (searchStr == dataLabel.substr(0, searchStr.length)) {
+					ret.push(this._data[x]);
+				}
+			} else {
+				if (st == "SUBSTRING") {
+					if (dataLabel.indexOf(searchStr) >= 0) {
+						ret.push(this._data[x]);
+					}
+				} else {
+					if (st == "STARTWORD") {
+						var idx = dataLabel.indexOf(searchStr);
+						if (idx == 0) {
+							ret.push(this._data[x]);
+						}
+						if (idx <= 0) {
+							continue;
+						}
+						var matches = false;
+						while (idx != -1) {
+							if (" ,/(".indexOf(dataLabel.charAt(idx - 1)) != -1) {
+								matches = true;
+								break;
+							}
+							idx = dataLabel.indexOf(searchStr, idx + 1);
+						}
+						if (!matches) {
+							continue;
+						} else {
+							ret.push(this._data[x]);
+						}
+					}
+				}
+			}
+		}
+		callback(ret);
+	}, setData:function (pdata) {
+		this._data = pdata;
+	}});
+	dojo.widget.defineWidget("dojo.widget.ComboBox", dojo.widget.HtmlWidget, {forceValidOption:false, searchType:"stringstart", dataProvider:null, autoComplete:true, searchDelay:100, dataUrl:"", fadeTime:200, maxListLength:8, mode:"local", selectedResult:null, dataProviderClass:"", buttonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/combo_box_arrow.png"), dropdownToggle:"fade", templateString:"<span _=\"whitespace and CR's between tags adds &nbsp; in FF\"\n\tclass=\"dojoComboBoxOuter\"\n\t><input style=\"display:none\"  tabindex=\"-1\" name=\"\" value=\"\" \n\t\tdojoAttachPoint=\"comboBoxValue\"\n\t><input style=\"display:none\"  tabindex=\"-1\" name=\"\" value=\"\" \n\t\tdojoAttachPoint=\"comboBoxSelectionValue\"\n\t><input type=\"text\" autocomplete=\"off\" class=\"dojoComboBox\"\n\t\tdojoAttachEvent=\"key:_handleKeyEvents; keyUp: onKeyUp; compositionEnd; onResize;\"\n\t\tdojoAttachPoint=\"textInputNode\"\n\t><img hspace=\"0\"\n\t\tvspace=\"0\"\n\t\tclass=\"dojoComboBox\"\n\t\tdojoAttachPoint=\"downArrowNode\"\n\t\tdojoAttachEvent=\"onMouseUp: handleArrowClick; onResize;\"\n\t\tsrc=\"${this.buttonSrc}\"\n></span>\n", templateCssString:".dojoComboBoxOuter {\n\tborder: 0px !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n\tbackground: transparent !important;\n\twhite-space: nowrap !important;\n}\n\n.dojoComboBox {\n\tborder: 1px inset #afafaf;\n\tmargin: 0px;\n\tpadding: 0px;\n\tvertical-align: middle !important;\n\tfloat: none !important;\n\tposition: static !important;\n\tdisplay: inline !important;\n}\n\n/* the input box */\ninput.dojoComboBox {\n\tborder-right-width: 0px !important; \n\tmargin-right: 0px !important;\n\tpadding-right: 0px !important;\n}\n\n/* the down arrow */\nimg.dojoComboBox {\n\tborder-left-width: 0px !important;\n\tpadding-left: 0px !important;\n\tmargin-left: 0px !important;\n}\n\n/* IE vertical-alignment calculations can be off by +-1 but these margins are collapsed away */\n.dj_ie img.dojoComboBox {\n\tmargin-top: 1px; \n\tmargin-bottom: 1px; \n}\n\n/* the drop down */\n.dojoComboBoxOptions {\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\t/* font-size: 0.7em; */\n\tbackground-color: white;\n\tborder: 1px solid #afafaf;\n\tposition: absolute;\n\tz-index: 1000; \n\toverflow: auto;\n\tcursor: default;\n}\n\n.dojoComboBoxItem {\n\tpadding-left: 2px;\n\tpadding-top: 2px;\n\tmargin: 0px;\n}\n\n.dojoComboBoxItemEven {\n\tbackground-color: #f4f4f4;\n}\n\n.dojoComboBoxItemOdd {\n\tbackground-color: white;\n}\n\n.dojoComboBoxItemHighlight {\n\tbackground-color: #63709A;\n\tcolor: white;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ComboBox.css"), setValue:function (value) {
+		this.comboBoxValue.value = value;
+		if (this.textInputNode.value != value) {
+			this.textInputNode.value = value;
+			dojo.widget.html.stabile.setState(this.widgetId, this.getState(), true);
+			this.onValueChanged(value);
+		}
+	}, onValueChanged:function (value) {
+	}, getValue:function () {
+		return this.comboBoxValue.value;
+	}, getState:function () {
+		return {value:this.getValue()};
+	}, setState:function (state) {
+		this.setValue(state.value);
+	}, enable:function () {
+		this.disabled = false;
+		this.textInputNode.removeAttribute("disabled");
+	}, disable:function () {
+		this.disabled = true;
+		this.textInputNode.setAttribute("disabled", true);
+	}, _getCaretPos:function (element) {
+		if (dojo.lang.isNumber(element.selectionStart)) {
+			return element.selectionStart;
+		} else {
+			if (dojo.render.html.ie) {
+				var tr = document.selection.createRange().duplicate();
+				var ntr = element.createTextRange();
+				tr.move("character", 0);
+				ntr.move("character", 0);
+				try {
+					ntr.setEndPoint("EndToEnd", tr);
+					return String(ntr.text).replace(/\r/g, "").length;
+				}
+				catch (e) {
+					return 0;
+				}
+			}
+		}
+	}, _setCaretPos:function (element, location) {
+		location = parseInt(location);
+		this._setSelectedRange(element, location, location);
+	}, _setSelectedRange:function (element, start, end) {
+		if (!end) {
+			end = element.value.length;
+		}
+		if (element.setSelectionRange) {
+			element.focus();
+			element.setSelectionRange(start, end);
+		} else {
+			if (element.createTextRange) {
+				var range = element.createTextRange();
+				with (range) {
+					collapse(true);
+					moveEnd("character", end);
+					moveStart("character", start);
+					select();
+				}
+			} else {
+				element.value = element.value;
+				element.blur();
+				element.focus();
+				var dist = parseInt(element.value.length) - end;
+				var tchar = String.fromCharCode(37);
+				var tcc = tchar.charCodeAt(0);
+				for (var x = 0; x < dist; x++) {
+					var te = document.createEvent("KeyEvents");
+					te.initKeyEvent("keypress", true, true, null, false, false, false, false, tcc, tcc);
+					element.dispatchEvent(te);
+				}
+			}
+		}
+	}, _handleKeyEvents:function (evt) {
+		if (evt.ctrlKey || evt.altKey || !evt.key) {
+			return;
+		}
+		this._prev_key_backspace = false;
+		this._prev_key_esc = false;
+		var k = dojo.event.browser.keys;
+		var doSearch = true;
+		switch (evt.key) {
+		  case k.KEY_DOWN_ARROW:
+			if (!this.popupWidget.isShowingNow) {
+				this._startSearchFromInput();
+			}
+			this._highlightNextOption();
+			dojo.event.browser.stopEvent(evt);
+			return;
+		  case k.KEY_UP_ARROW:
+			this._highlightPrevOption();
+			dojo.event.browser.stopEvent(evt);
+			return;
+		  case k.KEY_TAB:
+			if (!this.autoComplete && this.popupWidget.isShowingNow && this._highlighted_option) {
+				dojo.event.browser.stopEvent(evt);
+				this._selectOption({"target":this._highlighted_option, "noHide":false});
+				this._setSelectedRange(this.textInputNode, this.textInputNode.value.length, null);
+			} else {
+				this._selectOption();
+				return;
+			}
+			break;
+		  case k.KEY_ENTER:
+			if (this.popupWidget.isShowingNow) {
+				dojo.event.browser.stopEvent(evt);
+			}
+			if (this.autoComplete) {
+				this._selectOption();
+				return;
+			}
+		  case " ":
+			if (this.popupWidget.isShowingNow && this._highlighted_option) {
+				dojo.event.browser.stopEvent(evt);
+				this._selectOption();
+				this._hideResultList();
+				return;
+			}
+			break;
+		  case k.KEY_ESCAPE:
+			this._hideResultList();
+			this._prev_key_esc = true;
+			return;
+		  case k.KEY_BACKSPACE:
+			this._prev_key_backspace = true;
+			if (!this.textInputNode.value.length) {
+				this.setAllValues("", "");
+				this._hideResultList();
+				doSearch = false;
+			}
+			break;
+		  case k.KEY_RIGHT_ARROW:
+		  case k.KEY_LEFT_ARROW:
+			doSearch = false;
+			break;
+		  default:
+			if (evt.charCode == 0) {
+				doSearch = false;
+			}
+		}
+		if (this.searchTimer) {
+			clearTimeout(this.searchTimer);
+		}
+		if (doSearch) {
+			this._blurOptionNode();
+			this.searchTimer = setTimeout(dojo.lang.hitch(this, this._startSearchFromInput), this.searchDelay);
+		}
+	}, compositionEnd:function (evt) {
+		evt.key = evt.keyCode;
+		this._handleKeyEvents(evt);
+	}, onKeyUp:function (evt) {
+		this.setValue(this.textInputNode.value);
+	}, setSelectedValue:function (value) {
+		this.comboBoxSelectionValue.value = value;
+	}, setAllValues:function (value1, value2) {
+		this.setSelectedValue(value2);
+		this.setValue(value1);
+	}, _focusOptionNode:function (node) {
+		if (this._highlighted_option != node) {
+			this._blurOptionNode();
+			this._highlighted_option = node;
+			dojo.html.addClass(this._highlighted_option, "dojoComboBoxItemHighlight");
+		}
+	}, _blurOptionNode:function () {
+		if (this._highlighted_option) {
+			dojo.html.removeClass(this._highlighted_option, "dojoComboBoxItemHighlight");
+			this._highlighted_option = null;
+		}
+	}, _highlightNextOption:function () {
+		if ((!this._highlighted_option) || !this._highlighted_option.parentNode) {
+			this._focusOptionNode(this.optionsListNode.firstChild);
+		} else {
+			if (this._highlighted_option.nextSibling) {
+				this._focusOptionNode(this._highlighted_option.nextSibling);
+			}
+		}
+		dojo.html.scrollIntoView(this._highlighted_option);
+	}, _highlightPrevOption:function () {
+		if (this._highlighted_option && this._highlighted_option.previousSibling) {
+			this._focusOptionNode(this._highlighted_option.previousSibling);
+		} else {
+			this._highlighted_option = null;
+			this._hideResultList();
+			return;
+		}
+		dojo.html.scrollIntoView(this._highlighted_option);
+	}, _itemMouseOver:function (evt) {
+		if (evt.target === this.optionsListNode) {
+			return;
+		}
+		this._focusOptionNode(evt.target);
+		dojo.html.addClass(this._highlighted_option, "dojoComboBoxItemHighlight");
+	}, _itemMouseOut:function (evt) {
+		if (evt.target === this.optionsListNode) {
+			return;
+		}
+		this._blurOptionNode();
+	}, onResize:function () {
+		var inputSize = dojo.html.getContentBox(this.textInputNode);
+		if (inputSize.height <= 0) {
+			dojo.lang.setTimeout(this, "onResize", 100);
+			return;
+		}
+		var buttonSize = {width:inputSize.height, height:inputSize.height};
+		dojo.html.setContentBox(this.downArrowNode, buttonSize);
+	}, fillInTemplate:function (args, frag) {
+		dojo.html.applyBrowserClass(this.domNode);
+		var source = this.getFragNodeRef(frag);
+		if (!this.name && source.name) {
+			this.name = source.name;
+		}
+		this.comboBoxValue.name = this.name;
+		this.comboBoxSelectionValue.name = this.name + "_selected";
+		dojo.html.copyStyle(this.domNode, source);
+		dojo.html.copyStyle(this.textInputNode, source);
+		dojo.html.copyStyle(this.downArrowNode, source);
+		with (this.downArrowNode.style) {
+			width = "0px";
+			height = "0px";
+		}
+		var dpClass;
+		if (this.dataProviderClass) {
+			if (typeof this.dataProviderClass == "string") {
+				dpClass = dojo.evalObjPath(this.dataProviderClass);
+			} else {
+				dpClass = this.dataProviderClass;
+			}
+		} else {
+			if (this.mode == "remote") {
+				dpClass = dojo.widget.incrementalComboBoxDataProvider;
+			} else {
+				dpClass = dojo.widget.basicComboBoxDataProvider;
+			}
+		}
+		this.dataProvider = new dpClass(this, this.getFragNodeRef(frag));
+		this.popupWidget = new dojo.widget.createWidget("PopupContainer", {toggle:this.dropdownToggle, toggleDuration:this.toggleDuration});
+		dojo.event.connect(this, "destroy", this.popupWidget, "destroy");
+		this.optionsListNode = this.popupWidget.domNode;
+		this.domNode.appendChild(this.optionsListNode);
+		dojo.html.addClass(this.optionsListNode, "dojoComboBoxOptions");
+		dojo.event.connect(this.optionsListNode, "onclick", this, "_selectOption");
+		dojo.event.connect(this.optionsListNode, "onmouseover", this, "_onMouseOver");
+		dojo.event.connect(this.optionsListNode, "onmouseout", this, "_onMouseOut");
+		dojo.event.connect(this.optionsListNode, "onmouseover", this, "_itemMouseOver");
+		dojo.event.connect(this.optionsListNode, "onmouseout", this, "_itemMouseOut");
+	}, _openResultList:function (results) {
+		if (this.disabled) {
+			return;
+		}
+		this._clearResultList();
+		if (!results.length) {
+			this._hideResultList();
+		}
+		if ((this.autoComplete) && (results.length) && (!this._prev_key_backspace) && (this.textInputNode.value.length > 0)) {
+			var cpos = this._getCaretPos(this.textInputNode);
+			if ((cpos + 1) > this.textInputNode.value.length) {
+				this.textInputNode.value += results[0][0].substr(cpos);
+				this._setSelectedRange(this.textInputNode, cpos, this.textInputNode.value.length);
+			}
+		}
+		var even = true;
+		while (results.length) {
+			var tr = results.shift();
+			if (tr) {
+				var td = document.createElement("div");
+				td.appendChild(document.createTextNode(tr[0]));
+				td.setAttribute("resultName", tr[0]);
+				td.setAttribute("resultValue", tr[1]);
+				td.className = "dojoComboBoxItem " + ((even) ? "dojoComboBoxItemEven" : "dojoComboBoxItemOdd");
+				even = (!even);
+				this.optionsListNode.appendChild(td);
+			}
+		}
+		this._showResultList();
+	}, _onFocusInput:function () {
+		this._hasFocus = true;
+	}, _onBlurInput:function () {
+		this._hasFocus = false;
+		this._handleBlurTimer(true, 500);
+	}, _handleBlurTimer:function (clear, millisec) {
+		if (this.blurTimer && (clear || millisec)) {
+			clearTimeout(this.blurTimer);
+		}
+		if (millisec) {
+			this.blurTimer = dojo.lang.setTimeout(this, "_checkBlurred", millisec);
+		}
+	}, _onMouseOver:function (evt) {
+		if (!this._mouseover_list) {
+			this._handleBlurTimer(true, 0);
+			this._mouseover_list = true;
+		}
+	}, _onMouseOut:function (evt) {
+		var relTarget = evt.relatedTarget;
+		try {
+			if (!relTarget || relTarget.parentNode != this.optionsListNode) {
+				this._mouseover_list = false;
+				this._handleBlurTimer(true, 100);
+				this._tryFocus();
+			}
+		}
+		catch (e) {
+		}
+	}, _isInputEqualToResult:function (result) {
+		var input = this.textInputNode.value;
+		if (!this.dataProvider.caseSensitive) {
+			input = input.toLowerCase();
+			result = result.toLowerCase();
+		}
+		return (input == result);
+	}, _isValidOption:function () {
+		var tgt = dojo.html.firstElement(this.optionsListNode);
+		var isValidOption = false;
+		while (!isValidOption && tgt) {
+			if (this._isInputEqualToResult(tgt.getAttribute("resultName"))) {
+				isValidOption = true;
+			} else {
+				tgt = dojo.html.nextElement(tgt);
+			}
+		}
+		return isValidOption;
+	}, _checkBlurred:function () {
+		if (!this._hasFocus && !this._mouseover_list) {
+			this._hideResultList();
+			if (!this.textInputNode.value.length) {
+				this.setAllValues("", "");
+				return;
+			}
+			var isValidOption = this._isValidOption();
+			if (this.forceValidOption && !isValidOption) {
+				this.setAllValues("", "");
+				return;
+			}
+			if (!isValidOption) {
+				this.setSelectedValue("");
+			}
+		}
+	}, _selectOption:function (evt) {
+		var tgt = null;
+		if (!evt) {
+			evt = {target:this._highlighted_option};
+		}
+		if (!dojo.html.isDescendantOf(evt.target, this.optionsListNode)) {
+			if (!this.textInputNode.value.length) {
+				return;
+			}
+			tgt = dojo.html.firstElement(this.optionsListNode);
+			if (!tgt || !this._isInputEqualToResult(tgt.getAttribute("resultName"))) {
+				return;
+			}
+		} else {
+			tgt = evt.target;
+		}
+		while ((tgt.nodeType != 1) || (!tgt.getAttribute("resultName"))) {
+			tgt = tgt.parentNode;
+			if (tgt === dojo.body()) {
+				return false;
+			}
+		}
+		this.selectedResult = [tgt.getAttribute("resultName"), tgt.getAttribute("resultValue")];
+		this.setAllValues(tgt.getAttribute("resultName"), tgt.getAttribute("resultValue"));
+		if (!evt.noHide) {
+			this._hideResultList();
+			this._setSelectedRange(this.textInputNode, 0, null);
+		}
+		this._tryFocus();
+	}, _clearResultList:function () {
+		if (this.optionsListNode.innerHTML) {
+			this.optionsListNode.innerHTML = "";
+		}
+	}, _hideResultList:function () {
+		this.popupWidget.close();
+	}, _showResultList:function () {
+		var childs = this.optionsListNode.childNodes;
+		if (childs.length) {
+			var visibleCount = Math.min(childs.length, this.maxListLength);
+			with (this.optionsListNode.style) {
+				display = "";
+				if (visibleCount == childs.length) {
+					height = "";
+				} else {
+					height = visibleCount * dojo.html.getMarginBox(childs[0]).height + "px";
+				}
+				width = (dojo.html.getMarginBox(this.domNode).width - 2) + "px";
+			}
+			this.popupWidget.open(this.domNode, this, this.downArrowNode);
+		} else {
+			this._hideResultList();
+		}
+	}, handleArrowClick:function () {
+		this._handleBlurTimer(true, 0);
+		this._tryFocus();
+		if (this.popupWidget.isShowingNow) {
+			this._hideResultList();
+		} else {
+			this._startSearch("");
+		}
+	}, _tryFocus:function () {
+		try {
+			this.textInputNode.focus();
+		}
+		catch (e) {
+		}
+	}, _startSearchFromInput:function () {
+		this._startSearch(this.textInputNode.value);
+	}, _startSearch:function (key) {
+		this.dataProvider.startSearch(key, dojo.lang.hitch(this, "_openResultList"));
+	}, postCreate:function () {
+		this.onResize();
+		dojo.event.connect(this.textInputNode, "onblur", this, "_onBlurInput");
+		dojo.event.connect(this.textInputNode, "onfocus", this, "_onFocusInput");
+		if (this.disabled) {
+			this.disable();
+		}
+		var s = dojo.widget.html.stabile.getState(this.widgetId);
+		if (s) {
+			this.setState(s);
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/PopupContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.PopupContainer"], ["require", "dojo.html.style"], ["require", "dojo.html.layout"], ["require", "dojo.html.selection"], ["require", "dojo.html.iframe"], ["require", "dojo.event.*"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.PopupContainer");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.html.iframe");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.declare("dojo.widget.PopupContainerBase", null, function () {
+		this.queueOnAnimationFinish = [];
+	}, {isShowingNow:false, currentSubpopup:null, beginZIndex:1000, parentPopup:null, parent:null, popupIndex:0, aroundBox:dojo.html.boxSizing.BORDER_BOX, openedForWindow:null, processKey:function (evt) {
+		return false;
+	}, applyPopupBasicStyle:function () {
+		with (this.domNode.style) {
+			display = "none";
+			position = "absolute";
+		}
+	}, aboutToShow:function () {
+	}, open:function (x, y, parent, explodeSrc, orient, padding) {
+		if (this.isShowingNow) {
+			return;
+		}
+		if (this.animationInProgress) {
+			this.queueOnAnimationFinish.push(this.open, arguments);
+			return;
+		}
+		this.aboutToShow();
+		var around = false, node, aroundOrient;
+		if (typeof x == "object") {
+			node = x;
+			aroundOrient = explodeSrc;
+			explodeSrc = parent;
+			parent = y;
+			around = true;
+		}
+		this.parent = parent;
+		dojo.body().appendChild(this.domNode);
+		explodeSrc = explodeSrc || parent["domNode"] || [];
+		var parentPopup = null;
+		this.isTopLevel = true;
+		while (parent) {
+			if (parent !== this && (parent.setOpenedSubpopup != undefined && parent.applyPopupBasicStyle != undefined)) {
+				parentPopup = parent;
+				this.isTopLevel = false;
+				parentPopup.setOpenedSubpopup(this);
+				break;
+			}
+			parent = parent.parent;
+		}
+		this.parentPopup = parentPopup;
+		this.popupIndex = parentPopup ? parentPopup.popupIndex + 1 : 1;
+		if (this.isTopLevel) {
+			var button = dojo.html.isNode(explodeSrc) ? explodeSrc : null;
+			dojo.widget.PopupManager.opened(this, button);
+		}
+		if (this.isTopLevel && !dojo.withGlobal(this.openedForWindow || dojo.global(), dojo.html.selection.isCollapsed)) {
+			this._bookmark = dojo.withGlobal(this.openedForWindow || dojo.global(), dojo.html.selection.getBookmark);
+		} else {
+			this._bookmark = null;
+		}
+		if (explodeSrc instanceof Array) {
+			explodeSrc = {left:explodeSrc[0], top:explodeSrc[1], width:0, height:0};
+		}
+		with (this.domNode.style) {
+			display = "";
+			zIndex = this.beginZIndex + this.popupIndex;
+		}
+		if (around) {
+			this.move(node, padding, aroundOrient);
+		} else {
+			this.move(x, y, padding, orient);
+		}
+		this.domNode.style.display = "none";
+		this.explodeSrc = explodeSrc;
+		this.show();
+		this.isShowingNow = true;
+	}, move:function (x, y, padding, orient) {
+		var around = (typeof x == "object");
+		if (around) {
+			var aroundOrient = padding;
+			var node = x;
+			padding = y;
+			if (!aroundOrient) {
+				aroundOrient = {"BL":"TL", "TL":"BL"};
+			}
+			dojo.html.placeOnScreenAroundElement(this.domNode, node, padding, this.aroundBox, aroundOrient);
+		} else {
+			if (!orient) {
+				orient = "TL,TR,BL,BR";
+			}
+			dojo.html.placeOnScreen(this.domNode, x, y, padding, true, orient);
+		}
+	}, close:function (force) {
+		if (force) {
+			this.domNode.style.display = "none";
+		}
+		if (this.animationInProgress) {
+			this.queueOnAnimationFinish.push(this.close, []);
+			return;
+		}
+		this.closeSubpopup(force);
+		this.hide();
+		if (this.bgIframe) {
+			this.bgIframe.hide();
+			this.bgIframe.size({left:0, top:0, width:0, height:0});
+		}
+		if (this.isTopLevel) {
+			dojo.widget.PopupManager.closed(this);
+		}
+		this.isShowingNow = false;
+		if (this.parent) {
+			setTimeout(dojo.lang.hitch(this, function () {
+				try {
+					if (this.parent["focus"]) {
+						this.parent.focus();
+					} else {
+						this.parent.domNode.focus();
+					}
+				}
+				catch (e) {
+					dojo.debug("No idea how to focus to parent", e);
+				}
+			}), 10);
+		}
+		if (this._bookmark && dojo.withGlobal(this.openedForWindow || dojo.global(), dojo.html.selection.isCollapsed)) {
+			if (this.openedForWindow) {
+				this.openedForWindow.focus();
+			}
+			try {
+				dojo.withGlobal(this.openedForWindow || dojo.global(), "moveToBookmark", dojo.html.selection, [this._bookmark]);
+			}
+			catch (e) {
+			}
+		}
+		this._bookmark = null;
+	}, closeAll:function (force) {
+		if (this.parentPopup) {
+			this.parentPopup.closeAll(force);
+		} else {
+			this.close(force);
+		}
+	}, setOpenedSubpopup:function (popup) {
+		this.currentSubpopup = popup;
+	}, closeSubpopup:function (force) {
+		if (this.currentSubpopup == null) {
+			return;
+		}
+		this.currentSubpopup.close(force);
+		this.currentSubpopup = null;
+	}, onShow:function () {
+		dojo.widget.PopupContainer.superclass.onShow.apply(this, arguments);
+		this.openedSize = {w:this.domNode.style.width, h:this.domNode.style.height};
+		if (dojo.render.html.ie) {
+			if (!this.bgIframe) {
+				this.bgIframe = new dojo.html.BackgroundIframe();
+				this.bgIframe.setZIndex(this.domNode);
+			}
+			this.bgIframe.size(this.domNode);
+			this.bgIframe.show();
+		}
+		this.processQueue();
+	}, processQueue:function () {
+		if (!this.queueOnAnimationFinish.length) {
+			return;
+		}
+		var func = this.queueOnAnimationFinish.shift();
+		var args = this.queueOnAnimationFinish.shift();
+		func.apply(this, args);
+	}, onHide:function () {
+		dojo.widget.HtmlWidget.prototype.onHide.call(this);
+		if (this.openedSize) {
+			with (this.domNode.style) {
+				width = this.openedSize.w;
+				height = this.openedSize.h;
+			}
+		}
+		this.processQueue();
+	}});
+	dojo.widget.defineWidget("dojo.widget.PopupContainer", [dojo.widget.HtmlWidget, dojo.widget.PopupContainerBase], {isContainer:true, fillInTemplate:function () {
+		this.applyPopupBasicStyle();
+		dojo.widget.PopupContainer.superclass.fillInTemplate.apply(this, arguments);
+	}});
+	dojo.widget.PopupManager = new function () {
+		this.currentMenu = null;
+		this.currentButton = null;
+		this.currentFocusMenu = null;
+		this.focusNode = null;
+		this.registeredWindows = [];
+		this.registerWin = function (win) {
+			if (!win.__PopupManagerRegistered) {
+				dojo.event.connect(win.document, "onmousedown", this, "onClick");
+				dojo.event.connect(win, "onscroll", this, "onClick");
+				dojo.event.connect(win.document, "onkey", this, "onKey");
+				win.__PopupManagerRegistered = true;
+				this.registeredWindows.push(win);
+			}
+		};
+		this.registerAllWindows = function (targetWindow) {
+			if (!targetWindow) {
+				targetWindow = dojo.html.getDocumentWindow(window.top && window.top.document || window.document);
+			}
+			this.registerWin(targetWindow);
+			for (var i = 0; i < targetWindow.frames.length; i++) {
+				try {
+					var win = dojo.html.getDocumentWindow(targetWindow.frames[i].document);
+					if (win) {
+						this.registerAllWindows(win);
+					}
+				}
+				catch (e) {
+				}
+			}
+		};
+		this.unRegisterWin = function (win) {
+			if (win.__PopupManagerRegistered) {
+				dojo.event.disconnect(win.document, "onmousedown", this, "onClick");
+				dojo.event.disconnect(win, "onscroll", this, "onClick");
+				dojo.event.disconnect(win.document, "onkey", this, "onKey");
+				win.__PopupManagerRegistered = false;
+			}
+		};
+		this.unRegisterAllWindows = function () {
+			for (var i = 0; i < this.registeredWindows.length; ++i) {
+				this.unRegisterWin(this.registeredWindows[i]);
+			}
+			this.registeredWindows = [];
+		};
+		dojo.addOnLoad(this, "registerAllWindows");
+		dojo.addOnUnload(this, "unRegisterAllWindows");
+		this.closed = function (menu) {
+			if (this.currentMenu == menu) {
+				this.currentMenu = null;
+				this.currentButton = null;
+				this.currentFocusMenu = null;
+			}
+		};
+		this.opened = function (menu, button) {
+			if (menu == this.currentMenu) {
+				return;
+			}
+			if (this.currentMenu) {
+				this.currentMenu.close();
+			}
+			this.currentMenu = menu;
+			this.currentFocusMenu = menu;
+			this.currentButton = button;
+		};
+		this.setFocusedMenu = function (menu) {
+			this.currentFocusMenu = menu;
+		};
+		this.onKey = function (e) {
+			if (!e.key) {
+				return;
+			}
+			if (!this.currentMenu || !this.currentMenu.isShowingNow) {
+				return;
+			}
+			var m = this.currentFocusMenu;
+			while (m) {
+				if (m.processKey(e)) {
+					e.preventDefault();
+					e.stopPropagation();
+					break;
+				}
+				m = m.parentPopup || m.parentMenu;
+			}
+		}, this.onClick = function (e) {
+			if (!this.currentMenu) {
+				return;
+			}
+			var scrolloffset = dojo.html.getScroll().offset;
+			var m = this.currentMenu;
+			while (m) {
+				if (dojo.html.overElement(m.domNode, e) || dojo.html.isDescendantOf(e.target, m.domNode)) {
+					return;
+				}
+				m = m.currentSubpopup;
+			}
+			if (this.currentButton && dojo.html.overElement(this.currentButton, e)) {
+				return;
+			}
+			this.currentMenu.closeAll(true);
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/widget/RegexpTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.RegexpTextbox"], ["require", "dojo.widget.ValidationTextbox"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.RegexpTextbox");
+	dojo.require("dojo.widget.ValidationTextbox");
+	dojo.widget.defineWidget("dojo.widget.RegexpTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties, frag) {
+		dojo.widget.RegexpTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.regexp) {
+			this.flags.regexp = localProperties.regexp;
+		}
+		if (localProperties.flags) {
+			this.flags.flags = localProperties.flags;
+		}
+	}, isValid:function () {
+		var regexp = new RegExp(this.flags.regexp, this.flags.flags);
+		return regexp.test(this.textbox.value);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeExtension.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -19344,6 +39112,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeExtension");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeCommon");
@@ -19352,6 +39122,47 @@
 }, {});
 
 
+__CPAN_FILE__ src/widget/TreeDisableWrapExtension.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeDisableWrapExtension"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeExtension"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeDisableWrapExtension");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeExtension");
+	dojo.widget.defineWidget("dojo.widget.TreeDisableWrapExtension", dojo.widget.TreeExtension, {templateCssString:"\n/* CSS for TreeDisableWrapExtension */\n\n.TreeDisableWrap {\n\twhite-space: nowrap;\n}\n.TreeIEDisableWrap {\n\twidth: expression( 5 + firstChild.offsetWidth );\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeDisableWrap.css"), listenTree:function (tree) {
+		var wrappingDiv = document.createElement("div");
+		var clazz = tree.classPrefix + "DisableWrap";
+		if (dojo.render.html.ie) {
+			clazz = clazz + " " + tree.classPrefix + "IEDisableWrap";
+		}
+		dojo.html.setClass(wrappingDiv, clazz);
+		var table = document.createElement("table");
+		wrappingDiv.appendChild(table);
+		var tbody = document.createElement("tbody");
+		table.appendChild(tbody);
+		var tr = document.createElement("tr");
+		tbody.appendChild(tr);
+		var td = document.createElement("td");
+		tr.appendChild(td);
+		if (tree.domNode.parentNode) {
+			tree.domNode.parentNode.replaceChild(wrappingDiv, tree.domNode);
+		}
+		td.appendChild(tree.domNode);
+		tree.domNode = wrappingDiv;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/GoogleMap.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -19363,6 +39174,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.GoogleMap");
 dojo.require("dojo.event.*");
 dojo.require("dojo.math");
@@ -19521,6 +39334,33 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeDeselectOnDblselect.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeDeselectOnDblselect"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeSelectorV3"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeDeselectOnDblselect");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeSelectorV3");
+	dojo.deprecated("Does anyone still need this extension? (TreeDeselectOnDblselect)");
+	dojo.widget.defineWidget("dojo.widget.TreeDeselectOnDblselect", [dojo.widget.HtmlWidget], {selector:"", initialize:function () {
+		this.selector = dojo.widget.byId(this.selector);
+		dojo.event.topic.subscribe(this.selector.eventNames.dblselect, this, "onDblselect");
+	}, onDblselect:function (message) {
+		this.selector.deselect(message.node);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/MonthlyCalendar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -19532,6 +39372,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.MonthlyCalendar");
 dojo.require("dojo.date.common");
 dojo.require("dojo.date.format");
@@ -19681,6 +39523,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.lang.declare");
 dojo.provide("dojo.widget.TreeWithNode");
 dojo.declare("dojo.widget.TreeWithNode", null, function () {
@@ -19785,6 +39629,322 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Widget.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Widget"], ["require", "dojo.lang.func"], ["require", "dojo.lang.array"], ["require", "dojo.lang.extras"], ["require", "dojo.lang.declare"], ["require", "dojo.ns"], ["require", "dojo.widget.Manager"], ["require", "dojo.event.*"], ["require", "dojo.a11y"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Widget");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.ns");
+	dojo.require("dojo.widget.Manager");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.a11y");
+	dojo.declare("dojo.widget.Widget", null, function () {
+		this.children = [];
+		this.extraArgs = {};
+	}, {parent:null, isTopLevel:false, disabled:false, isContainer:false, widgetId:"", widgetType:"Widget", ns:"dojo", getNamespacedType:function () {
+		return (this.ns ? this.ns + ":" + this.widgetType : this.widgetType).toLowerCase();
+	}, toString:function () {
+		return "[Widget " + this.getNamespacedType() + ", " + (this.widgetId || "NO ID") + "]";
+	}, repr:function () {
+		return this.toString();
+	}, enable:function () {
+		this.disabled = false;
+	}, disable:function () {
+		this.disabled = true;
+	}, onResized:function () {
+		this.notifyChildrenOfResize();
+	}, notifyChildrenOfResize:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child.onResized) {
+				child.onResized();
+			}
+		}
+	}, create:function (args, fragment, parent, ns) {
+		if (ns) {
+			this.ns = ns;
+		}
+		this.satisfyPropertySets(args, fragment, parent);
+		this.mixInProperties(args, fragment, parent);
+		this.postMixInProperties(args, fragment, parent);
+		dojo.widget.manager.add(this);
+		this.buildRendering(args, fragment, parent);
+		this.initialize(args, fragment, parent);
+		this.postInitialize(args, fragment, parent);
+		this.postCreate(args, fragment, parent);
+		return this;
+	}, destroy:function (finalize) {
+		if (this.parent) {
+			this.parent.removeChild(this);
+		}
+		this.destroyChildren();
+		this.uninitialize();
+		this.destroyRendering(finalize);
+		dojo.widget.manager.removeById(this.widgetId);
+	}, destroyChildren:function () {
+		var widget;
+		var i = 0;
+		while (this.children.length > i) {
+			widget = this.children[i];
+			if (widget instanceof dojo.widget.Widget) {
+				this.removeChild(widget);
+				widget.destroy();
+				continue;
+			}
+			i++;
+		}
+	}, getChildrenOfType:function (type, recurse) {
+		var ret = [];
+		var isFunc = dojo.lang.isFunction(type);
+		if (!isFunc) {
+			type = type.toLowerCase();
+		}
+		for (var x = 0; x < this.children.length; x++) {
+			if (isFunc) {
+				if (this.children[x] instanceof type) {
+					ret.push(this.children[x]);
+				}
+			} else {
+				if (this.children[x].widgetType.toLowerCase() == type) {
+					ret.push(this.children[x]);
+				}
+			}
+			if (recurse) {
+				ret = ret.concat(this.children[x].getChildrenOfType(type, recurse));
+			}
+		}
+		return ret;
+	}, getDescendants:function () {
+		var result = [];
+		var stack = [this];
+		var elem;
+		while ((elem = stack.pop())) {
+			result.push(elem);
+			if (elem.children) {
+				dojo.lang.forEach(elem.children, function (elem) {
+					stack.push(elem);
+				});
+			}
+		}
+		return result;
+	}, isFirstChild:function () {
+		return this === this.parent.children[0];
+	}, isLastChild:function () {
+		return this === this.parent.children[this.parent.children.length - 1];
+	}, satisfyPropertySets:function (args) {
+		return args;
+	}, mixInProperties:function (args, frag) {
+		if ((args["fastMixIn"]) || (frag["fastMixIn"])) {
+			for (var x in args) {
+				this[x] = args[x];
+			}
+			return;
+		}
+		var undef;
+		var lcArgs = dojo.widget.lcArgsCache[this.widgetType];
+		if (lcArgs == null) {
+			lcArgs = {};
+			for (var y in this) {
+				lcArgs[((new String(y)).toLowerCase())] = y;
+			}
+			dojo.widget.lcArgsCache[this.widgetType] = lcArgs;
+		}
+		var visited = {};
+		for (var x in args) {
+			if (!this[x]) {
+				var y = lcArgs[(new String(x)).toLowerCase()];
+				if (y) {
+					args[y] = args[x];
+					x = y;
+				}
+			}
+			if (visited[x]) {
+				continue;
+			}
+			visited[x] = true;
+			if ((typeof this[x]) != (typeof undef)) {
+				if (typeof args[x] != "string") {
+					this[x] = args[x];
+				} else {
+					if (dojo.lang.isString(this[x])) {
+						this[x] = args[x];
+					} else {
+						if (dojo.lang.isNumber(this[x])) {
+							this[x] = new Number(args[x]);
+						} else {
+							if (dojo.lang.isBoolean(this[x])) {
+								this[x] = (args[x].toLowerCase() == "false") ? false : true;
+							} else {
+								if (dojo.lang.isFunction(this[x])) {
+									if (args[x].search(/[^\w\.]+/i) == -1) {
+										this[x] = dojo.evalObjPath(args[x], false);
+									} else {
+										var tn = dojo.lang.nameAnonFunc(new Function(args[x]), this);
+										dojo.event.kwConnect({srcObj:this, srcFunc:x, adviceObj:this, adviceFunc:tn});
+									}
+								} else {
+									if (dojo.lang.isArray(this[x])) {
+										this[x] = args[x].split(";");
+									} else {
+										if (this[x] instanceof Date) {
+											this[x] = new Date(Number(args[x]));
+										} else {
+											if (typeof this[x] == "object") {
+												if (this[x] instanceof dojo.uri.Uri) {
+													this[x] = dojo.uri.dojoUri(args[x]);
+												} else {
+													var pairs = args[x].split(";");
+													for (var y = 0; y < pairs.length; y++) {
+														var si = pairs[y].indexOf(":");
+														if ((si != -1) && (pairs[y].length > si)) {
+															this[x][pairs[y].substr(0, si).replace(/^\s+|\s+$/g, "")] = pairs[y].substr(si + 1);
+														}
+													}
+												}
+											} else {
+												this[x] = args[x];
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			} else {
+				this.extraArgs[x.toLowerCase()] = args[x];
+			}
+		}
+	}, postMixInProperties:function (args, frag, parent) {
+	}, initialize:function (args, frag, parent) {
+		return false;
+	}, postInitialize:function (args, frag, parent) {
+		return false;
+	}, postCreate:function (args, frag, parent) {
+		return false;
+	}, uninitialize:function () {
+		return false;
+	}, buildRendering:function (args, frag, parent) {
+		dojo.unimplemented("dojo.widget.Widget.buildRendering, on " + this.toString() + ", ");
+		return false;
+	}, destroyRendering:function () {
+		dojo.unimplemented("dojo.widget.Widget.destroyRendering");
+		return false;
+	}, addedTo:function (parent) {
+	}, addChild:function (child) {
+		dojo.unimplemented("dojo.widget.Widget.addChild");
+		return false;
+	}, removeChild:function (widget) {
+		for (var x = 0; x < this.children.length; x++) {
+			if (this.children[x] === widget) {
+				this.children.splice(x, 1);
+				widget.parent = null;
+				break;
+			}
+		}
+		return widget;
+	}, getPreviousSibling:function () {
+		var idx = this.getParentIndex();
+		if (idx <= 0) {
+			return null;
+		}
+		return this.parent.children[idx - 1];
+	}, getSiblings:function () {
+		return this.parent.children;
+	}, getParentIndex:function () {
+		return dojo.lang.indexOf(this.parent.children, this, true);
+	}, getNextSibling:function () {
+		var idx = this.getParentIndex();
+		if (idx == this.parent.children.length - 1) {
+			return null;
+		}
+		if (idx < 0) {
+			return null;
+		}
+		return this.parent.children[idx + 1];
+	}});
+	dojo.widget.lcArgsCache = {};
+	dojo.widget.tags = {};
+	dojo.widget.tags.addParseTreeHandler = function (type) {
+		dojo.deprecated("addParseTreeHandler", ". ParseTreeHandlers are now reserved for components. Any unfiltered DojoML tag without a ParseTreeHandler is assumed to be a widget", "0.5");
+	};
+	dojo.widget.tags["dojo:propertyset"] = function (fragment, widgetParser, parentComp) {
+		var properties = widgetParser.parseProperties(fragment["dojo:propertyset"]);
+	};
+	dojo.widget.tags["dojo:connect"] = function (fragment, widgetParser, parentComp) {
+		var properties = widgetParser.parseProperties(fragment["dojo:connect"]);
+	};
+	dojo.widget.buildWidgetFromParseTree = function (type, frag, parser, parentComp, insertionIndex, localProps) {
+		dojo.a11y.setAccessibleMode();
+		var stype = type.split(":");
+		stype = (stype.length == 2) ? stype[1] : type;
+		var localProperties = localProps || parser.parseProperties(frag[frag["ns"] + ":" + stype]);
+		var twidget = dojo.widget.manager.getImplementation(stype, null, null, frag["ns"]);
+		if (!twidget) {
+			throw new Error("cannot find \"" + type + "\" widget");
+		} else {
+			if (!twidget.create) {
+				throw new Error("\"" + type + "\" widget object has no \"create\" method and does not appear to implement *Widget");
+			}
+		}
+		localProperties["dojoinsertionindex"] = insertionIndex;
+		var ret = twidget.create(localProperties, frag, parentComp, frag["ns"]);
+		return ret;
+	};
+	dojo.widget.defineWidget = function (widgetClass, renderer, superclasses, init, props) {
+		if (dojo.lang.isString(arguments[3])) {
+			dojo.widget._defineWidget(arguments[0], arguments[3], arguments[1], arguments[4], arguments[2]);
+		} else {
+			var args = [arguments[0]], p = 3;
+			if (dojo.lang.isString(arguments[1])) {
+				args.push(arguments[1], arguments[2]);
+			} else {
+				args.push("", arguments[1]);
+				p = 2;
+			}
+			if (dojo.lang.isFunction(arguments[p])) {
+				args.push(arguments[p], arguments[p + 1]);
+			} else {
+				args.push(null, arguments[p]);
+			}
+			dojo.widget._defineWidget.apply(this, args);
+		}
+	};
+	dojo.widget.defineWidget.renderers = "html|svg|vml";
+	dojo.widget._defineWidget = function (widgetClass, renderer, superclasses, init, props) {
+		var module = widgetClass.split(".");
+		var type = module.pop();
+		var regx = "\\.(" + (renderer ? renderer + "|" : "") + dojo.widget.defineWidget.renderers + ")\\.";
+		var r = widgetClass.search(new RegExp(regx));
+		module = (r < 0 ? module.join(".") : widgetClass.substr(0, r));
+		dojo.widget.manager.registerWidgetPackage(module);
+		var pos = module.indexOf(".");
+		var nsName = (pos > -1) ? module.substring(0, pos) : module;
+		props = (props) || {};
+		props.widgetType = type;
+		if ((!init) && (props["classConstructor"])) {
+			init = props.classConstructor;
+			delete props.classConstructor;
+		}
+		dojo.declare(widgetClass, superclasses, init, props);
+	};
+}});
+
+
 __CPAN_FILE__ src/widget/RadioGroup.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -19796,6 +39956,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.RadioGroup");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.event.browser");
@@ -19907,6 +40069,461 @@
 }});
 
 
+__CPAN_FILE__ src/widget/RadioGroup.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.RadioGroup"], ["require", "dojo.lang.common"], ["require", "dojo.event.browser"], ["require", "dojo.html.selection"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.RadioGroup");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.event.browser");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.RadioGroup", dojo.widget.HtmlWidget, function () {
+		this.selectedItem = null;
+		this.items = [];
+		this.selected = [];
+		this.groupCssClass = "radioGroup";
+		this.selectedCssClass = "selected";
+		this.itemContentCssClass = "itemContent";
+	}, {isContainer:false, templatePath:null, templateCssPath:null, postCreate:function () {
+		this._parseStructure();
+		dojo.html.addClass(this.domNode, this.groupCssClass);
+		this._setupChildren();
+		dojo.event.browser.addListener(this.domNode, "onclick", dojo.lang.hitch(this, "onSelect"));
+		if (this.selectedItem) {
+			this._selectItem(this.selectedItem);
+		}
+	}, _parseStructure:function () {
+		if (this.domNode.tagName.toLowerCase() != "ul" && this.domNode.tagName.toLowerCase() != "ol") {
+			dojo.raise("RadioGroup: Expected ul or ol content.");
+			return;
+		}
+		this.items = [];
+		var nl = this.domNode.getElementsByTagName("li");
+		for (var i = 0; i < nl.length; i++) {
+			if (nl[i].parentNode == this.domNode) {
+				this.items.push(nl[i]);
+			}
+		}
+	}, add:function (node) {
+		if (node.parentNode != this.domNode) {
+			this.domNode.appendChild(node);
+		}
+		this.items.push(node);
+		this._setup(node);
+	}, remove:function (node) {
+		var idx = -1;
+		for (var i = 0; i < this.items.length; i++) {
+			if (this.items[i] == node) {
+				idx = i;
+				break;
+			}
+		}
+		if (idx < 0) {
+			return;
+		}
+		this.items.splice(idx, 1);
+		node.parentNode.removeChild(node);
+	}, clear:function () {
+		for (var i = 0; i < this.items.length; i++) {
+			this.domNode.removeChild(this.items[i]);
+		}
+		this.items = [];
+	}, clearSelections:function () {
+		for (var i = 0; i < this.items.length; i++) {
+			dojo.html.removeClass(this.items[i], this.selectedCssClass);
+		}
+		this.selectedItem = null;
+	}, _setup:function (node) {
+		var span = document.createElement("span");
+		dojo.html.disableSelection(span);
+		dojo.html.addClass(span, this.itemContentCssClass);
+		dojo.dom.moveChildren(node, span);
+		node.appendChild(span);
+		if (this.selected.length > 0) {
+			var uid = dojo.html.getAttribute(node, "id");
+			if (uid && uid == this.selected) {
+				this.selectedItem = node;
+			}
+		}
+		dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, "onItemSelect"));
+		if (dojo.html.hasAttribute(node, "onitemselect")) {
+			var tn = dojo.lang.nameAnonFunc(new Function(dojo.html.getAttribute(node, "onitemselect")), this);
+			dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, tn));
+		}
+	}, _setupChildren:function () {
+		for (var i = 0; i < this.items.length; i++) {
+			this._setup(this.items[i]);
+		}
+	}, _selectItem:function (node, event, nofire) {
+		if (this.selectedItem) {
+			dojo.html.removeClass(this.selectedItem, this.selectedCssClass);
+		}
+		this.selectedItem = node;
+		dojo.html.addClass(this.selectedItem, this.selectedCssClass);
+		if (!dj_undef("currentTarget", event)) {
+			return;
+		}
+		if (!nofire) {
+			if (dojo.render.html.ie) {
+				this.selectedItem.fireEvent("onclick");
+			} else {
+				var e = document.createEvent("MouseEvents");
+				e.initEvent("click", true, false);
+				this.selectedItem.dispatchEvent(e);
+			}
+		}
+	}, getValue:function () {
+		return this.selectedItem;
+	}, onSelect:function (e) {
+	}, onItemSelect:function (e) {
+		if (!dj_undef("currentTarget", e)) {
+			this._selectItem(e.currentTarget, e);
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/SplitContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.SplitContainer"], ["require", "dojo.widget.*"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.html.style"], ["require", "dojo.html.layout"], ["require", "dojo.html.selection"], ["require", "dojo.io.cookie"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.SplitContainer");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.io.cookie");
+	dojo.widget.defineWidget("dojo.widget.SplitContainer", dojo.widget.HtmlWidget, function () {
+		this.sizers = [];
+	}, {isContainer:true, templateCssString:".dojoSplitContainer{\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: block;\n}\n\n.dojoSplitPane{\n\tposition: absolute;\n}\n\n.dojoSplitContainerSizerH,\n.dojoSplitContainerSizerV {\n\tfont-size: 1px;\n\tcursor: move;\n\tcursor: w-resize;\n\tbackground-color: ThreeDFace;\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tmargin: 0;\n}\n\n.dojoSplitContainerSizerV {\n\tcursor: n-resize;\n}\n\n.dojoSplitContainerVirtualSizerH,\n.dojoSplitContainerVirtualSizerV {\n\tfont-size: 1px;\n\tcursor: move;\n\tcursor: w-resize;\n\tbackground-color: ThreeDShadow;\n\t-moz-opacity: 0.5;\n\topacity: 0.5;\n\tfilter: Alpha(Opacity=50);\n\tmargin: 0;\n}\n\n.dojoSplitContainerVirtualSizerV {\n\tcursor: n-resize;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/SplitContainer.css"), activeSizing:false, sizerWidth:15, orientation:"horizontal", persist:true, postMixInProperties:function () {
+		dojo.widget.SplitContainer.superclass.postMixInProperties.apply(this, arguments);
+		this.isHorizontal = (this.orientation == "horizontal");
+	}, fillInTemplate:function () {
+		dojo.widget.SplitContainer.superclass.fillInTemplate.apply(this, arguments);
+		dojo.html.addClass(this.domNode, "dojoSplitContainer");
+		if (dojo.render.html.moz) {
+			this.domNode.style.overflow = "-moz-scrollbars-none";
+		}
+		var content = dojo.html.getContentBox(this.domNode);
+		this.paneWidth = content.width;
+		this.paneHeight = content.height;
+	}, onResized:function (e) {
+		var content = dojo.html.getContentBox(this.domNode);
+		this.paneWidth = content.width;
+		this.paneHeight = content.height;
+		this._layoutPanels();
+	}, postCreate:function (args, fragment, parentComp) {
+		dojo.widget.SplitContainer.superclass.postCreate.apply(this, arguments);
+		for (var i = 0; i < this.children.length; i++) {
+			with (this.children[i].domNode.style) {
+				position = "absolute";
+			}
+			dojo.html.addClass(this.children[i].domNode, "dojoSplitPane");
+			if (i == this.children.length - 1) {
+				break;
+			}
+			this._addSizer();
+		}
+		if (typeof this.sizerWidth == "object") {
+			try {
+				this.sizerWidth = parseInt(this.sizerWidth.toString());
+			}
+			catch (e) {
+				this.sizerWidth = 15;
+			}
+		}
+		this.virtualSizer = document.createElement("div");
+		this.virtualSizer.style.position = "absolute";
+		this.virtualSizer.style.display = "none";
+		this.virtualSizer.style.zIndex = 10;
+		this.virtualSizer.className = this.isHorizontal ? "dojoSplitContainerVirtualSizerH" : "dojoSplitContainerVirtualSizerV";
+		this.domNode.appendChild(this.virtualSizer);
+		dojo.html.disableSelection(this.virtualSizer);
+		if (this.persist) {
+			this._restoreState();
+		}
+		this.resizeSoon();
+	}, _injectChild:function (child) {
+		with (child.domNode.style) {
+			position = "absolute";
+		}
+		dojo.html.addClass(child.domNode, "dojoSplitPane");
+	}, _addSizer:function () {
+		var i = this.sizers.length;
+		this.sizers[i] = document.createElement("div");
+		this.sizers[i].style.position = "absolute";
+		this.sizers[i].className = this.isHorizontal ? "dojoSplitContainerSizerH" : "dojoSplitContainerSizerV";
+		var self = this;
+		var handler = (function () {
+			var sizer_i = i;
+			return function (e) {
+				self.beginSizing(e, sizer_i);
+			};
+		})();
+		dojo.event.connect(this.sizers[i], "onmousedown", handler);
+		this.domNode.appendChild(this.sizers[i]);
+		dojo.html.disableSelection(this.sizers[i]);
+	}, removeChild:function (widget) {
+		if (this.sizers.length > 0) {
+			for (var x = 0; x < this.children.length; x++) {
+				if (this.children[x] === widget) {
+					var i = this.sizers.length - 1;
+					this.domNode.removeChild(this.sizers[i]);
+					this.sizers.length = i;
+					break;
+				}
+			}
+		}
+		dojo.widget.SplitContainer.superclass.removeChild.call(this, widget, arguments);
+		this.onResized();
+	}, addChild:function (widget) {
+		dojo.widget.SplitContainer.superclass.addChild.apply(this, arguments);
+		this._injectChild(widget);
+		if (this.children.length > 1) {
+			this._addSizer();
+		}
+		this._layoutPanels();
+	}, _layoutPanels:function () {
+		if (this.children.length == 0) {
+			return;
+		}
+		var space = this.isHorizontal ? this.paneWidth : this.paneHeight;
+		if (this.children.length > 1) {
+			space -= this.sizerWidth * (this.children.length - 1);
+		}
+		var out_of = 0;
+		for (var i = 0; i < this.children.length; i++) {
+			out_of += this.children[i].sizeShare;
+		}
+		var pix_per_unit = space / out_of;
+		var total_size = 0;
+		for (var i = 0; i < this.children.length - 1; i++) {
+			var size = Math.round(pix_per_unit * this.children[i].sizeShare);
+			this.children[i].sizeActual = size;
+			total_size += size;
+		}
+		this.children[this.children.length - 1].sizeActual = space - total_size;
+		this._checkSizes();
+		var pos = 0;
+		var size = this.children[0].sizeActual;
+		this._movePanel(this.children[0], pos, size);
+		this.children[0].position = pos;
+		pos += size;
+		for (var i = 1; i < this.children.length; i++) {
+			this._moveSlider(this.sizers[i - 1], pos, this.sizerWidth);
+			this.sizers[i - 1].position = pos;
+			pos += this.sizerWidth;
+			size = this.children[i].sizeActual;
+			this._movePanel(this.children[i], pos, size);
+			this.children[i].position = pos;
+			pos += size;
+		}
+	}, _movePanel:function (panel, pos, size) {
+		if (this.isHorizontal) {
+			panel.domNode.style.left = pos + "px";
+			panel.domNode.style.top = 0;
+			panel.resizeTo(size, this.paneHeight);
+		} else {
+			panel.domNode.style.left = 0;
+			panel.domNode.style.top = pos + "px";
+			panel.resizeTo(this.paneWidth, size);
+		}
+	}, _moveSlider:function (slider, pos, size) {
+		if (this.isHorizontal) {
+			slider.style.left = pos + "px";
+			slider.style.top = 0;
+			dojo.html.setMarginBox(slider, {width:size, height:this.paneHeight});
+		} else {
+			slider.style.left = 0;
+			slider.style.top = pos + "px";
+			dojo.html.setMarginBox(slider, {width:this.paneWidth, height:size});
+		}
+	}, _growPane:function (growth, pane) {
+		if (growth > 0) {
+			if (pane.sizeActual > pane.sizeMin) {
+				if ((pane.sizeActual - pane.sizeMin) > growth) {
+					pane.sizeActual = pane.sizeActual - growth;
+					growth = 0;
+				} else {
+					growth -= pane.sizeActual - pane.sizeMin;
+					pane.sizeActual = pane.sizeMin;
+				}
+			}
+		}
+		return growth;
+	}, _checkSizes:function () {
+		var total_min_size = 0;
+		var total_size = 0;
+		for (var i = 0; i < this.children.length; i++) {
+			total_size += this.children[i].sizeActual;
+			total_min_size += this.children[i].sizeMin;
+		}
+		if (total_min_size <= total_size) {
+			var growth = 0;
+			for (var i = 0; i < this.children.length; i++) {
+				if (this.children[i].sizeActual < this.children[i].sizeMin) {
+					growth += this.children[i].sizeMin - this.children[i].sizeActual;
+					this.children[i].sizeActual = this.children[i].sizeMin;
+				}
+			}
+			if (growth > 0) {
+				if (this.isDraggingLeft) {
+					for (var i = this.children.length - 1; i >= 0; i--) {
+						growth = this._growPane(growth, this.children[i]);
+					}
+				} else {
+					for (var i = 0; i < this.children.length; i++) {
+						growth = this._growPane(growth, this.children[i]);
+					}
+				}
+			}
+		} else {
+			for (var i = 0; i < this.children.length; i++) {
+				this.children[i].sizeActual = Math.round(total_size * (this.children[i].sizeMin / total_min_size));
+			}
+		}
+	}, beginSizing:function (e, i) {
+		this.paneBefore = this.children[i];
+		this.paneAfter = this.children[i + 1];
+		this.isSizing = true;
+		this.sizingSplitter = this.sizers[i];
+		this.originPos = dojo.html.getAbsolutePosition(this.children[0].domNode, true, dojo.html.boxSizing.MARGIN_BOX);
+		if (this.isHorizontal) {
+			var client = (e.layerX ? e.layerX : e.offsetX);
+			var screen = e.pageX;
+			this.originPos = this.originPos.x;
+		} else {
+			var client = (e.layerY ? e.layerY : e.offsetY);
+			var screen = e.pageY;
+			this.originPos = this.originPos.y;
+		}
+		this.startPoint = this.lastPoint = screen;
+		this.screenToClientOffset = screen - client;
+		this.dragOffset = this.lastPoint - this.paneBefore.sizeActual - this.originPos - this.paneBefore.position;
+		if (!this.activeSizing) {
+			this._showSizingLine();
+		}
+		dojo.event.connect(document.documentElement, "onmousemove", this, "changeSizing");
+		dojo.event.connect(document.documentElement, "onmouseup", this, "endSizing");
+		dojo.event.browser.stopEvent(e);
+	}, changeSizing:function (e) {
+		this.lastPoint = this.isHorizontal ? e.pageX : e.pageY;
+		if (this.activeSizing) {
+			this.movePoint();
+			this._updateSize();
+		} else {
+			this.movePoint();
+			this._moveSizingLine();
+		}
+		dojo.event.browser.stopEvent(e);
+	}, endSizing:function (e) {
+		if (!this.activeSizing) {
+			this._hideSizingLine();
+		}
+		this._updateSize();
+		this.isSizing = false;
+		dojo.event.disconnect(document.documentElement, "onmousemove", this, "changeSizing");
+		dojo.event.disconnect(document.documentElement, "onmouseup", this, "endSizing");
+		if (this.persist) {
+			this._saveState(this);
+		}
+	}, movePoint:function () {
+		var p = this.lastPoint - this.screenToClientOffset;
+		var a = p - this.dragOffset;
+		a = this.legaliseSplitPoint(a);
+		p = a + this.dragOffset;
+		this.lastPoint = p + this.screenToClientOffset;
+	}, legaliseSplitPoint:function (a) {
+		a += this.sizingSplitter.position;
+		this.isDraggingLeft = (a > 0) ? true : false;
+		if (!this.activeSizing) {
+			if (a < this.paneBefore.position + this.paneBefore.sizeMin) {
+				a = this.paneBefore.position + this.paneBefore.sizeMin;
+			}
+			if (a > this.paneAfter.position + (this.paneAfter.sizeActual - (this.sizerWidth + this.paneAfter.sizeMin))) {
+				a = this.paneAfter.position + (this.paneAfter.sizeActual - (this.sizerWidth + this.paneAfter.sizeMin));
+			}
+		}
+		a -= this.sizingSplitter.position;
+		this._checkSizes();
+		return a;
+	}, _updateSize:function () {
+		var pos = this.lastPoint - this.dragOffset - this.originPos;
+		var start_region = this.paneBefore.position;
+		var end_region = this.paneAfter.position + this.paneAfter.sizeActual;
+		this.paneBefore.sizeActual = pos - start_region;
+		this.paneAfter.position = pos + this.sizerWidth;
+		this.paneAfter.sizeActual = end_region - this.paneAfter.position;
+		for (var i = 0; i < this.children.length; i++) {
+			this.children[i].sizeShare = this.children[i].sizeActual;
+		}
+		this._layoutPanels();
+	}, _showSizingLine:function () {
+		this._moveSizingLine();
+		if (this.isHorizontal) {
+			dojo.html.setMarginBox(this.virtualSizer, {width:this.sizerWidth, height:this.paneHeight});
+		} else {
+			dojo.html.setMarginBox(this.virtualSizer, {width:this.paneWidth, height:this.sizerWidth});
+		}
+		this.virtualSizer.style.display = "block";
+	}, _hideSizingLine:function () {
+		this.virtualSizer.style.display = "none";
+	}, _moveSizingLine:function () {
+		var pos = this.lastPoint - this.startPoint + this.sizingSplitter.position;
+		if (this.isHorizontal) {
+			this.virtualSizer.style.left = pos + "px";
+		} else {
+			var pos = (this.lastPoint - this.startPoint) + this.sizingSplitter.position;
+			this.virtualSizer.style.top = pos + "px";
+		}
+	}, _getCookieName:function (i) {
+		return this.widgetId + "_" + i;
+	}, _restoreState:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			var cookieName = this._getCookieName(i);
+			var cookieValue = dojo.io.cookie.getCookie(cookieName);
+			if (cookieValue != null) {
+				var pos = parseInt(cookieValue);
+				if (typeof pos == "number") {
+					this.children[i].sizeShare = pos;
+				}
+			}
+		}
+	}, _saveState:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			var cookieName = this._getCookieName(i);
+			dojo.io.cookie.setCookie(cookieName, this.children[i].sizeShare, null, null, null, null);
+		}
+	}});
+	dojo.lang.extend(dojo.widget.Widget, {sizeMin:10, sizeShare:10});
+	dojo.widget.defineWidget("dojo.widget.SplitContainerPanel", dojo.widget.ContentPane, {});
+}});
+
+
 __CPAN_FILE__ src/widget/Repeater.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -19918,6 +40535,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Repeater");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.string");
@@ -20035,6 +40654,168 @@
 }});
 
 
+__CPAN_FILE__ src/widget/DropdownContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DropdownContainer"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.PopupContainer"], ["require", "dojo.event.*"], ["require", "dojo.html.layout"], ["require", "dojo.html.display"], ["require", "dojo.html.iframe"], ["require", "dojo.html.util"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DropdownContainer");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.PopupContainer");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.iframe");
+	dojo.require("dojo.html.util");
+	dojo.widget.defineWidget("dojo.widget.DropdownContainer", dojo.widget.HtmlWidget, {inputWidth:"7em", id:"", inputId:"", inputName:"", iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/combo_box_arrow.png"), copyClasses:false, iconAlt:"", containerToggle:"plain", containerToggleDuration:150, templateString:"<span style=\"white-space:nowrap\"><input type=\"hidden\" name=\"\" value=\"\" dojoAttachPoint=\"valueNode\" /><input name=\"\" type=\"text\" value=\"\" style=\"vertical-align:middle;\" dojoAttachPoint=\"inputNode\" autocomplete=\"off\" /> <img src=\"${this.iconURL}\" alt=\"${this.iconAlt}\" dojoAttachEvent=\"onclick:onIconClick\" dojoAttachPoint=\"buttonNode\" style=\"vertical-align:middle; cursor:pointer; cursor:hand\" /></span>", templateCssPath:"", isContainer:true, attachTemplateNodes:function () {
+		dojo.widget.DropdownContainer.superclass.attachTemplateNodes.apply(this, arguments);
+		this.popup = dojo.widget.createWidget("PopupContainer", {toggle:this.containerToggle, toggleDuration:this.containerToggleDuration});
+		this.containerNode = this.popup.domNode;
+	}, fillInTemplate:function (args, frag) {
+		this.domNode.appendChild(this.popup.domNode);
+		if (this.id) {
+			this.domNode.id = this.id;
+		}
+		if (this.inputId) {
+			this.inputNode.id = this.inputId;
+		}
+		if (this.inputName) {
+			this.inputNode.name = this.inputName;
+		}
+		this.inputNode.style.width = this.inputWidth;
+		this.inputNode.disabled = this.disabled;
+		if (this.copyClasses) {
+			this.inputNode.style = "";
+			this.inputNode.className = this.getFragNodeRef(frag).className;
+		}
+		dojo.event.connect(this.inputNode, "onchange", this, "onInputChange");
+	}, onIconClick:function (evt) {
+		if (this.disabled) {
+			return;
+		}
+		if (!this.popup.isShowingNow) {
+			this.popup.open(this.inputNode, this, this.buttonNode);
+		} else {
+			this.popup.close();
+		}
+	}, hideContainer:function () {
+		if (this.popup.isShowingNow) {
+			this.popup.close();
+		}
+	}, onInputChange:function () {
+	}, enable:function () {
+		this.inputNode.disabled = false;
+		dojo.widget.DropdownContainer.superclass.enable.apply(this, arguments);
+	}, disable:function () {
+		this.inputNode.disabled = true;
+		dojo.widget.DropdownContainer.superclass.disable.apply(this, arguments);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TabContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TabContainer"], ["require", "dojo.lang.func"], ["require", "dojo.widget.*"], ["require", "dojo.widget.PageContainer"], ["require", "dojo.event.*"], ["require", "dojo.html.selection"], ["require", "dojo.widget.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TabContainer");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.PageContainer");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.widget.html.layout");
+	dojo.widget.defineWidget("dojo.widget.TabContainer", dojo.widget.PageContainer, {labelPosition:"top", closeButton:"none", templateString:null, templateString:"<div id=\"${this.widgetId}\" class=\"dojoTabContainer\">\n\t<div dojoAttachPoint=\"tablistNode\"></div>\n\t<div class=\"dojoTabPaneWrapper\" dojoAttachPoint=\"containerNode\" dojoAttachEvent=\"onKey\" waiRole=\"tabpanel\"></div>\n</div>\n", templateCssString:".dojoTabContainer {\n\tposition : relative;\n}\n\n.dojoTabPaneWrapper {\n\tborder : 1px solid #6290d2;\n\t_zoom: 1; /* force IE6 layout mode so top border doesnt disappear */\n\tdisplay: block;\n\tclear: both;\n\toverflow: hidden;\n}\n\n.dojoTabLabels-top {\n\tposition : relative;\n\ttop : 0px;\n\tleft : 0px;\n\toverflow : visible;\n\tmargin-bottom : -1px;\n\twidth : 100%;\n\tz-index: 2;\t/* so the bottom of the tab label will cover up the border of dojoTabPaneWrapper */\n}\n\n.dojoTabNoLayout.dojoTabLabels-top .dojoTab {\n\tmargin-bottom: -1px;\n\t_margin-bottom: 0px; /* IE filter so top border lines up correctly */\n}\n\n.dojoTab {\n\tposition : relative;\n\tfloat : left;\n\tpadding-left : 9px;\n\tborder-bottom : 1px solid #6290d2;\n\tbackground : url(images/tab_left.gif) no-repeat left top;\n\tcursor: pointer;\n\twhite-space: nowrap;\n\tz-index: 3;\n}\n\n.dojoTab div {\n\tdisplay : block;\n\tpadding : 4px 15px 4px 6px;\n\tbackground : url(images/tab_top_right.gif) no-repeat right top;\n\tcolor : #333;\n\tfont-size : 90%;\n}\n\n.dojoTab .close {\n\tdisplay : inline-block;\n\theight : 12px;\n\twidth : 12px;\n\tpadding : 0 12px 0 0;\n\tmargin : 0 -10px 0 10px;\n\tcursor : default;\n\tfont-size: small;\n}\n\n.dojoTab .closeImage {\n\tbackground : url(images/tab_close.gif) no-repeat right top;\n}\n\n.dojoTab .closeHover {\n\tbackground-image : url(images/tab_close_h.gif);\n}\n\n.dojoTab.current {\n\tpadding-bottom : 1px;\n\tborder-bottom : 0;\n\tbackground-position : 0 -150px;\n}\n\n.dojoTab.current div {\n\tpadding-bottom : 5px;\n\tmargin-bottom : -1px;\n\tbackground-position : 100% -150px;\n}\n\n/* bottom tabs */\n\n.dojoTabLabels-bottom {\n\tposition : relative;\n\tbottom : 0px;\n\tleft : 0px;\n\toverflow : visible;\n\tmargin-top : -1px;\n\twidth : 100%;\n\tz-index: 2;\n}\n\n.dojoTabNoLayout.dojoTabLabels-bottom {\n\tposition : relative;\n}\n\n.dojoTabLabels-bottom .dojoTab {\n\tborder-top :  1px solid #6290d2;\n\tborder-bottom : 0;\n\tbackground : url(images/tab_bot_left.gif) no-repeat left bottom;\n}\n\n.dojoTabLabels-bottom .dojoTab div {\n\tbackground : url(images/tab_bot_right.gif) no-repeat right bottom;\n}\n\n.dojoTabLabels-bottom .dojoTab.current {\n\tborder-top : 0;\n\tbackground : url(images/tab_bot_left_curr.gif) no-repeat left bottom;\n}\n\n.dojoTabLabels-bottom .dojoTab.current div {\n\tpadding-top : 4px;\n\tbackground : url(images/tab_bot_right_curr.gif) no-repeat right bottom;\n}\n\n/* right-h tabs */\n\n.dojoTabLabels-right-h {\n\toverflow : visible;\n\tmargin-left : -1px;\n\tz-index: 2;\n}\n\n.dojoTabLabels-right-h .dojoTab {\n\tpadding-left : 0;\n\tborder-left :  1px solid #6290d2;\n\tborder-bottom : 0;\n\tbackground : url(images/tab_bot_right.gif) no-repeat right bottom;\n\tfloat : none;\n}\n\n.dojoTabLabels-right-h .dojoTab div {\n\tpadding : 4px 15px 4px 15px;\n}\n\n.dojoTabLabels-right-h .dojoTab.current {\n\tborder-left :  0;\n\tborder-bottom :  1px solid #6290d2;\n}\n\n/* left-h tabs */\n\n.dojoTabLabels-left-h {\n\toverflow : visible;\n\tmargin-right : -1px;\n\tz-index: 2;\n}\n\n.dojoTabLabels-left-h .dojoTab {\n\tborder-right :  1px solid #6290d2;\n\tborder-bottom : 0;\n\tfloat : none;\n\tbackground : url(images/tab_top_left.gif) no-repeat left top;\n}\n\n.dojoTabLabels-left-h .dojoTab.current {\n\tborder-right : 0;\n\tborder-bottom :  1px solid #6290d2;\n\tpadding-bottom : 0;\n\tbackground : url(images/tab_top_left.gif) no-repeat 0 -150px;\n}\n\n.dojoTabLabels-left-h .dojoTab div {\n\tbackground : 0;\n\tborder-bottom :  1px solid #6290d2;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TabContainer.css"), selectedTab:"", postMixInProperties:function () {
+		if (this.selectedTab) {
+			dojo.deprecated("selectedTab deprecated, use selectedChild instead, will be removed in", "0.5");
+			this.selectedChild = this.selectedTab;
+		}
+		if (this.closeButton != "none") {
+			dojo.deprecated("closeButton deprecated, use closable='true' on each child instead, will be removed in", "0.5");
+		}
+		dojo.widget.TabContainer.superclass.postMixInProperties.apply(this, arguments);
+	}, fillInTemplate:function () {
+		this.tablist = dojo.widget.createWidget("TabController", {id:this.widgetId + "_tablist", labelPosition:this.labelPosition, doLayout:this.doLayout, containerId:this.widgetId}, this.tablistNode);
+		dojo.widget.TabContainer.superclass.fillInTemplate.apply(this, arguments);
+	}, postCreate:function (args, frag) {
+		dojo.widget.TabContainer.superclass.postCreate.apply(this, arguments);
+		this.onResized();
+	}, _setupChild:function (tab) {
+		if (this.closeButton == "tab" || this.closeButton == "pane") {
+			tab.closable = true;
+		}
+		dojo.html.addClass(tab.domNode, "dojoTabPane");
+		dojo.widget.TabContainer.superclass._setupChild.apply(this, arguments);
+	}, onResized:function () {
+		if (!this.doLayout) {
+			return;
+		}
+		var labelAlign = this.labelPosition.replace(/-h/, "");
+		var children = [{domNode:this.tablist.domNode, layoutAlign:labelAlign}, {domNode:this.containerNode, layoutAlign:"client"}];
+		dojo.widget.html.layout(this.domNode, children);
+		if (this.selectedChildWidget) {
+			var containerSize = dojo.html.getContentBox(this.containerNode);
+			this.selectedChildWidget.resizeTo(containerSize.width, containerSize.height);
+		}
+	}, selectTab:function (tab, callingWidget) {
+		dojo.deprecated("use selectChild() rather than selectTab(), selectTab() will be removed in", "0.5");
+		this.selectChild(tab, callingWidget);
+	}, onKey:function (e) {
+		if (e.keyCode == e.KEY_UP_ARROW && e.ctrlKey) {
+			var button = this.correspondingTabButton || this.selectedTabWidget.tabButton;
+			button.focus();
+			dojo.event.browser.stopEvent(e);
+		} else {
+			if (e.keyCode == e.KEY_DELETE && e.altKey) {
+				if (this.selectedChildWidget.closable) {
+					this.closeChild(this.selectedChildWidget);
+					dojo.event.browser.stopEvent(e);
+				}
+			}
+		}
+	}, destroy:function () {
+		this.tablist.destroy();
+		dojo.widget.TabContainer.superclass.destroy.apply(this, arguments);
+	}});
+	dojo.widget.defineWidget("dojo.widget.TabController", dojo.widget.PageController, {templateString:"<div wairole='tablist' dojoAttachEvent='onKey'></div>", labelPosition:"top", doLayout:true, "class":"", buttonWidget:"TabButton", postMixInProperties:function () {
+		if (!this["class"]) {
+			this["class"] = "dojoTabLabels-" + this.labelPosition + (this.doLayout ? "" : " dojoTabNoLayout");
+		}
+		dojo.widget.TabController.superclass.postMixInProperties.apply(this, arguments);
+	}});
+	dojo.widget.defineWidget("dojo.widget.TabButton", dojo.widget.PageButton, {templateString:"<div class='dojoTab' dojoAttachEvent='onClick'>" + "<div dojoAttachPoint='innerDiv'>" + "<span dojoAttachPoint='titleNode' tabIndex='-1' waiRole='tab'>${this.label}</span>" + "<span dojoAttachPoint='closeButtonNode' class='close closeImage' style='${this.closeButtonStyle}'" + "	dojoAttachEvent='onMouseOver:onCloseButtonMouseOver; onMouseOut:onCloseButtonMouseOut; onClick:onCloseButtonClick'></span>" + "</div>" + "</div>", postMixInProperties:function () {
+		this.closeButtonStyle = this.closeButton ? "" : "display: none";
+		dojo.widget.TabButton.superclass.postMixInProperties.apply(this, arguments);
+	}, fillInTemplate:function () {
+		dojo.html.disableSelection(this.titleNode);
+		dojo.widget.TabButton.superclass.fillInTemplate.apply(this, arguments);
+	}, onCloseButtonClick:function (evt) {
+		evt.stopPropagation();
+		dojo.widget.TabButton.superclass.onCloseButtonClick.apply(this, arguments);
+	}});
+	dojo.widget.defineWidget("dojo.widget.a11y.TabButton", dojo.widget.TabButton, {imgPath:dojo.uri.moduleUri("dojo.widget", "templates/images/tab_close.gif"), templateString:"<div class='dojoTab' dojoAttachEvent='onClick;onKey'>" + "<div dojoAttachPoint='innerDiv'>" + "<span dojoAttachPoint='titleNode' tabIndex='-1' waiRole='tab'>${this.label}</span>" + "<img class='close' src='${this.imgPath}' alt='[x]' style='${this.closeButtonStyle}'" + "	dojoAttachEvent='onClick:onCloseButtonClick'>" + "</div>" + "</div>"});
+}});
+
+
 __CPAN_FILE__ src/widget/DropdownContainer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -20046,6 +40827,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DropdownContainer");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -20100,6 +40883,506 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Editor2Toolbar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Toolbar"], ["require", "dojo.lang.*"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.html.layout"], ["require", "dojo.html.display"], ["require", "dojo.widget.RichText"], ["require", "dojo.widget.PopupContainer"], ["require", "dojo.widget.ColorPalette"], ["require", "dojo.widget.ContentPane"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Toolbar");
+	dojo.require("dojo.lang.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.widget.RichText");
+	dojo.require("dojo.widget.PopupContainer");
+	dojo.require("dojo.widget.ColorPalette");
+	dojo.lang.declare("dojo.widget.HandlerManager", null, function () {
+		this._registeredHandlers = [];
+	}, {registerHandler:function (obj, func) {
+		if (arguments.length == 2) {
+			this._registeredHandlers.push(function () {
+				return obj[func].apply(obj, arguments);
+			});
+		} else {
+			this._registeredHandlers.push(obj);
+		}
+	}, removeHandler:function (func) {
+		for (var i = 0; i < this._registeredHandlers.length; i++) {
+			if (func === this._registeredHandlers[i]) {
+				delete this._registeredHandlers[i];
+				return;
+			}
+		}
+		dojo.debug("HandlerManager handler " + func + " is not registered, can not remove.");
+	}, destroy:function () {
+		for (var i = 0; i < this._registeredHandlers.length; i++) {
+			delete this._registeredHandlers[i];
+		}
+	}});
+	dojo.widget.Editor2ToolbarItemManager = new dojo.widget.HandlerManager;
+	dojo.lang.mixin(dojo.widget.Editor2ToolbarItemManager, {getToolbarItem:function (name) {
+		var item;
+		name = name.toLowerCase();
+		for (var i = 0; i < this._registeredHandlers.length; i++) {
+			item = this._registeredHandlers[i](name);
+			if (item) {
+				return item;
+			}
+		}
+		switch (name) {
+		  case "bold":
+		  case "copy":
+		  case "cut":
+		  case "delete":
+		  case "indent":
+		  case "inserthorizontalrule":
+		  case "insertorderedlist":
+		  case "insertunorderedlist":
+		  case "italic":
+		  case "justifycenter":
+		  case "justifyfull":
+		  case "justifyleft":
+		  case "justifyright":
+		  case "outdent":
+		  case "paste":
+		  case "redo":
+		  case "removeformat":
+		  case "selectall":
+		  case "strikethrough":
+		  case "subscript":
+		  case "superscript":
+		  case "underline":
+		  case "undo":
+		  case "unlink":
+		  case "createlink":
+		  case "insertimage":
+		  case "htmltoggle":
+			item = new dojo.widget.Editor2ToolbarButton(name);
+			break;
+		  case "forecolor":
+		  case "hilitecolor":
+			item = new dojo.widget.Editor2ToolbarColorPaletteButton(name);
+			break;
+		  case "plainformatblock":
+			item = new dojo.widget.Editor2ToolbarFormatBlockPlainSelect("formatblock");
+			break;
+		  case "formatblock":
+			item = new dojo.widget.Editor2ToolbarFormatBlockSelect("formatblock");
+			break;
+		  case "fontsize":
+			item = new dojo.widget.Editor2ToolbarFontSizeSelect("fontsize");
+			break;
+		  case "fontname":
+			item = new dojo.widget.Editor2ToolbarFontNameSelect("fontname");
+			break;
+		  case "inserttable":
+		  case "insertcell":
+		  case "insertcol":
+		  case "insertrow":
+		  case "deletecells":
+		  case "deletecols":
+		  case "deleterows":
+		  case "mergecells":
+		  case "splitcell":
+			dojo.debug(name + " is implemented in dojo.widget.Editor2Plugin.TableOperation, please require it first.");
+			break;
+		  case "inserthtml":
+		  case "blockdirltr":
+		  case "blockdirrtl":
+		  case "dirltr":
+		  case "dirrtl":
+		  case "inlinedirltr":
+		  case "inlinedirrtl":
+			dojo.debug("Not yet implemented toolbar item: " + name);
+			break;
+		  default:
+			dojo.debug("dojo.widget.Editor2ToolbarItemManager.getToolbarItem: Unknown toolbar item: " + name);
+		}
+		return item;
+	}});
+	dojo.addOnUnload(dojo.widget.Editor2ToolbarItemManager, "destroy");
+	dojo.declare("dojo.widget.Editor2ToolbarButton", null, function (name) {
+		this._name = name;
+	}, {create:function (node, toolbar, nohover) {
+		this._domNode = node;
+		var cmd = toolbar.parent.getCommand(this._name);
+		if (cmd) {
+			this._domNode.title = cmd.getText();
+		}
+		this.disableSelection(this._domNode);
+		this._parentToolbar = toolbar;
+		dojo.event.connect(this._domNode, "onclick", this, "onClick");
+		if (!nohover) {
+			dojo.event.connect(this._domNode, "onmouseover", this, "onMouseOver");
+			dojo.event.connect(this._domNode, "onmouseout", this, "onMouseOut");
+		}
+	}, disableSelection:function (rootnode) {
+		dojo.html.disableSelection(rootnode);
+		var nodes = rootnode.all || rootnode.getElementsByTagName("*");
+		for (var x = 0; x < nodes.length; x++) {
+			dojo.html.disableSelection(nodes[x]);
+		}
+	}, onMouseOver:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		if (curInst) {
+			var _command = curInst.getCommand(this._name);
+			if (_command && _command.getState() != dojo.widget.Editor2Manager.commandState.Disabled) {
+				this.highlightToolbarItem();
+			}
+		}
+	}, onMouseOut:function () {
+		this.unhighlightToolbarItem();
+	}, destroy:function () {
+		this._domNode = null;
+		this._parentToolbar = null;
+	}, onClick:function (e) {
+		if (this._domNode && !this._domNode.disabled && this._parentToolbar.checkAvailability()) {
+			e.preventDefault();
+			e.stopPropagation();
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			if (curInst) {
+				var _command = curInst.getCommand(this._name);
+				if (_command) {
+					_command.execute();
+				}
+			}
+		}
+	}, refreshState:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		var em = dojo.widget.Editor2Manager;
+		if (curInst) {
+			var _command = curInst.getCommand(this._name);
+			if (_command) {
+				var state = _command.getState();
+				if (state != this._lastState) {
+					switch (state) {
+					  case em.commandState.Latched:
+						this.latchToolbarItem();
+						break;
+					  case em.commandState.Enabled:
+						this.enableToolbarItem();
+						break;
+					  case em.commandState.Disabled:
+					  default:
+						this.disableToolbarItem();
+					}
+					this._lastState = state;
+				}
+			}
+		}
+		return em.commandState.Enabled;
+	}, latchToolbarItem:function () {
+		this._domNode.disabled = false;
+		this.removeToolbarItemStyle(this._domNode);
+		dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarLatchedItemStyle);
+	}, enableToolbarItem:function () {
+		this._domNode.disabled = false;
+		this.removeToolbarItemStyle(this._domNode);
+		dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarEnabledItemStyle);
+	}, disableToolbarItem:function () {
+		this._domNode.disabled = true;
+		this.removeToolbarItemStyle(this._domNode);
+		dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarDisabledItemStyle);
+	}, highlightToolbarItem:function () {
+		dojo.html.addClass(this._domNode, this._parentToolbar.ToolbarHighlightedItemStyle);
+	}, unhighlightToolbarItem:function () {
+		dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarHighlightedItemStyle);
+	}, removeToolbarItemStyle:function () {
+		dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarEnabledItemStyle);
+		dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarLatchedItemStyle);
+		dojo.html.removeClass(this._domNode, this._parentToolbar.ToolbarDisabledItemStyle);
+		this.unhighlightToolbarItem();
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarDropDownButton", dojo.widget.Editor2ToolbarButton, {onClick:function () {
+		if (this._domNode && !this._domNode.disabled && this._parentToolbar.checkAvailability()) {
+			if (!this._dropdown) {
+				this._dropdown = dojo.widget.createWidget("PopupContainer", {});
+				this._domNode.appendChild(this._dropdown.domNode);
+			}
+			if (this._dropdown.isShowingNow) {
+				this._dropdown.close();
+			} else {
+				this.onDropDownShown();
+				this._dropdown.open(this._domNode, null, this._domNode);
+			}
+		}
+	}, destroy:function () {
+		this.onDropDownDestroy();
+		if (this._dropdown) {
+			this._dropdown.destroy();
+		}
+		dojo.widget.Editor2ToolbarDropDownButton.superclass.destroy.call(this);
+	}, onDropDownShown:function () {
+	}, onDropDownDestroy:function () {
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarColorPaletteButton", dojo.widget.Editor2ToolbarDropDownButton, {onDropDownShown:function () {
+		if (!this._colorpalette) {
+			this._colorpalette = dojo.widget.createWidget("ColorPalette", {});
+			this._dropdown.addChild(this._colorpalette);
+			this.disableSelection(this._dropdown.domNode);
+			this.disableSelection(this._colorpalette.domNode);
+			dojo.event.connect(this._colorpalette, "onColorSelect", this, "setColor");
+			dojo.event.connect(this._dropdown, "open", this, "latchToolbarItem");
+			dojo.event.connect(this._dropdown, "close", this, "enableToolbarItem");
+		}
+	}, setColor:function (color) {
+		this._dropdown.close();
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		if (curInst) {
+			var _command = curInst.getCommand(this._name);
+			if (_command) {
+				_command.execute(color);
+			}
+		}
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarFormatBlockPlainSelect", dojo.widget.Editor2ToolbarButton, {create:function (node, toolbar) {
+		this._domNode = node;
+		this._parentToolbar = toolbar;
+		this._domNode = node;
+		this.disableSelection(this._domNode);
+		dojo.event.connect(this._domNode, "onchange", this, "onChange");
+	}, destroy:function () {
+		this._domNode = null;
+	}, onChange:function () {
+		if (this._parentToolbar.checkAvailability()) {
+			var sv = this._domNode.value.toLowerCase();
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			if (curInst) {
+				var _command = curInst.getCommand(this._name);
+				if (_command) {
+					_command.execute(sv);
+				}
+			}
+		}
+	}, refreshState:function () {
+		if (this._domNode) {
+			dojo.widget.Editor2ToolbarFormatBlockPlainSelect.superclass.refreshState.call(this);
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			if (curInst) {
+				var _command = curInst.getCommand(this._name);
+				if (_command) {
+					var format = _command.getValue();
+					if (!format) {
+						format = "";
+					}
+					dojo.lang.forEach(this._domNode.options, function (item) {
+						if (item.value.toLowerCase() == format.toLowerCase()) {
+							item.selected = true;
+						}
+					});
+				}
+			}
+		}
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarComboItem", dojo.widget.Editor2ToolbarDropDownButton, {href:null, create:function (node, toolbar) {
+		dojo.widget.Editor2ToolbarComboItem.superclass.create.apply(this, arguments);
+		if (!this._contentPane) {
+			dojo.require("dojo.widget.ContentPane");
+			this._contentPane = dojo.widget.createWidget("ContentPane", {preload:"true"});
+			this._contentPane.addOnLoad(this, "setup");
+			this._contentPane.setUrl(this.href);
+		}
+	}, onMouseOver:function (e) {
+		if (this._lastState != dojo.widget.Editor2Manager.commandState.Disabled) {
+			dojo.html.addClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectStyle);
+		}
+	}, onMouseOut:function (e) {
+		dojo.html.removeClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectStyle);
+	}, onDropDownShown:function () {
+		if (!this._dropdown.__addedContentPage) {
+			this._dropdown.addChild(this._contentPane);
+			this._dropdown.__addedContentPage = true;
+		}
+	}, setup:function () {
+	}, onChange:function (e) {
+		if (this._parentToolbar.checkAvailability()) {
+			var name = e.currentTarget.getAttribute("dropDownItemName");
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			if (curInst) {
+				var _command = curInst.getCommand(this._name);
+				if (_command) {
+					_command.execute(name);
+				}
+			}
+		}
+		this._dropdown.close();
+	}, onMouseOverItem:function (e) {
+		dojo.html.addClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectItemStyle);
+	}, onMouseOutItem:function (e) {
+		dojo.html.removeClass(e.currentTarget, this._parentToolbar.ToolbarHighlightedSelectItemStyle);
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarFormatBlockSelect", dojo.widget.Editor2ToolbarComboItem, {href:dojo.uri.moduleUri("dojo.widget", "templates/Editor2/EditorToolbar_FormatBlock.html"), setup:function () {
+		dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);
+		var nodes = this._contentPane.domNode.all || this._contentPane.domNode.getElementsByTagName("*");
+		this._blockNames = {};
+		this._blockDisplayNames = {};
+		for (var x = 0; x < nodes.length; x++) {
+			var node = nodes[x];
+			dojo.html.disableSelection(node);
+			var name = node.getAttribute("dropDownItemName");
+			if (name) {
+				this._blockNames[name] = node;
+				var childrennodes = node.getElementsByTagName(name);
+				this._blockDisplayNames[name] = childrennodes[childrennodes.length - 1].innerHTML;
+			}
+		}
+		for (var name in this._blockNames) {
+			dojo.event.connect(this._blockNames[name], "onclick", this, "onChange");
+			dojo.event.connect(this._blockNames[name], "onmouseover", this, "onMouseOverItem");
+			dojo.event.connect(this._blockNames[name], "onmouseout", this, "onMouseOutItem");
+		}
+	}, onDropDownDestroy:function () {
+		if (this._blockNames) {
+			for (var name in this._blockNames) {
+				delete this._blockNames[name];
+				delete this._blockDisplayNames[name];
+			}
+		}
+	}, refreshState:function () {
+		dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.refreshState.call(this);
+		if (this._lastState != dojo.widget.Editor2Manager.commandState.Disabled) {
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			if (curInst) {
+				var _command = curInst.getCommand(this._name);
+				if (_command) {
+					var format = _command.getValue();
+					if (format == this._lastSelectedFormat && this._blockDisplayNames) {
+						return this._lastState;
+					}
+					this._lastSelectedFormat = format;
+					var label = this._domNode.getElementsByTagName("label")[0];
+					var isSet = false;
+					if (this._blockDisplayNames) {
+						for (var name in this._blockDisplayNames) {
+							if (name == format) {
+								label.innerHTML = this._blockDisplayNames[name];
+								isSet = true;
+								break;
+							}
+						}
+						if (!isSet) {
+							label.innerHTML = "&nbsp;";
+						}
+					}
+				}
+			}
+		}
+		return this._lastState;
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarFontSizeSelect", dojo.widget.Editor2ToolbarComboItem, {href:dojo.uri.moduleUri("dojo.widget", "templates/Editor2/EditorToolbar_FontSize.html"), setup:function () {
+		dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.setup.call(this);
+		var nodes = this._contentPane.domNode.all || this._contentPane.domNode.getElementsByTagName("*");
+		this._fontsizes = {};
+		this._fontSizeDisplayNames = {};
+		for (var x = 0; x < nodes.length; x++) {
+			var node = nodes[x];
+			dojo.html.disableSelection(node);
+			var name = node.getAttribute("dropDownItemName");
+			if (name) {
+				this._fontsizes[name] = node;
+				this._fontSizeDisplayNames[name] = node.getElementsByTagName("font")[0].innerHTML;
+			}
+		}
+		for (var name in this._fontsizes) {
+			dojo.event.connect(this._fontsizes[name], "onclick", this, "onChange");
+			dojo.event.connect(this._fontsizes[name], "onmouseover", this, "onMouseOverItem");
+			dojo.event.connect(this._fontsizes[name], "onmouseout", this, "onMouseOutItem");
+		}
+	}, onDropDownDestroy:function () {
+		if (this._fontsizes) {
+			for (var name in this._fontsizes) {
+				delete this._fontsizes[name];
+				delete this._fontSizeDisplayNames[name];
+			}
+		}
+	}, refreshState:function () {
+		dojo.widget.Editor2ToolbarFormatBlockSelect.superclass.refreshState.call(this);
+		if (this._lastState != dojo.widget.Editor2Manager.commandState.Disabled) {
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			if (curInst) {
+				var _command = curInst.getCommand(this._name);
+				if (_command) {
+					var size = _command.getValue();
+					if (size == this._lastSelectedSize && this._fontSizeDisplayNames) {
+						return this._lastState;
+					}
+					this._lastSelectedSize = size;
+					var label = this._domNode.getElementsByTagName("label")[0];
+					var isSet = false;
+					if (this._fontSizeDisplayNames) {
+						for (var name in this._fontSizeDisplayNames) {
+							if (name == size) {
+								label.innerHTML = this._fontSizeDisplayNames[name];
+								isSet = true;
+								break;
+							}
+						}
+						if (!isSet) {
+							label.innerHTML = "&nbsp;";
+						}
+					}
+				}
+			}
+		}
+		return this._lastState;
+	}});
+	dojo.declare("dojo.widget.Editor2ToolbarFontNameSelect", dojo.widget.Editor2ToolbarFontSizeSelect, {href:dojo.uri.moduleUri("dojo.widget", "templates/Editor2/EditorToolbar_FontName.html")});
+	dojo.widget.defineWidget("dojo.widget.Editor2Toolbar", dojo.widget.HtmlWidget, function () {
+		dojo.event.connect(this, "fillInTemplate", dojo.lang.hitch(this, function () {
+			if (dojo.render.html.ie) {
+				this.domNode.style.zoom = 1;
+			}
+		}));
+	}, {templateString:"<div dojoAttachPoint=\"domNode\" class=\"EditorToolbarDomNode\" unselectable=\"on\">\n\t<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">\n\t\t<!--\n\t\t\tour toolbar should look something like:\n\n\t\t\t+=======+=======+=======+=============================================+\n\t\t\t| w   w | style | copy  | bo | it | un | le | ce | ri |\n\t\t\t| w w w | style |=======|==============|==============|\n\t\t\t|  w w  | style | paste |  undo | redo | change style |\n\t\t\t+=======+=======+=======+=============================================+\n\t\t-->\n\t\t<tbody>\n\t\t\t<tr valign=\"top\">\n\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t<div class=\"bigIcon\" dojoAttachPoint=\"wikiWordButton\"\n\t\t\t\t\t\tdojoOnClick=\"wikiWordClick; buttonClick;\">\n\t\t\t\t\t\t<span style=\"font-size: 30px; margin-left: 5px;\">\n\t\t\t\t\t\t\tW\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t<div class=\"bigIcon\" dojoAttachPoint=\"styleDropdownButton\"\n\t\t\t\t\t\tdojoOnClick=\"styleDropdownClick; buttonClick;\">\n\t\t\t\t\t\t<span unselectable=\"on\"\n\t\t\t\t\t\t\tstyle=\"font-size: 30px; margin-left: 5px;\">\n\t\t\t\t\t\t\tS\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"StyleDropdownContainer\" style=\"display: none;\"\n\t\t\t\t\t\tdojoAttachPoint=\"styleDropdownContainer\">\n\t\t\t\t\t\t<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"\n\t\t\t\t\t\t\theight=\"100%\" width=\"100%\">\n\t\t\t\t\t\t\t<tr valign=\"top\">\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<div style=\"height: 245px; overflow: auto;\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"normalTextClick\">normal</div>\n\t\t\t\t\t\t\t\t\t\t<h1 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h1TextClick\">Heading 1</h1>\n\t\t\t\t\t\t\t\t\t\t<h2 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h2TextClick\">Heading 2</h2>\n\t\t\t\t\t\t\t\t\t\t<h3 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h3TextClick\">Heading 3</h3>\n\t\t\t\t\t\t\t\t\t\t<h4 class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"h4TextClick\">Heading 4</h4>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\"\n\t\t\t\t\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\t\t\t\t\tdojoOnClick=\"blahTextClick\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"headingContainer\">blah</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<!--\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyleft\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifycenter\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyright\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"iconContainer\" dojoOnClick=\"buttonClick;\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"icon justifyfull\" \n\t\t\t\t\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t-->\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr valign=\"top\">\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\tthud\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<!-- copy -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"copyButton\"\n\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\tdojoOnClick=\"copyClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon copy\" \n\t\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\t\tstyle=\"float: left;\">&nbsp;</span> copy\n\t\t\t\t\t</span>\n\t\t\t\t\t<!-- \"droppable\" options -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"boldButton\"\n\t\t\t\t\t\tunselectable=\"on\"\n\t\t\t\t\t\tdojoOnClick=\"boldClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon bold\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"italicButton\"\n\t\t\t\t\t\tdojoOnClick=\"italicClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon italic\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"underlineButton\"\n\t\t\t\t\t\tdojoOnClick=\"underlineClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon underline\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"leftButton\"\n\t\t\t\t\t\tdojoOnClick=\"leftClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyleft\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"fullButton\"\n\t\t\t\t\t\tdojoOnClick=\"fullClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyfull\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"rightButton\"\n\t\t\t\t\t\tdojoOnClick=\"rightClick; buttonClick;\">\n\t\t\t\t\t\t<span class=\"icon justifyright\" unselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<!-- paste -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"pasteButton\"\n\t\t\t\t\t\tdojoOnClick=\"pasteClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon paste\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> paste\n\t\t\t\t\t</span>\n\t\t\t\t\t<!-- \"droppable\" options -->\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"undoButton\"\n\t\t\t\t\t\tdojoOnClick=\"undoClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon undo\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> undo\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"iconContainer\" dojoAttachPoint=\"redoButton\"\n\t\t\t\t\t\tdojoOnClick=\"redoClick; buttonClick;\" unselectable=\"on\">\n\t\t\t\t\t\t<span class=\"icon redo\" style=\"float: left;\" unselectable=\"on\">&nbsp;</span> redo\n\t\t\t\t\t</span>\n\t\t\t\t</td>\t\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:".StyleDropdownContainer {\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n\twidth: 250px;\n\theight: 250px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n}\n\n.ColorDropdownContainer {\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n\twidth: 250px;\n\theight: 150px;\n\tbackground-color: white;\n\tborder: 1px solid black;\n}\n\n.EditorToolbarDomNode {\n\tbackground-image: url(buttons/bg-fade.png);\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0px -50px;\n}\n\n.EditorToolbarSmallBg {\n\tbackground-image: url(images/toolbar-bg.gif);\n\tbackground-repeat: repeat-x;\n\tbackground-position: 0px 0px;\n}\n\n/*\nbody {\n\tbackground:url(images/blank.gif) fixed;\n}*/\n\n.IEFixedToolbar {\n\tposition:absolute;\n\t/* top:0; */\n\ttop: expression(eval((document.documentElement||document.body).scrollTop));\n}\n\ndiv.bigIcon {\n\twidth: 40px;\n\theight: 40px; \n\t/* background-color: white; */\n\t/* border: 1px solid #a6a7a3; */\n\tfont-family: Verdana, Trebuchet, Tahoma, Arial;\n}\n\n.iconContainer {\n\tfont-family: Verdana, Trebuchet, Tahoma, Arial;\n\tfont-size: 13px;\n\tfloat: left;\n\theight: 18px;\n\tdisplay: block;\n\t/* background-color: white; */\n\tcursor: pointer;\n\tpadding: 1px 4px 1px 1px; /* almost the same as a transparent border */\n\tborder: 0px;\n}\n\n.dojoE2TBIcon {\n\tdisplay: block;\n\ttext-align: center;\n\tmin-width: 18px;\n\twidth: 18px;\n\theight: 18px;\n\t/* background-color: #a6a7a3; */\n\tbackground-repeat: no-repeat;\n\tbackground-image: url(buttons/aggregate.gif);\n}\n\n\n.dojoE2TBIcon[class~=dojoE2TBIcon] {\n}\n\n.ToolbarButtonLatched {\n	border: #316ac5 1px solid; !important;\n	padding: 0px 3px 0px 0px; !important; /* make room for border */\n	background-color: #c1d2ee;\n}\n\n.ToolbarButtonHighlighted {\n	border: #316ac5 1px solid; !important;\n	padding: 0px 3px 0px 0px; !important; /* make room for border */\n	background-color: #dff1ff;\n}\n\n.ToolbarButtonDisabled{\n	filter: gray() alpha(opacity=30); /* IE */\n	opacity: 0.30; /* Safari, Opera and Mozilla */\n}\n\n.headingContainer {\n\twidth: 150px;\n\theight: 30px;\n\tmargin: 0px;\n\t/* padding-left: 5px; */\n\toverflow: hidden;\n\tline-height: 25px;\n\tborder-bottom: 1px solid black;\n\tborder-top: 1px solid white;\n}\n\n.EditorToolbarDomNode select {\n\tfont-size: 14px;\n}\n \n.dojoE2TBIcon_Sep { width: 5px; min-width: 5px; max-width: 5px; background-position: 0px 0px}\n.dojoE2TBIcon_Backcolor { background-position: -18px 0px}\n.dojoE2TBIcon_Bold { background-position: -36px 0px}\n.dojoE2TBIcon_Cancel { background-position: -54px 0px}\n.dojoE2TBIcon_Copy { background-position: -72px 0px}\n.dojoE2TBIcon_Link { background-position: -90px 0px}\n.dojoE2TBIcon_Cut { background-position: -108px 0px}\n.dojoE2TBIcon_Delete { background-position: -126px 0px}\n.dojoE2TBIcon_TextColor { background-position: -144px 0px}\n.dojoE2TBIcon_BackgroundColor { background-position: -162px 0px}\n.dojoE2TBIcon_Indent { background-position: -180px 0px}\n.dojoE2TBIcon_HorizontalLine { background-position: -198px 0px}\n.dojoE2TBIcon_Image { background-position: -216px 0px}\n.dojoE2TBIcon_NumberedList { background-position: -234px 0px}\n.dojoE2TBIcon_Table { background-position: -252px 0px}\n.dojoE2TBIcon_BulletedList { background-position: -270px 0px}\n.dojoE2TBIcon_Italic { background-position: -288px 0px}\n.dojoE2TBIcon_CenterJustify { background-position: -306px 0px}\n.dojoE2TBIcon_BlockJustify { background-position: -324px 0px}\n.dojoE2TBIcon_LeftJustify { background-position: -342px 0px}\n.dojoE2TBIcon_RightJustify { background-position: -360px 0px}\n.dojoE2TBIcon_left_to_right { background-position: -378px 0px}\n.dojoE2TBIcon_list_bullet_indent { background-position: -396px 0px}\n.dojoE2TBIcon_list_bullet_outdent { background-position: -414px 0px}\n.dojoE2TBIcon_list_num_indent { background-position: -432px 0px}\n.dojoE2TBIcon_list_num_outdent { background-position: -450px 0px}\n.dojoE2TBIcon_Outdent { background-position: -468px 0px}\n.dojoE2TBIcon_Paste { background-position: -486px 0px}\n.dojoE2TBIcon_Redo { background-position: -504px 0px}\ndojoE2TBIcon_RemoveFormat { background-position: -522px 0px}\n.dojoE2TBIcon_right_to_left { background-position: -540px 0px}\n.dojoE2TBIcon_Save { background-position: -558px 0px}\n.dojoE2TBIcon_Space { background-position: -576px 0px}\n.dojoE2TBIcon_StrikeThrough { background-position: -594px 0px}\n.dojoE2TBIcon_Subscript { background-position: -612px 0px}\n.dojoE2TBIcon_Superscript { background-position: -630px 0px}\n.dojoE2TBIcon_Underline { background-position: -648px 0px}\n.dojoE2TBIcon_Undo { background-position: -666px 0px}\n.dojoE2TBIcon_WikiWord { background-position: -684px 0px}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/EditorToolbar.css"), ToolbarLatchedItemStyle:"ToolbarButtonLatched", ToolbarEnabledItemStyle:"ToolbarButtonEnabled", ToolbarDisabledItemStyle:"ToolbarButtonDisabled", ToolbarHighlightedItemStyle:"ToolbarButtonHighlighted", ToolbarHighlightedSelectStyle:"ToolbarSelectHighlighted", ToolbarHighlightedSelectItemStyle:"ToolbarSelectHighlightedItem", postCreate:function () {
+		var nodes = dojo.html.getElementsByClass("dojoEditorToolbarItem", this.domNode);
+		this.items = {};
+		for (var x = 0; x < nodes.length; x++) {
+			var node = nodes[x];
+			var itemname = node.getAttribute("dojoETItemName");
+			if (itemname) {
+				var item = dojo.widget.Editor2ToolbarItemManager.getToolbarItem(itemname);
+				if (item) {
+					item.create(node, this);
+					this.items[itemname.toLowerCase()] = item;
+				} else {
+					node.style.display = "none";
+				}
+			}
+		}
+	}, update:function () {
+		for (var cmd in this.items) {
+			this.items[cmd].refreshState();
+		}
+	}, shareGroup:"", checkAvailability:function () {
+		if (!this.shareGroup) {
+			this.parent.focus();
+			return true;
+		}
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		if (this.shareGroup == curInst.toolbarGroup) {
+			return true;
+		}
+		return false;
+	}, destroy:function () {
+		for (var it in this.items) {
+			this.items[it].destroy();
+			delete this.items[it];
+		}
+		dojo.widget.Editor2Toolbar.superclass.destroy.call(this);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/validate.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -20111,6 +41394,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.validate");
 dojo.deprecated("dojo.widget.validate", "use one of the specific widgets in dojo.widget.<name>Textbox instead", "0.5");
 
@@ -20126,6 +41411,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.LinkPane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.ContentPane");
@@ -20149,6 +41436,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeV3");
 dojo.require("dojo.widget.TreeWithNode");
 dojo.require("dojo.widget.*");
@@ -20273,6 +41562,716 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Slider.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Slider"], ["require", "dojo.event.*"], ["require", "dojo.dnd.*"], ["require", "dojo.dnd.HtmlDragMove"], ["require", "dojo.widget.*"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Slider");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.dnd.*");
+	dojo.require("dojo.dnd.HtmlDragMove");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.html.layout");
+	dojo.widget.defineWidget("dojo.widget.Slider", dojo.widget.HtmlWidget, {minimumX:0, minimumY:0, maximumX:10, maximumY:10, snapValuesX:0, snapValuesY:0, _snapToGrid:true, isEnableX:true, isEnableY:true, _valueSizeX:0, _valueSizeY:0, _minX:0, _minY:0, _constraintWidth:0, _constraintHeight:0, _clipLeft:0, _clipRight:0, _clipTop:0, _clipBottom:0, _clipXdelta:0, _clipYdelta:0, initialValueX:0, initialValueY:0, flipX:false, flipY:false, clickSelect:true, activeDrag:false, templateCssString:".sliderMain {\n  border: 0px !important;\n  border-spacing: 0px !important;\n  line-height: 0px !important;\n  padding: 0px !important;\n  display: -moz-inline-table !important;\n  display: inline !important;\n  -moz-user-focus: normal !important;\n}\n\n.sliderComponent {\n  border: 0px;\n  padding: 0px;\n  margin: 0px;\n}\n\n.sliderHandle { \n  top: 0px;\n  left: 0px;\n  z-index: 1000;\n  position: absolute !important;\n}\n\n.sliderOutsetButton { \n  border-style: outset;\n  border-width: 0px 1px 1px 0px;\n  border-color: black;\n}\n\n.sliderInsetButton { \n  border-style: inset;\n  border-width: 1px 0px 0px 1px;\n  border-color: black;\n}\n\n.sliderButtonY {\n  margin: 0px;\n  padding: 0px;\n  z-index: 900;\n}\n\n.sliderButtonX {\n  margin: 0px;\n  padding: 0px;\n  z-index: 900;\n}\n\n.sliderBackground { \n  z-index: 0;\n  display: block !important;\n  position: relative !important;\n}\n\n.sliderProgressBackground { \n  z-index: 800;\n  position: absolute !important;\n  clip: rect(0px,0px,0px,0px);\n}\n\n.sliderBackgroundSizeOnly { \n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Slider.css"), templateString:"<table _=\"weird end tag formatting is to prevent whitespace from becoming &nbsp;\" \n\tclass=\"sliderMain\" \n\tdojoAttachPoint=\"focusNode\" \n\tdojoAttachEvent=\"onmousedown:_setFocus; onkey:_handleKeyEvents; onkeyup:_buttonReleased; onmouseup:_buttonReleased; onmousewheel:_mouseWheeled;\"\n\ttabindex=\"0\" cols=3 cellpadding=0 cellspacing=0 style=\"\">\n\t<tr valign=middle align=center>\n\t\t<td class=\"sliderComponent\" colspan=3 dojoAttachPoint=topBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonY\"\n\t\t\t\tdojoAttachPoint=topButtonNode \n\t\t\t\tdojoAttachEvent=\"onmousedown:_topButtonPressed; onmousemove:_discardEvent; ondblclick:_topButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.topButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleY}\"\n\t\t></td>\n\t</tr>\n\t<tr valign=middle align=center>\n\t\t<td class=\"sliderComponent\" dojoAttachPoint=leftBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonX\"\n\t\t\t\tdojoAttachPoint=leftButtonNode\n\t\t\t\tdojoAttachEvent=\"onmousedown:_leftButtonPressed; onmousemove:_discardEvent; ondblclick:_leftButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.leftButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleX}\"\n\t\t></td>\n\t\t<td dojoAttachPoint=constrainingContainerNode \n\t\t\tclass=\"sliderComponent sliderBackground\"\n\t\t\tstyle=\"${this.backgroundStyle}\"\n\t\t\t><img src=\"${this.handleSrc}\" \n\t\t\t\tclass=sliderHandle\n\t\t\t\tdojoAttachPoint=sliderHandleNode\n\t\t\t\tstyle=\"${this.handleStyle}\"\n\t\t\t><img src=\"${this.progressBackgroundSrc}\"\n\t\t\t\tclass=\"sliderBackgroundSizeOnly sliderProgressBackground\"\n\t\t\t\tdojoAttachPoint=progressBackgroundNode\n\t\t\t\tstyle=\"${this.backgroundSize}\"\n\t\t\t><img src=\"${this.backgroundSrc}\" \n\t\t\t\tclass=sliderBackgroundSizeOnly\n\t\t\t\tdojoAttachPoint=sliderBackgroundNode\n\t\t\t\tstyle=\"${this.backgroundSize}\"\n\t\t></td>\n\t\t<td class=\"sliderComponent\" dojoAttachPoint=rightBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonX\"\n\t\t\t\tdojoAttachPoint=rightButtonNode\n\t\t\t\tdojoAttachEvent=\"onmousedown:_rightButtonPressed; onmousemove:_discardEvent; ondblclick:_rightButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.rightButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleX}\"\n\t\t></td>\n\t</tr>\n\t<tr valign=middle align=center>\n\t\t<td class=\"sliderComponent\" colspan=3 dojoAttachPoint=bottomBorderNode style=\"\"\n\t\t\t><img class=\"sliderOutsetButton sliderButtonY\"\n\t\t\t\tdojoAttachPoint=bottomButtonNode \n\t\t\t\tdojoAttachEvent=\"onmousedown:_bottomButtonPressed; onmousemove:_discardEvent; ondblclick:_bottomButtonDoubleClicked;\"\n\t\t\t\tsrc=\"${this.bottomButtonSrc}\" \n\t\t\t\tstyle=\"${this.buttonStyleY}\"\n\t\t></td>\n\t</tr>\n</table>\n", _isDragInProgress:false, bottomButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_down_arrow.png"), topButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_up_arrow.png"), leftButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_left_arrow.png"), rightButtonSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider_right_arrow.png"), backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), progressBackgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), backgroundSize:"width:200px;height:200px;", backgroundStyle:"", buttonStyleX:"", buttonStyleY:"", handleStyle:"", handleSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-button.png"), showButtons:true, _eventCount:0, _typamaticTimer:null, _typamaticFunction:null, defaultTimeout:500, timeoutChangeRate:0.9, _currentTimeout:this.defaultTimeout, _handleKeyEvents:function (evt) {
+		if (!evt.key) {
+			return;
+		}
+		if (!evt.ctrlKey && !evt.altKey) {
+			switch (evt.key) {
+			  case evt.KEY_LEFT_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				this._leftButtonPressed(evt);
+				return;
+			  case evt.KEY_RIGHT_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				this._rightButtonPressed(evt);
+				return;
+			  case evt.KEY_DOWN_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				this._bottomButtonPressed(evt);
+				return;
+			  case evt.KEY_UP_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				this._topButtonPressed(evt);
+				return;
+			}
+		}
+		this._eventCount++;
+	}, _pressButton:function (buttonNode) {
+		buttonNode.className = buttonNode.className.replace("Outset", "Inset");
+	}, _releaseButton:function (buttonNode) {
+		buttonNode.className = buttonNode.className.replace("Inset", "Outset");
+	}, _buttonPressed:function (evt, buttonNode) {
+		this._setFocus();
+		if (typeof evt == "object") {
+			if (this._typamaticTimer != null) {
+				if (this._typamaticNode == buttonNode) {
+					return;
+				}
+				clearTimeout(this._typamaticTimer);
+			}
+			this._buttonReleased(null);
+			this._eventCount++;
+			this._typamaticTimer = null;
+			this._currentTimeout = this.defaultTimeout;
+			dojo.event.browser.stopEvent(evt);
+		} else {
+			if (evt != this._eventCount) {
+				this._buttonReleased(null);
+				return false;
+			}
+		}
+		if (buttonNode == this.leftButtonNode && this.isEnableX) {
+			this._snapX(dojo.html.getPixelValue(this.sliderHandleNode, "left") - this._valueSizeX);
+		} else {
+			if (buttonNode == this.rightButtonNode && this.isEnableX) {
+				this._snapX(dojo.html.getPixelValue(this.sliderHandleNode, "left") + this._valueSizeX);
+			} else {
+				if (buttonNode == this.topButtonNode && this.isEnableY) {
+					this._snapY(dojo.html.getPixelValue(this.sliderHandleNode, "top") - this._valueSizeY);
+				} else {
+					if (buttonNode == this.bottomButtonNode && this.isEnableY) {
+						this._snapY(dojo.html.getPixelValue(this.sliderHandleNode, "top") + this._valueSizeY);
+					} else {
+						return false;
+					}
+				}
+			}
+		}
+		this._pressButton(buttonNode);
+		this.notifyListeners();
+		this._typamaticNode = buttonNode;
+		this._typamaticTimer = dojo.lang.setTimeout(this, "_buttonPressed", this._currentTimeout, this._eventCount, buttonNode);
+		this._currentTimeout = Math.round(this._currentTimeout * this.timeoutChangeRate);
+		return false;
+	}, _bottomButtonPressed:function (evt) {
+		return this._buttonPressed(evt, this.bottomButtonNode);
+	}, _bottomButtonDoubleClicked:function (evt) {
+		var rc = this._bottomButtonPressed(evt);
+		dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
+		return rc;
+	}, _topButtonPressed:function (evt) {
+		return this._buttonPressed(evt, this.topButtonNode);
+	}, _topButtonDoubleClicked:function (evt) {
+		var rc = this._topButtonPressed(evt);
+		dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
+		return rc;
+	}, _leftButtonPressed:function (evt) {
+		return this._buttonPressed(evt, this.leftButtonNode);
+	}, _leftButtonDoubleClicked:function (evt) {
+		var rc = this._leftButtonPressed(evt);
+		dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
+		return rc;
+	}, _rightButtonPressed:function (evt) {
+		return this._buttonPressed(evt, this.rightButtonNode);
+	}, _rightButtonDoubleClicked:function (evt) {
+		var rc = this._rightButtonPressed(evt);
+		dojo.lang.setTimeout(this, "_buttonReleased", 50, null);
+		return rc;
+	}, _buttonReleased:function (evt) {
+		if (typeof evt == "object" && evt != null && typeof evt.keyCode != "undefined" && evt.keyCode != null) {
+			var keyCode = evt.keyCode;
+			switch (keyCode) {
+			  case evt.KEY_LEFT_ARROW:
+			  case evt.KEY_RIGHT_ARROW:
+			  case evt.KEY_DOWN_ARROW:
+			  case evt.KEY_UP_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				break;
+			}
+		}
+		this._releaseButton(this.topButtonNode);
+		this._releaseButton(this.bottomButtonNode);
+		this._releaseButton(this.leftButtonNode);
+		this._releaseButton(this.rightButtonNode);
+		this._eventCount++;
+		if (this._typamaticTimer != null) {
+			clearTimeout(this._typamaticTimer);
+		}
+		this._typamaticTimer = null;
+		this._currentTimeout = this.defaultTimeout;
+	}, _mouseWheeled:function (evt) {
+		var scrollAmount = 0;
+		if (typeof evt.wheelDelta == "number") {
+			scrollAmount = evt.wheelDelta;
+		} else {
+			if (typeof evt.detail == "number") {
+				scrollAmount = -evt.detail;
+			}
+		}
+		if (this.isEnableY) {
+			if (scrollAmount > 0) {
+				this._topButtonPressed(evt);
+				this._buttonReleased(evt);
+			} else {
+				if (scrollAmount < 0) {
+					this._bottomButtonPressed(evt);
+					this._buttonReleased(evt);
+				}
+			}
+		} else {
+			if (this.isEnableX) {
+				if (scrollAmount > 0) {
+					this._rightButtonPressed(evt);
+					this._buttonReleased(evt);
+				} else {
+					if (scrollAmount < 0) {
+						this._leftButtonPressed(evt);
+						this._buttonReleased(evt);
+					}
+				}
+			}
+		}
+	}, _discardEvent:function (evt) {
+		dojo.event.browser.stopEvent(evt);
+	}, _setFocus:function () {
+		if (this.focusNode.focus) {
+			this.focusNode.focus();
+		}
+	}, fillInTemplate:function (args, frag) {
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+		var padding = this.domNode.style.padding;
+		if (dojo.lang.isString(padding) && padding != "" && padding != "0px" && padding != "0px 0px 0px 0px") {
+			this.topBorderNode.style.padding = this.bottomBorderNode.style.padding = padding;
+			this.topBorderNode.style.paddingBottom = "0px";
+			this.bottomBorderNode.style.paddingTop = "0px";
+			this.rightBorderNode.style.paddingRight = this.domNode.style.paddingRight;
+			this.leftBorderNode.style.paddingLeft = this.domNode.style.paddingLeft;
+			this.domNode.style.padding = "0px 0px 0px 0px";
+		}
+		var borderWidth = this.domNode.style.borderWidth;
+		if (dojo.lang.isString(borderWidth) && borderWidth != "" && borderWidth != "0px" && borderWidth != "0px 0px 0px 0px") {
+			this.topBorderNode.style.borderStyle = this.rightBorderNode.style.borderStyle = this.bottomBorderNode.style.borderStyle = this.leftBorderNode.style.borderStyle = this.domNode.style.borderStyle;
+			this.topBorderNode.style.borderColor = this.rightBorderNode.style.borderColor = this.bottomBorderNode.style.borderColor = this.leftBorderNode.style.borderColor = this.domNode.style.borderColor;
+			this.topBorderNode.style.borderWidth = this.bottomBorderNode.style.borderWidth = borderWidth;
+			this.topBorderNode.style.borderBottomWidth = "0px";
+			this.bottomBorderNode.style.borderTopWidth = "0px";
+			this.rightBorderNode.style.borderRightWidth = this.domNode.style.borderRightWidth;
+			this.leftBorderNode.style.borderLeftWidth = this.domNode.style.borderLeftWidth;
+			this.domNode.style.borderWidth = "0px 0px 0px 0px";
+		}
+		this._handleMove = new dojo.widget._SliderDragMoveSource(this.sliderHandleNode);
+		this._handleMove.setParent(this);
+		if (this.clickSelect) {
+			dojo.event.connect(this.constrainingContainerNode, "onmousedown", this, "_onClick");
+		}
+		if (this.isEnableX) {
+			this.setValueX(!isNaN(this.initialValueX) ? this.initialValueX : (!isNaN(this.minimumX) ? this.minimumX : 0));
+		}
+		if (!this.isEnableX || !this.showButtons) {
+			this.rightButtonNode.style.width = "1px";
+			this.rightButtonNode.style.visibility = "hidden";
+			this.leftButtonNode.style.width = "1px";
+			this.leftButtonNode.style.visibility = "hidden";
+		}
+		if (this.isEnableY) {
+			this.setValueY(!isNaN(this.initialValueY) ? this.initialValueY : (!isNaN(this.minimumY) ? this.minimumY : 0));
+		}
+		if (!this.isEnableY || !this.showButtons) {
+			this.bottomButtonNode.style.width = "1px";
+			this.bottomButtonNode.style.visibility = "hidden";
+			this.topButtonNode.style.width = "1px";
+			this.topButtonNode.style.visibility = "hidden";
+		}
+		if (this.focusNode.addEventListener) {
+			this.focusNode.addEventListener("DOMMouseScroll", dojo.lang.hitch(this, "_mouseWheeled"), false);
+		}
+	}, _snapX:function (x) {
+		if (x < 0) {
+			x = 0;
+		} else {
+			if (x > this._constraintWidth) {
+				x = this._constraintWidth;
+			} else {
+				var selectedValue = Math.round(x / this._valueSizeX);
+				x = Math.round(selectedValue * this._valueSizeX);
+			}
+		}
+		this.sliderHandleNode.style.left = x + "px";
+		if (this.flipX) {
+			this._clipLeft = x + this._clipXdelta;
+		} else {
+			this._clipRight = x + this._clipXdelta;
+		}
+		this.progressBackgroundNode.style.clip = "rect(" + this._clipTop + "px," + this._clipRight + "px," + this._clipBottom + "px," + this._clipLeft + "px)";
+	}, _calc_valueSizeX:function () {
+		var constrainingCtrBox = dojo.html.getContentBox(this.constrainingContainerNode);
+		var sliderHandleBox = dojo.html.getContentBox(this.sliderHandleNode);
+		if (isNaN(constrainingCtrBox.width) || isNaN(sliderHandleBox.width) || constrainingCtrBox.width <= 0 || sliderHandleBox.width <= 0) {
+			return false;
+		}
+		this._constraintWidth = constrainingCtrBox.width + dojo.html.getPadding(this.constrainingContainerNode).width - sliderHandleBox.width;
+		if (this.flipX) {
+			this._clipLeft = this._clipRight = constrainingCtrBox.width;
+		} else {
+			this._clipLeft = this._clipRight = 0;
+		}
+		this._clipXdelta = sliderHandleBox.width >> 1;
+		if (!this.isEnableY) {
+			this._clipTop = 0;
+			this._clipBottom = constrainingCtrBox.height;
+		}
+		if (this._constraintWidth <= 0) {
+			return false;
+		}
+		if (this.snapValuesX == 0) {
+			this.snapValuesX = this._constraintWidth + 1;
+		}
+		this._valueSizeX = this._constraintWidth / (this.snapValuesX - 1);
+		return true;
+	}, setValueX:function (value) {
+		if (0 == this._valueSizeX) {
+			if (this._calc_valueSizeX() == false) {
+				dojo.lang.setTimeout(this, "setValueX", 100, value);
+				return;
+			}
+		}
+		if (isNaN(value)) {
+			value = 0;
+		}
+		if (value > this.maximumX) {
+			value = this.maximumX;
+		} else {
+			if (value < this.minimumX) {
+				value = this.minimumX;
+			}
+		}
+		var pixelPercent = (value - this.minimumX) / (this.maximumX - this.minimumX);
+		if (this.flipX) {
+			pixelPercent = 1 - pixelPercent;
+		}
+		this._snapX(pixelPercent * this._constraintWidth);
+		this.notifyListeners();
+	}, getValueX:function () {
+		var pixelPercent = dojo.html.getPixelValue(this.sliderHandleNode, "left") / this._constraintWidth;
+		if (this.flipX) {
+			pixelPercent = 1 - pixelPercent;
+		}
+		return Math.round(pixelPercent * (this.snapValuesX - 1)) * ((this.maximumX - this.minimumX) / (this.snapValuesX - 1)) + this.minimumX;
+	}, _snapY:function (y) {
+		if (y < 0) {
+			y = 0;
+		} else {
+			if (y > this._constraintHeight) {
+				y = this._constraintHeight;
+			} else {
+				var selectedValue = Math.round(y / this._valueSizeY);
+				y = Math.round(selectedValue * this._valueSizeY);
+			}
+		}
+		this.sliderHandleNode.style.top = y + "px";
+		if (this.flipY) {
+			this._clipTop = y + this._clipYdelta;
+		} else {
+			this._clipBottom = y + this._clipYdelta;
+		}
+		this.progressBackgroundNode.style.clip = "rect(" + this._clipTop + "px," + this._clipRight + "px," + this._clipBottom + "px," + this._clipLeft + "px)";
+	}, _calc_valueSizeY:function () {
+		var constrainingCtrBox = dojo.html.getContentBox(this.constrainingContainerNode);
+		var sliderHandleBox = dojo.html.getContentBox(this.sliderHandleNode);
+		if (isNaN(constrainingCtrBox.height) || isNaN(sliderHandleBox.height) || constrainingCtrBox.height <= 0 || sliderHandleBox.height <= 0) {
+			return false;
+		}
+		this._constraintHeight = constrainingCtrBox.height + dojo.html.getPadding(this.constrainingContainerNode).height - sliderHandleBox.height;
+		if (this.flipY) {
+			this._clipTop = this._clipBottom = constrainingCtrBox.height;
+		} else {
+			this._clipTop = this._clipBottom = 0;
+		}
+		this._clipYdelta = sliderHandleBox.height >> 1;
+		if (!this.isEnableX) {
+			this._clipLeft = 0;
+			this._clipRight = constrainingCtrBox.width;
+		}
+		if (this._constraintHeight <= 0) {
+			return false;
+		}
+		if (this.snapValuesY == 0) {
+			this.snapValuesY = this._constraintHeight + 1;
+		}
+		this._valueSizeY = this._constraintHeight / (this.snapValuesY - 1);
+		return true;
+	}, setValueY:function (value) {
+		if (0 == this._valueSizeY) {
+			if (this._calc_valueSizeY() == false) {
+				dojo.lang.setTimeout(this, "setValueY", 100, value);
+				return;
+			}
+		}
+		if (isNaN(value)) {
+			value = 0;
+		}
+		if (value > this.maximumY) {
+			value = this.maximumY;
+		} else {
+			if (value < this.minimumY) {
+				value = this.minimumY;
+			}
+		}
+		var pixelPercent = (value - this.minimumY) / (this.maximumY - this.minimumY);
+		if (this.flipY) {
+			pixelPercent = 1 - pixelPercent;
+		}
+		this._snapY(pixelPercent * this._constraintHeight);
+		this.notifyListeners();
+	}, getValueY:function () {
+		var pixelPercent = dojo.html.getPixelValue(this.sliderHandleNode, "top") / this._constraintHeight;
+		if (this.flipY) {
+			pixelPercent = 1 - pixelPercent;
+		}
+		return Math.round(pixelPercent * (this.snapValuesY - 1)) * ((this.maximumY - this.minimumY) / (this.snapValuesY - 1)) + this.minimumY;
+	}, _onClick:function (evt) {
+		if (this._isDragInProgress) {
+			return;
+		}
+		var parent = dojo.html.getAbsolutePosition(this.constrainingContainerNode, true, dojo.html.boxSizing.MARGIN_BOX);
+		var content = dojo.html.getContentBox(this._handleMove.domNode);
+		if (this.isEnableX) {
+			var x = evt.pageX - parent.x - (content.width >> 1);
+			this._snapX(x);
+		}
+		if (this.isEnableY) {
+			var y = evt.pageY - parent.y - (content.height >> 1);
+			this._snapY(y);
+		}
+		this.notifyListeners();
+	}, notifyListeners:function () {
+		this.onValueChanged(this.getValueX(), this.getValueY());
+	}, onValueChanged:function (x, y) {
+	}});
+	dojo.widget.defineWidget("dojo.widget.SliderHorizontal", dojo.widget.Slider, {isEnableX:true, isEnableY:false, initialValue:"", snapValues:"", minimum:"", maximum:"", buttonStyle:"", backgroundSize:"height:10px;width:200px;", backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-bg.gif"), flip:false, postMixInProperties:function () {
+		dojo.widget.SliderHorizontal.superclass.postMixInProperties.apply(this, arguments);
+		if (!isNaN(parseFloat(this.initialValue))) {
+			this.initialValueX = parseFloat(this.initialValue);
+		}
+		if (!isNaN(parseFloat(this.minimum))) {
+			this.minimumX = parseFloat(this.minimum);
+		}
+		if (!isNaN(parseFloat(this.maximum))) {
+			this.maximumX = parseFloat(this.maximum);
+		}
+		if (!isNaN(parseInt(this.snapValues))) {
+			this.snapValuesX = parseInt(this.snapValues);
+		}
+		if (dojo.lang.isString(this.buttonStyle) && this.buttonStyle != "") {
+			this.buttonStyleX = this.buttonStyle;
+		}
+		if (dojo.lang.isBoolean(this.flip)) {
+			this.flipX = this.flip;
+		}
+	}, notifyListeners:function () {
+		this.onValueChanged(this.getValueX());
+	}, getValue:function () {
+		return this.getValueX();
+	}, setValue:function (value) {
+		this.setValueX(value);
+	}, onValueChanged:function (value) {
+	}});
+	dojo.widget.defineWidget("dojo.widget.SliderVertical", dojo.widget.Slider, {isEnableX:false, isEnableY:true, initialValue:"", snapValues:"", minimum:"", maximum:"", buttonStyle:"", backgroundSize:"width:10px;height:200px;", backgroundSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/slider-bg-vert.gif"), flip:false, postMixInProperties:function () {
+		dojo.widget.SliderVertical.superclass.postMixInProperties.apply(this, arguments);
+		if (!isNaN(parseFloat(this.initialValue))) {
+			this.initialValueY = parseFloat(this.initialValue);
+		}
+		if (!isNaN(parseFloat(this.minimum))) {
+			this.minimumY = parseFloat(this.minimum);
+		}
+		if (!isNaN(parseFloat(this.maximum))) {
+			this.maximumY = parseFloat(this.maximum);
+		}
+		if (!isNaN(parseInt(this.snapValues))) {
+			this.snapValuesY = parseInt(this.snapValues);
+		}
+		if (dojo.lang.isString(this.buttonStyle) && this.buttonStyle != "") {
+			this.buttonStyleY = this.buttonStyle;
+		}
+		if (dojo.lang.isBoolean(this.flip)) {
+			this.flipY = this.flip;
+		}
+	}, notifyListeners:function () {
+		this.onValueChanged(this.getValueY());
+	}, getValue:function () {
+		return this.getValueY();
+	}, setValue:function (value) {
+		this.setValueY(value);
+	}, onValueChanged:function (value) {
+	}});
+	dojo.declare("dojo.widget._SliderDragMoveSource", dojo.dnd.HtmlDragMoveSource, {slider:null, onDragStart:function (evt) {
+		this.slider._isDragInProgress = true;
+		var dragObj = this.createDragMoveObject();
+		this.slider.notifyListeners();
+		return dragObj;
+	}, onDragEnd:function (evt) {
+		this.slider._isDragInProgress = false;
+		this.slider.notifyListeners();
+	}, createDragMoveObject:function () {
+		var dragObj = new dojo.widget._SliderDragMoveObject(this.dragObject, this.type);
+		dragObj.slider = this.slider;
+		if (this.dragClass) {
+			dragObj.dragClass = this.dragClass;
+		}
+		return dragObj;
+	}, setParent:function (slider) {
+		this.slider = slider;
+	}});
+	dojo.declare("dojo.widget._SliderDragMoveObject", dojo.dnd.HtmlDragMoveObject, {slider:null, onDragMove:function (evt) {
+		this.updateDragOffset();
+		if (this.slider.isEnableX) {
+			var x = this.dragOffset.x + evt.pageX;
+			this.slider._snapX(x);
+		}
+		if (this.slider.isEnableY) {
+			var y = this.dragOffset.y + evt.pageY;
+			this.slider._snapY(y);
+		}
+		if (this.slider.activeDrag) {
+			this.slider.notifyListeners();
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Parse.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Parse"], ["require", "dojo.widget.Manager"], ["require", "dojo.dom"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Parse");
+	dojo.require("dojo.widget.Manager");
+	dojo.require("dojo.dom");
+	dojo.widget.Parse = function (fragment) {
+		this.propertySetsList = [];
+		this.fragment = fragment;
+		this.createComponents = function (frag, parentComp) {
+			var comps = [];
+			var built = false;
+			try {
+				if (frag && frag.tagName && (frag != frag.nodeRef)) {
+					var djTags = dojo.widget.tags;
+					var tna = String(frag.tagName).split(";");
+					for (var x = 0; x < tna.length; x++) {
+						var ltn = tna[x].replace(/^\s+|\s+$/g, "").toLowerCase();
+						frag.tagName = ltn;
+						var ret;
+						if (djTags[ltn]) {
+							built = true;
+							ret = djTags[ltn](frag, this, parentComp, frag.index);
+							comps.push(ret);
+						} else {
+							if (ltn.indexOf(":") == -1) {
+								ltn = "dojo:" + ltn;
+							}
+							ret = dojo.widget.buildWidgetFromParseTree(ltn, frag, this, parentComp, frag.index);
+							if (ret) {
+								built = true;
+								comps.push(ret);
+							}
+						}
+					}
+				}
+			}
+			catch (e) {
+				dojo.debug("dojo.widget.Parse: error:", e);
+			}
+			if (!built) {
+				comps = comps.concat(this.createSubComponents(frag, parentComp));
+			}
+			return comps;
+		};
+		this.createSubComponents = function (fragment, parentComp) {
+			var frag, comps = [];
+			for (var item in fragment) {
+				frag = fragment[item];
+				if (frag && typeof frag == "object" && (frag != fragment.nodeRef) && (frag != fragment.tagName) && (!dojo.dom.isNode(frag))) {
+					comps = comps.concat(this.createComponents(frag, parentComp));
+				}
+			}
+			return comps;
+		};
+		this.parsePropertySets = function (fragment) {
+			return [];
+		};
+		this.parseProperties = function (fragment) {
+			var properties = {};
+			for (var item in fragment) {
+				if ((fragment[item] == fragment.tagName) || (fragment[item] == fragment.nodeRef)) {
+				} else {
+					var frag = fragment[item];
+					if (frag.tagName && dojo.widget.tags[frag.tagName.toLowerCase()]) {
+					} else {
+						if (frag[0] && frag[0].value != "" && frag[0].value != null) {
+							try {
+								if (item.toLowerCase() == "dataprovider") {
+									var _this = this;
+									this.getDataProvider(_this, frag[0].value);
+									properties.dataProvider = this.dataProvider;
+								}
+								properties[item] = frag[0].value;
+								var nestedProperties = this.parseProperties(frag);
+								for (var property in nestedProperties) {
+									properties[property] = nestedProperties[property];
+								}
+							}
+							catch (e) {
+								dojo.debug(e);
+							}
+						}
+					}
+					switch (item.toLowerCase()) {
+					  case "checked":
+					  case "disabled":
+						if (typeof properties[item] != "boolean") {
+							properties[item] = true;
+						}
+						break;
+					}
+				}
+			}
+			return properties;
+		};
+		this.getDataProvider = function (objRef, dataUrl) {
+			dojo.io.bind({url:dataUrl, load:function (type, evaldObj) {
+				if (type == "load") {
+					objRef.dataProvider = evaldObj;
+				}
+			}, mimetype:"text/javascript", sync:true});
+		};
+		this.getPropertySetById = function (propertySetId) {
+			for (var x = 0; x < this.propertySetsList.length; x++) {
+				if (propertySetId == this.propertySetsList[x]["id"][0].value) {
+					return this.propertySetsList[x];
+				}
+			}
+			return "";
+		};
+		this.getPropertySetsByType = function (componentType) {
+			var propertySets = [];
+			for (var x = 0; x < this.propertySetsList.length; x++) {
+				var cpl = this.propertySetsList[x];
+				var cpcc = cpl.componentClass || cpl.componentType || null;
+				var propertySetId = this.propertySetsList[x]["id"][0].value;
+				if (cpcc && (propertySetId == cpcc[0].value)) {
+					propertySets.push(cpl);
+				}
+			}
+			return propertySets;
+		};
+		this.getPropertySets = function (fragment) {
+			var ppl = "dojo:propertyproviderlist";
+			var propertySets = [];
+			var tagname = fragment.tagName;
+			if (fragment[ppl]) {
+				var propertyProviderIds = fragment[ppl].value.split(" ");
+				for (var propertySetId in propertyProviderIds) {
+					if ((propertySetId.indexOf("..") == -1) && (propertySetId.indexOf("://") == -1)) {
+						var propertySet = this.getPropertySetById(propertySetId);
+						if (propertySet != "") {
+							propertySets.push(propertySet);
+						}
+					} else {
+					}
+				}
+			}
+			return this.getPropertySetsByType(tagname).concat(propertySets);
+		};
+		this.createComponentFromScript = function (nodeRef, componentName, properties, ns) {
+			properties.fastMixIn = true;
+			var ltn = (ns || "dojo") + ":" + componentName.toLowerCase();
+			if (dojo.widget.tags[ltn]) {
+				return [dojo.widget.tags[ltn](properties, this, null, null, properties)];
+			}
+			return [dojo.widget.buildWidgetFromParseTree(ltn, properties, this, null, null, properties)];
+		};
+	};
+	dojo.widget._parser_collection = {"dojo":new dojo.widget.Parse()};
+	dojo.widget.getParser = function (name) {
+		if (!name) {
+			name = "dojo";
+		}
+		if (!this._parser_collection[name]) {
+			this._parser_collection[name] = new dojo.widget.Parse();
+		}
+		return this._parser_collection[name];
+	};
+	dojo.widget.createWidget = function (name, props, refNode, position) {
+		var isNode = false;
+		var isNameStr = (typeof name == "string");
+		if (isNameStr) {
+			var pos = name.indexOf(":");
+			var ns = (pos > -1) ? name.substring(0, pos) : "dojo";
+			if (pos > -1) {
+				name = name.substring(pos + 1);
+			}
+			var lowerCaseName = name.toLowerCase();
+			var namespacedName = ns + ":" + lowerCaseName;
+			isNode = (dojo.byId(name) && !dojo.widget.tags[namespacedName]);
+		}
+		if ((arguments.length == 1) && (isNode || !isNameStr)) {
+			var xp = new dojo.xml.Parse();
+			var tn = isNode ? dojo.byId(name) : name;
+			return dojo.widget.getParser().createComponents(xp.parseElement(tn, null, true))[0];
+		}
+		function fromScript(placeKeeperNode, name, props, ns) {
+			props[namespacedName] = {dojotype:[{value:lowerCaseName}], nodeRef:placeKeeperNode, fastMixIn:true};
+			props.ns = ns;
+			return dojo.widget.getParser().createComponentFromScript(placeKeeperNode, name, props, ns);
+		}
+		props = props || {};
+		var notRef = false;
+		var tn = null;
+		var h = dojo.render.html.capable;
+		if (h) {
+			tn = document.createElement("span");
+		}
+		if (!refNode) {
+			notRef = true;
+			refNode = tn;
+			if (h) {
+				dojo.body().appendChild(refNode);
+			}
+		} else {
+			if (position) {
+				dojo.dom.insertAtPosition(tn, refNode, position);
+			} else {
+				tn = refNode;
+			}
+		}
+		var widgetArray = fromScript(tn, name.toLowerCase(), props, ns);
+		if ((!widgetArray) || (!widgetArray[0]) || (typeof widgetArray[0].widgetType == "undefined")) {
+			throw new Error("createWidget: Creation of \"" + name + "\" widget failed.");
+		}
+		try {
+			if (notRef && widgetArray[0].domNode.parentNode) {
+				widgetArray[0].domNode.parentNode.removeChild(widgetArray[0].domNode);
+			}
+		}
+		catch (e) {
+			dojo.debug(e);
+		}
+		return widgetArray[0];
+	};
+}});
+
+
 __CPAN_FILE__ src/widget/ResizableTextarea.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -20284,6 +42283,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ResizableTextarea");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.LayoutContainer");
@@ -20308,6 +42309,503 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeBasicControllerV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeBasicControllerV3"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"], ["require", "dojo.widget.TreeCommon"], ["require", "dojo.widget.TreeNodeV3"], ["require", "dojo.widget.TreeV3"], ["require", "dojo.widget.TreeTimeoutIterator"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeBasicControllerV3");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.TreeCommon");
+	dojo.require("dojo.widget.TreeNodeV3");
+	dojo.require("dojo.widget.TreeV3");
+	dojo.widget.defineWidget("dojo.widget.TreeBasicControllerV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
+		this.listenedTrees = {};
+	}, {listenTreeEvents:["afterSetFolder", "afterTreeCreate", "beforeTreeDestroy"], listenNodeFilter:function (elem) {
+		return elem instanceof dojo.widget.Widget;
+	}, editor:null, initialize:function (args) {
+		if (args.editor) {
+			this.editor = dojo.widget.byId(args.editor);
+			this.editor.controller = this;
+		}
+	}, getInfo:function (elem) {
+		return elem.getInfo();
+	}, onBeforeTreeDestroy:function (message) {
+		this.unlistenTree(message.source);
+	}, onAfterSetFolder:function (message) {
+		if (message.source.expandLevel > 0) {
+			this.expandToLevel(message.source, message.source.expandLevel);
+		}
+		if (message.source.loadLevel > 0) {
+			this.loadToLevel(message.source, message.source.loadLevel);
+		}
+	}, _focusNextVisible:function (nodeWidget) {
+		if (nodeWidget.isFolder && nodeWidget.isExpanded && nodeWidget.children.length > 0) {
+			returnWidget = nodeWidget.children[0];
+		} else {
+			while (nodeWidget.isTreeNode && nodeWidget.isLastChild()) {
+				nodeWidget = nodeWidget.parent;
+			}
+			if (nodeWidget.isTreeNode) {
+				var returnWidget = nodeWidget.parent.children[nodeWidget.getParentIndex() + 1];
+			}
+		}
+		if (returnWidget && returnWidget.isTreeNode) {
+			this._focusLabel(returnWidget);
+			return returnWidget;
+		}
+	}, _focusPreviousVisible:function (nodeWidget) {
+		var returnWidget = nodeWidget;
+		if (!nodeWidget.isFirstChild()) {
+			var previousSibling = nodeWidget.parent.children[nodeWidget.getParentIndex() - 1];
+			nodeWidget = previousSibling;
+			while (nodeWidget.isFolder && nodeWidget.isExpanded && nodeWidget.children.length > 0) {
+				returnWidget = nodeWidget;
+				nodeWidget = nodeWidget.children[nodeWidget.children.length - 1];
+			}
+		} else {
+			nodeWidget = nodeWidget.parent;
+		}
+		if (nodeWidget && nodeWidget.isTreeNode) {
+			returnWidget = nodeWidget;
+		}
+		if (returnWidget && returnWidget.isTreeNode) {
+			this._focusLabel(returnWidget);
+			return returnWidget;
+		}
+	}, _focusZoomIn:function (nodeWidget) {
+		var returnWidget = nodeWidget;
+		if (nodeWidget.isFolder && !nodeWidget.isExpanded) {
+			this.expand(nodeWidget);
+		} else {
+			if (nodeWidget.children.length > 0) {
+				nodeWidget = nodeWidget.children[0];
+			}
+		}
+		if (nodeWidget && nodeWidget.isTreeNode) {
+			returnWidget = nodeWidget;
+		}
+		if (returnWidget && returnWidget.isTreeNode) {
+			this._focusLabel(returnWidget);
+			return returnWidget;
+		}
+	}, _focusZoomOut:function (node) {
+		var returnWidget = node;
+		if (node.isFolder && node.isExpanded) {
+			this.collapse(node);
+		} else {
+			node = node.parent;
+		}
+		if (node && node.isTreeNode) {
+			returnWidget = node;
+		}
+		if (returnWidget && returnWidget.isTreeNode) {
+			this._focusLabel(returnWidget);
+			return returnWidget;
+		}
+	}, onFocusNode:function (e) {
+		var node = this.domElement2TreeNode(e.target);
+		if (node) {
+			node.viewFocus();
+			dojo.event.browser.stopEvent(e);
+		}
+	}, onBlurNode:function (e) {
+		var node = this.domElement2TreeNode(e.target);
+		if (!node) {
+			return;
+		}
+		var labelNode = node.labelNode;
+		labelNode.setAttribute("tabIndex", "-1");
+		node.viewUnfocus();
+		dojo.event.browser.stopEvent(e);
+		node.tree.domNode.setAttribute("tabIndex", "0");
+	}, _focusLabel:function (node) {
+		var lastFocused = node.tree.lastFocused;
+		var labelNode;
+		if (lastFocused && lastFocused.labelNode) {
+			labelNode = lastFocused.labelNode;
+			dojo.event.disconnect(labelNode, "onblur", this, "onBlurNode");
+			labelNode.setAttribute("tabIndex", "-1");
+			dojo.html.removeClass(labelNode, "TreeLabelFocused");
+		}
+		labelNode = node.labelNode;
+		labelNode.setAttribute("tabIndex", "0");
+		node.tree.lastFocused = node;
+		dojo.html.addClass(labelNode, "TreeLabelFocused");
+		dojo.event.connectOnce(labelNode, "onblur", this, "onBlurNode");
+		dojo.event.connectOnce(labelNode, "onfocus", this, "onFocusNode");
+		labelNode.focus();
+	}, onKey:function (e) {
+		if (!e.key || e.ctrkKey || e.altKey) {
+			return;
+		}
+		var nodeWidget = this.domElement2TreeNode(e.target);
+		if (!nodeWidget) {
+			return;
+		}
+		var treeWidget = nodeWidget.tree;
+		if (treeWidget.lastFocused && treeWidget.lastFocused.labelNode) {
+			nodeWidget = treeWidget.lastFocused;
+		}
+		switch (e.key) {
+		  case e.KEY_TAB:
+			if (e.shiftKey) {
+				treeWidget.domNode.setAttribute("tabIndex", "-1");
+			}
+			break;
+		  case e.KEY_RIGHT_ARROW:
+			this._focusZoomIn(nodeWidget);
+			dojo.event.browser.stopEvent(e);
+			break;
+		  case e.KEY_LEFT_ARROW:
+			this._focusZoomOut(nodeWidget);
+			dojo.event.browser.stopEvent(e);
+			break;
+		  case e.KEY_UP_ARROW:
+			this._focusPreviousVisible(nodeWidget);
+			dojo.event.browser.stopEvent(e);
+			break;
+		  case e.KEY_DOWN_ARROW:
+			this._focusNextVisible(nodeWidget);
+			dojo.event.browser.stopEvent(e);
+			break;
+		}
+	}, onFocusTree:function (e) {
+		if (!e.currentTarget) {
+			return;
+		}
+		try {
+			var treeWidget = this.getWidgetByNode(e.currentTarget);
+			if (!treeWidget || !treeWidget.isTree) {
+				return;
+			}
+			var nodeWidget = this.getWidgetByNode(treeWidget.domNode.firstChild);
+			if (nodeWidget && nodeWidget.isTreeNode) {
+				if (treeWidget.lastFocused && treeWidget.lastFocused.isTreeNode) {
+					nodeWidget = treeWidget.lastFocused;
+				}
+				this._focusLabel(nodeWidget);
+			}
+		}
+		catch (e) {
+		}
+	}, onAfterTreeCreate:function (message) {
+		var tree = message.source;
+		dojo.event.browser.addListener(tree.domNode, "onKey", dojo.lang.hitch(this, this.onKey));
+		dojo.event.browser.addListener(tree.domNode, "onmousedown", dojo.lang.hitch(this, this.onTreeMouseDown));
+		dojo.event.browser.addListener(tree.domNode, "onclick", dojo.lang.hitch(this, this.onTreeClick));
+		dojo.event.browser.addListener(tree.domNode, "onfocus", dojo.lang.hitch(this, this.onFocusTree));
+		tree.domNode.setAttribute("tabIndex", "0");
+		if (tree.expandLevel) {
+			this.expandToLevel(tree, tree.expandLevel);
+		}
+		if (tree.loadLevel) {
+			this.loadToLevel(tree, tree.loadLevel);
+		}
+	}, onTreeMouseDown:function (e) {
+	}, onTreeClick:function (e) {
+		var domElement = e.target;
+		var node = this.domElement2TreeNode(domElement);
+		if (!node || !node.isTreeNode) {
+			return;
+		}
+		var checkExpandClick = function (el) {
+			return el === node.expandNode;
+		};
+		if (this.checkPathCondition(domElement, checkExpandClick)) {
+			this.processExpandClick(node);
+		}
+		this._focusLabel(node);
+	}, processExpandClick:function (node) {
+		if (node.isExpanded) {
+			this.collapse(node);
+		} else {
+			this.expand(node);
+		}
+	}, batchExpandTimeout:20, expandAll:function (nodeOrTree) {
+		return this.expandToLevel(nodeOrTree, Number.POSITIVE_INFINITY);
+	}, collapseAll:function (nodeOrTree) {
+		var _this = this;
+		var filter = function (elem) {
+			return (elem instanceof dojo.widget.Widget) && elem.isFolder && elem.isExpanded;
+		};
+		if (nodeOrTree.isTreeNode) {
+			this.processDescendants(nodeOrTree, filter, this.collapse);
+		} else {
+			if (nodeOrTree.isTree) {
+				dojo.lang.forEach(nodeOrTree.children, function (c) {
+					_this.processDescendants(c, filter, _this.collapse);
+				});
+			}
+		}
+	}, expandToNode:function (node, withSelected) {
+		n = withSelected ? node : node.parent;
+		s = [];
+		while (!n.isExpanded) {
+			s.push(n);
+			n = n.parent;
+		}
+		dojo.lang.forEach(s, function (n) {
+			n.expand();
+		});
+	}, expandToLevel:function (nodeOrTree, level) {
+		dojo.require("dojo.widget.TreeTimeoutIterator");
+		var _this = this;
+		var filterFunc = function (elem) {
+			var res = elem.isFolder || elem.children && elem.children.length;
+			return res;
+		};
+		var callFunc = function (node, iterator) {
+			_this.expand(node, true);
+			iterator.forward();
+		};
+		var iterator = new dojo.widget.TreeTimeoutIterator(nodeOrTree, callFunc, this);
+		iterator.setFilter(filterFunc);
+		iterator.timeout = this.batchExpandTimeout;
+		iterator.setMaxLevel(nodeOrTree.isTreeNode ? level - 1 : level);
+		return iterator.start(nodeOrTree.isTreeNode);
+	}, getWidgetByNode:function (node) {
+		var widgetId;
+		var newNode = node;
+		while (!(widgetId = newNode.widgetId)) {
+			newNode = newNode.parentNode;
+			if (newNode == null) {
+				break;
+			}
+		}
+		if (widgetId) {
+			return dojo.widget.byId(widgetId);
+		} else {
+			if (node == null) {
+				return null;
+			} else {
+				return dojo.widget.manager.byNode(node);
+			}
+		}
+	}, expand:function (node) {
+		if (node.isFolder) {
+			node.expand();
+		}
+	}, collapse:function (node) {
+		if (node.isFolder) {
+			node.collapse();
+		}
+	}, canEditLabel:function (node) {
+		if (node.actionIsDisabledNow(node.actions.EDIT)) {
+			return false;
+		}
+		return true;
+	}, editLabelStart:function (node) {
+		if (!this.canEditLabel(node)) {
+			return false;
+		}
+		if (!this.editor.isClosed()) {
+			this.editLabelFinish(this.editor.saveOnBlur);
+		}
+		this.doEditLabelStart(node);
+	}, editLabelFinish:function (save) {
+		this.doEditLabelFinish(save);
+	}, doEditLabelStart:function (node) {
+		if (!this.editor) {
+			dojo.raise(this.widgetType + ": no editor specified");
+		}
+		this.editor.open(node);
+	}, doEditLabelFinish:function (save, server_data) {
+		if (!this.editor) {
+			dojo.raise(this.widgetType + ": no editor specified");
+		}
+		var node = this.editor.node;
+		var editorTitle = this.editor.getContents();
+		this.editor.close(save);
+		if (save) {
+			var data = {title:editorTitle};
+			if (server_data) {
+				dojo.lang.mixin(data, server_data);
+			}
+			if (node.isPhantom) {
+				var parent = node.parent;
+				var index = node.getParentIndex();
+				node.destroy();
+				dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(this, parent, index, data);
+			} else {
+				var title = server_data && server_data.title ? server_data.title : editorTitle;
+				node.setTitle(title);
+			}
+		} else {
+			if (node.isPhantom) {
+				node.destroy();
+			}
+		}
+	}, makeDefaultNode:function (parent, index) {
+		var data = {title:parent.tree.defaultChildTitle};
+		return dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(this, parent, index, data);
+	}, runStages:function (check, prepare, make, finalize, expose, args) {
+		if (check && !check.apply(this, args)) {
+			return false;
+		}
+		if (prepare && !prepare.apply(this, args)) {
+			return false;
+		}
+		var result = make.apply(this, args);
+		if (finalize) {
+			finalize.apply(this, args);
+		}
+		if (!result) {
+			return result;
+		}
+		if (expose) {
+			expose.apply(this, args);
+		}
+		return result;
+	}});
+	dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {createAndEdit:function (parent, index) {
+		var data = {title:parent.tree.defaultChildTitle};
+		if (!this.canCreateChild(parent, index, data)) {
+			return false;
+		}
+		var child = this.doCreateChild(parent, index, data);
+		if (!child) {
+			return false;
+		}
+		this.exposeCreateChild(parent, index, data);
+		child.isPhantom = true;
+		if (!this.editor.isClosed()) {
+			this.editLabelFinish(this.editor.saveOnBlur);
+		}
+		this.doEditLabelStart(child);
+	}});
+	dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canClone:function (child, newParent, index, deep) {
+		return true;
+	}, clone:function (child, newParent, index, deep) {
+		return this.runStages(this.canClone, this.prepareClone, this.doClone, this.finalizeClone, this.exposeClone, arguments);
+	}, exposeClone:function (child, newParent) {
+		if (newParent.isTreeNode) {
+			this.expand(newParent);
+		}
+	}, doClone:function (child, newParent, index, deep) {
+		var cloned = child.clone(deep);
+		newParent.addChild(cloned, index);
+		return cloned;
+	}});
+	dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canDetach:function (child) {
+		if (child.actionIsDisabledNow(child.actions.DETACH)) {
+			return false;
+		}
+		return true;
+	}, detach:function (node) {
+		return this.runStages(this.canDetach, this.prepareDetach, this.doDetach, this.finalizeDetach, this.exposeDetach, arguments);
+	}, doDetach:function (node, callObj, callFunc) {
+		node.detach();
+	}});
+	dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canDestroyChild:function (child) {
+		if (child.parent && !this.canDetach(child)) {
+			return false;
+		}
+		return true;
+	}, destroyChild:function (node) {
+		return this.runStages(this.canDestroyChild, this.prepareDestroyChild, this.doDestroyChild, this.finalizeDestroyChild, this.exposeDestroyChild, arguments);
+	}, doDestroyChild:function (node) {
+		node.destroy();
+	}});
+	dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canMoveNotANode:function (child, parent) {
+		if (child.treeCanMove) {
+			return child.treeCanMove(parent);
+		}
+		return true;
+	}, canMove:function (child, newParent) {
+		if (!child.isTreeNode) {
+			return this.canMoveNotANode(child, newParent);
+		}
+		if (child.actionIsDisabledNow(child.actions.MOVE)) {
+			return false;
+		}
+		if (child.parent !== newParent && newParent.actionIsDisabledNow(newParent.actions.ADDCHILD)) {
+			return false;
+		}
+		var node = newParent;
+		while (node.isTreeNode) {
+			if (node === child) {
+				return false;
+			}
+			node = node.parent;
+		}
+		return true;
+	}, move:function (child, newParent, index) {
+		return this.runStages(this.canMove, this.prepareMove, this.doMove, this.finalizeMove, this.exposeMove, arguments);
+	}, doMove:function (child, newParent, index) {
+		child.tree.move(child, newParent, index);
+		return true;
+	}, exposeMove:function (child, newParent) {
+		if (newParent.isTreeNode) {
+			this.expand(newParent);
+		}
+	}});
+	dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {canCreateChild:function (parent, index, data) {
+		if (parent.actionIsDisabledNow(parent.actions.ADDCHILD)) {
+			return false;
+		}
+		return true;
+	}, createChild:function (parent, index, data) {
+		if (!data) {
+			data = {title:parent.tree.defaultChildTitle};
+		}
+		return this.runStages(this.canCreateChild, this.prepareCreateChild, this.doCreateChild, this.finalizeCreateChild, this.exposeCreateChild, [parent, index, data]);
+	}, prepareCreateChild:function () {
+		return true;
+	}, finalizeCreateChild:function () {
+	}, doCreateChild:function (parent, index, data) {
+		var newChild = parent.tree.createNode(data);
+		parent.addChild(newChild, index);
+		return newChild;
+	}, exposeCreateChild:function (parent) {
+		return this.expand(parent);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/RemoteTabController.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.RemoteTabController"], ["require", "dojo.widget.*"], ["require", "dojo.widget.TabContainer"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.RemoteTabController");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.TabContainer");
+	dojo.require("dojo.event.*");
+	dojo.deprecated("dojo.widget.RemoteTabController is slated for removal in 0.5; use PageController or TabController instead.", "0.5");
+	dojo.widget.defineWidget("dojo.widget.RemoteTabController", dojo.widget.TabController, {templateCssString:".dojoRemoteTabController {\n\tposition: relative;\n}\n\n.dojoRemoteTab {\n\tposition : relative;\n\tfloat : left;\n\tpadding-left : 9px;\n\tborder-bottom : 1px solid #6290d2;\n\tbackground : url(images/tab_left.gif) no-repeat left top;\n\tcursor: pointer;\n\twhite-space: nowrap;\n\tz-index: 3;\n}\n\n.dojoRemoteTab div {\n\tdisplay : block;\n\tpadding : 4px 15px 4px 6px;\n\tbackground : url(images/tab_top_right.gif) no-repeat right top;\n\tcolor : #333;\n\tfont-size : 90%;\n}\n\n.dojoRemoteTabPaneClose {\n\tposition : absolute;\n\tbottom : 0px;\n\tright : 6px;\n\theight : 12px;\n\twidth : 12px;\n\tbackground : url(images/tab_close.gif) no-repeat right top;\n}\n\n.dojoRemoteTabPaneCloseHover {\n\tbackground-image : url(images/tab_close_h.gif);\n}\n\n.dojoRemoteTabClose {\n\tdisplay : inline-block;\n\theight : 12px;\n\twidth : 12px;\n\tpadding : 0 12px 0 0;\n\tmargin : 0 -10px 0 10px;\n\tbackground : url(images/tab_close.gif) no-repeat right top;\n\tcursor : default;\n}\n\n.dojoRemoteTabCloseHover {\n\tbackground-image : url(images/tab_close_h.gif);\n}\n\n.dojoRemoteTab.current {\n\tpadding-bottom : 1px;\n\tborder-bottom : 0;\n\tbackground-position : 0 -150px;\n}\n\n.dojoRemoteTab.current div {\n\tpadding-bottom : 5px;\n\tmargin-bottom : -1px;\n\tbackground-position : 100% -150px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/RemoteTabControl.css"), templateString:"<div dojoAttachPoint=\"domNode\" wairole=\"tablist\"></div>", "class":"dojoRemoteTabController", tabContainer:"", postMixInProperties:function () {
+		this.containerId = this.tabContainer;
+		dojo.widget.RemoteTabController.superclass.postMixInProperties.apply(this, arguments);
+	}, fillInTemplate:function () {
+		dojo.html.addClass(this.domNode, this["class"]);
+		if (this.tabContainer) {
+			dojo.addOnLoad(dojo.lang.hitch(this, "setupTabs"));
+		}
+		dojo.widget.RemoteTabController.superclass.fillInTemplate.apply(this, arguments);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/DomWidget.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -20319,6 +42817,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DomWidget");
 dojo.require("dojo.event.*");
 dojo.require("dojo.widget.Widget");
@@ -20826,6 +43326,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.FisheyeList");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -21261,6 +43763,221 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Show.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Show"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.uri.Uri"], ["require", "dojo.event.*"], ["require", "dojo.lfx.*"], ["require", "dojo.math.curves"], ["require", "dojo.lang.common"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Show");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.uri.Uri");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.math.curves");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.func");
+	dojo.widget.defineWidget("dojo.widget.Show", dojo.widget.HtmlWidget, function () {
+		this._slides = [];
+	}, {isContainer:true, _slide:-1, body:null, nav:null, hider:null, select:null, option:null, inNav:false, debugPane:null, noClick:false, templateString:"<div class=\"dojoShow\">\n\t<div dojoAttachPoint=\"contentNode\"></div>\n\t<div class=\"dojoShowNav\" dojoAttachPoint=\"nav\">\n\t\t<div class=\"dojoShowHider\" dojoAttachPoint=\"hider\"></div>\n\t\t<span unselectable=\"on\" style=\"cursor: default;\" dojoAttachEvent=\"onClick:previousSlide\">&lt;</span>\n\t\t<select dojoAttachEvent=\"onClick:gotoSlideByEvent\" dojoAttachPoint=\"select\">\n\t\t\t<option dojoAttachPoint=\"option\">Title</option>\n\t\t</select>\n\t\t<span unselectable=\"on\" style=\"cursor: default;\" dojoAttachEvent=\"onClick:nextSlide\">&gt;</span>\n\t</div>\n</div>\n", templateCssString:"@media screen {\n\thtml, body {\n\t\tmargin: 0px;\n\t\tpadding: 0px;\n\t\twidth: 100%;\n\t}\n\th1 {\n\t\tfont-size: 50px;\n\t}\n\tp, li {\n\t\tfont-size: 30px;\n\t}\n\t.dojoShowNav {\n\t\tbackground: #369;\n\t\toverflow: hidden;\n\t\tposition: absolute;\n\t\theight: 5px;\n\t\tbottom: 0px;\n\t\tleft: 0px;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t}\n\t.dojoShowNav input {\n\t\tmargin: 0px;\n\t}\n\t.dojoShowHider {\n\t\theight: 5px;\n\t\toverflow: hidden;\n\t\twidth: 100%;\n\t}\n\t.dojoShowPrint {\n\t\tposition: absolute;\n\t\tleft: 5px;\n\t\ttop: 0px;\n\t}\n\t.dojoShow {\n\t\tdisplay: none;\n\t}\n}\n at media print {\n\t.dojoShow {\n\t\tdisplay: none !important;\n\t}\n\t.dojoShowPrint {\n\t\tdisplay: block !important;\n\t}\n\t.dojoShowPrintSlide {\n\t\tborder: 1px solid #aaa;\n\t\tpadding: 10px;\n\t\tmargin-bottom: 15px;\n\t}\n\t.dojoShowPrintSlide, ul {\n\tpage-break-inside: avoid;\n\t}\n\th1 {\n\t\tmargin-top: 0;\n\t\tpage-break-after: avoid;\n\t}\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Show.css"), fillInTemplate:function (args, frag) {
+		if (args.debugPane) {
+			var dp = this.debugPane = dojo.widget.byId(args.debugPane);
+			dp.hide();
+			dojo.event.connect(dp, "closeWindow", dojo.lang.hitch(this, function () {
+				this.debugPane = false;
+			}));
+		}
+		var source = this.getFragNodeRef(frag);
+		this.sourceNode = dojo.body().appendChild(source.cloneNode(true));
+		for (var i = 0, child; child = this.sourceNode.childNodes[i]; i++) {
+			if (child.tagName && child.getAttribute("dojotype").toLowerCase() == "showslide") {
+				child.className = "dojoShowPrintSlide";
+				child.innerHTML = "<h1>" + child.title + "</h1>" + child.innerHTML;
+			}
+		}
+		this.sourceNode.className = "dojoShowPrint";
+		this.sourceNode.style.display = "none";
+		dojo.event.connect(document, "onclick", this, "gotoSlideByEvent");
+		if (dojo.render.html.ie) {
+			dojo.event.connect(document, "onkeydown", this, "gotoSlideByEvent");
+		} else {
+			dojo.event.connect(document, "onkeypress", this, "gotoSlideByEvent");
+		}
+		dojo.event.connect(window, "onresize", this, "resizeWindow");
+		dojo.event.connect(this.nav, "onmousemove", this, "popUpNav");
+	}, postCreate:function () {
+		this._slides = [];
+		for (var i = 0, child; child = this.children[i]; i++) {
+			if (child.widgetType == "ShowSlide") {
+				this._slides.push(child);
+				this.option.text = child.title + " (" + (i + 1) + ")";
+				this.option.parentNode.insertBefore(this.option.cloneNode(true), this.option);
+			}
+		}
+		this.option.parentNode.removeChild(this.option);
+		this.domNode.style.display = "block";
+		this.resizeWindow();
+		this.gotoSlide(0, true);
+		dojo.addOnLoad(dojo.lang.hitch(this, function () {
+			var th = window.location.hash;
+			if (th.length) {
+				var parts = ("" + window.location).split(this.widgetId + "_SlideNo_");
+				if (parts.length > 1) {
+					setTimeout(dojo.lang.hitch(this, function () {
+						this.gotoSlide(parseInt(parts[1]), true);
+					}), 300);
+				}
+			}
+		}));
+	}, gotoSlide:function (slide, preventSetHash) {
+		if (slide == this._slide) {
+			return;
+		}
+		if (!this._slides[slide]) {
+			for (var i = 0, child; child = this._slides[i]; i++) {
+				if (child.title == slide) {
+					slide = i;
+					break;
+				}
+			}
+		}
+		if (!this._slides[slide]) {
+			return;
+		}
+		if (this.debugPane) {
+			if (this._slides[slide].debug) {
+				this.debugPane.show();
+			} else {
+				this.debugPane.hide();
+			}
+		}
+		if (this._slide != -1) {
+			while (this._slides[this._slide].previousAction()) {
+			}
+		}
+		if (!preventSetHash) {
+			window.location.href = "#" + this.widgetId + "_SlideNo_" + slide;
+		}
+		if (this._slides[this._slide]) {
+			this._slides[this._slide].hide();
+		}
+		this._slide = slide;
+		this.select.selectedIndex = slide;
+		var cn = this.contentNode;
+		while (cn.firstChild) {
+			cn.removeChild(cn.firstChild);
+		}
+		cn.appendChild(this._slides[slide].domNode);
+		this._slides[slide].show();
+	}, gotoSlideByEvent:function (event) {
+		var node = event.target;
+		var type = event.type;
+		if (type == "click") {
+			if (node.tagName == "OPTION" && node.parentNode == this.select) {
+				this.gotoSlide(node.index);
+			} else {
+				if (node == this.select) {
+					this.gotoSlide(node.selectedIndex);
+				} else {
+					this.nextSlide(event);
+				}
+			}
+		} else {
+			if (type == "keydown" || type == "keypress") {
+				var key = event.keyCode;
+				var ch = event.charCode;
+				if (key == 63234 || key == 37) {
+					this.previousSlide(event);
+				} else {
+					if (key == 63235 || key == 39 || ch == 32) {
+						this.nextSlide(event);
+					}
+				}
+			}
+		}
+	}, nextSlide:function (event) {
+		if (!this.stopEvent(event)) {
+			return false;
+		}
+		if (!this._slides[this._slide].nextAction(event)) {
+			if ((this._slide + 1) != this._slides.length) {
+				this.gotoSlide(this._slide + 1);
+				return true;
+			}
+			return false;
+		}
+	}, previousSlide:function (event) {
+		if (!this.stopEvent(event)) {
+			return false;
+		}
+		if (!this._slides[this._slide].previousAction(event)) {
+			if ((this._slide - 1) != -1) {
+				this.gotoSlide(this._slide - 1);
+				return true;
+			}
+			return false;
+		}
+	}, stopEvent:function (ev) {
+		if (!ev) {
+			return true;
+		}
+		if (ev.type == "click" && (this._slides[this._slide].noClick || this.noClick)) {
+			return false;
+		}
+		var target = ev.target;
+		while (target != null) {
+			if (target == this.domNode) {
+				target = ev.target;
+				break;
+			}
+			target = target.parentNode;
+		}
+		if (!dojo.dom.isDescendantOf(target, this.nav)) {
+			while (target && target != this.domNode) {
+				if (target.tagName == "A" || target.tagName == "INPUT" || target.tagName == "TEXTAREA" || target.tagName == "SELECT") {
+					return false;
+				}
+				if (typeof target.onclick == "function" || typeof target.onkeypress == "function") {
+					return false;
+				}
+				target = target.parentNode;
+			}
+		}
+		if (window.event) {
+			ev.returnValue = false;
+			ev.cancelBubble = true;
+		} else {
+			ev.preventDefault();
+			ev.stopPropagation();
+		}
+		return true;
+	}, popUpNav:function () {
+		if (!this.inNav) {
+			dojo.lfx.propertyAnimation(this.nav, {"height":{start:5, end:30}}, 250).play();
+		}
+		clearTimeout(this.inNav);
+		this.inNav = setTimeout(dojo.lang.hitch(this, "hideNav"), 2000);
+	}, hideNav:function () {
+		clearTimeout(this.inNav);
+		this.inNav = false;
+		dojo.lfx.propertyAnimation(this.nav, {"height":{start:30, end:5}}, 250).play();
+	}, resizeWindow:function (ev) {
+		dojo.body().style.height = "auto";
+		var h = Math.max(document.documentElement.scrollHeight || dojo.body().scrollHeight, dojo.html.getViewport().height);
+		dojo.body().style.height = h + "px";
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/ProgressBar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -21272,6 +43989,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ProgressBar");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.event");
@@ -21459,6 +44178,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.UsTextbox");
 dojo.require("dojo.widget.ValidationTextbox");
 dojo.require("dojo.validate.us");
@@ -21484,6 +44205,83 @@
 }});
 
 
+__CPAN_FILE__ src/widget/LinkPane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.LinkPane"], ["require", "dojo.widget.*"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.html.style"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.LinkPane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.html.style");
+	dojo.widget.defineWidget("dojo.widget.LinkPane", dojo.widget.ContentPane, {templateString:"<div class=\"dojoLinkPane\"></div>", fillInTemplate:function (args, frag) {
+		var source = this.getFragNodeRef(frag);
+		this.label += source.innerHTML;
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeLinkExtension.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeLinkExtension"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeExtension"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeLinkExtension");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeExtension");
+	dojo.widget.defineWidget("dojo.widget.TreeLinkExtension", dojo.widget.TreeExtension, function () {
+		this.params = {};
+	}, {listenTreeEvents:["afterChangeTree"], listenTree:function (tree) {
+		dojo.widget.TreeCommon.prototype.listenTree.call(this, tree);
+		var labelNode = tree.labelNodeTemplate;
+		var newLabel = this.makeALabel();
+		dojo.html.setClass(newLabel, dojo.html.getClass(labelNode));
+		labelNode.parentNode.replaceChild(newLabel, labelNode);
+	}, makeALabel:function () {
+		var newLabel = document.createElement("a");
+		for (var key in this.params) {
+			if (key in {}) {
+				continue;
+			}
+			newLabel.setAttribute(key, this.params[key]);
+		}
+		return newLabel;
+	}, onAfterChangeTree:function (message) {
+		var _this = this;
+		if (!message.oldTree) {
+			this.listenNode(message.node);
+		}
+	}, listenNode:function (node) {
+		for (var key in node.object) {
+			if (key in {}) {
+				continue;
+			}
+			node.labelNode.setAttribute(key, node.object[key]);
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeControllerExtension.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -21495,6 +44293,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeControllerExtension");
 dojo.declare("dojo.widget.TreeControllerExtension", null, {saveExpandedIndices:function (node, field) {
 	var obj = {};
@@ -21555,6 +44355,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.RealNumberTextbox");
 dojo.require("dojo.widget.IntegerTextbox");
 dojo.require("dojo.validate.common");
@@ -21594,6 +44396,81 @@
 }});
 
 
+__CPAN_FILE__ src/widget/SvgWidget.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.widget.DomWidget"], ["provide", "dojo.widget.SvgWidget"], ["provide", "dojo.widget.SVGWidget"], ["require", "dojo.dom"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.require("dojo.widget.DomWidget");
+	dojo.provide("dojo.widget.SvgWidget");
+	dojo.provide("dojo.widget.SVGWidget");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.SvgWidget");
+	dojo.widget.declare("dojo.widget.SvgWidget", dojo.widget.DomWidget, {createNodesFromText:function (txt, wrap) {
+		return dojo.svg.createNodesFromText(txt, wrap);
+	}});
+	dojo.widget.SVGWidget = dojo.widget.SvgWidget;
+	try {
+		(function () {
+			var tf = function () {
+				var rw = new function () {
+					dojo.widget.SvgWidget.call(this);
+					this.buildRendering = function () {
+						return;
+					};
+					this.destroyRendering = function () {
+						return;
+					};
+					this.postInitialize = function () {
+						return;
+					};
+					this.widgetType = "SVGRootWidget";
+					this.domNode = document.documentElement;
+				};
+				var wm = dojo.widget.manager;
+				wm.root = rw;
+				wm.add(rw);
+				wm.getWidgetFromNode = function (node) {
+					var filter = function (x) {
+						if (x.domNode == node) {
+							return true;
+						}
+					};
+					var widgets = [];
+					while ((node) && (widgets.length < 1)) {
+						widgets = this.getWidgetsByFilter(filter);
+						node = node.parentNode;
+					}
+					if (widgets.length > 0) {
+						return widgets[0];
+					} else {
+						return null;
+					}
+				};
+				wm.getWidgetFromEvent = function (domEvt) {
+					return this.getWidgetFromNode(domEvt.target);
+				};
+				wm.getWidgetFromPrimitive = wm.getWidgetFromNode;
+			};
+			dojo.event.connect(dojo.hostenv, "loaded", tf);
+		})();
+	}
+	catch (e) {
+		alert(e);
+	}
+}});
+
+
 __CPAN_FILE__ src/widget/ComboBox.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -21605,6 +44482,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ComboBox");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.event.*");
@@ -22163,6 +45042,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.SplitContainer");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.ContentPane");
@@ -22488,6 +45369,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeExpandToNodeOnSelect");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.widget.defineWidget("dojo.widget.TreeExpandToNodeOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", withSelected:false, initialize:function () {
@@ -22510,6 +45393,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.FloatingPane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.Manager");
@@ -22748,6 +45633,269 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Button.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Button"], ["require", "dojo.lang.extras"], ["require", "dojo.html.*"], ["require", "dojo.html.selection"], ["require", "dojo.widget.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Button");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.widget.*");
+	dojo.widget.defineWidget("dojo.widget.Button", dojo.widget.HtmlWidget, {isContainer:true, caption:"", templateString:"<div dojoAttachPoint=\"buttonNode\" class=\"dojoButton\" style=\"position:relative;\" dojoAttachEvent=\"onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick; onKey:onKey; onFocus;\">\n  <div class=\"dojoButtonContents\" align=center dojoAttachPoint=\"containerNode\" style=\"position:absolute;z-index:2;\"></div>\n  <img dojoAttachPoint=\"leftImage\" style=\"position:absolute;left:0px;\">\n  <img dojoAttachPoint=\"centerImage\" style=\"position:absolute;z-index:1;\">\n  <img dojoAttachPoint=\"rightImage\" style=\"position:absolute;top:0px;right:0px;\">\n</div>\n", templateCssString:"/* ---- button --- */\n.dojoButton {\n\tpadding: 0 0 0 0;\n\tfont-size: 8pt;\n\twhite-space: nowrap;\n\tcursor: pointer;\n\tfont-family: Myriad, Tahoma, Verdana, sans-serif;\n}\n\n.dojoButton .dojoButtonContents {\n\tpadding: 2px 2px 2px 2px;\n\ttext-align: center;\t\t/* if icon and label are split across two lines, center icon */\n\tcolor: white;\n}\n\n.dojoButtonLeftPart .dojoButtonContents {\n\tpadding-right: 8px;\n}\n\n.dojoButtonDisabled {\n\tcursor: url(\"images/no.gif\"), default;\n}\n\n\n.dojoButtonContents img {\n\tvertical-align: middle;\t/* if icon and label are on same line, center them */\n}\n\n/* -------- colors ------------ */\n\n.dojoButtonHover .dojoButtonContents {\n}\n\n.dojoButtonDepressed .dojoButtonContents {\n\tcolor: #293a4b;\n}\n\n.dojoButtonDisabled .dojoButtonContents {\n\tcolor: #aaa;\n}\n\n\n/* ---------- drop down button specific ---------- */\n\n/* border between label and arrow (for drop down buttons */\n.dojoButton .border {\n\twidth: 1px;\n\tbackground: gray;\n}\n\n/* button arrow */\n.dojoButton .downArrow {\n\tpadding-left: 10px;\n\ttext-align: center;\n}\n\n.dojoButton.disabled .downArrow {\n\tcursor : default;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ButtonTemplate.css"), inactiveImg:"templates/images/soriaButton-", activeImg:"templates/images/soriaActive-", pressedImg:"templates/images/soriaPressed-", disabledImg:"templates/images/soriaDisabled-", width2height:1 / 3, fillInTemplate:function () {
+		if (this.caption) {
+			this.containerNode.appendChild(document.createTextNode(this.caption));
+		}
+		dojo.html.disableSelection(this.containerNode);
+	}, postCreate:function () {
+		this._sizeMyself();
+	}, _sizeMyself:function () {
+		if (this.domNode.parentNode) {
+			var placeHolder = document.createElement("span");
+			dojo.html.insertBefore(placeHolder, this.domNode);
+		}
+		dojo.body().appendChild(this.domNode);
+		this._sizeMyselfHelper();
+		if (placeHolder) {
+			dojo.html.insertBefore(this.domNode, placeHolder);
+			dojo.html.removeNode(placeHolder);
+		}
+	}, _sizeMyselfHelper:function () {
+		var mb = dojo.html.getMarginBox(this.containerNode);
+		this.height = mb.height;
+		this.containerWidth = mb.width;
+		var endWidth = this.height * this.width2height;
+		this.containerNode.style.left = endWidth + "px";
+		this.leftImage.height = this.rightImage.height = this.centerImage.height = this.height;
+		this.leftImage.width = this.rightImage.width = endWidth + 1;
+		this.centerImage.width = this.containerWidth;
+		this.centerImage.style.left = endWidth + "px";
+		this._setImage(this.disabled ? this.disabledImg : this.inactiveImg);
+		if (this.disabled) {
+			dojo.html.prependClass(this.domNode, "dojoButtonDisabled");
+			this.domNode.removeAttribute("tabIndex");
+			dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", true);
+		} else {
+			dojo.html.removeClass(this.domNode, "dojoButtonDisabled");
+			this.domNode.setAttribute("tabIndex", "0");
+			dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", false);
+		}
+		this.domNode.style.height = this.height + "px";
+		this.domNode.style.width = (this.containerWidth + 2 * endWidth) + "px";
+	}, onMouseOver:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		if (!dojo.html.hasClass(this.buttonNode, "dojoButtonHover")) {
+			dojo.html.prependClass(this.buttonNode, "dojoButtonHover");
+		}
+		this._setImage(this.activeImg);
+	}, onMouseDown:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.prependClass(this.buttonNode, "dojoButtonDepressed");
+		dojo.html.removeClass(this.buttonNode, "dojoButtonHover");
+		this._setImage(this.pressedImg);
+	}, onMouseUp:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.prependClass(this.buttonNode, "dojoButtonHover");
+		dojo.html.removeClass(this.buttonNode, "dojoButtonDepressed");
+		this._setImage(this.activeImg);
+	}, onMouseOut:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		if (e.toElement && dojo.html.isDescendantOf(e.toElement, this.buttonNode)) {
+			return;
+		}
+		dojo.html.removeClass(this.buttonNode, "dojoButtonHover");
+		dojo.html.removeClass(this.buttonNode, "dojoButtonDepressed");
+		this._setImage(this.inactiveImg);
+	}, onKey:function (e) {
+		if (!e.key) {
+			return;
+		}
+		var menu = dojo.widget.getWidgetById(this.menuId);
+		if (e.key == e.KEY_ENTER || e.key == " ") {
+			this.onMouseDown(e);
+			this.buttonClick(e);
+			dojo.lang.setTimeout(this, "onMouseUp", 75, e);
+			dojo.event.browser.stopEvent(e);
+		}
+		if (menu && menu.isShowingNow && e.key == e.KEY_DOWN_ARROW) {
+			dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
+		}
+	}, onFocus:function (e) {
+		var menu = dojo.widget.getWidgetById(this.menuId);
+		if (menu) {
+			dojo.event.connectOnce(this.domNode, "onblur", this, "onBlur");
+		}
+	}, onBlur:function (e) {
+		var menu = dojo.widget.getWidgetById(this.menuId);
+		if (!menu) {
+			return;
+		}
+		if (menu.close && menu.isShowingNow) {
+			menu.close();
+		}
+	}, buttonClick:function (e) {
+		if (!this.disabled) {
+			try {
+				this.domNode.focus();
+			}
+			catch (e2) {
+			}
+			this.onClick(e);
+		}
+	}, onClick:function (e) {
+	}, _setImage:function (prefix) {
+		this.leftImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "l.gif");
+		this.centerImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
+		this.rightImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "r.gif");
+	}, _toggleMenu:function (menuId) {
+		var menu = dojo.widget.getWidgetById(menuId);
+		if (!menu) {
+			return;
+		}
+		if (menu.open && !menu.isShowingNow) {
+			var pos = dojo.html.getAbsolutePosition(this.domNode, false);
+			menu.open(pos.x, pos.y + this.height, this);
+			dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
+		} else {
+			if (menu.close && menu.isShowingNow) {
+				menu.close();
+			} else {
+				menu.toggle();
+			}
+		}
+	}, setCaption:function (content) {
+		this.caption = content;
+		this.containerNode.innerHTML = content;
+		this._sizeMyself();
+	}, setDisabled:function (disabled) {
+		this.disabled = disabled;
+		this._sizeMyself();
+	}});
+	dojo.widget.defineWidget("dojo.widget.DropDownButton", dojo.widget.Button, {menuId:"", downArrow:"templates/images/whiteDownArrow.gif", disabledDownArrow:"templates/images/whiteDownArrow.gif", fillInTemplate:function () {
+		dojo.widget.DropDownButton.superclass.fillInTemplate.apply(this, arguments);
+		this.arrow = document.createElement("img");
+		dojo.html.setClass(this.arrow, "downArrow");
+		dojo.widget.wai.setAttr(this.domNode, "waiState", "haspopup", this.menuId);
+	}, _sizeMyselfHelper:function () {
+		this.arrow.src = dojo.uri.moduleUri("dojo.widget", this.disabled ? this.disabledDownArrow : this.downArrow);
+		this.containerNode.appendChild(this.arrow);
+		dojo.widget.DropDownButton.superclass._sizeMyselfHelper.call(this);
+	}, onClick:function (e) {
+		this._toggleMenu(this.menuId);
+	}});
+	dojo.widget.defineWidget("dojo.widget.ComboButton", dojo.widget.Button, {menuId:"", templateString:"<div class=\"dojoButton\" style=\"position:relative;top:0px;left:0px; text-align:none;\" dojoAttachEvent=\"onKey;onFocus\">\n\n\t<div dojoAttachPoint=\"buttonNode\" class=\"dojoButtonLeftPart\" style=\"position:absolute;left:0px;top:0px;\"\n\t\tdojoAttachEvent=\"onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick;\">\n\t\t<div class=\"dojoButtonContents\" dojoAttachPoint=\"containerNode\" style=\"position:absolute;top:0px;right:0px;z-index:2;\"></div>\n\t\t<img dojoAttachPoint=\"leftImage\" style=\"position:absolute;left:0px;top:0px;\">\n\t\t<img dojoAttachPoint=\"centerImage\" style=\"position:absolute;right:0px;top:0px;z-index:1;\">\n\t</div>\n\n\t<div dojoAttachPoint=\"rightPart\" class=\"dojoButtonRightPart\" style=\"position:absolute;top:0px;right:0px;\"\n\t\tdojoAttachEvent=\"onMouseOver:rightOver; onMouseOut:rightOut; onMouseDown:rightDown; onMouseUp:rightUp; onClick:rightClick;\">\n\t\t<img dojoAttachPoint=\"arrowBackgroundImage\" style=\"position:absolute;top:0px;left:0px;z-index:1;\">\n\t\t<img src=\"${dojoWidgetModuleUri}templates/images/whiteDownArrow.gif\"\n\t\t  \t\tstyle=\"z-index:2;position:absolute;left:3px;top:50%;\">\n\t\t<img dojoAttachPoint=\"rightImage\" style=\"position:absolute;top:0px;right:0px;\">\n\t</div>\n\n</div>\n", splitWidth:2, arrowWidth:5, _sizeMyselfHelper:function (e) {
+		var mb = dojo.html.getMarginBox(this.containerNode);
+		this.height = mb.height;
+		this.containerWidth = mb.width;
+		var endWidth = this.height / 3;
+		if (this.disabled) {
+			dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", true);
+			this.domNode.removeAttribute("tabIndex");
+		} else {
+			dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", false);
+			this.domNode.setAttribute("tabIndex", "0");
+		}
+		this.leftImage.height = this.rightImage.height = this.centerImage.height = this.arrowBackgroundImage.height = this.height;
+		this.leftImage.width = endWidth + 1;
+		this.centerImage.width = this.containerWidth;
+		this.buttonNode.style.height = this.height + "px";
+		this.buttonNode.style.width = endWidth + this.containerWidth + "px";
+		this._setImage(this.disabled ? this.disabledImg : this.inactiveImg);
+		this.arrowBackgroundImage.width = this.arrowWidth;
+		this.rightImage.width = endWidth + 1;
+		this.rightPart.style.height = this.height + "px";
+		this.rightPart.style.width = this.arrowWidth + endWidth + "px";
+		this._setImageR(this.disabled ? this.disabledImg : this.inactiveImg);
+		this.domNode.style.height = this.height + "px";
+		var totalWidth = this.containerWidth + this.splitWidth + this.arrowWidth + 2 * endWidth;
+		this.domNode.style.width = totalWidth + "px";
+	}, _setImage:function (prefix) {
+		this.leftImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "l.gif");
+		this.centerImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
+	}, rightOver:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.prependClass(this.rightPart, "dojoButtonHover");
+		this._setImageR(this.activeImg);
+	}, rightDown:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.prependClass(this.rightPart, "dojoButtonDepressed");
+		dojo.html.removeClass(this.rightPart, "dojoButtonHover");
+		this._setImageR(this.pressedImg);
+	}, rightUp:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.prependClass(this.rightPart, "dojoButtonHover");
+		dojo.html.removeClass(this.rightPart, "dojoButtonDepressed");
+		this._setImageR(this.activeImg);
+	}, rightOut:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.removeClass(this.rightPart, "dojoButtonHover");
+		dojo.html.removeClass(this.rightPart, "dojoButtonDepressed");
+		this._setImageR(this.inactiveImg);
+	}, rightClick:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		try {
+			this.domNode.focus();
+		}
+		catch (e2) {
+		}
+		this._toggleMenu(this.menuId);
+	}, _setImageR:function (prefix) {
+		this.arrowBackgroundImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
+		this.rightImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "r.gif");
+	}, onKey:function (e) {
+		if (!e.key) {
+			return;
+		}
+		var menu = dojo.widget.getWidgetById(this.menuId);
+		if (e.key == e.KEY_ENTER || e.key == " ") {
+			this.onMouseDown(e);
+			this.buttonClick(e);
+			dojo.lang.setTimeout(this, "onMouseUp", 75, e);
+			dojo.event.browser.stopEvent(e);
+		} else {
+			if (e.key == e.KEY_DOWN_ARROW && e.altKey) {
+				this.rightDown(e);
+				this.rightClick(e);
+				dojo.lang.setTimeout(this, "rightUp", 75, e);
+				dojo.event.browser.stopEvent(e);
+			} else {
+				if (menu && menu.isShowingNow && e.key == e.KEY_DOWN_ARROW) {
+					dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
+				}
+			}
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/YahooMap.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -22759,6 +45907,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.YahooMap");
 dojo.require("dojo.event.*");
 dojo.require("dojo.math");
@@ -22904,6 +46054,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeDemo");
 dojo.require("dojo.Deferred");
 dojo.widget.TreeDemo = {reportIfDefered:function (res) {
@@ -22989,6 +46141,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.widget.DomWidget");
 dojo.provide("dojo.widget.SvgWidget");
 dojo.provide("dojo.widget.SVGWidget");
@@ -23049,6 +46203,526 @@
 }
 
 
+__CPAN_FILE__ src/widget/DocPane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DocPane"], ["require", "dojo.widget.*"], ["require", "dojo.io.*"], ["require", "dojo.event.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.Editor2"], ["require", "dojo.widget.Dialog"], ["require", "dojo.html.common"], ["require", "dojo.html.display"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DocPane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.Editor2");
+	dojo.require("dojo.widget.Dialog");
+	dojo.require("dojo.html.common");
+	dojo.require("dojo.html.display");
+	dojo.widget.DocPane = function () {
+		dojo.event.topic.subscribe("/docs/function/results", this, "onDocResults");
+		dojo.event.topic.subscribe("/docs/package/results", this, "onPkgResults");
+		dojo.event.topic.subscribe("/docs/function/detail", this, "onDocSelectFunction");
+	};
+	dojo.widget.defineWidget("dojo.widget.DocPane", dojo.widget.HtmlWidget, {dialog:null, dialogBg:null, dialogFg:null, logIn:null, edit:null, save:null, cancel:null, detail:null, result:null, packag:null, fn:null, fnLink:null, count:null, row:null, summary:null, description:null, variables:null, vRow:null, vLink:null, vDesc:null, methods:null, mRow:null, mLink:null, mDesc:null, requires:null, rRow:null, rRow2:null, rH3:null, rLink:null, parameters:null, pRow:null, pLink:null, pDesc:null, pOpt:null, pType:null, sType:null, sName:null, sParams:null, sPType:null, sPTypeSave:null, sPName:null, sPNameSave:null, pkgDescription:null, _appends:[], templateString:"<div class=\"dojoDocPane\">\n\t<div dojoAttachPoint=\"containerNode\" class=\"container\"></div>\n\n\t<div dojoAttachPoint=\"dialog\" class=\"dialog\">\n\t\t<div class=\"container\" dojoAttachPoint=\"dialogBg\">\n\t\t\t<div class=\"docDialog\" dojoAttachPoint=\"dialogFg\">\n\t\t\t\t<h2>Log In</h2>\n\t\t\t\t<p><input id=\"dojoDocUserName\" dojoAttachPoint=\"userName\"><label for=\"dojoDocUserName\">User Name:</label></p>\n\t\t\t\t<p><input id=\"dojoDocPassword\" dojoAttachPoint=\"password\" type=\"password\"><label for=\"dojoDocPassword\">Password:</label></p>\n\t\t\t\t<p><input type=\"button\" dojoAttachPoint=\"cancel\" value=\"cancel\"> <input type=\"button\" dojoAttachPoint=\"logIn\" value=\"Log In\"></p>\n\t\t\t\t<p></p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<div dojoAttachPoint=\"nav\" class=\"nav\"><span>Detail</span> | <span>Source</span> | <span>Examples</span> | <span>Walkthrough</span></div>\n\n\t<div dojoAttachPoint=\"detail\" class=\"detail\">\n\t\t<h1>Detail: <span class=\"fn\" dojoAttachPoint=\"fn\">dojo.select</span></h1>\n\t\t<div class=\"description\" dojoAttachPoint=\"description\">Description</div>\n\t\t<div class=\"params\" dojoAttachPoint=\"parameters\">\n\t\t\t<h2>Parameters</h2>\n\t\t\t<div class=\"row\" dojoAttachPoint=\"pRow\">\n\t\t\t\t<span dojoAttachPoint=\"pOpt\"><em>optional</em> </span>\n\t\t\t\t<span><span dojoAttachPoint=\"pType\">type</span> </span>\n\t\t\t\t<a href=\"#\" dojoAttachPoint=\"pLink\">variable</a>\n\t\t\t\t<span> - <span dojoAttachPoint=\"pDesc\"></span></span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"variables\" dojoAttachPoint=\"variables\">\n\t\t\t<h2>Variables</h2>\n\t\t\t<div class\"row\" dojoAttachPoint=\"vRow\">\n\t\t\t\t<a href=\"#\" dojoAttachPoint=\"vLink\">variable</a><span> - <span dojoAttachPoint=\"vDesc\"></span></span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"signature\">\n\t\t\t<h2>Signature</h2>\n\t\t\t<div class=\"source\">\n\t\t\t\t<span class=\"return\" dojoAttachPoint=\"sType\">returnType</span> \n\t\t\t\t<span class=\"function\" dojoAttachPoint=\"sName\">foo</span>\n\t\t\t\t(<span class=\"params\" dojoAttachPoint=\"sParams\">\n\t\t\t\t\t<span class=\"type\" dojoAttachPoint=\"sPType\">type </span>\n\t\t\t\t\t<span class=\"name\" dojoAttachPoint=\"sPName\">paramName</span>\n\t\t\t\t</span>)\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t\n\t<div dojoAttachPoint=\"result\" class=\"result\">\n\t\t<h1>Search Results: <span dojoAttachPoint=\"count\">0</span> matches</h1>\n\t\t<div class=\"row\" dojoAttachPoint=\"row\">\n\t\t\t<a href=\"#\" dojoAttachPoint=\"fnLink\">dojo.fnLink</a>\n\t\t\t<span> - <span class=\"summary\" dojoAttachPoint=\"summary\">summary</span></span>\n\t\t</div>\n\t</div>\n\n\t<div dojoAttachPoint=\"packag\" class=\"package\">\n\t\t<h1>Package: \n\t\t\t<span class=\"pkg\" dojoAttachPoint=\"pkg\">dojo.package</span> \n\t\t\t<span class=\"edit\" dojoAttachPoint=\"edit\">[edit]</span> \n\t\t\t<span class=\"save\" dojoAttachPoint=\"save\">[save]</span>\n\t\t</h1>\n\t\t<div dojoAttachPoint=\"pkgDescription\" class=\"description\">Description</div>\n\t\t<div class=\"methods\" dojoAttachPoint=\"methods\">\n\t\t\t<h2>Methods</h2>\n\t\t\t<div class=\"row\" dojoAttachPoint=\"mRow\">\n\t\t\t\t<a href=\"#\" dojoAttachPoint=\"mLink\">method</a>\n\t\t\t\t<span> - <span class=\"description\" dojoAttachPoint=\"mDesc\"></span></span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"requires\" dojoAttachPoint=\"requires\">\n\t\t\t<h2>Requires</h2>\n\t\t\t<div class=\"row\" dojoAttachPoint=\"rRow\">\n\t\t\t\t<h3 dojoAttachPoint=\"rH3\">Environment</h3>\n\t\t\t\t<div dojoAttachPoint=\"rRow2\"><a href=\"#\" dojoAttachPoint=\"rLink\" class=\"package\">require</a></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n", templateCssString:".dojoDocPane { padding:1em; font: 1em Georgia,Times,\"Times New Roman\",serif; }\n\n.dojoDocPane .container{ }\n\n.dojoDocPane .dialog{ }\n.dojoDocPane .dialog .container{ padding: 0.5em; background: #fff; border: 2px solid #333; }\n.dojoDocPane .dialog .docDialog{ background: transparent; width: 20em; }\n.dojoDocPane .dialog .docDialog h2{ margin-top: 0; padding-top: 0; }\n.dojoDocPane .dialog .docDialog input { float: right; margin-right: 1em; }\n.dojoDocPane .dialog .docDialog p{ clear: both; }\n#dojoDocUserName, #dojoDocPassword { width: 10em; }\n\n.dojoDocPane .nav{ }\n.dojoDocPane .nav span{ }\n\n.dojoDocPane .detail{ }\n.dojoDocPane .detail h1{ }\n.dojoDocPane .detail h1 span.fn{ }\n.dojoDocPane .detail .description{ }\n.dojoDocPane .detail .params{ }\n.dojoDocPane .detail .params .row{ }\n.dojoDocPane .detail .params .row span{ }\n.dojoDocPane .detail .variables{ }\n.dojoDocPane .detail .variables .row{ }\n.dojoDocPane .detail .signature{ }\n.dojoDocPane .detail .signature .source{ white-space: pre; font: 0.8em Monaco, Courier, \"Courier New\", monospace; }\n.dojoDocPane .detail .signature .source .return{ color:#369; }\n.dojoDocPane .detail .signature .source .function{ color: #98543F; font-weight: bold; }\n.dojoDocPane .detail .signature .source .params{ }\n.dojoDocPane .detail .signature .source .params .type{ font-style: italic; color: #d17575; }\n.dojoDocPane .detail .signature .source .params .name{ color: #d14040; }\n\n.dojoDocPane .result{ }\n.dojoDocPane .result h1{ }\n.dojoDocPane .result .row{ }\n.dojoDocPane .result .row .summary{ }\n\n.dojoDocPane .package{ }\n.dojoDocPane .package h1{ }\n.dojoDocPane .package .row{ }\n.dojoDocPane .package .row .summary{ }\n.dojoDocPane .package .description{ }\n.dojoDocPane .package .methods{ }\n.dojoDocPane .package .methods h2{ }\n.dojoDocPane .package .methods .row{ }\n.dojoDocPane .package .methods .row .description{ }\n.dojoDocPane .package .requires{ }\n.dojoDocPane .package .requires h2{ }\n.dojoDocPane .package .requires .row{ }\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/DocPane.css"), isContainer:true, fillInTemplate:function () {
+		this.requires = dojo.html.removeNode(this.requires);
+		this.rRow.style.display = "none";
+		this.rRow2.style.display = "none";
+		this.methods = dojo.html.removeNode(this.methods);
+		this.mRow.style.display = "none";
+		this.dialog = dojo.widget.createWidget("dialog", {}, this.dialog);
+		this.dialog.setCloseControl(this.cancel);
+		dojo.html.setOpacity(this.dialogBg, 0.8);
+		dojo.html.setOpacity(this.dialogFg, 1);
+		dojo.event.connect(this.edit, "onclick", dojo.lang.hitch(this, function () {
+			if (!this._isLoggedIn) {
+				this.dialog.show();
+			}
+		}));
+		dojo.event.connect(this.logIn, "onclick", this, "_logIn");
+		dojo.event.connect(this.save, "onclick", this, "_save");
+		dojo.event.connect(dojo.docs, "logInSuccess", this, "_loggedIn");
+		this.homeSave = this.containerNode.cloneNode(true);
+		this.detailSave = dojo.html.removeNode(this.detail);
+		this.resultSave = dojo.html.removeNode(this.result);
+		this.packageSave = dojo.html.removeNode(this.packag);
+		this.results = dojo.html.removeNode(this.results);
+		this.rowParent = this.row.parentNode;
+		this.rowSave = dojo.html.removeNode(this.row);
+		this.vParent = this.vRow.parentNode;
+		this.vSave = dojo.html.removeNode(this.vRow);
+		this.pParent = this.pRow.parentNode;
+		this.pSave = dojo.html.removeNode(this.pRow);
+		this.sPTypeSave = dojo.html.removeNode(this.sPType);
+		this.sPNameSave = dojo.html.removeNode(this.sPName);
+		this.navSave = dojo.html.removeNode(this.nav);
+	}, _logIn:function () {
+		dojo.docs.setUserName(this.userName.value);
+		dojo.docs.setPassword(this.password.value);
+	}, _loggedIn:function () {
+		this._isLoggedIn = true;
+		this.dialog.hide();
+		this.pkgEditor = dojo.widget.createWidget("editor2", {toolbarAlwaysVisible:true}, this.pkgDescription);
+	}, _save:function () {
+		if (this.pkgEditor) {
+			dojo.docs.savePackage(this._pkgPath, {description:this.pkgEditor.getEditorContent()});
+		}
+	}, onDocSelectFunction:function (message) {
+		dojo.debug("onDocSelectFunction()");
+		for (var key in message) {
+			dojo.debug(key + ": " + dojo.json.serialize(message[key]));
+		}
+		var meta = message.meta;
+		if (meta) {
+			var variables = meta.variables;
+			var this_variables = meta.this_variables;
+			var child_variables = meta.child_variables;
+			var parameters = meta.parameters;
+		}
+		var doc = message.doc;
+		dojo.debug(dojo.json.serialize(doc));
+		var appends = this._appends;
+		dojo.html.removeChildren(this.domNode);
+		this.fn.innerHTML = message.name;
+		this.variables.style.display = "block";
+		var all = [];
+		if (variables) {
+			all = variables;
+		}
+		if (this_variables) {
+			all = all.concat(this_variables);
+		}
+		if (child_variables) {
+			all = all.concat(child_variables);
+		}
+		if (!all.length) {
+			this.variables.style.display = "none";
+		} else {
+			for (var i = 0, one; one = all[i]; i++) {
+				this.vLink.innerHTML = one;
+				this.vDesc.parentNode.style.display = "none";
+				appends.push(this.vParent.appendChild(this.vSave.cloneNode(true)));
+			}
+		}
+		this.sParams.innerHTML = "";
+		var first = true;
+		for (var param in parameters) {
+			var paramType = parameters[param].type;
+			var paramSummary = parameters[param].summary;
+			var paramName = param;
+			this.parameters.style.display = "block";
+			this.pLink.innerHTML = paramName;
+			this.pOpt.style.display = "none";
+			if (parameters[param].opt) {
+				this.pOpt.style.display = "inline";
+			}
+			this.pType.parentNode.style.display = "none";
+			if (parameters[param][0]) {
+				this.pType.parentNode.style.display = "inline";
+				this.pType.innerHTML = paramType;
+			}
+			this.pDesc.parentNode.style.display = "none";
+			if (paramSummary) {
+				this.pDesc.parentNode.style.display = "inline";
+				this.pDesc.innerHTML = paramSummary;
+			}
+			appends.push(this.pParent.appendChild(this.pSave.cloneNode(true)));
+			if (!first) {
+				this.sParams.appendChild(document.createTextNode(", "));
+			}
+			first = false;
+			if (paramType) {
+				dojo.debug(this.sPTypeSave);
+				this.sPTypeSave.innerHTML = paramType;
+				this.sParams.appendChild(this.sPTypeSave.cloneNode(true));
+				this.sParams.appendChild(document.createTextNode(" "));
+			}
+			dojo.debug(this.sPNameSave);
+			this.sPNameSave.innerHTML = paramName;
+			this.sParams.appendChild(this.sPNameSave.cloneNode(true));
+		}
+		if (message.returns) {
+			this.sType.innerHTML = message.returns;
+		} else {
+			this.sType.innerHTML = "void";
+		}
+		this.sName.innerHTML = message.name;
+		this.domNode.appendChild(this.navSave);
+		this.domNode.appendChild(this.detailSave.cloneNode(true));
+		for (var i = 0, append; append = appends[i]; i++) {
+			dojo.html.removeNode(append);
+		}
+	}, onPkgResult:function (results) {
+		if (this.pkgEditor) {
+			this.pkgEditor.close(true);
+			dojo.debug(this.pkgDescription);
+		}
+		var methods = results.methods;
+		var requires = results.requires;
+		var description = results.description;
+		this._pkgPath = results.path;
+		var requireLinks = [];
+		var appends = this._appends;
+		while (appends.length) {
+			dojo.html.removeNode(appends.shift());
+		}
+		dojo.html.removeChildren(this.domNode);
+		this.pkg.innerHTML = results.pkg;
+		var hasRequires = false;
+		for (var env in requires) {
+			hasRequires = true;
+			this.rH3.style.display = "none";
+			if (env != "common") {
+				this.rH3.style.display = "";
+				this.rH3.innerHTML = env;
+			}
+			for (var i = 0, require; require = requires[env][i]; i++) {
+				requireLinks.push({name:require});
+				this.rLink.innerHTML = require;
+				this.rLink.href = "#" + require;
+				var rRow2 = this.rRow2.parentNode.insertBefore(this.rRow2.cloneNode(true), this.rRow2);
+				rRow2.style.display = "";
+				appends.push(rRow2);
+			}
+			var rRow = this.rRow.parentNode.insertBefore(this.rRow.cloneNode(true), this.rRow);
+			rRow.style.display = "";
+			appends.push(rRow);
+		}
+		if (hasRequires) {
+			appends.push(this.packageSave.appendChild(this.requires.cloneNode(true)));
+		}
+		if (results.size) {
+			for (var i = 0, method; method = methods[i]; i++) {
+				this.mLink.innerHTML = method.name;
+				this.mLink.href = "#" + method.name;
+				this.mDesc.parentNode.style.display = "none";
+				if (method.summary) {
+					this.mDesc.parentNode.style.display = "inline";
+					this.mDesc.innerHTML = method.summary;
+				}
+				var mRow = this.mRow.parentNode.insertBefore(this.mRow.cloneNode(true), this.mRow);
+				mRow.style.display = "";
+				appends.push(mRow);
+			}
+			appends.push(this.packageSave.appendChild(this.methods.cloneNode(true)));
+		}
+		this.domNode.appendChild(this.packageSave);
+		this.pkgDescription.innerHTML = description;
+		function makeSelect(fOrP, x) {
+			return function (e) {
+				dojo.event.topic.publish("/docs/" + fOrP + "/select", x);
+			};
+		}
+		var as = this.domNode.getElementsByTagName("a");
+		for (var i = 0, a; a = as[i]; i++) {
+			if (a.className == "docMLink") {
+				dojo.event.connect(a, "onclick", makeSelect("function", methods[i]));
+			} else {
+				if (a.className == "docRLink") {
+					dojo.event.connect(a, "onclick", makeSelect("package", requireLinks[i]));
+				}
+			}
+		}
+	}, onDocResults:function (fns) {
+		dojo.debug("onDocResults(): called");
+		if (fns.length == 1) {
+			dojo.event.topic.publish("/docs/function/select", fns[0]);
+			return;
+		}
+		dojo.html.removeChildren(this.domNode);
+		this.count.innerHTML = fns.length;
+		var appends = [];
+		for (var i = 0, fn; fn = fns[i]; i++) {
+			this.fnLink.innerHTML = fn.name;
+			this.fnLink.href = "#" + fn.name;
+			if (fn.id) {
+				this.fnLink.href = this.fnLink.href + "," + fn.id;
+			}
+			this.summary.parentNode.style.display = "none";
+			if (fn.summary) {
+				this.summary.parentNode.style.display = "inline";
+				this.summary.innerHTML = fn.summary;
+			}
+			appends.push(this.rowParent.appendChild(this.rowSave.cloneNode(true)));
+		}
+		function makeSelect(x) {
+			return function (e) {
+				dojo.event.topic.publish("/docs/function/select", x);
+			};
+		}
+		this.domNode.appendChild(this.resultSave.cloneNode(true));
+		var as = this.domNode.getElementsByTagName("a");
+		for (var i = 0, a; a = as[i]; i++) {
+			dojo.event.connect(a, "onclick", makeSelect(fns[i]));
+		}
+		for (var i = 0, append; append = appends[i]; i++) {
+			this.rowParent.removeChild(append);
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeLoadingControllerV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeLoadingControllerV3"], ["require", "dojo.widget.TreeBasicControllerV3"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"], ["require", "dojo.Deferred"], ["require", "dojo.DeferredList"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeLoadingControllerV3");
+	dojo.require("dojo.widget.TreeBasicControllerV3");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.Deferred");
+	dojo.require("dojo.DeferredList");
+	dojo.declare("dojo.Error", Error, function (message, extra) {
+		this.message = message;
+		this.extra = extra;
+		this.stack = (new Error()).stack;
+	});
+	dojo.declare("dojo.CommunicationError", dojo.Error, function () {
+		this.name = "CommunicationError";
+	});
+	dojo.declare("dojo.LockedError", dojo.Error, function () {
+		this.name = "LockedError";
+	});
+	dojo.declare("dojo.FormatError", dojo.Error, function () {
+		this.name = "FormatError";
+	});
+	dojo.declare("dojo.RpcError", dojo.Error, function () {
+		this.name = "RpcError";
+	});
+	dojo.widget.defineWidget("dojo.widget.TreeLoadingControllerV3", dojo.widget.TreeBasicControllerV3, {RpcUrl:"", RpcActionParam:"action", preventCache:true, checkValidRpcResponse:function (type, obj) {
+		if (type != "load") {
+			var extra = {};
+			for (var i = 1; i < arguments.length; i++) {
+				dojo.lang.mixin(extra, arguments[i]);
+			}
+			return new dojo.CommunicationError(obj, extra);
+		}
+		if (typeof obj != "object") {
+			return new dojo.FormatError("Wrong server answer format " + (obj && obj.toSource ? obj.toSource() : obj) + " type " + (typeof obj), obj);
+		}
+		if (!dojo.lang.isUndefined(obj.error)) {
+			return new dojo.RpcError(obj.error, obj);
+		}
+		return false;
+	}, getDeferredBindHandler:function (deferred) {
+		return dojo.lang.hitch(this, function (type, obj) {
+			var error = this.checkValidRpcResponse.apply(this, arguments);
+			if (error) {
+				deferred.errback(error);
+				return;
+			}
+			deferred.callback(obj);
+		});
+	}, getRpcUrl:function (action) {
+		if (this.RpcUrl == "local") {
+			var dir = document.location.href.substr(0, document.location.href.lastIndexOf("/"));
+			var localUrl = dir + "/local/" + action;
+			return localUrl;
+		}
+		if (!this.RpcUrl) {
+			dojo.raise("Empty RpcUrl: can't load");
+		}
+		var url = this.RpcUrl;
+		if (url.indexOf("/") != 0) {
+			var protocol = document.location.href.replace(/:\/\/.*/, "");
+			var prefix = document.location.href.substring(protocol.length + 3);
+			if (prefix.lastIndexOf("/") != prefix.length - 1) {
+				prefix = prefix.replace(/\/[^\/]+$/, "/");
+			}
+			if (prefix.lastIndexOf("/") != prefix.length - 1) {
+				prefix = prefix + "/";
+			}
+			url = protocol + "://" + prefix + url;
+		}
+		return url + (url.indexOf("?") > -1 ? "&" : "?") + this.RpcActionParam + "=" + action;
+	}, loadProcessResponse:function (node, result) {
+		if (!dojo.lang.isArray(result)) {
+			throw new dojo.FormatError("loadProcessResponse: Not array loaded: " + result);
+		}
+		node.setChildren(result);
+	}, runRpc:function (kw) {
+		var _this = this;
+		var deferred = new dojo.Deferred();
+		dojo.io.bind({url:kw.url, handle:this.getDeferredBindHandler(deferred), mimetype:"text/javascript", preventCache:this.preventCache, sync:kw.sync, content:{data:dojo.json.serialize(kw.params)}});
+		return deferred;
+	}, loadRemote:function (node, sync) {
+		var _this = this;
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
+		var deferred = this.runRpc({url:this.getRpcUrl("getChildren"), sync:sync, params:params});
+		deferred.addCallback(function (res) {
+			return _this.loadProcessResponse(node, res);
+		});
+		return deferred;
+	}, batchExpandTimeout:0, recurseToLevel:function (widget, level, callFunc, callObj, skipFirst, sync) {
+		if (level == 0) {
+			return;
+		}
+		if (!skipFirst) {
+			var deferred = callFunc.call(callObj, widget, sync);
+		} else {
+			var deferred = dojo.Deferred.prototype.makeCalled();
+		}
+		var _this = this;
+		var recurseOnExpand = function () {
+			var children = widget.children;
+			var deferreds = [];
+			for (var i = 0; i < children.length; i++) {
+				deferreds.push(_this.recurseToLevel(children[i], level - 1, callFunc, callObj, sync));
+			}
+			return new dojo.DeferredList(deferreds);
+		};
+		deferred.addCallback(recurseOnExpand);
+		return deferred;
+	}, expandToLevel:function (nodeOrTree, level, sync) {
+		return this.recurseToLevel(nodeOrTree, nodeOrTree.isTree ? level + 1 : level, this.expand, this, nodeOrTree.isTree, sync);
+	}, loadToLevel:function (nodeOrTree, level, sync) {
+		return this.recurseToLevel(nodeOrTree, nodeOrTree.isTree ? level + 1 : level, this.loadIfNeeded, this, nodeOrTree.isTree, sync);
+	}, loadAll:function (nodeOrTree, sync) {
+		return this.loadToLevel(nodeOrTree, Number.POSITIVE_INFINITY, sync);
+	}, expand:function (node, sync) {
+		var _this = this;
+		var deferred = this.startProcessing(node);
+		deferred.addCallback(function () {
+			return _this.loadIfNeeded(node, sync);
+		});
+		deferred.addCallback(function (res) {
+			dojo.widget.TreeBasicControllerV3.prototype.expand(node);
+			return res;
+		});
+		deferred.addBoth(function (res) {
+			_this.finishProcessing(node);
+			return res;
+		});
+		return deferred;
+	}, loadIfNeeded:function (node, sync) {
+		var deferred;
+		if (node.state == node.loadStates.UNCHECKED && node.isFolder && !node.children.length) {
+			deferred = this.loadRemote(node, sync);
+		} else {
+			deferred = new dojo.Deferred();
+			deferred.callback();
+		}
+		return deferred;
+	}, runStages:function (check, prepare, make, finalize, expose, args) {
+		var _this = this;
+		if (check && !check.apply(this, args)) {
+			return false;
+		}
+		var deferred = dojo.Deferred.prototype.makeCalled();
+		if (prepare) {
+			deferred.addCallback(function () {
+				return prepare.apply(_this, args);
+			});
+		}
+		if (make) {
+			deferred.addCallback(function () {
+				var res = make.apply(_this, args);
+				return res;
+			});
+		}
+		if (finalize) {
+			deferred.addBoth(function (res) {
+				finalize.apply(_this, args);
+				return res;
+			});
+		}
+		if (expose) {
+			deferred.addCallback(function (res) {
+				expose.apply(_this, args);
+				return res;
+			});
+		}
+		return deferred;
+	}, startProcessing:function (nodesArray) {
+		var deferred = new dojo.Deferred();
+		var nodes = dojo.lang.isArray(nodesArray) ? nodesArray : arguments;
+		for (var i = 0; i < nodes.length; i++) {
+			if (nodes[i].isLocked()) {
+				deferred.errback(new dojo.LockedError("item locked " + nodes[i], nodes[i]));
+				return deferred;
+			}
+			if (nodes[i].isTreeNode) {
+				nodes[i].markProcessing();
+			}
+			nodes[i].lock();
+		}
+		deferred.callback();
+		return deferred;
+	}, finishProcessing:function (nodesArray) {
+		var nodes = dojo.lang.isArray(nodesArray) ? nodesArray : arguments;
+		for (var i = 0; i < nodes.length; i++) {
+			if (!nodes[i].hasLock()) {
+				continue;
+			}
+			nodes[i].unlock();
+			if (nodes[i].isTreeNode) {
+				nodes[i].unmarkProcessing();
+			}
+		}
+	}, refreshChildren:function (nodeOrTree, sync) {
+		return this.runStages(null, this.prepareRefreshChildren, this.doRefreshChildren, this.finalizeRefreshChildren, this.exposeRefreshChildren, arguments);
+	}, prepareRefreshChildren:function (nodeOrTree, sync) {
+		var deferred = this.startProcessing(nodeOrTree);
+		nodeOrTree.destroyChildren();
+		nodeOrTree.state = nodeOrTree.loadStates.UNCHECKED;
+		return deferred;
+	}, doRefreshChildren:function (nodeOrTree, sync) {
+		return this.loadRemote(nodeOrTree, sync);
+	}, finalizeRefreshChildren:function (nodeOrTree, sync) {
+		this.finishProcessing(nodeOrTree);
+	}, exposeRefreshChildren:function (nodeOrTree, sync) {
+		nodeOrTree.expand();
+	}, move:function (child, newParent, index) {
+		return this.runStages(this.canMove, this.prepareMove, this.doMove, this.finalizeMove, this.exposeMove, arguments);
+	}, doMove:function (child, newParent, index) {
+		child.tree.move(child, newParent, index);
+		return true;
+	}, prepareMove:function (child, newParent, index, sync) {
+		var deferred = this.startProcessing(newParent);
+		deferred.addCallback(dojo.lang.hitch(this, function () {
+			return this.loadIfNeeded(newParent, sync);
+		}));
+		return deferred;
+	}, finalizeMove:function (child, newParent) {
+		this.finishProcessing(newParent);
+	}, prepareCreateChild:function (parent, index, data, sync) {
+		var deferred = this.startProcessing(parent);
+		deferred.addCallback(dojo.lang.hitch(this, function () {
+			return this.loadIfNeeded(parent, sync);
+		}));
+		return deferred;
+	}, finalizeCreateChild:function (parent) {
+		this.finishProcessing(parent);
+	}, prepareClone:function (child, newParent, index, deep, sync) {
+		var deferred = this.startProcessing(child, newParent);
+		deferred.addCallback(dojo.lang.hitch(this, function () {
+			return this.loadIfNeeded(newParent, sync);
+		}));
+		return deferred;
+	}, finalizeClone:function (child, newParent) {
+		this.finishProcessing(child, newParent);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/SortableTable.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -23060,6 +46734,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.SortableTable");
 dojo.deprecated("SortableTable will be removed in favor of FilteringTable.", "0.5");
 dojo.require("dojo.lang.common");
@@ -23549,6 +47225,256 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeContextMenuV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeContextMenuV3"], ["require", "dojo.event.*"], ["require", "dojo.io.*"], ["require", "dojo.widget.*"], ["require", "dojo.widget.Menu2"], ["require", "dojo.widget.TreeCommon"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeContextMenuV3");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.Menu2");
+	dojo.require("dojo.widget.TreeCommon");
+	dojo.widget.defineWidget("dojo.widget.TreeContextMenuV3", [dojo.widget.PopupMenu2, dojo.widget.TreeCommon], function () {
+		this.listenedTrees = {};
+	}, {listenTreeEvents:["afterTreeCreate", "beforeTreeDestroy"], listenNodeFilter:function (elem) {
+		return elem instanceof dojo.widget.Widget;
+	}, onAfterTreeCreate:function (message) {
+		var tree = message.source;
+		this.bindDomNode(tree.domNode);
+	}, onBeforeTreeDestroy:function (message) {
+		this.unBindDomNode(message.source.domNode);
+	}, getTreeNode:function () {
+		var source = this.getTopOpenEvent().target;
+		var treeNode = this.domElement2TreeNode(source);
+		return treeNode;
+	}, open:function () {
+		var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);
+		for (var i = 0; i < this.children.length; i++) {
+			if (this.children[i].menuOpen) {
+				this.children[i].menuOpen(this.getTreeNode());
+			}
+		}
+		return result;
+	}, close:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			if (this.children[i].menuClose) {
+				this.children[i].menuClose(this.getTreeNode());
+			}
+		}
+		var result = dojo.widget.PopupMenu2.prototype.close.apply(this, arguments);
+		return result;
+	}});
+	dojo.widget.defineWidget("dojo.widget.TreeMenuItemV3", [dojo.widget.MenuItem2, dojo.widget.TreeCommon], function () {
+		this.treeActions = [];
+	}, {treeActions:"", initialize:function (args, frag) {
+		for (var i = 0; i < this.treeActions.length; i++) {
+			this.treeActions[i] = this.treeActions[i].toUpperCase();
+		}
+	}, getTreeNode:function () {
+		var menu = this;
+		while (!(menu instanceof dojo.widget.TreeContextMenuV3)) {
+			menu = menu.parent;
+		}
+		var treeNode = menu.getTreeNode();
+		return treeNode;
+	}, menuOpen:function (treeNode) {
+		treeNode.viewEmphasize();
+		this.setDisabled(false);
+		var _this = this;
+		dojo.lang.forEach(_this.treeActions, function (action) {
+			_this.setDisabled(treeNode.actionIsDisabledNow(action));
+		});
+	}, menuClose:function (treeNode) {
+		treeNode.viewUnemphasize();
+	}, toString:function () {
+		return "[" + this.widgetType + " node " + this.getTreeNode() + "]";
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/UsTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.UsTextbox"], ["require", "dojo.widget.ValidationTextbox"], ["require", "dojo.validate.us"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.UsTextbox");
+	dojo.require("dojo.widget.ValidationTextbox");
+	dojo.require("dojo.validate.us");
+	dojo.widget.defineWidget("dojo.widget.UsStateTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties) {
+		dojo.widget.UsStateTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.allowterritories) {
+			this.flags.allowTerritories = (localProperties.allowterritories == "true");
+		}
+		if (localProperties.allowmilitary) {
+			this.flags.allowMilitary = (localProperties.allowmilitary == "true");
+		}
+	}, isValid:function () {
+		return dojo.validate.us.isState(this.textbox.value, this.flags);
+	}});
+	dojo.widget.defineWidget("dojo.widget.UsZipTextbox", dojo.widget.ValidationTextbox, {isValid:function () {
+		return dojo.validate.us.isZipCode(this.textbox.value);
+	}});
+	dojo.widget.defineWidget("dojo.widget.UsSocialSecurityNumberTextbox", dojo.widget.ValidationTextbox, {isValid:function () {
+		return dojo.validate.us.isSocialSecurityNumber(this.textbox.value);
+	}});
+	dojo.widget.defineWidget("dojo.widget.UsPhoneNumberTextbox", dojo.widget.ValidationTextbox, {isValid:function () {
+		return dojo.validate.us.isPhoneNumber(this.textbox.value);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeSelector.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeSelector"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeSelector");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.TreeSelector", dojo.widget.HtmlWidget, function () {
+		this.eventNames = {};
+		this.listenedTrees = [];
+	}, {widgetType:"TreeSelector", selectedNode:null, dieWithTree:false, eventNamesDefault:{select:"select", destroy:"destroy", deselect:"deselect", dblselect:"dblselect"}, initialize:function () {
+		for (var name in this.eventNamesDefault) {
+			if (dojo.lang.isUndefined(this.eventNames[name])) {
+				this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
+			}
+		}
+	}, destroy:function () {
+		dojo.event.topic.publish(this.eventNames.destroy, {source:this});
+		return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
+	}, listenTree:function (tree) {
+		dojo.event.topic.subscribe(tree.eventNames.titleClick, this, "select");
+		dojo.event.topic.subscribe(tree.eventNames.iconClick, this, "select");
+		dojo.event.topic.subscribe(tree.eventNames.collapse, this, "onCollapse");
+		dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
+		dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");
+		dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+		this.listenedTrees.push(tree);
+	}, unlistenTree:function (tree) {
+		dojo.event.topic.unsubscribe(tree.eventNames.titleClick, this, "select");
+		dojo.event.topic.unsubscribe(tree.eventNames.iconClick, this, "select");
+		dojo.event.topic.unsubscribe(tree.eventNames.collapse, this, "onCollapse");
+		dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
+		dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");
+		dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+		for (var i = 0; i < this.listenedTrees.length; i++) {
+			if (this.listenedTrees[i] === tree) {
+				this.listenedTrees.splice(i, 1);
+				break;
+			}
+		}
+	}, onTreeDestroy:function (message) {
+		this.unlistenTree(message.source);
+		if (this.dieWithTree) {
+			this.destroy();
+		}
+	}, onCollapse:function (message) {
+		if (!this.selectedNode) {
+			return;
+		}
+		var node = message.source;
+		var parent = this.selectedNode.parent;
+		while (parent !== node && parent.isTreeNode) {
+			parent = parent.parent;
+		}
+		if (parent.isTreeNode) {
+			this.deselect();
+		}
+	}, select:function (message) {
+		var node = message.source;
+		var e = message.event;
+		if (this.selectedNode === node) {
+			if (e.ctrlKey || e.shiftKey || e.metaKey) {
+				this.deselect();
+				return;
+			}
+			dojo.event.topic.publish(this.eventNames.dblselect, {node:node});
+			return;
+		}
+		if (this.selectedNode) {
+			this.deselect();
+		}
+		this.doSelect(node);
+		dojo.event.topic.publish(this.eventNames.select, {node:node});
+	}, onMoveFrom:function (message) {
+		if (message.child !== this.selectedNode) {
+			return;
+		}
+		if (!dojo.lang.inArray(this.listenedTrees, message.newTree)) {
+			this.deselect();
+		}
+	}, onRemoveNode:function (message) {
+		if (message.child !== this.selectedNode) {
+			return;
+		}
+		this.deselect();
+	}, doSelect:function (node) {
+		node.markSelected();
+		this.selectedNode = node;
+	}, deselect:function () {
+		var node = this.selectedNode;
+		this.selectedNode = null;
+		node.unMarkSelected();
+		dojo.event.topic.publish(this.eventNames.deselect, {node:node});
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeExpandToNodeOnSelect.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeExpandToNodeOnSelect"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeExpandToNodeOnSelect");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.TreeExpandToNodeOnSelect", dojo.widget.HtmlWidget, {selector:"", controller:"", withSelected:false, initialize:function () {
+		this.selector = dojo.widget.byId(this.selector);
+		this.controller = dojo.widget.byId(this.controller);
+		dojo.event.topic.subscribe(this.selector.eventNames.select, this, "onSelect");
+	}, onSelectEvent:function (message) {
+		this.controller.expandToNode(message.node, this.withSelected);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/ValidationTextbox.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -23560,6 +47486,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ValidationTextbox");
 dojo.require("dojo.widget.Textbox");
 dojo.require("dojo.i18n.common");
@@ -23673,6 +47601,510 @@
 }});
 
 
+__CPAN_FILE__ src/widget/SortableTable.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.SortableTable"], ["require", "dojo.lang.common"], ["require", "dojo.date.format"], ["require", "dojo.html.*"], ["require", "dojo.html.selection"], ["require", "dojo.html.util"], ["require", "dojo.html.style"], ["require", "dojo.event.*"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.SortableTable");
+	dojo.deprecated("SortableTable will be removed in favor of FilteringTable.", "0.5");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.html.util");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.SortableTable", dojo.widget.HtmlWidget, function () {
+		this.data = [];
+		this.selected = [];
+		this.columns = [];
+	}, {enableMultipleSelect:false, maximumNumberOfSelections:0, enableAlternateRows:false, minRows:0, defaultDateFormat:"%D", sortIndex:0, sortDirection:0, valueField:"Id", headClass:"", tbodyClass:"", headerClass:"", headerSortUpClass:"selected", headerSortDownClass:"selected", rowClass:"", rowAlternateClass:"alt", rowSelectedClass:"selected", columnSelected:"sorted-column", isContainer:false, templatePath:null, templateCssPath:null, getTypeFromString:function (s) {
+		var parts = s.split("."), i = 0, obj = dj_global;
+		do {
+			obj = obj[parts[i++]];
+		} while (i < parts.length && obj);
+		return (obj != dj_global) ? obj : null;
+	}, compare:function (o1, o2) {
+		for (var p in o1) {
+			if (!(p in o2)) {
+				return false;
+			}
+			if (o1[p].valueOf() != o2[p].valueOf()) {
+				return false;
+			}
+		}
+		return true;
+	}, isSelected:function (o) {
+		for (var i = 0; i < this.selected.length; i++) {
+			if (this.compare(this.selected[i], o)) {
+				return true;
+			}
+		}
+		return false;
+	}, removeFromSelected:function (o) {
+		var idx = -1;
+		for (var i = 0; i < this.selected.length; i++) {
+			if (this.compare(this.selected[i], o)) {
+				idx = i;
+				break;
+			}
+		}
+		if (idx >= 0) {
+			this.selected.splice(idx, 1);
+		}
+	}, getSelection:function () {
+		return this.selected;
+	}, getValue:function () {
+		var a = [];
+		for (var i = 0; i < this.selected.length; i++) {
+			if (this.selected[i][this.valueField]) {
+				a.push(this.selected[i][this.valueField]);
+			}
+		}
+		return a.join();
+	}, reset:function () {
+		this.columns = [];
+		this.data = [];
+		this.resetSelections(this.domNode.getElementsByTagName("tbody")[0]);
+	}, resetSelections:function (body) {
+		this.selected = [];
+		var idx = 0;
+		var rows = body.getElementsByTagName("tr");
+		for (var i = 0; i < rows.length; i++) {
+			if (rows[i].parentNode == body) {
+				rows[i].removeAttribute("selected");
+				if (this.enableAlternateRows && idx % 2 == 1) {
+					rows[i].className = this.rowAlternateClass;
+				} else {
+					rows[i].className = "";
+				}
+				idx++;
+			}
+		}
+	}, getObjectFromRow:function (row) {
+		var cells = row.getElementsByTagName("td");
+		var o = {};
+		for (var i = 0; i < this.columns.length; i++) {
+			if (this.columns[i].sortType == "__markup__") {
+				o[this.columns[i].getField()] = cells[i].innerHTML;
+			} else {
+				var text = dojo.html.renderedTextContent(cells[i]);
+				var val = text;
+				if (this.columns[i].getType() != String) {
+					var val = new (this.columns[i].getType())(text);
+				}
+				o[this.columns[i].getField()] = val;
+			}
+		}
+		if (dojo.html.hasAttribute(row, "value")) {
+			o[this.valueField] = dojo.html.getAttribute(row, "value");
+		}
+		return o;
+	}, setSelectionByRow:function (row) {
+		var o = this.getObjectFromRow(row);
+		var b = false;
+		for (var i = 0; i < this.selected.length; i++) {
+			if (this.compare(this.selected[i], o)) {
+				b = true;
+				break;
+			}
+		}
+		if (!b) {
+			this.selected.push(o);
+		}
+	}, parseColumns:function (node) {
+		this.reset();
+		var row = node.getElementsByTagName("tr")[0];
+		var cells = row.getElementsByTagName("td");
+		if (cells.length == 0) {
+			cells = row.getElementsByTagName("th");
+		}
+		for (var i = 0; i < cells.length; i++) {
+			var o = {field:null, format:null, noSort:false, sortType:"String", dataType:String, sortFunction:null, label:null, align:"left", valign:"middle", getField:function () {
+				return this.field || this.label;
+			}, getType:function () {
+				return this.dataType;
+			}};
+			if (dojo.html.hasAttribute(cells[i], "align")) {
+				o.align = dojo.html.getAttribute(cells[i], "align");
+			}
+			if (dojo.html.hasAttribute(cells[i], "valign")) {
+				o.valign = dojo.html.getAttribute(cells[i], "valign");
+			}
+			if (dojo.html.hasAttribute(cells[i], "nosort")) {
+				o.noSort = dojo.html.getAttribute(cells[i], "nosort") == "true";
+			}
+			if (dojo.html.hasAttribute(cells[i], "sortusing")) {
+				var trans = dojo.html.getAttribute(cells[i], "sortusing");
+				var f = this.getTypeFromString(trans);
+				if (f != null && f != window && typeof (f) == "function") {
+					o.sortFunction = f;
+				}
+			}
+			if (dojo.html.hasAttribute(cells[i], "field")) {
+				o.field = dojo.html.getAttribute(cells[i], "field");
+			}
+			if (dojo.html.hasAttribute(cells[i], "format")) {
+				o.format = dojo.html.getAttribute(cells[i], "format");
+			}
+			if (dojo.html.hasAttribute(cells[i], "dataType")) {
+				var sortType = dojo.html.getAttribute(cells[i], "dataType");
+				if (sortType.toLowerCase() == "html" || sortType.toLowerCase() == "markup") {
+					o.sortType = "__markup__";
+					o.noSort = true;
+				} else {
+					var type = this.getTypeFromString(sortType);
+					if (type) {
+						o.sortType = sortType;
+						o.dataType = type;
+					}
+				}
+			}
+			o.label = dojo.html.renderedTextContent(cells[i]);
+			this.columns.push(o);
+			if (dojo.html.hasAttribute(cells[i], "sort")) {
+				this.sortIndex = i;
+				var dir = dojo.html.getAttribute(cells[i], "sort");
+				if (!isNaN(parseInt(dir))) {
+					dir = parseInt(dir);
+					this.sortDirection = (dir != 0) ? 1 : 0;
+				} else {
+					this.sortDirection = (dir.toLowerCase() == "desc") ? 1 : 0;
+				}
+			}
+		}
+	}, parseData:function (data) {
+		this.data = [];
+		this.selected = [];
+		for (var i = 0; i < data.length; i++) {
+			var o = {};
+			for (var j = 0; j < this.columns.length; j++) {
+				var field = this.columns[j].getField();
+				if (this.columns[j].sortType == "__markup__") {
+					o[field] = String(data[i][field]);
+				} else {
+					var type = this.columns[j].getType();
+					var val = data[i][field];
+					var t = this.columns[j].sortType.toLowerCase();
+					if (type == String) {
+						o[field] = val;
+					} else {
+						if (val != null) {
+							o[field] = new type(val);
+						} else {
+							o[field] = new type();
+						}
+					}
+				}
+			}
+			if (data[i][this.valueField] && !o[this.valueField]) {
+				o[this.valueField] = data[i][this.valueField];
+			}
+			this.data.push(o);
+		}
+	}, parseDataFromTable:function (tbody) {
+		this.data = [];
+		this.selected = [];
+		var rows = tbody.getElementsByTagName("tr");
+		for (var i = 0; i < rows.length; i++) {
+			if (dojo.html.getAttribute(rows[i], "ignoreIfParsed") == "true") {
+				continue;
+			}
+			var o = {};
+			var cells = rows[i].getElementsByTagName("td");
+			for (var j = 0; j < this.columns.length; j++) {
+				var field = this.columns[j].getField();
+				if (this.columns[j].sortType == "__markup__") {
+					o[field] = cells[j].innerHTML;
+				} else {
+					var type = this.columns[j].getType();
+					var val = dojo.html.renderedTextContent(cells[j]);
+					if (type == String) {
+						o[field] = val;
+					} else {
+						if (val != null) {
+							o[field] = new type(val);
+						} else {
+							o[field] = new type();
+						}
+					}
+				}
+			}
+			if (dojo.html.hasAttribute(rows[i], "value") && !o[this.valueField]) {
+				o[this.valueField] = dojo.html.getAttribute(rows[i], "value");
+			}
+			this.data.push(o);
+			if (dojo.html.getAttribute(rows[i], "selected") == "true") {
+				this.selected.push(o);
+			}
+		}
+	}, showSelections:function () {
+		var body = this.domNode.getElementsByTagName("tbody")[0];
+		var rows = body.getElementsByTagName("tr");
+		var idx = 0;
+		for (var i = 0; i < rows.length; i++) {
+			if (rows[i].parentNode == body) {
+				if (dojo.html.getAttribute(rows[i], "selected") == "true") {
+					rows[i].className = this.rowSelectedClass;
+				} else {
+					if (this.enableAlternateRows && idx % 2 == 1) {
+						rows[i].className = this.rowAlternateClass;
+					} else {
+						rows[i].className = "";
+					}
+				}
+				idx++;
+			}
+		}
+	}, render:function (bDontPreserve) {
+		var data = [];
+		var body = this.domNode.getElementsByTagName("tbody")[0];
+		if (!bDontPreserve) {
+			this.parseDataFromTable(body);
+		}
+		for (var i = 0; i < this.data.length; i++) {
+			data.push(this.data[i]);
+		}
+		var col = this.columns[this.sortIndex];
+		if (!col.noSort) {
+			var field = col.getField();
+			if (col.sortFunction) {
+				var sort = col.sortFunction;
+			} else {
+				var sort = function (a, b) {
+					if (a[field] > b[field]) {
+						return 1;
+					}
+					if (a[field] < b[field]) {
+						return -1;
+					}
+					return 0;
+				};
+			}
+			data.sort(sort);
+			if (this.sortDirection != 0) {
+				data.reverse();
+			}
+		}
+		while (body.childNodes.length > 0) {
+			body.removeChild(body.childNodes[0]);
+		}
+		for (var i = 0; i < data.length; i++) {
+			var row = document.createElement("tr");
+			dojo.html.disableSelection(row);
+			if (data[i][this.valueField]) {
+				row.setAttribute("value", data[i][this.valueField]);
+			}
+			if (this.isSelected(data[i])) {
+				row.className = this.rowSelectedClass;
+				row.setAttribute("selected", "true");
+			} else {
+				if (this.enableAlternateRows && i % 2 == 1) {
+					row.className = this.rowAlternateClass;
+				}
+			}
+			for (var j = 0; j < this.columns.length; j++) {
+				var cell = document.createElement("td");
+				cell.setAttribute("align", this.columns[j].align);
+				cell.setAttribute("valign", this.columns[j].valign);
+				dojo.html.disableSelection(cell);
+				if (this.sortIndex == j) {
+					cell.className = this.columnSelected;
+				}
+				if (this.columns[j].sortType == "__markup__") {
+					cell.innerHTML = data[i][this.columns[j].getField()];
+					for (var k = 0; k < cell.childNodes.length; k++) {
+						var node = cell.childNodes[k];
+						if (node && node.nodeType == dojo.html.ELEMENT_NODE) {
+							dojo.html.disableSelection(node);
+						}
+					}
+				} else {
+					if (this.columns[j].getType() == Date) {
+						var format = this.defaultDateFormat;
+						if (this.columns[j].format) {
+							format = this.columns[j].format;
+						}
+						cell.appendChild(document.createTextNode(dojo.date.strftime(data[i][this.columns[j].getField()], format)));
+					} else {
+						cell.appendChild(document.createTextNode(data[i][this.columns[j].getField()]));
+					}
+				}
+				row.appendChild(cell);
+			}
+			body.appendChild(row);
+			dojo.event.connect(row, "onclick", this, "onUISelect");
+		}
+		var minRows = parseInt(this.minRows);
+		if (!isNaN(minRows) && minRows > 0 && data.length < minRows) {
+			var mod = 0;
+			if (data.length % 2 == 0) {
+				mod = 1;
+			}
+			var nRows = minRows - data.length;
+			for (var i = 0; i < nRows; i++) {
+				var row = document.createElement("tr");
+				row.setAttribute("ignoreIfParsed", "true");
+				if (this.enableAlternateRows && i % 2 == mod) {
+					row.className = this.rowAlternateClass;
+				}
+				for (var j = 0; j < this.columns.length; j++) {
+					var cell = document.createElement("td");
+					cell.appendChild(document.createTextNode("\xa0"));
+					row.appendChild(cell);
+				}
+				body.appendChild(row);
+			}
+		}
+	}, onSelect:function (e) {
+	}, onUISelect:function (e) {
+		var row = dojo.html.getParentByType(e.target, "tr");
+		var body = dojo.html.getParentByType(row, "tbody");
+		if (this.enableMultipleSelect) {
+			if (e.metaKey || e.ctrlKey) {
+				if (this.isSelected(this.getObjectFromRow(row))) {
+					this.removeFromSelected(this.getObjectFromRow(row));
+					row.removeAttribute("selected");
+				} else {
+					this.setSelectionByRow(row);
+					row.setAttribute("selected", "true");
+				}
+			} else {
+				if (e.shiftKey) {
+					var startRow;
+					var rows = body.getElementsByTagName("tr");
+					for (var i = 0; i < rows.length; i++) {
+						if (rows[i].parentNode == body) {
+							if (rows[i] == row) {
+								break;
+							}
+							if (dojo.html.getAttribute(rows[i], "selected") == "true") {
+								startRow = rows[i];
+							}
+						}
+					}
+					if (!startRow) {
+						startRow = row;
+						for (; i < rows.length; i++) {
+							if (dojo.html.getAttribute(rows[i], "selected") == "true") {
+								row = rows[i];
+								break;
+							}
+						}
+					}
+					this.resetSelections(body);
+					if (startRow == row) {
+						row.setAttribute("selected", "true");
+						this.setSelectionByRow(row);
+					} else {
+						var doSelect = false;
+						for (var i = 0; i < rows.length; i++) {
+							if (rows[i].parentNode == body) {
+								rows[i].removeAttribute("selected");
+								if (rows[i] == startRow) {
+									doSelect = true;
+								}
+								if (doSelect) {
+									this.setSelectionByRow(rows[i]);
+									rows[i].setAttribute("selected", "true");
+								}
+								if (rows[i] == row) {
+									doSelect = false;
+								}
+							}
+						}
+					}
+				} else {
+					this.resetSelections(body);
+					row.setAttribute("selected", "true");
+					this.setSelectionByRow(row);
+				}
+			}
+		} else {
+			this.resetSelections(body);
+			row.setAttribute("selected", "true");
+			this.setSelectionByRow(row);
+		}
+		this.showSelections();
+		this.onSelect(e);
+		e.stopPropagation();
+		e.preventDefault();
+	}, onHeaderClick:function (e) {
+		var oldIndex = this.sortIndex;
+		var oldDirection = this.sortDirection;
+		var source = e.target;
+		var row = dojo.html.getParentByType(source, "tr");
+		var cellTag = "td";
+		if (row.getElementsByTagName(cellTag).length == 0) {
+			cellTag = "th";
+		}
+		var headers = row.getElementsByTagName(cellTag);
+		var header = dojo.html.getParentByType(source, cellTag);
+		for (var i = 0; i < headers.length; i++) {
+			if (headers[i] == header) {
+				if (i != oldIndex) {
+					this.sortIndex = i;
+					this.sortDirection = 0;
+					headers[i].className = this.headerSortDownClass;
+				} else {
+					this.sortDirection = (oldDirection == 0) ? 1 : 0;
+					if (this.sortDirection == 0) {
+						headers[i].className = this.headerSortDownClass;
+					} else {
+						headers[i].className = this.headerSortUpClass;
+					}
+				}
+			} else {
+				headers[i].className = this.headerClass;
+			}
+		}
+		this.render();
+	}, postCreate:function () {
+		var thead = this.domNode.getElementsByTagName("thead")[0];
+		if (this.headClass.length > 0) {
+			thead.className = this.headClass;
+		}
+		dojo.html.disableSelection(this.domNode);
+		this.parseColumns(thead);
+		var header = "td";
+		if (thead.getElementsByTagName(header).length == 0) {
+			header = "th";
+		}
+		var headers = thead.getElementsByTagName(header);
+		for (var i = 0; i < headers.length; i++) {
+			if (!this.columns[i].noSort) {
+				dojo.event.connect(headers[i], "onclick", this, "onHeaderClick");
+			}
+			if (this.sortIndex == i) {
+				if (this.sortDirection == 0) {
+					headers[i].className = this.headerSortDownClass;
+				} else {
+					headers[i].className = this.headerSortUpClass;
+				}
+			}
+		}
+		var tbody = this.domNode.getElementsByTagName("tbody")[0];
+		if (this.tbodyClass.length > 0) {
+			tbody.className = this.tbodyClass;
+		}
+		this.parseDataFromTable(tbody);
+		this.render(true);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/AccordionContainer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -23684,6 +48116,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.AccordionContainer");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.html.*");
@@ -23801,6 +48235,210 @@
 dojo.lang.extend(dojo.widget.Widget, {open:false});
 
 
+__CPAN_FILE__ src/widget/TreeRPCController.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeRPCController"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"], ["require", "dojo.widget.TreeLoadingController"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeRPCController");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.TreeLoadingController");
+	dojo.widget.defineWidget("dojo.widget.TreeRPCController", dojo.widget.TreeLoadingController, {doMove:function (child, newParent, index) {
+		var params = {child:this.getInfo(child), childTree:this.getInfo(child.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), newIndex:index};
+		var success;
+		this.runRPC({url:this.getRPCUrl("move"), load:function (response) {
+			success = this.doMoveProcessResponse(response, child, newParent, index);
+		}, sync:true, lock:[child, newParent], params:params});
+		return success;
+	}, doMoveProcessResponse:function (response, child, newParent, index) {
+		if (!dojo.lang.isUndefined(response.error)) {
+			this.RPCErrorHandler("server", response.error);
+			return false;
+		}
+		var args = [child, newParent, index];
+		return dojo.widget.TreeLoadingController.prototype.doMove.apply(this, args);
+	}, doRemoveNode:function (node, callObj, callFunc) {
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
+		this.runRPC({url:this.getRPCUrl("removeNode"), load:function (response) {
+			this.doRemoveNodeProcessResponse(response, node, callObj, callFunc);
+		}, params:params, lock:[node]});
+	}, doRemoveNodeProcessResponse:function (response, node, callObj, callFunc) {
+		if (!dojo.lang.isUndefined(response.error)) {
+			this.RPCErrorHandler("server", response.error);
+			return false;
+		}
+		if (!response) {
+			return false;
+		}
+		if (response == true) {
+			var args = [node, callObj, callFunc];
+			dojo.widget.TreeLoadingController.prototype.doRemoveNode.apply(this, args);
+			return;
+		} else {
+			if (dojo.lang.isObject(response)) {
+				dojo.raise(response.error);
+			} else {
+				dojo.raise("Invalid response " + response);
+			}
+		}
+	}, doCreateChild:function (parent, index, output, callObj, callFunc) {
+		var params = {tree:this.getInfo(parent.tree), parent:this.getInfo(parent), index:index, data:output};
+		this.runRPC({url:this.getRPCUrl("createChild"), load:function (response) {
+			this.doCreateChildProcessResponse(response, parent, index, callObj, callFunc);
+		}, params:params, lock:[parent]});
+	}, doCreateChildProcessResponse:function (response, parent, index, callObj, callFunc) {
+		if (!dojo.lang.isUndefined(response.error)) {
+			this.RPCErrorHandler("server", response.error);
+			return false;
+		}
+		if (!dojo.lang.isObject(response)) {
+			dojo.raise("Invalid result " + response);
+		}
+		var args = [parent, index, response, callObj, callFunc];
+		dojo.widget.TreeLoadingController.prototype.doCreateChild.apply(this, args);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/ValidationTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ValidationTextbox"], ["require", "dojo.widget.Textbox"], ["require", "dojo.i18n.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ValidationTextbox");
+	dojo.require("dojo.widget.Textbox");
+	dojo.require("dojo.i18n.common");
+	dojo.widget.defineWidget("dojo.widget.ValidationTextbox", dojo.widget.Textbox, function () {
+		this.flags = {};
+	}, {required:false, rangeClass:"range", invalidClass:"invalid", missingClass:"missing", classPrefix:"dojoValidate", size:"", maxlength:"", promptMessage:"", invalidMessage:"", missingMessage:"", rangeMessage:"", listenOnKeyPress:true, htmlfloat:"none", lastCheckedValue:null, templateString:"<span style='float:${this.htmlfloat};'>\n\t<input dojoAttachPoint='textbox' type='${this.type}' dojoAttachEvent='onblur;onfocus;onkeyup'\n\t\tid='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'\n\t\tclass='${this.className}' style=''>\n\t<span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.messages.invalidMessage}</span>\n\t<span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.messages.missingMessage}</span>\n\t<span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.messages.rangeMessage}</span>\n</span>\n", templateCssString:".dojoValidateEmpty{\n\tbackground-color: #00FFFF;\n}\n.dojoValidateValid{\n\tbackground-color: #cfc;\n}\n.dojoValidateInvalid{\n\tbackground-color: #fcc;\n}\n.dojoValidateRange{\n\tbackground-color: #ccf;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Validate.css"), invalidSpan:null, missingSpan:null, rangeSpan:null, getValue:function () {
+		return this.textbox.value;
+	}, setValue:function (value) {
+		this.textbox.value = value;
+		this.update();
+	}, isValid:function () {
+		return true;
+	}, isInRange:function () {
+		return true;
+	}, isEmpty:function () {
+		return (/^\s*$/.test(this.textbox.value));
+	}, isMissing:function () {
+		return (this.required && this.isEmpty());
+	}, update:function () {
+		this.lastCheckedValue = this.textbox.value;
+		this.missingSpan.style.display = "none";
+		this.invalidSpan.style.display = "none";
+		this.rangeSpan.style.display = "none";
+		var empty = this.isEmpty();
+		var valid = true;
+		if (this.promptMessage != this.textbox.value) {
+			valid = this.isValid();
+		}
+		var missing = this.isMissing();
+		if (missing) {
+			this.missingSpan.style.display = "";
+		} else {
+			if (!empty && !valid) {
+				this.invalidSpan.style.display = "";
+			} else {
+				if (!empty && !this.isInRange()) {
+					this.rangeSpan.style.display = "";
+				}
+			}
+		}
+		this.highlight();
+	}, updateClass:function (className) {
+		var pre = this.classPrefix;
+		dojo.html.removeClass(this.textbox, pre + "Empty");
+		dojo.html.removeClass(this.textbox, pre + "Valid");
+		dojo.html.removeClass(this.textbox, pre + "Invalid");
+		dojo.html.addClass(this.textbox, pre + className);
+	}, highlight:function () {
+		if (this.isEmpty()) {
+			this.updateClass("Empty");
+		} else {
+			if (this.isValid() && this.isInRange()) {
+				this.updateClass("Valid");
+			} else {
+				if (this.textbox.value != this.promptMessage) {
+					this.updateClass("Invalid");
+				} else {
+					this.updateClass("Empty");
+				}
+			}
+		}
+	}, onfocus:function (evt) {
+		if (!this.listenOnKeyPress) {
+			this.updateClass("Empty");
+		}
+	}, onblur:function (evt) {
+		this.filter();
+		this.update();
+	}, onkeyup:function (evt) {
+		if (this.listenOnKeyPress) {
+			this.update();
+		} else {
+			if (this.textbox.value != this.lastCheckedValue) {
+				this.updateClass("Empty");
+			}
+		}
+	}, postMixInProperties:function (localProperties, frag) {
+		dojo.widget.ValidationTextbox.superclass.postMixInProperties.apply(this, arguments);
+		this.messages = dojo.i18n.getLocalization("dojo.widget", "validate", this.lang);
+		dojo.lang.forEach(["invalidMessage", "missingMessage", "rangeMessage"], function (prop) {
+			if (this[prop]) {
+				this.messages[prop] = this[prop];
+			}
+		}, this);
+	}, fillInTemplate:function () {
+		dojo.widget.ValidationTextbox.superclass.fillInTemplate.apply(this, arguments);
+		this.textbox.isValid = function () {
+			this.isValid.call(this);
+		};
+		this.textbox.isMissing = function () {
+			this.isMissing.call(this);
+		};
+		this.textbox.isInRange = function () {
+			this.isInRange.call(this);
+		};
+		dojo.html.setClass(this.invalidSpan, this.invalidClass);
+		this.update();
+		this.filter();
+		if (dojo.render.html.ie) {
+			dojo.html.addClass(this.domNode, "ie");
+		}
+		if (dojo.render.html.moz) {
+			dojo.html.addClass(this.domNode, "moz");
+		}
+		if (dojo.render.html.opera) {
+			dojo.html.addClass(this.domNode, "opera");
+		}
+		if (dojo.render.html.safari) {
+			dojo.html.addClass(this.domNode, "safari");
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeNode.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -23812,6 +48450,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeNode");
 dojo.require("dojo.html.*");
 dojo.require("dojo.event.*");
@@ -24047,6 +48687,57 @@
 }});
 
 
+__CPAN_FILE__ src/widget/AnimatedPng.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.AnimatedPng"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.AnimatedPng");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.AnimatedPng", dojo.widget.HtmlWidget, {isContainer:false, width:0, height:0, aniSrc:"", interval:100, _blankSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), templateString:"<img class=\"dojoAnimatedPng\" />", postCreate:function () {
+		this.cellWidth = this.width;
+		this.cellHeight = this.height;
+		var img = new Image();
+		var self = this;
+		img.onload = function () {
+			self._initAni(img.width, img.height);
+		};
+		img.src = this.aniSrc;
+	}, _initAni:function (w, h) {
+		this.domNode.src = this._blankSrc;
+		this.domNode.width = this.cellWidth;
+		this.domNode.height = this.cellHeight;
+		this.domNode.style.backgroundImage = "url(" + this.aniSrc + ")";
+		this.domNode.style.backgroundRepeat = "no-repeat";
+		this.aniCols = Math.floor(w / this.cellWidth);
+		this.aniRows = Math.floor(h / this.cellHeight);
+		this.aniCells = this.aniCols * this.aniRows;
+		this.aniFrame = 0;
+		window.setInterval(dojo.lang.hitch(this, "_tick"), this.interval);
+	}, _tick:function () {
+		this.aniFrame++;
+		if (this.aniFrame == this.aniCells) {
+			this.aniFrame = 0;
+		}
+		var col = this.aniFrame % this.aniCols;
+		var row = Math.floor(this.aniFrame / this.aniCols);
+		var bx = -1 * col * this.cellWidth;
+		var by = -1 * row * this.cellHeight;
+		this.domNode.style.backgroundPosition = bx + "px " + by + "px";
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeSelectorV3.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -24058,6 +48749,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeSelectorV3");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeCommon");
@@ -24096,7 +48789,7 @@
 		}
 	}
 }, initialize:function (args) {
-	for (name in this.eventNamesDefault) {
+	for (var name in this.eventNamesDefault) {
 		if (dojo.lang.isUndefined(this.eventNames[name])) {
 			this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
 		}
@@ -24207,6 +48900,256 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeNode.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeNode"], ["require", "dojo.html.*"], ["require", "dojo.event.*"], ["require", "dojo.io.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeNode");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.widget.defineWidget("dojo.widget.TreeNode", dojo.widget.HtmlWidget, function () {
+		this.actionsDisabled = [];
+	}, {widgetType:"TreeNode", loadStates:{UNCHECKED:"UNCHECKED", LOADING:"LOADING", LOADED:"LOADED"}, actions:{MOVE:"MOVE", REMOVE:"REMOVE", EDIT:"EDIT", ADDCHILD:"ADDCHILD"}, isContainer:true, lockLevel:0, templateString:("<div class=\"dojoTreeNode\"> " + "<span treeNode=\"${this.widgetId}\" class=\"dojoTreeNodeLabel\" dojoAttachPoint=\"labelNode\"> " + "\t\t<span dojoAttachPoint=\"titleNode\" dojoAttachEvent=\"onClick: onTitleClick\" class=\"dojoTreeNodeLabelTitle\">${this.title}</span> " + "</span> " + "<span class=\"dojoTreeNodeAfterLabel\" dojoAttachPoint=\"afterLabelNode\">${this.afterLabel}</span> " + "<div dojoAttachPoint=\"containerNode\" style=\"display:none\"></div> " + "</div>").replace(/(>|<)\s+/g, "$1"), childIconSrc:"", childIconFolderSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/closed.gif"), childIconDocumentSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/document.gif"), childIcon:null, isTreeNode:true, objectId:"", afterLabel:"", afterLabelNode:null, expandIcon:null, title:"", object:"", isFolder:false, labelNode:null, titleNode:null, imgs:null, expandLevel:"", tree:null, depth:0, isExpanded:false, state:null, domNodeInitialized:false, isFirstChild:function () {
+		return this.getParentIndex() == 0 ? true : false;
+	}, isLastChild:function () {
+		return this.getParentIndex() == this.parent.children.length - 1 ? true : false;
+	}, lock:function () {
+		return this.tree.lock.apply(this, arguments);
+	}, unlock:function () {
+		return this.tree.unlock.apply(this, arguments);
+	}, isLocked:function () {
+		return this.tree.isLocked.apply(this, arguments);
+	}, cleanLock:function () {
+		return this.tree.cleanLock.apply(this, arguments);
+	}, actionIsDisabled:function (action) {
+		var _this = this;
+		var disabled = false;
+		if (this.tree.strictFolders && action == this.actions.ADDCHILD && !this.isFolder) {
+			disabled = true;
+		}
+		if (dojo.lang.inArray(_this.actionsDisabled, action)) {
+			disabled = true;
+		}
+		if (this.isLocked()) {
+			disabled = true;
+		}
+		return disabled;
+	}, getInfo:function () {
+		var info = {widgetId:this.widgetId, objectId:this.objectId, index:this.getParentIndex(), isFolder:this.isFolder};
+		return info;
+	}, initialize:function (args, frag) {
+		this.state = this.loadStates.UNCHECKED;
+		for (var i = 0; i < this.actionsDisabled.length; i++) {
+			this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
+		}
+		this.expandLevel = parseInt(this.expandLevel);
+	}, adjustDepth:function (depthDiff) {
+		for (var i = 0; i < this.children.length; i++) {
+			this.children[i].adjustDepth(depthDiff);
+		}
+		this.depth += depthDiff;
+		if (depthDiff > 0) {
+			for (var i = 0; i < depthDiff; i++) {
+				var img = this.tree.makeBlankImg();
+				this.imgs.unshift(img);
+				dojo.html.insertBefore(this.imgs[0], this.domNode.firstChild);
+			}
+		}
+		if (depthDiff < 0) {
+			for (var i = 0; i < -depthDiff; i++) {
+				this.imgs.shift();
+				dojo.html.removeNode(this.domNode.firstChild);
+			}
+		}
+	}, markLoading:function () {
+		this._markLoadingSavedIcon = this.expandIcon.src;
+		this.expandIcon.src = this.tree.expandIconSrcLoading;
+	}, unMarkLoading:function () {
+		if (!this._markLoadingSavedIcon) {
+			return;
+		}
+		var im = new Image();
+		im.src = this.tree.expandIconSrcLoading;
+		if (this.expandIcon.src == im.src) {
+			this.expandIcon.src = this._markLoadingSavedIcon;
+		}
+		this._markLoadingSavedIcon = null;
+	}, setFolder:function () {
+		dojo.event.connect(this.expandIcon, "onclick", this, "onTreeClick");
+		this.expandIcon.src = this.isExpanded ? this.tree.expandIconSrcMinus : this.tree.expandIconSrcPlus;
+		this.isFolder = true;
+	}, createDOMNode:function (tree, depth) {
+		this.tree = tree;
+		this.depth = depth;
+		this.imgs = [];
+		for (var i = 0; i < this.depth + 1; i++) {
+			var img = this.tree.makeBlankImg();
+			this.domNode.insertBefore(img, this.labelNode);
+			this.imgs.push(img);
+		}
+		this.expandIcon = this.imgs[this.imgs.length - 1];
+		this.childIcon = this.tree.makeBlankImg();
+		this.imgs.push(this.childIcon);
+		dojo.html.insertBefore(this.childIcon, this.titleNode);
+		if (this.children.length || this.isFolder) {
+			this.setFolder();
+		} else {
+			this.state = this.loadStates.LOADED;
+		}
+		dojo.event.connect(this.childIcon, "onclick", this, "onIconClick");
+		for (var i = 0; i < this.children.length; i++) {
+			this.children[i].parent = this;
+			var node = this.children[i].createDOMNode(this.tree, this.depth + 1);
+			this.containerNode.appendChild(node);
+		}
+		if (this.children.length) {
+			this.state = this.loadStates.LOADED;
+		}
+		this.updateIcons();
+		this.domNodeInitialized = true;
+		dojo.event.topic.publish(this.tree.eventNames.createDOMNode, {source:this});
+		return this.domNode;
+	}, onTreeClick:function (e) {
+		dojo.event.topic.publish(this.tree.eventNames.treeClick, {source:this, event:e});
+	}, onIconClick:function (e) {
+		dojo.event.topic.publish(this.tree.eventNames.iconClick, {source:this, event:e});
+	}, onTitleClick:function (e) {
+		dojo.event.topic.publish(this.tree.eventNames.titleClick, {source:this, event:e});
+	}, markSelected:function () {
+		dojo.html.addClass(this.titleNode, "dojoTreeNodeLabelSelected");
+	}, unMarkSelected:function () {
+		dojo.html.removeClass(this.titleNode, "dojoTreeNodeLabelSelected");
+	}, updateExpandIcon:function () {
+		if (this.isFolder) {
+			this.expandIcon.src = this.isExpanded ? this.tree.expandIconSrcMinus : this.tree.expandIconSrcPlus;
+		} else {
+			this.expandIcon.src = this.tree.blankIconSrc;
+		}
+	}, updateExpandGrid:function () {
+		if (this.tree.showGrid) {
+			if (this.depth) {
+				this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcL : this.tree.gridIconSrcT);
+			} else {
+				if (this.isFirstChild()) {
+					this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcX : this.tree.gridIconSrcY);
+				} else {
+					this.setGridImage(-2, this.isLastChild() ? this.tree.gridIconSrcL : this.tree.gridIconSrcT);
+				}
+			}
+		} else {
+			this.setGridImage(-2, this.tree.blankIconSrc);
+		}
+	}, updateChildGrid:function () {
+		if ((this.depth || this.tree.showRootGrid) && this.tree.showGrid) {
+			this.setGridImage(-1, (this.children.length && this.isExpanded) ? this.tree.gridIconSrcP : this.tree.gridIconSrcC);
+		} else {
+			if (this.tree.showGrid && !this.tree.showRootGrid) {
+				this.setGridImage(-1, (this.children.length && this.isExpanded) ? this.tree.gridIconSrcZ : this.tree.blankIconSrc);
+			} else {
+				this.setGridImage(-1, this.tree.blankIconSrc);
+			}
+		}
+	}, updateParentGrid:function () {
+		var parent = this.parent;
+		for (var i = 0; i < this.depth; i++) {
+			var idx = this.imgs.length - (3 + i);
+			var img = (this.tree.showGrid && !parent.isLastChild()) ? this.tree.gridIconSrcV : this.tree.blankIconSrc;
+			this.setGridImage(idx, img);
+			parent = parent.parent;
+		}
+	}, updateExpandGridColumn:function () {
+		if (!this.tree.showGrid) {
+			return;
+		}
+		var _this = this;
+		var icon = this.isLastChild() ? this.tree.blankIconSrc : this.tree.gridIconSrcV;
+		dojo.lang.forEach(_this.getDescendants(), function (node) {
+			node.setGridImage(_this.depth, icon);
+		});
+		this.updateExpandGrid();
+	}, updateIcons:function () {
+		this.imgs[0].style.display = this.tree.showRootGrid ? "inline" : "none";
+		this.buildChildIcon();
+		this.updateExpandGrid();
+		this.updateChildGrid();
+		this.updateParentGrid();
+		dojo.profile.stop("updateIcons");
+	}, buildChildIcon:function () {
+		if (this.childIconSrc) {
+			this.childIcon.src = this.childIconSrc;
+		}
+		this.childIcon.style.display = this.childIconSrc ? "inline" : "none";
+	}, setGridImage:function (idx, src) {
+		if (idx < 0) {
+			idx = this.imgs.length + idx;
+		}
+		this.imgs[idx].style.backgroundImage = "url(" + src + ")";
+	}, updateIconTree:function () {
+		this.tree.updateIconTree.call(this);
+	}, expand:function () {
+		if (this.isExpanded) {
+			return;
+		}
+		if (this.children.length) {
+			this.showChildren();
+		}
+		this.isExpanded = true;
+		this.updateExpandIcon();
+		dojo.event.topic.publish(this.tree.eventNames.expand, {source:this});
+	}, collapse:function () {
+		if (!this.isExpanded) {
+			return;
+		}
+		this.hideChildren();
+		this.isExpanded = false;
+		this.updateExpandIcon();
+		dojo.event.topic.publish(this.tree.eventNames.collapse, {source:this});
+	}, hideChildren:function () {
+		this.tree.toggleObj.hide(this.containerNode, this.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onHide"));
+		if (dojo.exists(dojo, "dnd.dragManager.dragObjects") && dojo.dnd.dragManager.dragObjects.length) {
+			dojo.dnd.dragManager.cacheTargetLocations();
+		}
+	}, showChildren:function () {
+		this.tree.toggleObj.show(this.containerNode, this.toggleDuration, this.explodeSrc, dojo.lang.hitch(this, "onShow"));
+		if (dojo.exists(dojo, "dnd.dragManager.dragObjects") && dojo.dnd.dragManager.dragObjects.length) {
+			dojo.dnd.dragManager.cacheTargetLocations();
+		}
+	}, addChild:function () {
+		return this.tree.addChild.apply(this, arguments);
+	}, doAddChild:function () {
+		return this.tree.doAddChild.apply(this, arguments);
+	}, edit:function (props) {
+		dojo.lang.mixin(this, props);
+		if (props.title) {
+			this.titleNode.innerHTML = this.title;
+		}
+		if (props.afterLabel) {
+			this.afterLabelNode.innerHTML = this.afterLabel;
+		}
+		if (props.childIconSrc) {
+			this.buildChildIcon();
+		}
+	}, removeNode:function () {
+		return this.tree.removeNode.apply(this, arguments);
+	}, doRemoveNode:function () {
+		return this.tree.doRemoveNode.apply(this, arguments);
+	}, toString:function () {
+		return "[" + this.widgetType + " Tree:" + this.tree + " ID:" + this.widgetId + " Title:" + this.title + "]";
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/PageContainer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -24218,6 +49161,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.PageContainer");
 dojo.require("dojo.lang.func");
 dojo.require("dojo.widget.*");
@@ -24420,6 +49365,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeDeselectOnDblselect");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.TreeSelectorV3");
@@ -24443,6 +49390,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DebugConsole");
 dojo.require("dojo.widget.Widget");
 dojo.require("dojo.widget.*");
@@ -24466,6 +49415,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.DomWidget");
 dojo.require("dojo.html.util");
@@ -24567,6 +49518,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ShowAction");
 dojo.require("dojo.widget.*");
 dojo.widget.defineWidget("dojo.widget.ShowAction", dojo.widget.HtmlWidget, {on:"", action:"fade", duration:350, from:"", to:"", auto:"false", postMixInProperties:function () {
@@ -24576,6 +49529,277 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Form.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Form"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Form");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("dojo.widget.Form", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onSubmit:onSubmit'></form>", formElements:[], ignoreNullValues:false, postCreate:function (args, frag) {
+		for (var key in args) {
+			if (key == "dojotype") {
+				continue;
+			}
+			var attr = document.createAttribute(key);
+			attr.nodeValue = args[key];
+			this.containerNode.setAttributeNode(attr);
+		}
+	}, _createRepeaters:function (obj, widget) {
+		for (var i = 0; i < widget.children.length; ++i) {
+			if (widget.children[i].widgetType == "RepeaterContainer") {
+				var rIndex = widget.children[i].index;
+				var rIndexPos = rIndex.indexOf("%{index}");
+				rIndex = rIndex.substr(0, rIndexPos - 1);
+				var myObj = this._getObject(obj, rIndex);
+				if (typeof (myObj) == "object" && myObj.length == 0) {
+					myObj = new Array();
+				}
+				var rowCount = widget.children[i].getRowCount();
+				for (var j = 0, len = rowCount; j < len; ++j) {
+					widget.children[i].deleteRow(0);
+				}
+				for (var j = 0; j < myObj.length; j++) {
+					widget.children[i].addRow(false);
+				}
+			}
+			if (widget.children[i].isContainer) {
+				this._createRepeaters(obj, widget.children[i]);
+			}
+		}
+	}, _createFormElements:function () {
+		if (dojo.render.html.safari) {
+			this.formElements = [];
+			var elems = ["INPUT", "SELECT", "TEXTAREA"];
+			for (var k = 0; k < elems.length; k++) {
+				var list = this.containerNode.getElementsByTagName(elems[k]);
+				for (var j = 0, len2 = list.length; j < len2; j++) {
+					this.formElements.push(list[j]);
+				}
+			}
+		} else {
+			this.formElements = this.containerNode.elements;
+		}
+	}, onSubmit:function (e) {
+		e.preventDefault();
+	}, submit:function () {
+		this.containerNode.submit();
+	}, _getFormElement:function (name) {
+		if (dojo.render.html.ie) {
+			for (var i = 0, len = this.formElements.length; i < len; i++) {
+				var element = this.formElements[i];
+				if (element.name == name) {
+					return element;
+				}
+			}
+		} else {
+			var elem = this.formElements[name];
+			if (typeof (elem) != "undefined") {
+				return elem;
+			}
+		}
+		return null;
+	}, _getObject:function (obj, searchString) {
+		var namePath = [];
+		namePath = searchString.split(".");
+		var myObj = obj;
+		var name = namePath[namePath.length - 1];
+		for (var j = 0, len = namePath.length; j < len; ++j) {
+			var p = namePath[j];
+			if (typeof (myObj[p]) == "undefined") {
+				myObj[p] = {};
+			}
+			myObj = myObj[p];
+		}
+		return myObj;
+	}, _setToContainers:function (obj, widget) {
+		for (var i = 0, len = widget.children.length; i < len; ++i) {
+			var currentWidget = widget.children[i];
+			if (currentWidget.widgetType == "Repeater") {
+				for (var j = 0, len = currentWidget.getRowCount(); j < len; ++j) {
+					currentWidget._initRow(j);
+				}
+			}
+			if (currentWidget.isContainer) {
+				this._setToContainers(obj, currentWidget);
+				continue;
+			}
+			switch (currentWidget.widgetType) {
+			  case "Checkbox":
+				currentWidget.setValue(currentWidget.inputNode.checked);
+				break;
+			  case "DropdownDatePicker":
+				currentWidget.setValue(currentWidget.getValue());
+				break;
+			  case "Select":
+				continue;
+				break;
+			  case "ComboBox":
+				continue;
+				break;
+			  default:
+				break;
+			}
+		}
+	}, setValues:function (obj) {
+		this._createFormElements();
+		this._createRepeaters(obj, this);
+		for (var i = 0, len = this.formElements.length; i < len; i++) {
+			var element = this.formElements[i];
+			if (element.name == "") {
+				continue;
+			}
+			var namePath = new Array();
+			namePath = element.name.split(".");
+			var myObj = obj;
+			var name = namePath[namePath.length - 1];
+			for (var j = 1, len2 = namePath.length; j < len2; ++j) {
+				var p = namePath[j - 1];
+				if (typeof (myObj[p]) == "undefined") {
+					myObj = undefined;
+					break;
+				}
+				myObj = myObj[p];
+			}
+			if (typeof (myObj) == "undefined") {
+				continue;
+			}
+			if (typeof (myObj[name]) == "undefined" && this.ignoreNullValues) {
+				continue;
+			}
+			var type = element.type;
+			if (type == "hidden" || type == "text" || type == "textarea" || type == "password") {
+				type = "text";
+			}
+			switch (type) {
+			  case "checkbox":
+				element.checked = false;
+				if (typeof (myObj[name]) == "undefined") {
+					continue;
+				}
+				for (var j = 0, len2 = myObj[name].length; j < len2; ++j) {
+					if (element.value == myObj[name][j]) {
+						element.checked = true;
+					}
+				}
+				break;
+			  case "radio":
+				element.checked = false;
+				if (typeof (myObj[name]) == "undefined") {
+					continue;
+				}
+				if (myObj[name] == element.value) {
+					element.checked = true;
+				}
+				break;
+			  case "select-multiple":
+				element.selectedIndex = -1;
+				for (var j = 0, len2 = element.options.length; j < len2; ++j) {
+					for (var k = 0, len3 = myObj[name].length; k < len3; ++k) {
+						if (element.options[j].value == myObj[name][k]) {
+							element.options[j].selected = true;
+						}
+					}
+				}
+				break;
+			  case "select-one":
+				element.selectedIndex = "0";
+				for (var j = 0, len2 = element.options.length; j < len2; ++j) {
+					if (element.options[j].value == myObj[name]) {
+						element.options[j].selected = true;
+					} else {
+					}
+				}
+				break;
+			  case "text":
+				var value = "";
+				if (typeof (myObj[name]) != "undefined") {
+					value = myObj[name];
+				}
+				element.value = value;
+				break;
+			  default:
+				dojo.debug("Not supported type (" + type + ")");
+				break;
+			}
+		}
+		this._setToContainers(obj, this);
+	}, getValues:function () {
+		this._createFormElements();
+		var obj = {};
+		for (var i = 0, len = this.formElements.length; i < len; i++) {
+			var elm = this.formElements[i];
+			var namePath = [];
+			if (elm.name == "") {
+				continue;
+			}
+			namePath = elm.name.split(".");
+			var myObj = obj;
+			var name = namePath[namePath.length - 1];
+			for (var j = 1, len2 = namePath.length; j < len2; ++j) {
+				var nameIndex = null;
+				var p = namePath[j - 1];
+				var nameA = p.split("[");
+				if (nameA.length > 1) {
+					if (typeof (myObj[nameA[0]]) == "undefined") {
+						myObj[nameA[0]] = [];
+					}
+					nameIndex = parseInt(nameA[1]);
+					if (typeof (myObj[nameA[0]][nameIndex]) == "undefined") {
+						myObj[nameA[0]][nameIndex] = {};
+					}
+				} else {
+					if (typeof (myObj[nameA[0]]) == "undefined") {
+						myObj[nameA[0]] = {};
+					}
+				}
+				if (nameA.length == 1) {
+					myObj = myObj[nameA[0]];
+				} else {
+					myObj = myObj[nameA[0]][nameIndex];
+				}
+			}
+			if ((elm.type != "select-multiple" && elm.type != "checkbox" && elm.type != "radio") || (elm.type == "radio" && elm.checked)) {
+				if (name == name.split("[")[0]) {
+					myObj[name] = elm.value;
+				} else {
+				}
+			} else {
+				if (elm.type == "checkbox" && elm.checked) {
+					if (typeof (myObj[name]) == "undefined") {
+						myObj[name] = [];
+					}
+					myObj[name].push(elm.value);
+				} else {
+					if (elm.type == "select-multiple") {
+						if (typeof (myObj[name]) == "undefined") {
+							myObj[name] = [];
+						}
+						for (var jdx = 0, len3 = elm.options.length; jdx < len3; ++jdx) {
+							if (elm.options[jdx].selected) {
+								myObj[name].push(elm.options[jdx].value);
+							}
+						}
+					}
+				}
+			}
+			name = undefined;
+		}
+		return obj;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -24587,10 +49811,158 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.xml.Parse", "dojo.widget.Widget", "dojo.widget.Parse", "dojo.widget.Manager"], browser:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], dashboard:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], svg:["dojo.widget.SvgWidget"], rhino:["dojo.widget.SwtWidget"]});
 dojo.provide("dojo.widget.*");
 
 
+__CPAN_FILE__ src/widget/Clock.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Clock"], ["require", "dojo.widget.*"], ["require", "dojo.gfx.*"], ["require", "dojo.uri.Uri"], ["require", "dojo.lang.common"], ["require", "dojo.lang.timing.Timer"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Clock");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.gfx.*");
+	dojo.require("dojo.uri.Uri");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.timing.Timer");
+	dojo.widget.defineWidget("dojo.widget.Clock", dojo.widget.HtmlWidget, function () {
+		var self = this;
+		this.timeZoneOffset = 0;
+		this.label = "";
+		this.date = new Date();
+		this.handColor = "#788598";
+		this.handStroke = "#6f7b8c";
+		this.secondHandColor = [201, 4, 5, 0.8];
+		this.topLabelColor = "#efefef";
+		this.labelColor = "#fff";
+		this.timer = new dojo.lang.timing.Timer(1000);
+		this.center = {x:75, y:75};
+		this.hands = {hour:null, minute:null, second:null};
+		this.shadows = {hour:{shadow:null, shift:{dx:2, dy:2}}, minute:{shadow:null, shift:{dx:2, dy:3}}, second:{shadow:null, shift:{dx:4, dy:4}}};
+		this.image = dojo.uri.moduleUri("dojo.widget", "templates/images/clock.png");
+		this.surface = null;
+		this.labelNode = null;
+		this.topLabelNode = null;
+		this.draw = function () {
+			self.date = new Date();
+			var h = (self.date.getHours() + self.timeZoneOffset) % 12;
+			var m = self.date.getMinutes();
+			var s = self.date.getSeconds();
+			self.placeHour(h, m, s);
+			self.placeMinute(m, s);
+			self.placeSecond(s);
+			self.topLabelNode.innerHTML = ((self.date.getHours() + self.timeZoneOffset) > 11) ? "PM" : "AM";
+		};
+		this.timer.onTick = self.draw;
+	}, {set:function (dt) {
+		this.date = dt;
+		if (!this.timer.isRunning) {
+			this.draw();
+		}
+	}, start:function () {
+		this.timer.start();
+	}, stop:function () {
+		this.timer.stop();
+	}, _initPoly:function (parent, points) {
+		var path = parent.createPath();
+		var first = true;
+		dojo.lang.forEach(points, function (c) {
+			if (first) {
+				path.moveTo(c.x, c.y);
+				first = false;
+			} else {
+				path.lineTo(c.x, c.y);
+			}
+		});
+		return path;
+	}, _placeHand:function (shape, angle, shift) {
+		var move = {dx:this.center.x + (shift ? shift.dx : 0), dy:this.center.y + (shift ? shift.dy : 0)};
+		return shape.setTransform([move, dojo.gfx.matrix.rotateg(-angle)]);
+	}, placeHour:function (h, m, s) {
+		var angle = 30 * (h + m / 60 + s / 3600);
+		this._placeHand(this.hands.hour, angle);
+		this._placeHand(this.shadows.hour.shadow, angle, this.shadows.hour.shift);
+	}, placeMinute:function (m, s) {
+		var angle = 6 * (m + s / 60);
+		this._placeHand(this.hands.minute, angle);
+		this._placeHand(this.shadows.minute.shadow, angle, this.shadows.minute.shift);
+	}, placeSecond:function (s) {
+		var angle = 6 * s;
+		this._placeHand(this.hands.second, angle);
+		this._placeHand(this.shadows.second.shadow, angle, this.shadows.second.shift);
+	}, init:function () {
+		if (this.domNode.style.position != "absolute") {
+			this.domNode.style.position = "relative";
+		}
+		while (this.domNode.childNodes.length > 0) {
+			this.domNode.removeChild(this.domNode.childNodes[0]);
+		}
+		this.domNode.style.width = "150px";
+		this.domNode.style.height = "150px";
+		this.surface = dojo.gfx.createSurface(this.domNode, 150, 150);
+		this.surface.createRect({width:150, height:150});
+		this.surface.createImage({width:150, height:150, src:this.image + ""});
+		var hP = [{x:-3, y:-4}, {x:3, y:-4}, {x:1, y:-27}, {x:-1, y:-27}, {x:-3, y:-4}];
+		var mP = [{x:-3, y:-4}, {x:3, y:-4}, {x:1, y:-38}, {x:-1, y:-38}, {x:-3, y:-4}];
+		var sP = [{x:-2, y:-2}, {x:2, y:-2}, {x:1, y:-45}, {x:-1, y:-45}, {x:-2, y:-2}];
+		this.shadows.hour.shadow = this._initPoly(this.surface, hP).setFill([0, 0, 0, 0.1]);
+		this.hands.hour = this._initPoly(this.surface, hP).setStroke({color:this.handStroke, width:1}).setFill({type:"linear", x1:0, y1:0, x2:0, y2:-27, colors:[{offset:0, color:"#fff"}, {offset:0.33, color:this.handColor}]});
+		this.shadows.minute.shadow = this._initPoly(this.surface, mP).setFill([0, 0, 0, 0.1]);
+		this.hands.minute = this._initPoly(this.surface, mP).setStroke({color:this.handStroke, width:1}).setFill({type:"linear", x1:0, y1:0, x2:0, y2:-38, colors:[{offset:0, color:"#fff"}, {offset:0.33, color:this.handColor}]});
+		this.surface.createCircle({r:6}).setStroke({color:this.handStroke, width:2}).setFill("#fff").setTransform({dx:75, dy:75});
+		this.shadows.second.shadow = this._initPoly(this.surface, sP).setFill([0, 0, 0, 0.1]);
+		this.hands.second = this._initPoly(this.surface, sP).setFill(this.secondHandColor);
+		this.surface.createCircle({r:4}).setFill(this.secondHandColor).setTransform({dx:75, dy:75});
+		this.topLabelNode = document.createElement("div");
+		with (this.topLabelNode.style) {
+			position = "absolute";
+			top = "3px";
+			left = "0px";
+			color = this.topLabelColor;
+			textAlign = "center";
+			width = "150px";
+			fontFamily = "sans-serif";
+			fontSize = "11px";
+			textTransform = "uppercase";
+			fontWeight = "bold";
+		}
+		this.topLabelNode.innerHTML = ((this.date.getHours() + this.timeZoneOffset) > 11) ? "PM" : "AM";
+		this.domNode.appendChild(this.topLabelNode);
+		this.labelNode = document.createElement("div");
+		with (this.labelNode.style) {
+			position = "absolute";
+			top = "134px";
+			left = "0px";
+			color = this.labelColor;
+			textAlign = "center";
+			width = "150px";
+			fontFamily = "sans-serif";
+			fontSize = "10px";
+			textTransform = "uppercase";
+			fontWeight = "bold";
+		}
+		this.labelNode.innerHTML = this.label || "&nbsp;";
+		this.domNode.appendChild(this.labelNode);
+		this.draw();
+	}, postCreate:function () {
+		this.init();
+		this.start();
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Menu2.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -24602,6 +49974,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Menu2");
 dojo.require("dojo.widget.PopupContainer");
 dojo.declare("dojo.widget.MenuBase", null, function () {
@@ -25046,6 +50420,700 @@
 };
 
 
+__CPAN_FILE__ src/widget/FloatingPane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.FloatingPane"], ["require", "dojo.widget.*"], ["require", "dojo.widget.Manager"], ["require", "dojo.html.*"], ["require", "dojo.html.layout"], ["require", "dojo.html.iframe"], ["require", "dojo.html.selection"], ["require", "dojo.lfx.shadow"], ["require", "dojo.widget.html.layout"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.dnd.HtmlDragMove"], ["require", "dojo.widget.Dialog"], ["require", "dojo.widget.ResizeHandle"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.FloatingPane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.Manager");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.iframe");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.lfx.shadow");
+	dojo.require("dojo.widget.html.layout");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.dnd.HtmlDragMove");
+	dojo.require("dojo.widget.Dialog");
+	dojo.require("dojo.widget.ResizeHandle");
+	dojo.declare("dojo.widget.FloatingPaneBase", null, {title:"", iconSrc:"", hasShadow:false, constrainToContainer:false, taskBarId:"", resizable:true, titleBarDisplay:true, windowState:"normal", displayCloseAction:false, displayMinimizeAction:false, displayMaximizeAction:false, _max_taskBarConnectAttempts:5, _taskBarConnectAttempts:0, templateString:"<div id=\"${this.widgetId}\" dojoAttachEvent=\"onMouseDown\" class=\"dojoFloatingPane\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dojoFloatingPaneTitleBar\"  style=\"display:none\">\n\t  \t<img dojoAttachPoint=\"titleBarIcon\"  class=\"dojoFloatingPaneTitleBarIcon\">\n\t\t<div dojoAttachPoint=\"closeAction\" dojoAttachEvent=\"onClick:closeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneCloseIcon\"></div>\n\t\t<div dojoAttachPoint=\"restoreAction\" dojoAttachEvent=\"onClick:restoreWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneRestoreIcon\"></div>\n\t\t<div dojoAttachPoint=\"maximizeAction\" dojoAttachEvent=\"onClick:maximizeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneMaximizeIcon\"></div>\n\t\t<div dojoAttachPoint=\"minimizeAction\" dojoAttachEvent=\"onClick:minimizeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneMinimizeIcon\"></div>\n\t  \t<div dojoAttachPoint=\"titleBarText\" class=\"dojoFloatingPaneTitleText\">${this.title}</div>\n\t</div>\n\n\t<div id=\"${this.widgetId}_container\" dojoAttachPoint=\"containerNode\" class=\"dojoFloatingPaneClient\"></div>\n\n\t<div dojoAttachPoint=\"resizeBar\" class=\"dojoFloatingPaneResizebar\" style=\"display:none\"></div>\n</div>\n", templateCssString:"\n/********** Outer Window ***************/\n\n.dojoFloatingPane {\n\t/* essential css */\n\tposition: absolute;\n\toverflow: visible;\t\t/* so drop shadow is displayed */\n\tz-index: 10;\n\n\t/* styling css */\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tbackground-color: ThreeDFace;\n}\n\n\n/********** Title Bar ****************/\n\n.dojoFloatingPaneTitleBar {\n\tvertical-align: top;\n\tmargin: 2px 2px 2px 2px;\n\tz-index: 10;\n\tbackground-color: #7596c6;\n\tcursor: default;\n\toverflow: hidden;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tvertical-align: middle;\n}\n\n.dojoFloatingPaneTitleText {\n\tfloat: left;\n\tpadding: 2px 4px 2px 2px;\n\twhite-space: nowrap;\n\tcolor: CaptionText;\n\tfont: small-caption;\n}\n\n.dojoTitleBarIcon {\n\tfloat: left;\n\theight: 22px;\n\twidth: 22px;\n\tvertical-align: middle;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\n}\n\n.dojoFloatingPaneActions{\n\tfloat: right;\n\tposition: absolute;\n\tright: 2px;\n\ttop: 2px;\n\tvertical-align: middle;\n}\n\n\n.dojoFloatingPaneActionItem {\n\tvertical-align: middle;\n\tmargin-right: 1px;\n\theight: 22px;\n\twidth: 22px;\n}\n\n\n.dojoFloatingPaneTitleBarIcon {\n\t/* essential css */\n\tfloat: left;\n\n\t/* styling css */\n\tmargin-left: 2px;\n\tmargin-right: 4px;\n\theight: 22px;\n}\n\n/* minimize/maximize icons are specified by CSS only */\n.dojoFloatingPaneMinimizeIcon,\n.dojoFloatingPaneMaximizeIcon,\n.dojoFloatingPaneRestoreIcon,\n.dojoFloatingPaneCloseIcon {\n\tvertical-align: middle;\n\theight: 22px;\n\twidth: 22px;\n\tfloat: right;\n}\n.dojoFloatingPaneMinimizeIcon {\n\tbackground-image: url(images/floatingPaneMinimize.gif);\n}\n.dojoFloatingPaneMaximizeIcon {\n\tbackground-image: url(images/floatingPaneMaximize.gif);\n}\n.dojoFloatingPaneRestoreIcon {\n\tbackground-image: url(images/floatingPaneRestore.gif);\n}\n.dojoFloatingPaneCloseIcon {\n\tbackground-image: url(images/floatingPaneClose.gif);\n}\n\n/* bar at bottom of window that holds resize handle */\n.dojoFloatingPaneResizebar {\n\tz-index: 10;\n\theight: 13px;\n\tbackground-color: ThreeDFace;\n}\n\n/************* Client Area ***************/\n\n.dojoFloatingPaneClient {\n\tposition: relative;\n\tz-index: 10;\n\tborder: 1px solid;\n\tborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n\tmargin: 2px;\n\tbackground-color: ThreeDFace;\n\tpadding: 8px;\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\tfont-size: 12px;\n\toverflow: auto;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/FloatingPane.css"), fillInFloatingPaneTemplate:function (args, frag) {
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+		dojo.body().appendChild(this.domNode);
+		if (!this.isShowing()) {
+			this.windowState = "minimized";
+		}
+		if (this.iconSrc == "") {
+			dojo.html.removeNode(this.titleBarIcon);
+		} else {
+			this.titleBarIcon.src = this.iconSrc.toString();
+		}
+		if (this.titleBarDisplay) {
+			this.titleBar.style.display = "";
+			dojo.html.disableSelection(this.titleBar);
+			this.titleBarIcon.style.display = (this.iconSrc == "" ? "none" : "");
+			this.minimizeAction.style.display = (this.displayMinimizeAction ? "" : "none");
+			this.maximizeAction.style.display = (this.displayMaximizeAction && this.windowState != "maximized" ? "" : "none");
+			this.restoreAction.style.display = (this.displayMaximizeAction && this.windowState == "maximized" ? "" : "none");
+			this.closeAction.style.display = (this.displayCloseAction ? "" : "none");
+			this.drag = new dojo.dnd.HtmlDragMoveSource(this.domNode);
+			if (this.constrainToContainer) {
+				this.drag.constrainTo();
+			}
+			this.drag.setDragHandle(this.titleBar);
+			var self = this;
+			dojo.event.topic.subscribe("dragMove", function (info) {
+				if (info.source.domNode == self.domNode) {
+					dojo.event.topic.publish("floatingPaneMove", {source:self});
+				}
+			});
+		}
+		if (this.resizable) {
+			this.resizeBar.style.display = "";
+			this.resizeHandle = dojo.widget.createWidget("ResizeHandle", {targetElmId:this.widgetId, id:this.widgetId + "_resize"});
+			this.resizeBar.appendChild(this.resizeHandle.domNode);
+		}
+		if (this.hasShadow) {
+			this.shadow = new dojo.lfx.shadow(this.domNode);
+		}
+		this.bgIframe = new dojo.html.BackgroundIframe(this.domNode);
+		if (this.taskBarId) {
+			this._taskBarSetup();
+		}
+		dojo.body().removeChild(this.domNode);
+	}, postCreate:function () {
+		if (dojo.hostenv.post_load_) {
+			this._setInitialWindowState();
+		} else {
+			dojo.addOnLoad(this, "_setInitialWindowState");
+		}
+	}, maximizeWindow:function (evt) {
+		var mb = dojo.html.getMarginBox(this.domNode);
+		this.previous = {width:mb.width || this.width, height:mb.height || this.height, left:this.domNode.style.left, top:this.domNode.style.top, bottom:this.domNode.style.bottom, right:this.domNode.style.right};
+		if (this.domNode.parentNode.style.overflow.toLowerCase() != "hidden") {
+			this.parentPrevious = {overflow:this.domNode.parentNode.style.overflow};
+			dojo.debug(this.domNode.parentNode.style.overflow);
+			this.domNode.parentNode.style.overflow = "hidden";
+		}
+		this.domNode.style.left = dojo.html.getPixelValue(this.domNode.parentNode, "padding-left", true) + "px";
+		this.domNode.style.top = dojo.html.getPixelValue(this.domNode.parentNode, "padding-top", true) + "px";
+		if ((this.domNode.parentNode.nodeName.toLowerCase() == "body")) {
+			var viewport = dojo.html.getViewport();
+			var padding = dojo.html.getPadding(dojo.body());
+			this.resizeTo(viewport.width - padding.width, viewport.height - padding.height);
+		} else {
+			var content = dojo.html.getContentBox(this.domNode.parentNode);
+			this.resizeTo(content.width, content.height);
+		}
+		this.maximizeAction.style.display = "none";
+		this.restoreAction.style.display = "";
+		if (this.resizeHandle) {
+			this.resizeHandle.domNode.style.display = "none";
+		}
+		this.drag.setDragHandle(null);
+		this.windowState = "maximized";
+	}, minimizeWindow:function (evt) {
+		this.hide();
+		for (var attr in this.parentPrevious) {
+			this.domNode.parentNode.style[attr] = this.parentPrevious[attr];
+		}
+		this.lastWindowState = this.windowState;
+		this.windowState = "minimized";
+	}, restoreWindow:function (evt) {
+		if (this.windowState == "minimized") {
+			this.show();
+			if (this.lastWindowState == "maximized") {
+				this.domNode.parentNode.style.overflow = "hidden";
+				this.windowState = "maximized";
+			} else {
+				this.windowState = "normal";
+			}
+		} else {
+			if (this.windowState == "maximized") {
+				for (var attr in this.previous) {
+					this.domNode.style[attr] = this.previous[attr];
+				}
+				for (var attr in this.parentPrevious) {
+					this.domNode.parentNode.style[attr] = this.parentPrevious[attr];
+				}
+				this.resizeTo(this.previous.width, this.previous.height);
+				this.previous = null;
+				this.parentPrevious = null;
+				this.restoreAction.style.display = "none";
+				this.maximizeAction.style.display = this.displayMaximizeAction ? "" : "none";
+				if (this.resizeHandle) {
+					this.resizeHandle.domNode.style.display = "";
+				}
+				this.drag.setDragHandle(this.titleBar);
+				this.windowState = "normal";
+			} else {
+			}
+		}
+	}, toggleDisplay:function () {
+		if (this.windowState == "minimized") {
+			this.restoreWindow();
+		} else {
+			this.minimizeWindow();
+		}
+	}, closeWindow:function (evt) {
+		dojo.html.removeNode(this.domNode);
+		this.destroy();
+	}, onMouseDown:function (evt) {
+		this.bringToTop();
+	}, bringToTop:function () {
+		var floatingPanes = dojo.widget.manager.getWidgetsByType(this.widgetType);
+		var windows = [];
+		for (var x = 0; x < floatingPanes.length; x++) {
+			if (this.widgetId != floatingPanes[x].widgetId) {
+				windows.push(floatingPanes[x]);
+			}
+		}
+		windows.sort(function (a, b) {
+			return a.domNode.style.zIndex - b.domNode.style.zIndex;
+		});
+		windows.push(this);
+		var floatingPaneStartingZ = 100;
+		for (x = 0; x < windows.length; x++) {
+			windows[x].domNode.style.zIndex = floatingPaneStartingZ + x * 2;
+		}
+	}, _setInitialWindowState:function () {
+		if (this.isShowing()) {
+			this.width = -1;
+			var mb = dojo.html.getMarginBox(this.domNode);
+			this.resizeTo(mb.width, mb.height);
+		}
+		if (this.windowState == "maximized") {
+			this.maximizeWindow();
+			this.show();
+			return;
+		}
+		if (this.windowState == "normal") {
+			this.show();
+			return;
+		}
+		if (this.windowState == "minimized") {
+			this.hide();
+			return;
+		}
+		this.windowState = "minimized";
+	}, _taskBarSetup:function () {
+		var taskbar = dojo.widget.getWidgetById(this.taskBarId);
+		if (!taskbar) {
+			if (this._taskBarConnectAttempts < this._max_taskBarConnectAttempts) {
+				dojo.lang.setTimeout(this, this._taskBarSetup, 50);
+				this._taskBarConnectAttempts++;
+			} else {
+				dojo.debug("Unable to connect to the taskBar");
+			}
+			return;
+		}
+		taskbar.addChild(this);
+	}, showFloatingPane:function () {
+		this.bringToTop();
+	}, onFloatingPaneShow:function () {
+		var mb = dojo.html.getMarginBox(this.domNode);
+		this.resizeTo(mb.width, mb.height);
+	}, resizeTo:function (width, height) {
+		dojo.html.setMarginBox(this.domNode, {width:width, height:height});
+		dojo.widget.html.layout(this.domNode, [{domNode:this.titleBar, layoutAlign:"top"}, {domNode:this.resizeBar, layoutAlign:"bottom"}, {domNode:this.containerNode, layoutAlign:"client"}]);
+		dojo.widget.html.layout(this.containerNode, this.children, "top-bottom");
+		this.bgIframe.onResized();
+		if (this.shadow) {
+			this.shadow.size(width, height);
+		}
+		this.onResized();
+	}, checkSize:function () {
+	}, destroyFloatingPane:function () {
+		if (this.resizeHandle) {
+			this.resizeHandle.destroy();
+			this.resizeHandle = null;
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.FloatingPane", [dojo.widget.ContentPane, dojo.widget.FloatingPaneBase], {fillInTemplate:function (args, frag) {
+		this.fillInFloatingPaneTemplate(args, frag);
+		dojo.widget.FloatingPane.superclass.fillInTemplate.call(this, args, frag);
+	}, postCreate:function () {
+		dojo.widget.FloatingPaneBase.prototype.postCreate.apply(this, arguments);
+		dojo.widget.FloatingPane.superclass.postCreate.apply(this, arguments);
+	}, show:function () {
+		dojo.widget.FloatingPane.superclass.show.apply(this, arguments);
+		this.showFloatingPane();
+	}, onShow:function () {
+		dojo.widget.FloatingPane.superclass.onShow.call(this);
+		this.onFloatingPaneShow();
+	}, destroy:function () {
+		this.destroyFloatingPane();
+		dojo.widget.FloatingPane.superclass.destroy.apply(this, arguments);
+	}});
+	dojo.widget.defineWidget("dojo.widget.ModalFloatingPane", [dojo.widget.FloatingPane, dojo.widget.ModalDialogBase], {windowState:"minimized", displayCloseAction:true, postCreate:function () {
+		dojo.widget.ModalDialogBase.prototype.postCreate.call(this);
+		dojo.widget.ModalFloatingPane.superclass.postCreate.call(this);
+	}, show:function () {
+		this.showModalDialog();
+		dojo.widget.ModalFloatingPane.superclass.show.apply(this, arguments);
+		this.bg.style.zIndex = this.domNode.style.zIndex - 1;
+	}, hide:function () {
+		this.hideModalDialog();
+		dojo.widget.ModalFloatingPane.superclass.hide.apply(this, arguments);
+	}, closeWindow:function () {
+		this.hide();
+		dojo.widget.ModalFloatingPane.superclass.closeWindow.apply(this, arguments);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor"], ["require", "dojo.io.*"], ["require", "dojo.widget.*"], ["require", "dojo.widget.Toolbar"], ["require", "dojo.widget.RichText"], ["require", "dojo.widget.ColorPalette"], ["require", "dojo.string.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor");
+	dojo.deprecated("dojo.widget.Editor", "is replaced by dojo.widget.Editor2", "0.5");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.Toolbar");
+	dojo.require("dojo.widget.RichText");
+	dojo.require("dojo.widget.ColorPalette");
+	dojo.require("dojo.string.extras");
+	dojo.widget.tags.addParseTreeHandler("dojo:Editor");
+	dojo.widget.Editor = function () {
+		dojo.widget.HtmlWidget.call(this);
+		this.contentFilters = [];
+		this._toolbars = [];
+	};
+	dojo.inherits(dojo.widget.Editor, dojo.widget.HtmlWidget);
+	dojo.widget.Editor.itemGroups = {textGroup:["bold", "italic", "underline", "strikethrough"], blockGroup:["formatBlock", "fontName", "fontSize"], justifyGroup:["justifyleft", "justifycenter", "justifyright"], commandGroup:["save", "cancel"], colorGroup:["forecolor", "hilitecolor"], listGroup:["insertorderedlist", "insertunorderedlist"], indentGroup:["outdent", "indent"], linkGroup:["createlink", "insertimage", "inserthorizontalrule"]};
+	dojo.widget.Editor.formatBlockValues = {"Normal":"p", "Main heading":"h2", "Sub heading":"h3", "Sub sub heading":"h4", "Preformatted":"pre"};
+	dojo.widget.Editor.fontNameValues = {"Arial":"Arial, Helvetica, sans-serif", "Verdana":"Verdana, sans-serif", "Times New Roman":"Times New Roman, serif", "Courier":"Courier New, monospace"};
+	dojo.widget.Editor.fontSizeValues = {"1 (8 pt)":"1", "2 (10 pt)":"2", "3 (12 pt)":"3", "4 (14 pt)":"4", "5 (18 pt)":"5", "6 (24 pt)":"6", "7 (36 pt)":"7"};
+	dojo.widget.Editor.defaultItems = ["commandGroup", "|", "blockGroup", "|", "textGroup", "|", "colorGroup", "|", "justifyGroup", "|", "listGroup", "indentGroup", "|", "linkGroup"];
+	dojo.widget.Editor.supportedCommands = ["save", "cancel", "|", "-", "/", " "];
+	dojo.lang.extend(dojo.widget.Editor, {widgetType:"Editor", saveUrl:"", saveMethod:"post", saveArgName:"editorContent", closeOnSave:false, items:dojo.widget.Editor.defaultItems, formatBlockItems:dojo.lang.shallowCopy(dojo.widget.Editor.formatBlockValues), fontNameItems:dojo.lang.shallowCopy(dojo.widget.Editor.fontNameValues), fontSizeItems:dojo.lang.shallowCopy(dojo.widget.Editor.fontSizeValues), getItemProperties:function (name) {
+		var props = {};
+		switch (name.toLowerCase()) {
+		  case "bold":
+		  case "italic":
+		  case "underline":
+		  case "strikethrough":
+			props.toggleItem = true;
+			break;
+		  case "justifygroup":
+			props.defaultButton = "justifyleft";
+			props.preventDeselect = true;
+			props.buttonGroup = true;
+			break;
+		  case "listgroup":
+			props.buttonGroup = true;
+			break;
+		  case "save":
+		  case "cancel":
+			props.label = dojo.string.capitalize(name);
+			break;
+		  case "forecolor":
+		  case "hilitecolor":
+			props.name = name;
+			props.toggleItem = true;
+			props.icon = this.getCommandImage(name);
+			break;
+		  case "formatblock":
+			props.name = "formatBlock";
+			props.values = this.formatBlockItems;
+			break;
+		  case "fontname":
+			props.name = "fontName";
+			props.values = this.fontNameItems;
+		  case "fontsize":
+			props.name = "fontSize";
+			props.values = this.fontSizeItems;
+		}
+		return props;
+	}, validateItems:true, focusOnLoad:true, minHeight:"1em", _richText:null, _richTextType:"RichText", _toolbarContainer:null, _toolbarContainerType:"ToolbarContainer", _toolbars:[], _toolbarType:"Toolbar", _toolbarItemType:"ToolbarItem", buildRendering:function (args, frag) {
+		var node = frag["dojo:" + this.widgetType.toLowerCase()]["nodeRef"];
+		var trt = dojo.widget.createWidget(this._richTextType, {focusOnLoad:this.focusOnLoad, minHeight:this.minHeight}, node);
+		var _this = this;
+		setTimeout(function () {
+			_this.setRichText(trt);
+			_this.initToolbar();
+			_this.fillInTemplate(args, frag);
+		}, 0);
+	}, setRichText:function (richText) {
+		if (this._richText && this._richText == richText) {
+			dojo.debug("Already set the richText to this richText!");
+			return;
+		}
+		if (this._richText && !this._richText.isClosed) {
+			dojo.debug("You are switching richTexts yet you haven't closed the current one. Losing reference!");
+		}
+		this._richText = richText;
+		dojo.event.connect(this._richText, "close", this, "onClose");
+		dojo.event.connect(this._richText, "onLoad", this, "onLoad");
+		dojo.event.connect(this._richText, "onDisplayChanged", this, "updateToolbar");
+		if (this._toolbarContainer) {
+			this._toolbarContainer.enable();
+			this.updateToolbar(true);
+		}
+	}, initToolbar:function () {
+		if (this._toolbarContainer) {
+			return;
+		}
+		this._toolbarContainer = dojo.widget.createWidget(this._toolbarContainerType);
+		var tb = this.addToolbar();
+		var last = true;
+		for (var i = 0; i < this.items.length; i++) {
+			if (this.items[i] == "\n") {
+				tb = this.addToolbar();
+			} else {
+				if ((this.items[i] == "|") && (!last)) {
+					last = true;
+				} else {
+					last = this.addItem(this.items[i], tb);
+				}
+			}
+		}
+		this.insertToolbar(this._toolbarContainer.domNode, this._richText.domNode);
+	}, insertToolbar:function (tbNode, richTextNode) {
+		dojo.html.insertBefore(tbNode, richTextNode);
+	}, addToolbar:function (toolbar) {
+		this.initToolbar();
+		if (!(toolbar instanceof dojo.widget.Toolbar)) {
+			toolbar = dojo.widget.createWidget(this._toolbarType);
+		}
+		this._toolbarContainer.addChild(toolbar);
+		this._toolbars.push(toolbar);
+		return toolbar;
+	}, addItem:function (item, tb, dontValidate) {
+		if (!tb) {
+			tb = this._toolbars[0];
+		}
+		var cmd = ((item) && (!dojo.lang.isUndefined(item["getValue"]))) ? cmd = item["getValue"]() : item;
+		var groups = dojo.widget.Editor.itemGroups;
+		if (item instanceof dojo.widget.ToolbarItem) {
+			tb.addChild(item);
+		} else {
+			if (groups[cmd]) {
+				var group = groups[cmd];
+				var worked = true;
+				if (cmd == "justifyGroup" || cmd == "listGroup") {
+					var btnGroup = [cmd];
+					for (var i = 0; i < group.length; i++) {
+						if (dontValidate || this.isSupportedCommand(group[i])) {
+							btnGroup.push(this.getCommandImage(group[i]));
+						} else {
+							worked = false;
+						}
+					}
+					if (btnGroup.length) {
+						var btn = tb.addChild(btnGroup, null, this.getItemProperties(cmd));
+						dojo.event.connect(btn, "onClick", this, "_action");
+						dojo.event.connect(btn, "onChangeSelect", this, "_action");
+					}
+					return worked;
+				} else {
+					for (var i = 0; i < group.length; i++) {
+						if (!this.addItem(group[i], tb)) {
+							worked = false;
+						}
+					}
+					return worked;
+				}
+			} else {
+				if ((!dontValidate) && (!this.isSupportedCommand(cmd))) {
+					return false;
+				}
+				if (dontValidate || this.isSupportedCommand(cmd)) {
+					cmd = cmd.toLowerCase();
+					if (cmd == "formatblock") {
+						var select = dojo.widget.createWidget("ToolbarSelect", {name:"formatBlock", values:this.formatBlockItems});
+						tb.addChild(select);
+						var _this = this;
+						dojo.event.connect(select, "onSetValue", function (item, value) {
+							_this.onAction("formatBlock", value);
+						});
+					} else {
+						if (cmd == "fontname") {
+							var select = dojo.widget.createWidget("ToolbarSelect", {name:"fontName", values:this.fontNameItems});
+							tb.addChild(select);
+							dojo.event.connect(select, "onSetValue", dojo.lang.hitch(this, function (item, value) {
+								this.onAction("fontName", value);
+							}));
+						} else {
+							if (cmd == "fontsize") {
+								var select = dojo.widget.createWidget("ToolbarSelect", {name:"fontSize", values:this.fontSizeItems});
+								tb.addChild(select);
+								dojo.event.connect(select, "onSetValue", dojo.lang.hitch(this, function (item, value) {
+									this.onAction("fontSize", value);
+								}));
+							} else {
+								if (dojo.lang.inArray(cmd, ["forecolor", "hilitecolor"])) {
+									var btn = tb.addChild(dojo.widget.createWidget("ToolbarColorDialog", this.getItemProperties(cmd)));
+									dojo.event.connect(btn, "onSetValue", this, "_setValue");
+								} else {
+									var btn = tb.addChild(this.getCommandImage(cmd), null, this.getItemProperties(cmd));
+									if (cmd == "save") {
+										dojo.event.connect(btn, "onClick", this, "_save");
+									} else {
+										if (cmd == "cancel") {
+											dojo.event.connect(btn, "onClick", this, "_close");
+										} else {
+											dojo.event.connect(btn, "onClick", this, "_action");
+											dojo.event.connect(btn, "onChangeSelect", this, "_action");
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		return true;
+	}, enableToolbar:function () {
+		if (this._toolbarContainer) {
+			this._toolbarContainer.domNode.style.display = "";
+			this._toolbarContainer.enable();
+		}
+	}, disableToolbar:function (hide) {
+		if (hide) {
+			if (this._toolbarContainer) {
+				this._toolbarContainer.domNode.style.display = "none";
+			}
+		} else {
+			if (this._toolbarContainer) {
+				this._toolbarContainer.disable();
+			}
+		}
+	}, _updateToolbarLastRan:null, _updateToolbarTimer:null, _updateToolbarFrequency:500, updateToolbar:function (force) {
+		if (!this._toolbarContainer) {
+			return;
+		}
+		var diff = new Date() - this._updateToolbarLastRan;
+		if (!force && this._updateToolbarLastRan && (diff < this._updateToolbarFrequency)) {
+			clearTimeout(this._updateToolbarTimer);
+			var _this = this;
+			this._updateToolbarTimer = setTimeout(function () {
+				_this.updateToolbar();
+			}, this._updateToolbarFrequency / 2);
+			return;
+		} else {
+			this._updateToolbarLastRan = new Date();
+		}
+		var items = this._toolbarContainer.getItems();
+		for (var i = 0; i < items.length; i++) {
+			var item = items[i];
+			if (item instanceof dojo.widget.ToolbarSeparator) {
+				continue;
+			}
+			var cmd = item._name;
+			if (cmd == "save" || cmd == "cancel") {
+				continue;
+			} else {
+				if (cmd == "justifyGroup") {
+					try {
+						if (!this._richText.queryCommandEnabled("justifyleft")) {
+							item.disable(false, true);
+						} else {
+							item.enable(false, true);
+							var jitems = item.getItems();
+							for (var j = 0; j < jitems.length; j++) {
+								var name = jitems[j]._name;
+								var value = this._richText.queryCommandValue(name);
+								if (typeof value == "boolean" && value) {
+									value = name;
+									break;
+								} else {
+									if (typeof value == "string") {
+										value = "justify" + value;
+									} else {
+										value = null;
+									}
+								}
+							}
+							if (!value) {
+								value = "justifyleft";
+							}
+							item.setValue(value, false, true);
+						}
+					}
+					catch (err) {
+					}
+				} else {
+					if (cmd == "listGroup") {
+						var litems = item.getItems();
+						for (var j = 0; j < litems.length; j++) {
+							this.updateItem(litems[j]);
+						}
+					} else {
+						this.updateItem(item);
+					}
+				}
+			}
+		}
+	}, updateItem:function (item) {
+		try {
+			var cmd = item._name;
+			var enabled = this._richText.queryCommandEnabled(cmd);
+			item.setEnabled(enabled, false, true);
+			var active = this._richText.queryCommandState(cmd);
+			if (active && cmd == "underline") {
+				active = !this._richText.queryCommandEnabled("unlink");
+			}
+			item.setSelected(active, false, true);
+			return true;
+		}
+		catch (err) {
+			return false;
+		}
+	}, supportedCommands:dojo.widget.Editor.supportedCommands.concat(), isSupportedCommand:function (cmd) {
+		var yes = dojo.lang.inArray(cmd, this.supportedCommands);
+		if (!yes) {
+			try {
+				var richText = this._richText || dojo.widget.HtmlRichText.prototype;
+				yes = richText.queryCommandAvailable(cmd);
+			}
+			catch (E) {
+			}
+		}
+		return yes;
+	}, getCommandImage:function (cmd) {
+		if (cmd == "|") {
+			return cmd;
+		} else {
+			return dojo.uri.moduleUri("dojo.widget", "templates/buttons/" + cmd + ".gif");
+		}
+	}, _action:function (e) {
+		this._fire("onAction", e.getValue());
+	}, _setValue:function (a, b) {
+		this._fire("onAction", a.getValue(), b);
+	}, _save:function (e) {
+		if (!this._richText.isClosed) {
+			if (this.saveUrl.length) {
+				var content = {};
+				content[this.saveArgName] = this.getHtml();
+				dojo.io.bind({method:this.saveMethod, url:this.saveUrl, content:content});
+			} else {
+				dojo.debug("please set a saveUrl for the editor");
+			}
+			if (this.closeOnSave) {
+				this._richText.close(e.getName().toLowerCase() == "save");
+			}
+		}
+	}, _close:function (e) {
+		if (!this._richText.isClosed) {
+			this._richText.close(e.getName().toLowerCase() == "save");
+		}
+	}, onAction:function (cmd, value) {
+		switch (cmd) {
+		  case "createlink":
+			if (!(value = prompt("Please enter the URL of the link:", "http://"))) {
+				return;
+			}
+			break;
+		  case "insertimage":
+			if (!(value = prompt("Please enter the URL of the image:", "http://"))) {
+				return;
+			}
+			break;
+		}
+		this._richText.execCommand(cmd, value);
+	}, fillInTemplate:function (args, frag) {
+	}, _fire:function (eventName) {
+		if (dojo.lang.isFunction(this[eventName])) {
+			var args = [];
+			if (arguments.length == 1) {
+				args.push(this);
+			} else {
+				for (var i = 1; i < arguments.length; i++) {
+					args.push(arguments[i]);
+				}
+			}
+			this[eventName].apply(this, args);
+		}
+	}, getHtml:function () {
+		this._richText.contentFilters = this._richText.contentFilters.concat(this.contentFilters);
+		return this._richText.getEditorContent();
+	}, getEditorContent:function () {
+		return this.getHtml();
+	}, onClose:function (save, hide) {
+		this.disableToolbar(hide);
+		if (save) {
+			this._fire("onSave");
+		} else {
+			this._fire("onCancel");
+		}
+	}, onLoad:function () {
+	}, onSave:function () {
+	}, onCancel:function () {
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TitlePane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TitlePane"], ["require", "dojo.widget.*"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.html.style"], ["require", "dojo.lfx.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TitlePane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.lfx.*");
+	dojo.widget.defineWidget("dojo.widget.TitlePane", dojo.widget.ContentPane, {labelNodeClass:"", containerNodeClass:"", label:"", open:true, templateString:"<div dojoAttachPoint=\"domNode\">\n<div dojoAttachPoint=\"labelNode\" dojoAttachEvent=\"onclick: onLabelClick\"></div>\n<div dojoAttachPoint=\"containerNode\"></div>\n</div>\n", postCreate:function () {
+		if (this.label) {
+			this.labelNode.appendChild(document.createTextNode(this.label));
+		}
+		if (this.labelNodeClass) {
+			dojo.html.addClass(this.labelNode, this.labelNodeClass);
+		}
+		if (this.containerNodeClass) {
+			dojo.html.addClass(this.containerNode, this.containerNodeClass);
+		}
+		if (!this.open) {
+			dojo.html.hide(this.containerNode);
+		}
+		dojo.widget.TitlePane.superclass.postCreate.apply(this, arguments);
+	}, onLabelClick:function () {
+		if (this.open) {
+			dojo.lfx.wipeOut(this.containerNode, 250).play();
+			this.open = false;
+		} else {
+			dojo.lfx.wipeIn(this.containerNode, 250).play();
+			this.open = true;
+		}
+	}, setLabel:function (label) {
+		this.labelNode.innerHTML = label;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/FilteringTable.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -25057,6 +51125,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.FilteringTable");
 dojo.require("dojo.date.format");
 dojo.require("dojo.math");
@@ -25756,6 +51826,536 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Spinner.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Spinner"], ["require", "dojo.io.*"], ["require", "dojo.lfx.*"], ["require", "dojo.html.*"], ["require", "dojo.html.layout"], ["require", "dojo.string"], ["require", "dojo.widget.*"], ["require", "dojo.widget.IntegerTextbox"], ["require", "dojo.widget.RealNumberTextbox"], ["require", "dojo.widget.DateTextbox"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Spinner");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.string");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.IntegerTextbox");
+	dojo.require("dojo.widget.RealNumberTextbox");
+	dojo.require("dojo.widget.DateTextbox");
+	dojo.require("dojo.experimental");
+	dojo.declare("dojo.widget.Spinner", null, {_typamaticTimer:null, _typamaticFunction:null, _currentTimeout:this.defaultTimeout, _eventCount:0, defaultTimeout:500, timeoutChangeRate:0.9, templateString:"<span _=\"weird end tag formatting is to prevent whitespace from becoming &nbsp;\"\n\tstyle='float:${this.htmlfloat};'\n\t><table cellpadding=0 cellspacing=0 class=\"dojoSpinner\">\n\t\t<tr>\n\t\t\t<td\n\t\t\t\t><input\n\t\t\t\t\tdojoAttachPoint='textbox' type='${this.type}'\n\t\t\t\t\tdojoAttachEvent='onblur;onfocus;onkey:_handleKeyEvents;onKeyUp:_onSpinnerKeyUp;onresize:_resize'\n\t\t\t\t\tid='${this.widgetId}' name='${this.name}' size='${this.size}' maxlength='${this.maxlength}'\n\t\t\t\t\tvalue='${this.value}' class='${this.className}' autocomplete=\"off\"\n\t\t\t></td>\n\t\t\t<td\n\t\t\t\t><img dojoAttachPoint=\"upArrowNode\"\n\t\t\t\t\tdojoAttachEvent=\"onDblClick: _upArrowDoubleClicked;  onMouseDown: _upArrowPressed; onMouseUp: _arrowReleased; onMouseOut: _arrowReleased; onMouseMove: _discardEvent;\"\n\t\t\t\t\tsrc=\"${this.incrementSrc}\" style=\"width: ${this.buttonSize.width}px; height: ${this.buttonSize.height}px;\"\n\t\t\t\t><img dojoAttachPoint=\"downArrowNode\"\n\t\t\t\t\tdojoAttachEvent=\"onDblClick: _downArrowDoubleClicked;  onMouseDown: _downArrowPressed; onMouseUp: _arrowReleased; onMouseOut: _arrowReleased; onMouseMove: _discardEvent;\"\n\t\t\t\t\tsrc=\"${this.decrementSrc}\" style=\"width: ${this.buttonSize.width}px; height: ${this.buttonSize.height}px;\"\n\t\t\t></td>\n\t\t</tr>\n\t</table\n\t><span dojoAttachPoint='invalidSpan' class='${this.invalidClass}'>${this.messages.invalidMessage}</span\n\t><span dojoAttachPoint='missingSpan' class='${this.missingClass}'>${this.messages.missingMessage}</span\n\t><span dojoAttachPoint='rangeSpan' class='${this.rangeClass}'>${this.messages.rangeMessage}</span\n></span>\n", templateCssString:"/* inline the table holding the <input> and buttons (method varies by browser) */\n.ie .dojoSpinner, .safari .dojoSpinner {\n\tdisplay: inline;\n}\n\n.moz .dojoSpinner {\n\tdisplay: -moz-inline-box;\n}\n\n.opera .dojoSpinner {\n\tdisplay: inline-table;\n}\n\n/* generic stuff for the table */\n.dojoSpinner td {\n\tpadding:0px;\n\tmargin:0px;\n\tvertical-align: middle;\n}\ntable.dojoSpinner {\n\tborder:0px;\n\tborder-spacing:0px;\n\tline-height:0px;\n\tpadding:0px;\n\tmargin: 0px;\n\tvertical-align: middle;\n}\n\n/* the buttons */\n.dojoSpinner img {\n\tdisplay: block;\n\tborder-width:0px 1px 1px 0px;\n\tborder-style:outset;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Spinner.css"), incrementSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/spinnerIncrement.gif"), decrementSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/spinnerDecrement.gif"), _handleKeyEvents:function (evt) {
+		if (!evt.key) {
+			return;
+		}
+		if (!evt.ctrlKey && !evt.altKey) {
+			switch (evt.key) {
+			  case evt.KEY_DOWN_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				this._downArrowPressed(evt);
+				return;
+			  case evt.KEY_UP_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				this._upArrowPressed(evt);
+				return;
+			}
+		}
+		this._eventCount++;
+	}, _onSpinnerKeyUp:function (evt) {
+		this._arrowReleased(evt);
+		this.onkeyup(evt);
+	}, _resize:function () {
+		var inputSize = dojo.html.getBorderBox(this.textbox);
+		this.buttonSize = {width:inputSize.height / 2, height:inputSize.height / 2};
+		if (this.upArrowNode) {
+			dojo.html.setMarginBox(this.upArrowNode, this.buttonSize);
+			dojo.html.setMarginBox(this.downArrowNode, this.buttonSize);
+		}
+	}, _pressButton:function (node) {
+		node.style.borderWidth = "1px 0px 0px 1px";
+		node.style.borderStyle = "inset";
+	}, _releaseButton:function (node) {
+		node.style.borderWidth = "0px 1px 1px 0px";
+		node.style.borderStyle = "outset";
+	}, _arrowPressed:function (evt, direction) {
+		var nodePressed = (direction == -1) ? this.downArrowNode : this.upArrowNode;
+		var nodeReleased = (direction == +1) ? this.downArrowNode : this.upArrowNode;
+		if (typeof evt != "number") {
+			if (this._typamaticTimer != null) {
+				if (this._typamaticNode == nodePressed) {
+					return;
+				}
+				dojo.lang.clearTimeout(this._typamaticTimer);
+			}
+			this._releaseButton(nodeReleased);
+			this._eventCount++;
+			this._typamaticTimer = null;
+			this._currentTimeout = this.defaultTimeout;
+		} else {
+			if (evt != this._eventCount) {
+				this._releaseButton(nodePressed);
+				return;
+			}
+		}
+		this._pressButton(nodePressed);
+		this._setCursorX(this.adjustValue(direction, this._getCursorX()));
+		this._typamaticNode = nodePressed;
+		this._typamaticTimer = dojo.lang.setTimeout(this, "_arrowPressed", this._currentTimeout, this._eventCount, direction);
+		this._currentTimeout = Math.round(this._currentTimeout * this.timeoutChangeRate);
+	}, _downArrowPressed:function (evt) {
+		return this._arrowPressed(evt, -1);
+	}, _downArrowDoubleClicked:function (evt) {
+		var rc = this._downArrowPressed(evt);
+		dojo.lang.setTimeout(this, "_arrowReleased", 50, null);
+		return rc;
+	}, _upArrowPressed:function (evt) {
+		return this._arrowPressed(evt, +1);
+	}, _upArrowDoubleClicked:function (evt) {
+		var rc = this._upArrowPressed(evt);
+		dojo.lang.setTimeout(this, "_arrowReleased", 50, null);
+		return rc;
+	}, _arrowReleased:function (evt) {
+		this.textbox.focus();
+		if (evt != null && typeof evt == "object" && evt.keyCode && evt.keyCode != null) {
+			var keyCode = evt.keyCode;
+			var k = dojo.event.browser.keys;
+			switch (keyCode) {
+			  case k.KEY_DOWN_ARROW:
+			  case k.KEY_UP_ARROW:
+				dojo.event.browser.stopEvent(evt);
+				break;
+			}
+		}
+		this._releaseButton(this.upArrowNode);
+		this._releaseButton(this.downArrowNode);
+		this._eventCount++;
+		if (this._typamaticTimer != null) {
+			dojo.lang.clearTimeout(this._typamaticTimer);
+		}
+		this._typamaticTimer = null;
+		this._currentTimeout = this.defaultTimeout;
+	}, _mouseWheeled:function (evt) {
+		var scrollAmount = 0;
+		if (typeof evt.wheelDelta == "number") {
+			scrollAmount = evt.wheelDelta;
+		} else {
+			if (typeof evt.detail == "number") {
+				scrollAmount = -evt.detail;
+			}
+		}
+		if (scrollAmount > 0) {
+			this._upArrowPressed(evt);
+			this._arrowReleased(evt);
+		} else {
+			if (scrollAmount < 0) {
+				this._downArrowPressed(evt);
+				this._arrowReleased(evt);
+			}
+		}
+	}, _discardEvent:function (evt) {
+		dojo.event.browser.stopEvent(evt);
+	}, _getCursorX:function () {
+		var x = -1;
+		try {
+			this.textbox.focus();
+			if (typeof this.textbox.selectionEnd == "number") {
+				x = this.textbox.selectionEnd;
+			} else {
+				if (document.selection && document.selection.createRange) {
+					var range = document.selection.createRange().duplicate();
+					if (range.parentElement() == this.textbox) {
+						range.moveStart("textedit", -1);
+						x = range.text.length;
+					}
+				}
+			}
+		}
+		catch (e) {
+		}
+		return x;
+	}, _setCursorX:function (x) {
+		try {
+			this.textbox.focus();
+			if (!x) {
+				x = 0;
+			}
+			if (typeof this.textbox.selectionEnd == "number") {
+				this.textbox.selectionEnd = x;
+			} else {
+				if (this.textbox.createTextRange) {
+					var range = this.textbox.createTextRange();
+					range.collapse(true);
+					range.moveEnd("character", x);
+					range.moveStart("character", x);
+					range.select();
+				}
+			}
+		}
+		catch (e) {
+		}
+	}, _spinnerPostMixInProperties:function (args, frag) {
+		var inputNode = this.getFragNodeRef(frag);
+		var inputSize = dojo.html.getBorderBox(inputNode);
+		this.buttonSize = {width:inputSize.height / 2 - 1, height:inputSize.height / 2 - 1};
+	}, _spinnerPostCreate:function (args, frag) {
+		if (this.textbox.addEventListener) {
+			this.textbox.addEventListener("DOMMouseScroll", dojo.lang.hitch(this, "_mouseWheeled"), false);
+		} else {
+			dojo.event.connect(this.textbox, "onmousewheel", this, "_mouseWheeled");
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.IntegerSpinner", [dojo.widget.IntegerTextbox, dojo.widget.Spinner], {delta:"1", postMixInProperties:function (args, frag) {
+		dojo.widget.IntegerSpinner.superclass.postMixInProperties.apply(this, arguments);
+		this._spinnerPostMixInProperties(args, frag);
+	}, postCreate:function (args, frag) {
+		dojo.widget.IntegerSpinner.superclass.postCreate.apply(this, arguments);
+		this._spinnerPostCreate(args, frag);
+	}, adjustValue:function (direction, x) {
+		var val = this.getValue().replace(/[^\-+\d]/g, "");
+		if (val.length == 0) {
+			return;
+		}
+		var num = Math.min(Math.max((parseInt(val) + (parseInt(this.delta) * direction)), (this.flags.min ? this.flags.min : -Infinity)), (this.flags.max ? this.flags.max : +Infinity));
+		val = num.toString();
+		if (num >= 0) {
+			val = ((this.flags.signed == true) ? "+" : " ") + val;
+		}
+		if (this.flags.separator.length > 0) {
+			for (var i = val.length - 3; i > 1; i -= 3) {
+				val = val.substr(0, i) + this.flags.separator + val.substr(i);
+			}
+		}
+		if (val.substr(0, 1) == " ") {
+			val = val.substr(1);
+		}
+		this.setValue(val);
+		return val.length;
+	}});
+	dojo.widget.defineWidget("dojo.widget.RealNumberSpinner", [dojo.widget.RealNumberTextbox, dojo.widget.Spinner], function () {
+		dojo.experimental("dojo.widget.RealNumberSpinner");
+	}, {delta:"1e1", postMixInProperties:function (args, frag) {
+		dojo.widget.RealNumberSpinner.superclass.postMixInProperties.apply(this, arguments);
+		this._spinnerPostMixInProperties(args, frag);
+	}, postCreate:function (args, frag) {
+		dojo.widget.RealNumberSpinner.superclass.postCreate.apply(this, arguments);
+		this._spinnerPostCreate(args, frag);
+	}, adjustValue:function (direction, x) {
+		var val = this.getValue().replace(/[^\-+\.eE\d]/g, "");
+		if (!val.length) {
+			return;
+		}
+		var num = parseFloat(val);
+		if (isNaN(num)) {
+			return;
+		}
+		var delta = this.delta.split(/[eE]/);
+		if (!delta.length) {
+			delta = [1, 1];
+		} else {
+			delta[0] = parseFloat(delta[0].replace(/[^\-+\.\d]/g, ""));
+			if (isNaN(delta[0])) {
+				delta[0] = 1;
+			}
+			if (delta.length > 1) {
+				delta[1] = parseInt(delta[1]);
+			}
+			if (isNaN(delta[1])) {
+				delta[1] = 1;
+			}
+		}
+		val = this.getValue().split(/[eE]/);
+		if (!val.length) {
+			return;
+		}
+		var numBase = parseFloat(val[0].replace(/[^\-+\.\d]/g, ""));
+		if (val.length == 1) {
+			var numExp = 0;
+		} else {
+			var numExp = parseInt(val[1].replace(/[^\-+\d]/g, ""));
+		}
+		if (x <= val[0].length) {
+			x = 0;
+			numBase += delta[0] * direction;
+		} else {
+			x = Number.MAX_VALUE;
+			numExp += delta[1] * direction;
+			if (this.flags.eSigned == false && numExp < 0) {
+				numExp = 0;
+			}
+		}
+		num = Math.min(Math.max((numBase * Math.pow(10, numExp)), (this.flags.min ? this.flags.min : -Infinity)), (this.flags.max ? this.flags.max : +Infinity));
+		if ((this.flags.exponent == true || (this.flags.exponent != false && x != 0)) && num.toExponential) {
+			if (isNaN(this.flags.places) || this.flags.places == Infinity) {
+				val = num.toExponential();
+			} else {
+				val = num.toExponential(this.flags.places);
+			}
+		} else {
+			if (num.toFixed && num.toPrecision) {
+				if (isNaN(this.flags.places) || this.flags.places == Infinity) {
+					val = num.toPrecision((1 / 3).toString().length - 1);
+				} else {
+					val = num.toFixed(this.flags.places);
+				}
+			} else {
+				val = num.toString();
+			}
+		}
+		if (num >= 0) {
+			if (this.flags.signed == true) {
+				val = "+" + val;
+			}
+		}
+		val = val.split(/[eE]/);
+		if (this.flags.separator.length > 0) {
+			if (num >= 0 && val[0].substr(0, 1) != "+") {
+				val[0] = " " + val[0];
+			}
+			var i = val[0].lastIndexOf(".");
+			if (i >= 0) {
+				i -= 3;
+			} else {
+				i = val[0].length - 3;
+			}
+			for (; i > 1; i -= 3) {
+				val[0] = val[0].substr(0, i) + this.flags.separator + val[0].substr(i);
+			}
+			if (val[0].substr(0, 1) == " ") {
+				val[0] = val[0].substr(1);
+			}
+		}
+		if (val.length > 1) {
+			if ((this.flags.eSigned == true) && (val[1].substr(0, 1) != "+")) {
+				val[1] = "+" + val[1];
+			} else {
+				if ((!this.flags.eSigned) && (val[1].substr(0, 1) == "+")) {
+					val[1] = val[1].substr(1);
+				} else {
+					if ((!this.flags.eSigned) && (val[1].substr(0, 1) == "-") && (num.toFixed && num.toPrecision)) {
+						if (isNaN(this.flags.places)) {
+							val[0] = num.toPrecision((1 / 3).toString().length - 1);
+						} else {
+							val[0] = num.toFixed(this.flags.places).toString();
+						}
+						val[1] = "0";
+					}
+				}
+			}
+			val[0] += "e" + val[1];
+		}
+		this.setValue(val[0]);
+		if (x > val[0].length) {
+			x = val[0].length;
+		}
+		return x;
+	}});
+	dojo.widget.defineWidget("dojo.widget.TimeSpinner", [dojo.widget.TimeTextbox, dojo.widget.Spinner], function () {
+		dojo.experimental("dojo.widget.TimeSpinner");
+	}, {postMixInProperties:function (args, frag) {
+		dojo.widget.TimeSpinner.superclass.postMixInProperties.apply(this, arguments);
+		this._spinnerPostMixInProperties(args, frag);
+	}, postCreate:function (args, frag) {
+		dojo.widget.TimeSpinner.superclass.postCreate.apply(this, arguments);
+		this._spinnerPostCreate(args, frag);
+	}, adjustValue:function (direction, x) {
+		var val = this.getValue();
+		var format = (this.flags.format && this.flags.format.search(/[Hhmst]/) >= 0) ? this.flags.format : "hh:mm:ss t";
+		if (direction == 0 || !val.length || !this.isValid()) {
+			return;
+		}
+		if (!this.flags.amSymbol) {
+			this.flags.amSymbol = "AM";
+		}
+		if (!this.flags.pmSymbol) {
+			this.flags.pmSymbol = "PM";
+		}
+		var re = dojo.regexp.time(this.flags);
+		var qualifiers = format.replace(/H/g, "h").replace(/[^hmst]/g, "").replace(/([hmst])\1/g, "$1");
+		var hourPos = qualifiers.indexOf("h") + 1;
+		var minPos = qualifiers.indexOf("m") + 1;
+		var secPos = qualifiers.indexOf("s") + 1;
+		var ampmPos = qualifiers.indexOf("t") + 1;
+		var cursorFormat = format;
+		var ampm = "";
+		if (ampmPos > 0) {
+			ampm = val.replace(new RegExp(re), "$" + ampmPos);
+			cursorFormat = cursorFormat.replace(/t+/, ampm.replace(/./g, "t"));
+		}
+		var hour = 0;
+		var deltaHour = 1;
+		if (hourPos > 0) {
+			hour = val.replace(new RegExp(re), "$" + hourPos);
+			if (dojo.lang.isString(this.delta)) {
+				deltaHour = this.delta.replace(new RegExp(re), "$" + hourPos);
+			}
+			if (isNaN(deltaHour)) {
+				deltaHour = 1;
+			} else {
+				deltaHour = parseInt(deltaHour);
+			}
+			if (hour.length == 2) {
+				cursorFormat = cursorFormat.replace(/([Hh])+/, "$1$1");
+			} else {
+				cursorFormat = cursorFormat.replace(/([Hh])+/, "$1");
+			}
+			if (isNaN(hour)) {
+				hour = 0;
+			} else {
+				hour = parseInt(hour.replace(/^0(\d)/, "$1"));
+			}
+		}
+		var min = 0;
+		var deltaMin = 1;
+		if (minPos > 0) {
+			min = val.replace(new RegExp(re), "$" + minPos);
+			if (dojo.lang.isString(this.delta)) {
+				deltaMin = this.delta.replace(new RegExp(re), "$" + minPos);
+			}
+			if (isNaN(deltaMin)) {
+				deltaMin = 1;
+			} else {
+				deltaMin = parseInt(deltaMin);
+			}
+			cursorFormat = cursorFormat.replace(/m+/, min.replace(/./g, "m"));
+			if (isNaN(min)) {
+				min = 0;
+			} else {
+				min = parseInt(min.replace(/^0(\d)/, "$1"));
+			}
+		}
+		var sec = 0;
+		var deltaSec = 1;
+		if (secPos > 0) {
+			sec = val.replace(new RegExp(re), "$" + secPos);
+			if (dojo.lang.isString(this.delta)) {
+				deltaSec = this.delta.replace(new RegExp(re), "$" + secPos);
+			}
+			if (isNaN(deltaSec)) {
+				deltaSec = 1;
+			} else {
+				deltaSec = parseInt(deltaSec);
+			}
+			cursorFormat = cursorFormat.replace(/s+/, sec.replace(/./g, "s"));
+			if (isNaN(sec)) {
+				sec = 0;
+			} else {
+				sec = parseInt(sec.replace(/^0(\d)/, "$1"));
+			}
+		}
+		if (isNaN(x) || x >= cursorFormat.length) {
+			x = cursorFormat.length - 1;
+		}
+		var cursorToken = cursorFormat.charAt(x);
+		switch (cursorToken) {
+		  case "t":
+			if (ampm == this.flags.amSymbol) {
+				ampm = this.flags.pmSymbol;
+			} else {
+				if (ampm == this.flags.pmSymbol) {
+					ampm = this.flags.amSymbol;
+				}
+			}
+			break;
+		  default:
+			if (hour >= 1 && hour < 12 && ampm == this.flags.pmSymbol) {
+				hour += 12;
+			}
+			if (hour == 12 && ampm == this.flags.amSymbol) {
+				hour = 0;
+			}
+			switch (cursorToken) {
+			  case "s":
+				sec += deltaSec * direction;
+				while (sec < 0) {
+					min--;
+					sec += 60;
+				}
+				while (sec >= 60) {
+					min++;
+					sec -= 60;
+				}
+			  case "m":
+				if (cursorToken == "m") {
+					min += deltaMin * direction;
+				}
+				while (min < 0) {
+					hour--;
+					min += 60;
+				}
+				while (min >= 60) {
+					hour++;
+					min -= 60;
+				}
+			  case "h":
+			  case "H":
+				if (cursorToken == "h" || cursorToken == "H") {
+					hour += deltaHour * direction;
+				}
+				while (hour < 0) {
+					hour += 24;
+				}
+				while (hour >= 24) {
+					hour -= 24;
+				}
+				break;
+			  default:
+				return;
+			}
+			if (hour >= 12) {
+				ampm = this.flags.pmSymbol;
+				if (format.indexOf("h") >= 0 && hour >= 13) {
+					hour -= 12;
+				}
+			} else {
+				ampm = this.flags.amSymbol;
+				if (format.indexOf("h") >= 0 && hour == 0) {
+					hour = 12;
+				}
+			}
+		}
+		cursorFormat = format;
+		if (hour >= 0 && hour < 10 && format.search(/[hH]{2}/) >= 0) {
+			hour = "0" + hour.toString();
+		}
+		if (hour >= 10 && cursorFormat.search(/[hH]{2}/) < 0) {
+			cursorFormat = cursorFormat.replace(/(h|H)/, "$1$1");
+		}
+		if (min >= 0 && min < 10 && cursorFormat.search(/mm/) >= 0) {
+			min = "0" + min.toString();
+		}
+		if (min >= 10 && cursorFormat.search(/mm/) < 0) {
+			cursorFormat = cursorFormat.replace(/m/, "$1$1");
+		}
+		if (sec >= 0 && sec < 10 && cursorFormat.search(/ss/) >= 0) {
+			sec = "0" + sec.toString();
+		}
+		if (sec >= 10 && cursorFormat.search(/ss/) < 0) {
+			cursorFormat = cursorFormat.replace(/s/, "$1$1");
+		}
+		x = cursorFormat.indexOf(cursorToken);
+		if (x == -1) {
+			x = format.length;
+		}
+		format = format.replace(/[hH]+/, hour);
+		format = format.replace(/m+/, min);
+		format = format.replace(/s+/, sec);
+		format = format.replace(/t/, ampm);
+		this.setValue(format);
+		if (x > format.length) {
+			x = format.length;
+		}
+		return x;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Manager.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -25767,6 +52367,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Manager");
 dojo.require("dojo.lang.array");
 dojo.require("dojo.lang.func");
@@ -26044,6 +52646,360 @@
 })();
 
 
+__CPAN_FILE__ src/widget/Tree.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Tree"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.io.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeNode"], ["require", "dojo.html.common"], ["require", "dojo.html.selection"], ["require", "dojo.widget.TreeBasicController"], ["require", "dojo.widget.TreeSelector"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Tree");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeNode");
+	dojo.require("dojo.html.common");
+	dojo.require("dojo.html.selection");
+	dojo.widget.defineWidget("dojo.widget.Tree", dojo.widget.HtmlWidget, function () {
+		this.eventNames = {};
+		this.tree = this;
+		this.DNDAcceptTypes = [];
+		this.actionsDisabled = [];
+	}, {widgetType:"Tree", eventNamesDefault:{createDOMNode:"createDOMNode", treeCreate:"treeCreate", treeDestroy:"treeDestroy", treeClick:"treeClick", iconClick:"iconClick", titleClick:"titleClick", moveFrom:"moveFrom", moveTo:"moveTo", addChild:"addChild", removeNode:"removeNode", expand:"expand", collapse:"collapse"}, isContainer:true, DNDMode:"off", lockLevel:0, strictFolders:true, DNDModes:{BETWEEN:1, ONTO:2}, DNDAcceptTypes:"", templateCssString:"\n.dojoTree {\n\tfont: caption;\n\tfont-size: 11px;\n\tfont-weight: normal;\n\toverflow: auto;\n}\n\n\n.dojoTreeNodeLabelTitle {\n\tpadding-left: 2px;\n\tcolor: WindowText;\n}\n\n.dojoTreeNodeLabel {\n\tcursor:hand;\n\tcursor:pointer;\n}\n\n.dojoTreeNodeLabelTitle:hover {\n\ttext-decoration: underline;\n}\n\n.dojoTreeNodeLabelSelected {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n}\n\n.dojoTree div {\n\twhite-space: nowrap;\n}\n\n.dojoTree img, .dojoTreeNodeLabel img {\n\tvertical-align: middle;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/Tree.css"), templateString:"<div class=\"dojoTree\"></div>", isExpanded:true, isTree:true, objectId:"", controller:"", selector:"", menu:"", expandLevel:"", blankIconSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_blank.gif"), gridIconSrcT:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_t.gif"), gridIconSrcL:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_l.gif"), gridIconSrcV:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_v.gif"), gridIconSrcP:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_p.gif"), gridIconSrcC:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_c.gif"), gridIconSrcX:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_x.gif"), gridIconSrcY:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_y.gif"), gridIconSrcZ:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_z.gif"), expandIconSrcPlus:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_expand_plus.gif"), expandIconSrcMinus:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_expand_minus.gif"), expandIconSrcLoading:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_loading.gif"), iconWidth:18, iconHeight:18, showGrid:true, showRootGrid:true, actionIsDisabled:function (action) {
+		var _this = this;
+		return dojo.lang.inArray(_this.actionsDisabled, action);
+	}, actions:{ADDCHILD:"ADDCHILD"}, getInfo:function () {
+		var info = {widgetId:this.widgetId, objectId:this.objectId};
+		return info;
+	}, initializeController:function () {
+		if (this.controller != "off") {
+			if (this.controller) {
+				this.controller = dojo.widget.byId(this.controller);
+			} else {
+				dojo.require("dojo.widget.TreeBasicController");
+				this.controller = dojo.widget.createWidget("TreeBasicController", {DNDController:(this.DNDMode ? "create" : ""), dieWithTree:true});
+			}
+			this.controller.listenTree(this);
+		} else {
+			this.controller = null;
+		}
+	}, initializeSelector:function () {
+		if (this.selector != "off") {
+			if (this.selector) {
+				this.selector = dojo.widget.byId(this.selector);
+			} else {
+				dojo.require("dojo.widget.TreeSelector");
+				this.selector = dojo.widget.createWidget("TreeSelector", {dieWithTree:true});
+			}
+			this.selector.listenTree(this);
+		} else {
+			this.selector = null;
+		}
+	}, initialize:function (args, frag) {
+		var _this = this;
+		for (name in this.eventNamesDefault) {
+			if (dojo.lang.isUndefined(this.eventNames[name])) {
+				this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
+			}
+		}
+		for (var i = 0; i < this.actionsDisabled.length; i++) {
+			this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
+		}
+		if (this.DNDMode == "off") {
+			this.DNDMode = 0;
+		} else {
+			if (this.DNDMode == "between") {
+				this.DNDMode = this.DNDModes.ONTO | this.DNDModes.BETWEEN;
+			} else {
+				if (this.DNDMode == "onto") {
+					this.DNDMode = this.DNDModes.ONTO;
+				}
+			}
+		}
+		this.expandLevel = parseInt(this.expandLevel);
+		this.initializeSelector();
+		this.initializeController();
+		if (this.menu) {
+			this.menu = dojo.widget.byId(this.menu);
+			this.menu.listenTree(this);
+		}
+		this.containerNode = this.domNode;
+	}, postCreate:function () {
+		this.createDOMNode();
+	}, createDOMNode:function () {
+		dojo.html.disableSelection(this.domNode);
+		for (var i = 0; i < this.children.length; i++) {
+			this.children[i].parent = this;
+			var node = this.children[i].createDOMNode(this, 0);
+			this.domNode.appendChild(node);
+		}
+		if (!this.showRootGrid) {
+			for (var i = 0; i < this.children.length; i++) {
+				this.children[i].expand();
+			}
+		}
+		dojo.event.topic.publish(this.eventNames.treeCreate, {source:this});
+	}, destroy:function () {
+		dojo.event.topic.publish(this.tree.eventNames.treeDestroy, {source:this});
+		return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
+	}, addChild:function (child, index) {
+		var message = {child:child, index:index, parent:this, domNodeInitialized:child.domNodeInitialized};
+		this.doAddChild.apply(this, arguments);
+		dojo.event.topic.publish(this.tree.eventNames.addChild, message);
+	}, doAddChild:function (child, index) {
+		if (dojo.lang.isUndefined(index)) {
+			index = this.children.length;
+		}
+		if (!child.isTreeNode) {
+			dojo.raise("You can only add TreeNode widgets to a " + this.widgetType + " widget!");
+			return;
+		}
+		if (this.isTreeNode) {
+			if (!this.isFolder) {
+				this.setFolder();
+			}
+		}
+		var _this = this;
+		dojo.lang.forEach(child.getDescendants(), function (elem) {
+			elem.tree = _this.tree;
+		});
+		child.parent = this;
+		if (this.isTreeNode) {
+			this.state = this.loadStates.LOADED;
+		}
+		if (index < this.children.length) {
+			dojo.html.insertBefore(child.domNode, this.children[index].domNode);
+		} else {
+			this.containerNode.appendChild(child.domNode);
+			if (this.isExpanded && this.isTreeNode) {
+				this.showChildren();
+			}
+		}
+		this.children.splice(index, 0, child);
+		if (child.domNodeInitialized) {
+			var d = this.isTreeNode ? this.depth : -1;
+			child.adjustDepth(d - child.depth + 1);
+			child.updateIconTree();
+		} else {
+			child.depth = this.isTreeNode ? this.depth + 1 : 0;
+			child.createDOMNode(child.tree, child.depth);
+		}
+		var prevSibling = child.getPreviousSibling();
+		if (child.isLastChild() && prevSibling) {
+			prevSibling.updateExpandGridColumn();
+		}
+	}, makeBlankImg:function () {
+		var img = document.createElement("img");
+		img.style.width = this.iconWidth + "px";
+		img.style.height = this.iconHeight + "px";
+		img.src = this.blankIconSrc;
+		img.style.verticalAlign = "middle";
+		return img;
+	}, updateIconTree:function () {
+		if (!this.isTree) {
+			this.updateIcons();
+		}
+		for (var i = 0; i < this.children.length; i++) {
+			this.children[i].updateIconTree();
+		}
+	}, toString:function () {
+		return "[" + this.widgetType + " ID:" + this.widgetId + "]";
+	}, move:function (child, newParent, index) {
+		var oldParent = child.parent;
+		var oldTree = child.tree;
+		this.doMove.apply(this, arguments);
+		var newParent = child.parent;
+		var newTree = child.tree;
+		var message = {oldParent:oldParent, oldTree:oldTree, newParent:newParent, newTree:newTree, child:child};
+		dojo.event.topic.publish(oldTree.eventNames.moveFrom, message);
+		dojo.event.topic.publish(newTree.eventNames.moveTo, message);
+	}, doMove:function (child, newParent, index) {
+		child.parent.doRemoveNode(child);
+		newParent.doAddChild(child, index);
+	}, removeNode:function (child) {
+		if (!child.parent) {
+			return;
+		}
+		var oldTree = child.tree;
+		var oldParent = child.parent;
+		var removedChild = this.doRemoveNode.apply(this, arguments);
+		dojo.event.topic.publish(this.tree.eventNames.removeNode, {child:removedChild, tree:oldTree, parent:oldParent});
+		return removedChild;
+	}, doRemoveNode:function (child) {
+		if (!child.parent) {
+			return;
+		}
+		var parent = child.parent;
+		var children = parent.children;
+		var index = child.getParentIndex();
+		if (index < 0) {
+			dojo.raise("Couldn't find node " + child + " for removal");
+		}
+		children.splice(index, 1);
+		dojo.html.removeNode(child.domNode);
+		if (parent.children.length == 0 && !parent.isTree) {
+			parent.containerNode.style.display = "none";
+		}
+		if (index == children.length && index > 0) {
+			children[index - 1].updateExpandGridColumn();
+		}
+		if (parent instanceof dojo.widget.Tree && index == 0 && children.length > 0) {
+			children[0].updateExpandGrid();
+		}
+		child.parent = child.tree = null;
+		return child;
+	}, markLoading:function () {
+	}, unMarkLoading:function () {
+	}, lock:function () {
+		!this.lockLevel && this.markLoading();
+		this.lockLevel++;
+	}, unlock:function () {
+		if (!this.lockLevel) {
+			dojo.raise("unlock: not locked");
+		}
+		this.lockLevel--;
+		!this.lockLevel && this.unMarkLoading();
+	}, isLocked:function () {
+		var node = this;
+		while (true) {
+			if (node.lockLevel) {
+				return true;
+			}
+			if (node instanceof dojo.widget.Tree) {
+				break;
+			}
+			node = node.parent;
+		}
+		return false;
+	}, flushLock:function () {
+		this.lockLevel = 0;
+		this.unMarkLoading();
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeContextMenu.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeContextMenu"], ["require", "dojo.event.*"], ["require", "dojo.io.*"], ["require", "dojo.widget.Menu2"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeContextMenu");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.Menu2");
+	dojo.widget.defineWidget("dojo.widget.TreeContextMenu", dojo.widget.PopupMenu2, function () {
+		this.listenedTrees = [];
+	}, {open:function (x, y, parentMenu, explodeSrc) {
+		var result = dojo.widget.PopupMenu2.prototype.open.apply(this, arguments);
+		dojo.event.topic.publish(this.eventNames.open, {menu:this});
+		return result;
+	}, listenTree:function (tree) {
+		var nodes = tree.getDescendants();
+		for (var i = 0; i < nodes.length; i++) {
+			if (!nodes[i].isTreeNode) {
+				continue;
+			}
+			this.bindDomNode(nodes[i].labelNode);
+		}
+		var _this = this;
+		dojo.event.topic.subscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
+		dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
+		dojo.event.topic.subscribe(tree.eventNames.moveTo, this, "onMoveTo");
+		dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode");
+		dojo.event.topic.subscribe(tree.eventNames.addChild, this, "onAddChild");
+		dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+		this.listenedTrees.push(tree);
+	}, unlistenTree:function (tree) {
+		dojo.event.topic.unsubscribe(tree.eventNames.createDOMNode, this, "onCreateDOMNode");
+		dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom");
+		dojo.event.topic.unsubscribe(tree.eventNames.moveTo, this, "onMoveTo");
+		dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode");
+		dojo.event.topic.unsubscribe(tree.eventNames.addChild, this, "onAddChild");
+		dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy");
+		for (var i = 0; i < this.listenedTrees.length; i++) {
+			if (this.listenedTrees[i] === tree) {
+				this.listenedTrees.splice(i, 1);
+				break;
+			}
+		}
+	}, onTreeDestroy:function (message) {
+		this.unlistenTree(message.source);
+	}, bindTreeNode:function (node) {
+		var _this = this;
+		dojo.lang.forEach(node.getDescendants(), function (e) {
+			_this.bindDomNode(e.labelNode);
+		});
+	}, unBindTreeNode:function (node) {
+		var _this = this;
+		dojo.lang.forEach(node.getDescendants(), function (e) {
+			_this.unBindDomNode(e.labelNode);
+		});
+	}, onCreateDOMNode:function (message) {
+		this.bindTreeNode(message.source);
+	}, onMoveFrom:function (message) {
+		if (!dojo.lang.inArray(this.listenedTrees, message.newTree)) {
+			this.unBindTreeNode(message.child);
+		}
+	}, onMoveTo:function (message) {
+		if (dojo.lang.inArray(this.listenedTrees, message.newTree)) {
+			this.bindTreeNode(message.child);
+		}
+	}, onRemoveNode:function (message) {
+		this.unBindTreeNode(message.child);
+	}, onAddChild:function (message) {
+		if (message.domNodeInitialized) {
+			this.bindTreeNode(message.child);
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.TreeMenuItem", dojo.widget.MenuItem2, {treeActions:"", initialize:function (args, frag) {
+		this.treeActions = this.treeActions.split(",");
+		for (var i = 0; i < this.treeActions.length; i++) {
+			this.treeActions[i] = this.treeActions[i].toUpperCase();
+		}
+	}, getTreeNode:function () {
+		var menu = this;
+		while (!(menu instanceof dojo.widget.TreeContextMenu)) {
+			menu = menu.parent;
+		}
+		var source = menu.getTopOpenEvent().target;
+		while (!source.getAttribute("treeNode") && source.tagName != "body") {
+			source = source.parentNode;
+		}
+		if (source.tagName == "body") {
+			dojo.raise("treeNode not detected");
+		}
+		var treeNode = dojo.widget.manager.getWidgetById(source.getAttribute("treeNode"));
+		return treeNode;
+	}, menuOpen:function (message) {
+		var treeNode = this.getTreeNode();
+		this.setDisabled(false);
+		var _this = this;
+		dojo.lang.forEach(_this.treeActions, function (action) {
+			_this.setDisabled(treeNode.actionIsDisabled(action));
+		});
+	}, toString:function () {
+		return "[" + this.widgetType + " node " + this.getTreeNode() + "]";
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/DatePicker.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -26055,6 +53011,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DatePicker");
 dojo.require("dojo.date.common");
 dojo.require("dojo.date.format");
@@ -26393,6 +53351,681 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeSelectorV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeSelectorV3"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeCommon"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeSelectorV3");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeCommon");
+	dojo.widget.defineWidget("dojo.widget.TreeSelectorV3", [dojo.widget.HtmlWidget, dojo.widget.TreeCommon], function () {
+		this.eventNames = {};
+		this.listenedTrees = {};
+		this.selectedNodes = [];
+		this.lastClicked = {};
+	}, {listenTreeEvents:["afterTreeCreate", "afterCollapse", "afterChangeTree", "afterDetach", "beforeTreeDestroy"], listenNodeFilter:function (elem) {
+		return elem instanceof dojo.widget.Widget;
+	}, allowedMulti:true, dblselectTimeout:300, eventNamesDefault:{select:"select", deselect:"deselect", dblselect:"dblselect"}, onAfterTreeCreate:function (message) {
+		var tree = message.source;
+		dojo.event.browser.addListener(tree.domNode, "onclick", dojo.lang.hitch(this, this.onTreeClick));
+		if (dojo.render.html.ie) {
+			dojo.event.browser.addListener(tree.domNode, "ondblclick", dojo.lang.hitch(this, this.onTreeDblClick));
+		}
+		dojo.event.browser.addListener(tree.domNode, "onKey", dojo.lang.hitch(this, this.onKey));
+	}, onKey:function (e) {
+		if (!e.key || e.ctrkKey || e.altKey) {
+			return;
+		}
+		switch (e.key) {
+		  case e.KEY_ENTER:
+			var node = this.domElement2TreeNode(e.target);
+			if (node) {
+				this.processNode(node, e);
+			}
+		}
+	}, onAfterChangeTree:function (message) {
+		if (!message.oldTree && message.node.selected) {
+			this.select(message.node);
+		}
+		if (!message.newTree || !this.listenedTrees[message.newTree.widgetId]) {
+			if (this.selectedNode && message.node.children) {
+				this.deselectIfAncestorMatch(message.node);
+			}
+		}
+	}, initialize:function (args) {
+		for (var name in this.eventNamesDefault) {
+			if (dojo.lang.isUndefined(this.eventNames[name])) {
+				this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
+			}
+		}
+	}, onBeforeTreeDestroy:function (message) {
+		this.unlistenTree(message.source);
+	}, onAfterCollapse:function (message) {
+		this.deselectIfAncestorMatch(message.source);
+	}, onTreeDblClick:function (event) {
+		this.onTreeClick(event);
+	}, checkSpecialEvent:function (event) {
+		return event.shiftKey || event.ctrlKey;
+	}, onTreeClick:function (event) {
+		var node = this.domElement2TreeNode(event.target);
+		if (!node) {
+			return;
+		}
+		var checkLabelClick = function (domElement) {
+			return domElement === node.labelNode;
+		};
+		if (this.checkPathCondition(event.target, checkLabelClick)) {
+			this.processNode(node, event);
+		}
+	}, processNode:function (node, event) {
+		if (node.actionIsDisabled(node.actions.SELECT)) {
+			return;
+		}
+		if (dojo.lang.inArray(this.selectedNodes, node)) {
+			if (this.checkSpecialEvent(event)) {
+				this.deselect(node);
+				return;
+			}
+			var _this = this;
+			var i = 0;
+			var selectedNode;
+			while (this.selectedNodes.length > i) {
+				selectedNode = this.selectedNodes[i];
+				if (selectedNode !== node) {
+					this.deselect(selectedNode);
+					continue;
+				}
+				i++;
+			}
+			var wasJustClicked = this.checkRecentClick(node);
+			eventName = wasJustClicked ? this.eventNames.dblselect : this.eventNames.select;
+			if (wasJustClicked) {
+				eventName = this.eventNames.dblselect;
+				this.forgetLastClicked();
+			} else {
+				eventName = this.eventNames.select;
+				this.setLastClicked(node);
+			}
+			dojo.event.topic.publish(eventName, {node:node});
+			return;
+		}
+		this.deselectIfNoMulti(event);
+		this.setLastClicked(node);
+		this.select(node);
+	}, forgetLastClicked:function () {
+		this.lastClicked = {};
+	}, setLastClicked:function (node) {
+		this.lastClicked.date = new Date();
+		this.lastClicked.node = node;
+	}, checkRecentClick:function (node) {
+		var diff = new Date() - this.lastClicked.date;
+		if (this.lastClicked.node && diff < this.dblselectTimeout) {
+			return true;
+		} else {
+			return false;
+		}
+	}, deselectIfNoMulti:function (event) {
+		if (!this.checkSpecialEvent(event) || !this.allowedMulti) {
+			this.deselectAll();
+		}
+	}, deselectIfAncestorMatch:function (ancestor) {
+		var _this = this;
+		dojo.lang.forEach(this.selectedNodes, function (node) {
+			var selectedNode = node;
+			node = node.parent;
+			while (node && node.isTreeNode) {
+				if (node === ancestor) {
+					_this.deselect(selectedNode);
+					return;
+				}
+				node = node.parent;
+			}
+		});
+	}, onAfterDetach:function (message) {
+		this.deselectIfAncestorMatch(message.child);
+	}, select:function (node) {
+		var index = dojo.lang.find(this.selectedNodes, node, true);
+		if (index >= 0) {
+			return;
+		}
+		this.selectedNodes.push(node);
+		dojo.event.topic.publish(this.eventNames.select, {node:node});
+	}, deselect:function (node) {
+		var index = dojo.lang.find(this.selectedNodes, node, true);
+		if (index < 0) {
+			return;
+		}
+		this.selectedNodes.splice(index, 1);
+		dojo.event.topic.publish(this.eventNames.deselect, {node:node});
+	}, deselectAll:function () {
+		while (this.selectedNodes.length) {
+			this.deselect(this.selectedNodes[0]);
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/DomWidget.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DomWidget"], ["require", "dojo.event.*"], ["require", "dojo.widget.Widget"], ["require", "dojo.dom"], ["require", "dojo.html.style"], ["require", "dojo.xml.Parse"], ["require", "dojo.uri.*"], ["require", "dojo.lang.func"], ["require", "dojo.lang.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DomWidget");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.Widget");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.xml.Parse");
+	dojo.require("dojo.uri.*");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.extras");
+	dojo.widget._cssFiles = {};
+	dojo.widget._cssStrings = {};
+	dojo.widget._templateCache = {};
+	dojo.widget.defaultStrings = {dojoRoot:dojo.hostenv.getBaseScriptUri(), dojoWidgetModuleUri:dojo.uri.moduleUri("dojo.widget"), baseScriptUri:dojo.hostenv.getBaseScriptUri()};
+	dojo.widget.fillFromTemplateCache = function (obj, templatePath, templateString, avoidCache) {
+		var tpath = templatePath || obj.templatePath;
+		var tmplts = dojo.widget._templateCache;
+		if (!tpath && !obj["widgetType"]) {
+			do {
+				var dummyName = "__dummyTemplate__" + dojo.widget._templateCache.dummyCount++;
+			} while (tmplts[dummyName]);
+			obj.widgetType = dummyName;
+		}
+		var wt = tpath ? tpath.toString() : obj.widgetType;
+		var ts = tmplts[wt];
+		if (!ts) {
+			tmplts[wt] = {"string":null, "node":null};
+			if (avoidCache) {
+				ts = {};
+			} else {
+				ts = tmplts[wt];
+			}
+		}
+		if ((!obj.templateString) && (!avoidCache)) {
+			obj.templateString = templateString || ts["string"];
+		}
+		if (obj.templateString) {
+			obj.templateString = this._sanitizeTemplateString(obj.templateString);
+		}
+		if ((!obj.templateNode) && (!avoidCache)) {
+			obj.templateNode = ts["node"];
+		}
+		if ((!obj.templateNode) && (!obj.templateString) && (tpath)) {
+			var tstring = this._sanitizeTemplateString(dojo.hostenv.getText(tpath));
+			obj.templateString = tstring;
+			if (!avoidCache) {
+				tmplts[wt]["string"] = tstring;
+			}
+		}
+		if ((!ts["string"]) && (!avoidCache)) {
+			ts.string = obj.templateString;
+		}
+	};
+	dojo.widget._sanitizeTemplateString = function (tString) {
+		if (tString) {
+			tString = tString.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, "");
+			var matches = tString.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+			if (matches) {
+				tString = matches[1];
+			}
+		} else {
+			tString = "";
+		}
+		return tString;
+	};
+	dojo.widget._templateCache.dummyCount = 0;
+	dojo.widget.attachProperties = ["dojoAttachPoint", "id"];
+	dojo.widget.eventAttachProperty = "dojoAttachEvent";
+	dojo.widget.onBuildProperty = "dojoOnBuild";
+	dojo.widget.waiNames = ["waiRole", "waiState"];
+	dojo.widget.wai = {waiRole:{name:"waiRole", "namespace":"http://www.w3.org/TR/xhtml2", alias:"x2", prefix:"wairole:"}, waiState:{name:"waiState", "namespace":"http://www.w3.org/2005/07/aaa", alias:"aaa", prefix:""}, setAttr:function (node, ns, attr, value) {
+		if (dojo.render.html.ie) {
+			node.setAttribute(this[ns].alias + ":" + attr, this[ns].prefix + value);
+		} else {
+			node.setAttributeNS(this[ns]["namespace"], attr, this[ns].prefix + value);
+		}
+	}, getAttr:function (node, ns, attr) {
+		if (dojo.render.html.ie) {
+			return node.getAttribute(this[ns].alias + ":" + attr);
+		} else {
+			return node.getAttributeNS(this[ns]["namespace"], attr);
+		}
+	}, removeAttr:function (node, ns, attr) {
+		var success = true;
+		if (dojo.render.html.ie) {
+			success = node.removeAttribute(this[ns].alias + ":" + attr);
+		} else {
+			node.removeAttributeNS(this[ns]["namespace"], attr);
+		}
+		return success;
+	}};
+	dojo.widget.attachTemplateNodes = function (rootNode, targetObj, events) {
+		var elementNodeType = dojo.dom.ELEMENT_NODE;
+		function trim(str) {
+			return str.replace(/^\s+|\s+$/g, "");
+		}
+		if (!rootNode) {
+			rootNode = targetObj.domNode;
+		}
+		if (rootNode.nodeType != elementNodeType) {
+			return;
+		}
+		var nodes = rootNode.all || rootNode.getElementsByTagName("*");
+		var _this = targetObj;
+		for (var x = -1; x < nodes.length; x++) {
+			var baseNode = (x == -1) ? rootNode : nodes[x];
+			var attachPoint = [];
+			if (!targetObj.widgetsInTemplate || !baseNode.getAttribute("dojoType")) {
+				for (var y = 0; y < this.attachProperties.length; y++) {
+					var tmpAttachPoint = baseNode.getAttribute(this.attachProperties[y]);
+					if (tmpAttachPoint) {
+						attachPoint = tmpAttachPoint.split(";");
+						for (var z = 0; z < attachPoint.length; z++) {
+							if (dojo.lang.isArray(targetObj[attachPoint[z]])) {
+								targetObj[attachPoint[z]].push(baseNode);
+							} else {
+								targetObj[attachPoint[z]] = baseNode;
+							}
+						}
+						break;
+					}
+				}
+				var attachEvent = baseNode.getAttribute(this.eventAttachProperty);
+				if (attachEvent) {
+					var evts = attachEvent.split(";");
+					for (var y = 0; y < evts.length; y++) {
+						if ((!evts[y]) || (!evts[y].length)) {
+							continue;
+						}
+						var thisFunc = null;
+						var tevt = trim(evts[y]);
+						if (evts[y].indexOf(":") >= 0) {
+							var funcNameArr = tevt.split(":");
+							tevt = trim(funcNameArr[0]);
+							thisFunc = trim(funcNameArr[1]);
+						}
+						if (!thisFunc) {
+							thisFunc = tevt;
+						}
+						var tf = function () {
+							var ntf = new String(thisFunc);
+							return function (evt) {
+								if (_this[ntf]) {
+									_this[ntf](dojo.event.browser.fixEvent(evt, this));
+								}
+							};
+						}();
+						dojo.event.browser.addListener(baseNode, tevt, tf, false, true);
+					}
+				}
+				for (var y = 0; y < events.length; y++) {
+					var evtVal = baseNode.getAttribute(events[y]);
+					if ((evtVal) && (evtVal.length)) {
+						var thisFunc = null;
+						var domEvt = events[y].substr(4);
+						thisFunc = trim(evtVal);
+						var funcs = [thisFunc];
+						if (thisFunc.indexOf(";") >= 0) {
+							funcs = dojo.lang.map(thisFunc.split(";"), trim);
+						}
+						for (var z = 0; z < funcs.length; z++) {
+							if (!funcs[z].length) {
+								continue;
+							}
+							var tf = function () {
+								var ntf = new String(funcs[z]);
+								return function (evt) {
+									if (_this[ntf]) {
+										_this[ntf](dojo.event.browser.fixEvent(evt, this));
+									}
+								};
+							}();
+							dojo.event.browser.addListener(baseNode, domEvt, tf, false, true);
+						}
+					}
+				}
+			}
+			var tmpltPoint = baseNode.getAttribute(this.templateProperty);
+			if (tmpltPoint) {
+				targetObj[tmpltPoint] = baseNode;
+			}
+			dojo.lang.forEach(dojo.widget.waiNames, function (name) {
+				var wai = dojo.widget.wai[name];
+				var val = baseNode.getAttribute(wai.name);
+				if (val) {
+					if (val.indexOf("-") == -1) {
+						dojo.widget.wai.setAttr(baseNode, wai.name, "role", val);
+					} else {
+						var statePair = val.split("-");
+						dojo.widget.wai.setAttr(baseNode, wai.name, statePair[0], statePair[1]);
+					}
+				}
+			}, this);
+			var onBuild = baseNode.getAttribute(this.onBuildProperty);
+			if (onBuild) {
+				eval("var node = baseNode; var widget = targetObj; " + onBuild);
+			}
+		}
+	};
+	dojo.widget.getDojoEventsFromStr = function (str) {
+		var re = /(dojoOn([a-z]+)(\s?))=/gi;
+		var evts = str ? str.match(re) || [] : [];
+		var ret = [];
+		var lem = {};
+		for (var x = 0; x < evts.length; x++) {
+			if (evts[x].length < 1) {
+				continue;
+			}
+			var cm = evts[x].replace(/\s/, "");
+			cm = (cm.slice(0, cm.length - 1));
+			if (!lem[cm]) {
+				lem[cm] = true;
+				ret.push(cm);
+			}
+		}
+		return ret;
+	};
+	dojo.declare("dojo.widget.DomWidget", dojo.widget.Widget, function () {
+		if ((arguments.length > 0) && (typeof arguments[0] == "object")) {
+			this.create(arguments[0]);
+		}
+	}, {templateNode:null, templateString:null, templateCssString:null, preventClobber:false, domNode:null, containerNode:null, widgetsInTemplate:false, addChild:function (widget, overrideContainerNode, pos, ref, insertIndex) {
+		if (!this.isContainer) {
+			dojo.debug("dojo.widget.DomWidget.addChild() attempted on non-container widget");
+			return null;
+		} else {
+			if (insertIndex == undefined) {
+				insertIndex = this.children.length;
+			}
+			this.addWidgetAsDirectChild(widget, overrideContainerNode, pos, ref, insertIndex);
+			this.registerChild(widget, insertIndex);
+		}
+		return widget;
+	}, addWidgetAsDirectChild:function (widget, overrideContainerNode, pos, ref, insertIndex) {
+		if ((!this.containerNode) && (!overrideContainerNode)) {
+			this.containerNode = this.domNode;
+		}
+		var cn = (overrideContainerNode) ? overrideContainerNode : this.containerNode;
+		if (!pos) {
+			pos = "after";
+		}
+		if (!ref) {
+			if (!cn) {
+				cn = dojo.body();
+			}
+			ref = cn.lastChild;
+		}
+		if (!insertIndex) {
+			insertIndex = 0;
+		}
+		widget.domNode.setAttribute("dojoinsertionindex", insertIndex);
+		if (!ref) {
+			cn.appendChild(widget.domNode);
+		} else {
+			if (pos == "insertAtIndex") {
+				dojo.dom.insertAtIndex(widget.domNode, ref.parentNode, insertIndex);
+			} else {
+				if ((pos == "after") && (ref === cn.lastChild)) {
+					cn.appendChild(widget.domNode);
+				} else {
+					dojo.dom.insertAtPosition(widget.domNode, cn, pos);
+				}
+			}
+		}
+	}, registerChild:function (widget, insertionIndex) {
+		widget.dojoInsertionIndex = insertionIndex;
+		var idx = -1;
+		for (var i = 0; i < this.children.length; i++) {
+			if (this.children[i].dojoInsertionIndex <= insertionIndex) {
+				idx = i;
+			}
+		}
+		this.children.splice(idx + 1, 0, widget);
+		widget.parent = this;
+		widget.addedTo(this, idx + 1);
+		delete dojo.widget.manager.topWidgets[widget.widgetId];
+	}, removeChild:function (widget) {
+		dojo.dom.removeNode(widget.domNode);
+		return dojo.widget.DomWidget.superclass.removeChild.call(this, widget);
+	}, getFragNodeRef:function (frag) {
+		if (!frag) {
+			return null;
+		}
+		if (!frag[this.getNamespacedType()]) {
+			dojo.raise("Error: no frag for widget type " + this.getNamespacedType() + ", id " + this.widgetId + " (maybe a widget has set it's type incorrectly)");
+		}
+		return frag[this.getNamespacedType()]["nodeRef"];
+	}, postInitialize:function (args, frag, parentComp) {
+		var sourceNodeRef = this.getFragNodeRef(frag);
+		if (parentComp && (parentComp.snarfChildDomOutput || !sourceNodeRef)) {
+			parentComp.addWidgetAsDirectChild(this, "", "insertAtIndex", "", args["dojoinsertionindex"], sourceNodeRef);
+		} else {
+			if (sourceNodeRef) {
+				if (this.domNode && (this.domNode !== sourceNodeRef)) {
+					this._sourceNodeRef = dojo.dom.replaceNode(sourceNodeRef, this.domNode);
+				}
+			}
+		}
+		if (parentComp) {
+			parentComp.registerChild(this, args.dojoinsertionindex);
+		} else {
+			dojo.widget.manager.topWidgets[this.widgetId] = this;
+		}
+		if (this.widgetsInTemplate) {
+			var parser = new dojo.xml.Parse();
+			var subContainerNode;
+			var subnodes = this.domNode.getElementsByTagName("*");
+			for (var i = 0; i < subnodes.length; i++) {
+				if (subnodes[i].getAttribute("dojoAttachPoint") == "subContainerWidget") {
+					subContainerNode = subnodes[i];
+				}
+				if (subnodes[i].getAttribute("dojoType")) {
+					subnodes[i].setAttribute("isSubWidget", true);
+				}
+			}
+			if (this.isContainer && !this.containerNode) {
+				if (subContainerNode) {
+					var src = this.getFragNodeRef(frag);
+					if (src) {
+						dojo.dom.moveChildren(src, subContainerNode);
+						frag["dojoDontFollow"] = true;
+					}
+				} else {
+					dojo.debug("No subContainerWidget node can be found in template file for widget " + this);
+				}
+			}
+			var templatefrag = parser.parseElement(this.domNode, null, true);
+			dojo.widget.getParser().createSubComponents(templatefrag, this);
+			var subwidgets = [];
+			var stack = [this];
+			var w;
+			while ((w = stack.pop())) {
+				for (var i = 0; i < w.children.length; i++) {
+					var cwidget = w.children[i];
+					if (cwidget._processedSubWidgets || !cwidget.extraArgs["issubwidget"]) {
+						continue;
+					}
+					subwidgets.push(cwidget);
+					if (cwidget.isContainer) {
+						stack.push(cwidget);
+					}
+				}
+			}
+			for (var i = 0; i < subwidgets.length; i++) {
+				var widget = subwidgets[i];
+				if (widget._processedSubWidgets) {
+					dojo.debug("This should not happen: widget._processedSubWidgets is already true!");
+					return;
+				}
+				widget._processedSubWidgets = true;
+				if (widget.extraArgs["dojoattachevent"]) {
+					var evts = widget.extraArgs["dojoattachevent"].split(";");
+					for (var j = 0; j < evts.length; j++) {
+						var thisFunc = null;
+						var tevt = dojo.string.trim(evts[j]);
+						if (tevt.indexOf(":") >= 0) {
+							var funcNameArr = tevt.split(":");
+							tevt = dojo.string.trim(funcNameArr[0]);
+							thisFunc = dojo.string.trim(funcNameArr[1]);
+						}
+						if (!thisFunc) {
+							thisFunc = tevt;
+						}
+						if (dojo.lang.isFunction(widget[tevt])) {
+							dojo.event.kwConnect({srcObj:widget, srcFunc:tevt, targetObj:this, targetFunc:thisFunc});
+						} else {
+							alert(tevt + " is not a function in widget " + widget);
+						}
+					}
+				}
+				if (widget.extraArgs["dojoattachpoint"]) {
+					this[widget.extraArgs["dojoattachpoint"]] = widget;
+				}
+			}
+		}
+		if (this.isContainer && !frag["dojoDontFollow"]) {
+			dojo.widget.getParser().createSubComponents(frag, this);
+		}
+	}, buildRendering:function (args, frag) {
+		var ts = dojo.widget._templateCache[this.widgetType];
+		if (args["templatecsspath"]) {
+			args["templateCssPath"] = args["templatecsspath"];
+		}
+		var cpath = args["templateCssPath"] || this.templateCssPath;
+		if (cpath && !dojo.widget._cssFiles[cpath.toString()]) {
+			if ((!this.templateCssString) && (cpath)) {
+				this.templateCssString = dojo.hostenv.getText(cpath);
+				this.templateCssPath = null;
+			}
+			dojo.widget._cssFiles[cpath.toString()] = true;
+		}
+		if ((this["templateCssString"]) && (!dojo.widget._cssStrings[this.templateCssString])) {
+			dojo.html.insertCssText(this.templateCssString, null, cpath);
+			dojo.widget._cssStrings[this.templateCssString] = true;
+		}
+		if ((!this.preventClobber) && ((this.templatePath) || (this.templateNode) || ((this["templateString"]) && (this.templateString.length)) || ((typeof ts != "undefined") && ((ts["string"]) || (ts["node"]))))) {
+			this.buildFromTemplate(args, frag);
+		} else {
+			this.domNode = this.getFragNodeRef(frag);
+		}
+		this.fillInTemplate(args, frag);
+	}, buildFromTemplate:function (args, frag) {
+		var avoidCache = false;
+		if (args["templatepath"]) {
+			args["templatePath"] = args["templatepath"];
+		}
+		dojo.widget.fillFromTemplateCache(this, args["templatePath"], null, avoidCache);
+		var ts = dojo.widget._templateCache[this.templatePath ? this.templatePath.toString() : this.widgetType];
+		if ((ts) && (!avoidCache)) {
+			if (!this.templateString.length) {
+				this.templateString = ts["string"];
+			}
+			if (!this.templateNode) {
+				this.templateNode = ts["node"];
+			}
+		}
+		var matches = false;
+		var node = null;
+		var tstr = this.templateString;
+		if ((!this.templateNode) && (this.templateString)) {
+			matches = this.templateString.match(/\$\{([^\}]+)\}/g);
+			if (matches) {
+				var hash = this.strings || {};
+				for (var key in dojo.widget.defaultStrings) {
+					if (dojo.lang.isUndefined(hash[key])) {
+						hash[key] = dojo.widget.defaultStrings[key];
+					}
+				}
+				for (var i = 0; i < matches.length; i++) {
+					var key = matches[i];
+					key = key.substring(2, key.length - 1);
+					var kval = (key.substring(0, 5) == "this.") ? dojo.lang.getObjPathValue(key.substring(5), this) : hash[key];
+					var value;
+					if ((kval) || (dojo.lang.isString(kval))) {
+						value = new String((dojo.lang.isFunction(kval)) ? kval.call(this, key, this.templateString) : kval);
+						while (value.indexOf("\"") > -1) {
+							value = value.replace("\"", "&quot;");
+						}
+						tstr = tstr.replace(matches[i], value);
+					}
+				}
+			} else {
+				this.templateNode = this.createNodesFromText(this.templateString, true)[0];
+				if (!avoidCache) {
+					ts.node = this.templateNode;
+				}
+			}
+		}
+		if ((!this.templateNode) && (!matches)) {
+			dojo.debug("DomWidget.buildFromTemplate: could not create template");
+			return false;
+		} else {
+			if (!matches) {
+				node = this.templateNode.cloneNode(true);
+				if (!node) {
+					return false;
+				}
+			} else {
+				node = this.createNodesFromText(tstr, true)[0];
+			}
+		}
+		this.domNode = node;
+		this.attachTemplateNodes();
+		if (this.isContainer && this.containerNode) {
+			var src = this.getFragNodeRef(frag);
+			if (src) {
+				dojo.dom.moveChildren(src, this.containerNode);
+			}
+		}
+	}, attachTemplateNodes:function (baseNode, targetObj) {
+		if (!baseNode) {
+			baseNode = this.domNode;
+		}
+		if (!targetObj) {
+			targetObj = this;
+		}
+		return dojo.widget.attachTemplateNodes(baseNode, targetObj, dojo.widget.getDojoEventsFromStr(this.templateString));
+	}, fillInTemplate:function () {
+	}, destroyRendering:function () {
+		try {
+			dojo.dom.destroyNode(this.domNode);
+			delete this.domNode;
+		}
+		catch (e) {
+		}
+		if (this._sourceNodeRef) {
+			try {
+				dojo.dom.destroyNode(this._sourceNodeRef);
+			}
+			catch (e) {
+			}
+		}
+	}, createNodesFromText:function () {
+		dojo.unimplemented("dojo.widget.DomWidget.createNodesFromText");
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/RichText.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -26404,6 +54037,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.RichText");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.html.*");
@@ -27571,6 +55206,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeContextMenu");
 dojo.require("dojo.event.*");
 dojo.require("dojo.io.*");
@@ -27670,6 +55307,211 @@
 }});
 
 
+__CPAN_FILE__ src/widget/ShowSlide.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ShowSlide"], ["require", "dojo.widget.*"], ["require", "dojo.lang.common"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.lfx.html"], ["require", "dojo.html.display"], ["require", "dojo.html.layout"], ["require", "dojo.animation.Animation"], ["require", "dojo.gfx.color"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ShowSlide");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.lfx.html");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.animation.Animation");
+	dojo.require("dojo.gfx.color");
+	dojo.widget.defineWidget("dojo.widget.ShowSlide", dojo.widget.HtmlWidget, {title:"", _action:-1, isContainer:true, _components:{}, _actions:[], gotoAction:function (action) {
+		this._action = action;
+	}, _nextAction:function (event) {
+		if ((this._action + 1) != this._actions.length) {
+			++this._action;
+			return true;
+		}
+		return false;
+	}, _previousAction:function (event) {
+		if ((this._action - 1) != -1) {
+			--this._action;
+			return true;
+		}
+		return false;
+	}, htmlTitle:null, debug:false, noClick:false, templateString:"<div class=\"dojoShowSlide\">\n\t<div class=\"dojoShowSlideTitle\">\n\t\t<h1 dojoAttachPoint=\"htmlTitle\">Title</h1>\n\t</div>\n\t<div class=\"dojoShowSlideBody\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n", templateCssString:".dojoShowSlideTitle {\n\theight: 100px;\n\tbackground: #369;\n}\n.dojoShowSlideTitle h1 {\n\tmargin-top: 0;\n\tline-height: 100px;\n\tmargin-left: 30px;\n}\n.dojoShowSlideBody {\n\tmargin: 15px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ShowSlide.css"), postCreate:function () {
+		this.htmlTitle.innerHTML = this.title;
+		var actions = this.getChildrenOfType("ShowAction", false);
+		var atypes = {};
+		dojo.lang.forEach(actions, function (act) {
+			atypes[act.on] = true;
+		});
+		this._components = {};
+		var cn = this.containerNode;
+		var nodes = dojo.render.html.ie ? cn.all : cn.getElementsByTagName("*");
+		dojo.lang.forEach(nodes, function (node) {
+			var as = node.getAttribute("as");
+			if (as) {
+				if (!this._components[as]) {
+					this._components[as] = [];
+				}
+				this._components[as].push(node);
+				if (!atypes[as]) {
+					var tmpAction = dojo.widget.createWidget("ShowAction", {on:as});
+					this.addChild(tmpAction);
+					atypes[as] = true;
+				}
+			}
+		}, this);
+		this._actions = [];
+		actions = this.getChildrenOfType("ShowAction", false);
+		dojo.lang.forEach(actions, function (child) {
+			this._actions.push(child);
+			var components = this._components[child.on];
+			for (var j = 0, component; component = components[j]; j++) {
+				if (child["action"] && ((child.action != "remove") && (child.action != "fadeout") && (child.action != "wipeout"))) {
+					this.hideComponent(component);
+				}
+			}
+		}, this);
+	}, previousAction:function (event) {
+		if (!this.parent.stopEvent(event)) {
+			return false;
+		}
+		var action = this._actions[this._action];
+		if (!action) {
+			return false;
+		}
+		var on = action.on;
+		while (action.on == on) {
+			var components = this._components[on];
+			for (var i = 0, component; component = components[i]; i++) {
+				if ((action.action == "remove") || (action.action == "fadeout") || (action.action == "wipeout")) {
+					if (component.style.display == "none") {
+						component.style.display = "";
+						component.style.visibility = "visible";
+						var exits = true;
+					}
+					dojo.html.setOpacity(component, 1);
+				} else {
+					if (action.action) {
+						this.hideComponent(component);
+					}
+				}
+			}
+			--this._action;
+			if (exits) {
+				return true;
+			}
+			if (action.auto == "true") {
+				on = this._actions[this._action].on;
+			}
+			action = this._actions[this._action];
+			if (!action) {
+				return false;
+			}
+		}
+		return true;
+	}, hideComponent:function (component) {
+		component.style.visibility = "hidden";
+		component.style.backgroundColor = "transparent";
+		var parent = component.parentNode;
+		if ((parent) && (parent.tagName.toLowerCase() == "li")) {
+			parent.oldType = parent.style.listStyleType;
+			parent.style.listStyleType = "none";
+		}
+	}, nextAction:function (event) {
+		if (!this.parent.stopEvent(event)) {
+			return false;
+		}
+		if (!this._nextAction(this)) {
+			return false;
+		}
+		var action = this._actions[this._action];
+		if (!action) {
+			return false;
+		}
+		var tmpAction = action["action"];
+		var components = this._components[action.on];
+		for (var i = 0, component; component = components[i]; i++) {
+			if (tmpAction) {
+				var duration = action.duration || 1000;
+				if ((tmpAction == "fade") || (tmpAction == "fadeIn")) {
+					dojo.html.setOpacity(component, 0);
+					dojo.lfx.html.fadeShow(component, duration).play(true);
+				} else {
+					if (tmpAction == "fadeout") {
+						dojo.lfx.html.fadeHide(component, duration).play(true);
+					} else {
+						if (tmpAction == "fly") {
+							var width = dojo.html.getMarginBox(component).width;
+							var position = dojo.html.getAbsolutePosition(component);
+							component.style.position = "relative";
+							component.style.left = -(width + position.x) + "px";
+							dojo.lfx.html.slideBy(component, {top:0, left:(width + position.x)}, duration, -1, this.callWith).play(true);
+						} else {
+							if ((tmpAction == "wipe") || (tmpAction == "wipein")) {
+								dojo.lfx.html.wipeIn(component, duration).play();
+							} else {
+								if (tmpAction == "wipeout") {
+									dojo.lfx.html.wipeOut(component, duration).play();
+								} else {
+									if (tmpAction == "color") {
+										var from = new dojo.gfx.color.Color(action.from).toRgb();
+										var to = new dojo.gfx.color.Color(action.to).toRgb();
+										var anim = new dojo.animation.Animation(new dojo.math.curves.Line(from, to), duration, 0);
+										var node = component;
+										dojo.event.connect(anim, "onAnimate", function (e) {
+											node.style.color = "rgb(" + e.coordsAsInts().join(",") + ")";
+										});
+										anim.play(true);
+									} else {
+										if (tmpAction == "bgcolor") {
+											dojo.lfx.html.unhighlight(component, action.to, duration).play();
+										} else {
+											if (tmpAction == "remove") {
+												component.style.display = "none";
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+				if (tmpAction == "hide") {
+					component.style.visibility = "hidden";
+				} else {
+					component.style.visibility = "visible";
+				}
+			}
+		}
+		action = this._actions[this._action + 1];
+		if (action && action.auto == "true") {
+			this.nextAction();
+		}
+		return true;
+	}, callWith:function (node) {
+		if (!node) {
+			return;
+		}
+		if (dojo.lang.isArray(node)) {
+			dojo.lang.forEach(node, arguments.callee);
+			return;
+		}
+		var parent = node.parentNode;
+		if ((parent) && (parent.tagName.toLowerCase() == "li")) {
+			parent.style.listStyleType = parent.oldType;
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Rounded.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -27681,6 +55523,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Rounded");
 dojo.widget.tags.addParseTreeHandler("dojo:rounded");
 dojo.require("dojo.widget.*");
@@ -28210,6 +56054,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.IntegerTextbox");
 dojo.require("dojo.widget.ValidationTextbox");
 dojo.require("dojo.validate.common");
@@ -28241,6 +56087,359 @@
 }});
 
 
+__CPAN_FILE__ src/widget/DatePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.DatePicker"], ["require", "dojo.date.common"], ["require", "dojo.date.format"], ["require", "dojo.date.serialize"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.event.*"], ["require", "dojo.dom"], ["require", "dojo.html.style"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.DatePicker");
+	dojo.require("dojo.date.common");
+	dojo.require("dojo.date.format");
+	dojo.require("dojo.date.serialize");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.html.style");
+	dojo.widget.defineWidget("dojo.widget.DatePicker", dojo.widget.HtmlWidget, {value:"", name:"", displayWeeks:6, adjustWeeks:false, startDate:"1492-10-12", endDate:"2941-10-12", weekStartsOn:"", staticDisplay:false, dayWidth:"narrow", classNames:{previous:"previousMonth", disabledPrevious:"previousMonthDisabled", current:"currentMonth", disabledCurrent:"currentMonthDisabled", next:"nextMonth", disabledNext:"nextMonthDisabled", currentDate:"currentDate", selectedDate:"selectedDate"}, templateString:"<div class=\"datePickerContainer\" dojoAttachPoint=\"datePickerContainerNode\">\n\t<table cellspacing=\"0\" cellpadding=\"0\" class=\"calendarContainer\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<td class=\"monthWrapper\" valign=\"top\">\n\t\t\t\t\t<table class=\"monthContainer\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"monthCurve monthCurveTL\" valign=\"top\"></td>\n\t\t\t\t\t\t\t<td class=\"monthLabelContainer\" valign=\"top\">\n\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"increaseWeekNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\t\t\t\t\t\t\t\tclass=\"incrementControl increase\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/incrementMonth.png\" \n\t\t\t\t\t\t\t\t\talt=\"&darr;\" style=\"width:7px;height:5px;\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span \n\t\t\t\t\t\t\t\t\tdojoAttachPoint=\"increaseMonthNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl increase\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/incrementMonth.png\" \n\t\t\t\t\t\t\t\t\t\talt=\"&darr;\"  dojoAttachPoint=\"incrementMonthImageNode\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span \n\t\t\t\t\t\t\t\t\tdojoAttachPoint=\"decreaseWeekNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementWeek;\" \n\t\t\t\t\t\t\t\t\tclass=\"incrementControl decrease\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/decrementMonth.png\" alt=\"&uarr;\" style=\"width:7px;height:5px;\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span \n\t\t\t\t\t\t\t\t\tdojoAttachPoint=\"decreaseMonthNode\" \n\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementMonth;\" class=\"incrementControl decrease\">\n\t\t\t\t\t\t\t\t\t<img src=\"${dojoWidgetModuleUri}templates/images/decrementMonth.png\" \n\t\t\t\t\t\t\t\t\t\talt=\"&uarr;\" dojoAttachPoint=\"decrementMonthImageNode\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"monthLabelNode\" class=\"month\"></span>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td class=\"monthCurve monthCurveTR\" valign=\"top\"></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\">\n\t\t\t\t\t<table class=\"calendarBodyContainer\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr dojoAttachPoint=\"dayLabelsRow\">\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody dojoAttachPoint=\"calendarDatesContainerNode\" \n\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: _handleUiClick;\">\n\t\t\t\t\t\t\t<tr dojoAttachPoint=\"calendarWeekTemplate\">\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t\t<tfoot>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"yearWrapper\">\n\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"yearContainer\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"curveBL\" valign=\"top\"></td>\n\t\t\t\t\t\t\t<td valign=\"top\">\n\t\t\t\t\t\t\t\t<h3 class=\"yearLabel\">\n\t\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\"\n\t\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"previousYear\"></span>\n\t\t\t\t\t\t\t\t\t<span class=\"selectedYear\" dojoAttachPoint=\"currentYearLabelNode\"></span>\n\t\t\t\t\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" \n\t\t\t\t\t\t\t\t\t\tdojoAttachEvent=\"onClick: onIncrementYear;\" class=\"nextYear\"></span>\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td class=\"curveBR\" valign=\"top\"></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tfoot>\n\t</table>\n</div>\n", templateCssString:".datePickerContainer {\n\twidth:164px; /* needed for proper user styling */\n}\n\n.calendarContainer {\n/*\tborder:1px solid #566f8f;*/\n}\n\n.calendarBodyContainer {\n\twidth:100%; /* needed for the explode effect (explain?) */\n\tbackground: #7591bc url(\"images/dpBg.gif\") top left repeat-x;\n}\n\n.calendarBodyContainer thead tr td {\n\tcolor:#293a4b;\n\tfont:bold 0.75em Helvetica, Arial, Verdana, sans-serif;\n\ttext-align:center;\n\tpadding:0.25em;\n\tbackground: url(\"images/dpHorizLine.gif\") bottom left repeat-x;\n}\n\n.calendarBodyContainer tbody tr td {\n\tcolor:#fff;\n\tfont:bold 0.7em Helvetica, Arial, Verdana, sans-serif;\n\ttext-align:center;\n\tpadding:0.4em;\n\tbackground: url(\"images/dpVertLine.gif\") top right repeat-y;\n\tcursor:pointer;\n\tcursor:hand;\n}\n\n\n.monthWrapper {\n\tpadding-bottom:2px;\n\tbackground: url(\"images/dpHorizLine.gif\") bottom left repeat-x;\n}\n\n.monthContainer {\n\twidth:100%;\n}\n\n.monthLabelContainer {\n\ttext-align:center;\n\tfont:bold 0.75em Helvetica, Arial, Verdana, sans-serif;\n\tbackground: url(\"images/dpMonthBg.png\") repeat-x top left !important;\n\tcolor:#293a4b;\n\tpadding:0.25em;\n}\n\n.monthCurve {\n\twidth:12px;\n}\n\n.monthCurveTL {\n\tbackground: url(\"images/dpCurveTL.png\") no-repeat top left !important;\n}\n\n.monthCurveTR {\n\t\tbackground: url(\"images/dpCurveTR.png\") no-repeat top right !important;\n}\n\n\n.yearWrapper {\n\tbackground: url(\"images/dpHorizLineFoot.gif\") top left repeat-x;\n\tpadding-top:2px;\n}\n\n.yearContainer {\n\twidth:100%;\n}\n\n.yearContainer td {\n\tbackground:url(\"images/dpYearBg.png\") top left repeat-x;\n}\n\n.yearContainer .yearLabel {\n\tmargin:0;\n\tpadding:0.45em 0 0.45em 0;\n\tcolor:#fff;\n\tfont:bold 0.75em Helvetica, Arial, Verdana, sans-serif;\n\ttext-align:center;\n}\n\n.curveBL {\n\tbackground: url(\"images/dpCurveBL.png\") bottom left no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n.curveBR {\n\tbackground: url(\"images/dpCurveBR.png\") bottom right no-repeat !important;\n\twidth:9px !important;\n\tpadding:0;\n\tmargin:0;\n}\n\n\n.previousMonth {\n\tbackground-color:#6782a8 !important;\n}\n\n.previousMonthDisabled {\n\tbackground-color:#a4a5a6 !important;\n\tcursor:default !important\n}\n.currentMonth {\n}\n\n.currentMonthDisabled {\n\tbackground-color:#bbbbbc !important;\n\tcursor:default !important\n}\n.nextMonth {\n\tbackground-color:#6782a8 !important;\n}\n.nextMonthDisabled {\n\tbackground-color:#a4a5a6 !important;\n\tcursor:default !important;\n}\n\n.currentDate {\n\ttext-decoration:underline;\n\tfont-style:italic;\n}\n\n.selectedDate {\n\tbackground-color:#fff !important;\n\tcolor:#6782a8 !important;\n}\n\n.yearLabel .selectedYear {\n\tpadding:0.2em;\n\tbackground-color:#9ec3fb !important;\n}\n\n.nextYear, .previousYear {\n\tcursor:pointer;cursor:hand;\n\tpadding:0;\n}\n\n.nextYear {\n\tmargin:0 0 0 0.55em;\n}\n\n.previousYear {\n\tmargin:0 0.55em 0 0;\n}\n\n.incrementControl {\n\tcursor:pointer;cursor:hand;\n\twidth:1em;\n}\n\n.increase {\n\tfloat:right;\n}\n\n.decrease {\n\tfloat:left;\n}\n\n.lastColumn {\n\tbackground-image:none !important;\n}\n\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/DatePicker.css"), postMixInProperties:function () {
+		dojo.widget.DatePicker.superclass.postMixInProperties.apply(this, arguments);
+		if (!this.weekStartsOn) {
+			this.weekStartsOn = dojo.date.getFirstDayOfWeek(this.lang);
+		}
+		this.today = new Date();
+		this.today.setHours(0, 0, 0, 0);
+		if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
+			this.value = new Date();
+		} else {
+			if (this.value && (typeof this.value == "string") && (this.value.split("-").length > 2)) {
+				this.value = dojo.date.fromRfc3339(this.value);
+				this.value.setHours(0, 0, 0, 0);
+			}
+		}
+	}, fillInTemplate:function (args, frag) {
+		dojo.widget.DatePicker.superclass.fillInTemplate.apply(this, arguments);
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+		this.weekTemplate = dojo.dom.removeNode(this.calendarWeekTemplate);
+		this._preInitUI(this.value ? this.value : this.today, false, true);
+		var dayLabels = dojo.lang.unnest(dojo.date.getNames("days", this.dayWidth, "standAlone", this.lang));
+		if (this.weekStartsOn > 0) {
+			for (var i = 0; i < this.weekStartsOn; i++) {
+				dayLabels.push(dayLabels.shift());
+			}
+		}
+		var dayLabelNodes = this.dayLabelsRow.getElementsByTagName("td");
+		for (i = 0; i < 7; i++) {
+			dayLabelNodes.item(i).innerHTML = dayLabels[i];
+		}
+		if (this.value) {
+			this.setValue(this.value);
+		}
+	}, getValue:function () {
+		return dojo.date.toRfc3339(new Date(this.value), "dateOnly");
+	}, getDate:function () {
+		return this.value;
+	}, setValue:function (rfcDate) {
+		this.setDate(rfcDate);
+	}, setDate:function (dateObj) {
+		if (dateObj == "") {
+			this.value = "";
+			this._preInitUI(this.curMonth, false, true);
+		} else {
+			if (typeof dateObj == "string") {
+				this.value = dojo.date.fromRfc3339(dateObj);
+				this.value.setHours(0, 0, 0, 0);
+			} else {
+				this.value = new Date(dateObj);
+				this.value.setHours(0, 0, 0, 0);
+			}
+		}
+		if (this.selectedNode != null) {
+			dojo.html.removeClass(this.selectedNode, this.classNames.selectedDate);
+		}
+		if (this.clickedNode != null) {
+			dojo.debug("adding selectedDate");
+			dojo.html.addClass(this.clickedNode, this.classNames.selectedDate);
+			this.selectedNode = this.clickedNode;
+		} else {
+			this._preInitUI(this.value, false, true);
+		}
+		this.clickedNode = null;
+		this.onValueChanged(this.value);
+	}, _preInitUI:function (dateObj, initFirst, initUI) {
+		if (typeof (this.startDate) == "string") {
+			this.startDate = dojo.date.fromRfc3339(this.startDate);
+		}
+		if (typeof (this.endDate) == "string") {
+			this.endDate = dojo.date.fromRfc3339(this.endDate);
+		}
+		this.startDate.setHours(0, 0, 0, 0);
+		this.endDate.setHours(24, 0, 0, -1);
+		if (dateObj < this.startDate || dateObj > this.endDate) {
+			dateObj = new Date((dateObj < this.startDate) ? this.startDate : this.endDate);
+		}
+		this.firstDay = this._initFirstDay(dateObj, initFirst);
+		this.selectedIsUsed = false;
+		this.currentIsUsed = false;
+		var nextDate = new Date(this.firstDay);
+		var tmpMonth = nextDate.getMonth();
+		this.curMonth = new Date(nextDate);
+		this.curMonth.setDate(nextDate.getDate() + 6);
+		this.curMonth.setDate(1);
+		if (this.displayWeeks == "" || this.adjustWeeks) {
+			this.adjustWeeks = true;
+			this.displayWeeks = Math.ceil((dojo.date.getDaysInMonth(this.curMonth) + this._getAdjustedDay(this.curMonth)) / 7);
+		}
+		var days = this.displayWeeks * 7;
+		if (dojo.date.diff(this.startDate, this.endDate, dojo.date.dateParts.DAY) < days) {
+			this.staticDisplay = true;
+			if (dojo.date.diff(nextDate, this.endDate, dojo.date.dateParts.DAY) > days) {
+				this._preInitUI(this.startDate, true, false);
+				nextDate = new Date(this.firstDay);
+			}
+			this.curMonth = new Date(nextDate);
+			this.curMonth.setDate(nextDate.getDate() + 6);
+			this.curMonth.setDate(1);
+			var curClass = (nextDate.getMonth() == this.curMonth.getMonth()) ? "current" : "previous";
+		}
+		if (initUI) {
+			this._initUI(days);
+		}
+	}, _initUI:function (days) {
+		dojo.dom.removeChildren(this.calendarDatesContainerNode);
+		for (var i = 0; i < this.displayWeeks; i++) {
+			this.calendarDatesContainerNode.appendChild(this.weekTemplate.cloneNode(true));
+		}
+		var nextDate = new Date(this.firstDay);
+		this._setMonthLabel(this.curMonth.getMonth());
+		this._setYearLabels(this.curMonth.getFullYear());
+		var calendarNodes = this.calendarDatesContainerNode.getElementsByTagName("td");
+		var calendarRows = this.calendarDatesContainerNode.getElementsByTagName("tr");
+		var currentCalendarNode;
+		for (i = 0; i < days; i++) {
+			currentCalendarNode = calendarNodes.item(i);
+			currentCalendarNode.innerHTML = nextDate.getDate();
+			currentCalendarNode.setAttribute("djDateValue", nextDate.valueOf());
+			var curClass = (nextDate.getMonth() != this.curMonth.getMonth() && Number(nextDate) < Number(this.curMonth)) ? "previous" : (nextDate.getMonth() == this.curMonth.getMonth()) ? "current" : "next";
+			var mappedClass = curClass;
+			if (this._isDisabledDate(nextDate)) {
+				var classMap = {previous:"disabledPrevious", current:"disabledCurrent", next:"disabledNext"};
+				mappedClass = classMap[curClass];
+			}
+			dojo.html.setClass(currentCalendarNode, this._getDateClassName(nextDate, mappedClass));
+			if (dojo.html.hasClass(currentCalendarNode, this.classNames.selectedDate)) {
+				this.selectedNode = currentCalendarNode;
+			}
+			nextDate = dojo.date.add(nextDate, dojo.date.dateParts.DAY, 1);
+		}
+		this.lastDay = dojo.date.add(nextDate, dojo.date.dateParts.DAY, -1);
+		this._initControls();
+	}, _initControls:function () {
+		var d = this.firstDay;
+		var d2 = this.lastDay;
+		var decWeek, incWeek, decMonth, incMonth, decYear, incYear;
+		decWeek = incWeek = decMonth = incMonth = decYear = incYear = !this.staticDisplay;
+		with (dojo.date.dateParts) {
+			var add = dojo.date.add;
+			if (decWeek && add(d, DAY, (-1 * (this._getAdjustedDay(d) + 1))) < this.startDate) {
+				decWeek = decMonth = decYear = false;
+			}
+			if (incWeek && d2 > this.endDate) {
+				incWeek = incMonth = incYear = false;
+			}
+			if (decMonth && add(d, DAY, -1) < this.startDate) {
+				decMonth = decYear = false;
+			}
+			if (incMonth && add(d2, DAY, 1) > this.endDate) {
+				incMonth = incYear = false;
+			}
+			if (decYear && add(d2, YEAR, -1) < this.startDate) {
+				decYear = false;
+			}
+			if (incYear && add(d, YEAR, 1) > this.endDate) {
+				incYear = false;
+			}
+		}
+		function enableControl(node, enabled) {
+			dojo.html.setVisibility(node, enabled ? "" : "hidden");
+		}
+		enableControl(this.decreaseWeekNode, decWeek);
+		enableControl(this.increaseWeekNode, incWeek);
+		enableControl(this.decreaseMonthNode, decMonth);
+		enableControl(this.increaseMonthNode, incMonth);
+		enableControl(this.previousYearLabelNode, decYear);
+		enableControl(this.nextYearLabelNode, incYear);
+	}, _incrementWeek:function (evt) {
+		var d = new Date(this.firstDay);
+		switch (evt.target) {
+		  case this.increaseWeekNode.getElementsByTagName("img").item(0):
+		  case this.increaseWeekNode:
+			var tmpDate = dojo.date.add(d, dojo.date.dateParts.WEEK, 1);
+			if (tmpDate < this.endDate) {
+				d = dojo.date.add(d, dojo.date.dateParts.WEEK, 1);
+			}
+			break;
+		  case this.decreaseWeekNode.getElementsByTagName("img").item(0):
+		  case this.decreaseWeekNode:
+			if (d >= this.startDate) {
+				d = dojo.date.add(d, dojo.date.dateParts.WEEK, -1);
+			}
+			break;
+		}
+		this._preInitUI(d, true, true);
+	}, _incrementMonth:function (evt) {
+		var d = new Date(this.curMonth);
+		var tmpDate = new Date(this.firstDay);
+		switch (evt.currentTarget) {
+		  case this.increaseMonthNode.getElementsByTagName("img").item(0):
+		  case this.increaseMonthNode:
+			tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.DAY, this.displayWeeks * 7);
+			if (tmpDate < this.endDate) {
+				d = dojo.date.add(d, dojo.date.dateParts.MONTH, 1);
+			} else {
+				var revertToEndDate = true;
+			}
+			break;
+		  case this.decreaseMonthNode.getElementsByTagName("img").item(0):
+		  case this.decreaseMonthNode:
+			if (tmpDate > this.startDate) {
+				d = dojo.date.add(d, dojo.date.dateParts.MONTH, -1);
+			} else {
+				var revertToStartDate = true;
+			}
+			break;
+		}
+		if (revertToStartDate) {
+			d = new Date(this.startDate);
+		} else {
+			if (revertToEndDate) {
+				d = new Date(this.endDate);
+			}
+		}
+		this._preInitUI(d, false, true);
+	}, _incrementYear:function (evt) {
+		var year = this.curMonth.getFullYear();
+		var tmpDate = new Date(this.firstDay);
+		switch (evt.target) {
+		  case this.nextYearLabelNode:
+			tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.YEAR, 1);
+			if (tmpDate < this.endDate) {
+				year++;
+			} else {
+				var revertToEndDate = true;
+			}
+			break;
+		  case this.previousYearLabelNode:
+			tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.YEAR, -1);
+			if (tmpDate > this.startDate) {
+				year--;
+			} else {
+				var revertToStartDate = true;
+			}
+			break;
+		}
+		var d;
+		if (revertToStartDate) {
+			d = new Date(this.startDate);
+		} else {
+			if (revertToEndDate) {
+				d = new Date(this.endDate);
+			} else {
+				d = new Date(year, this.curMonth.getMonth(), 1);
+			}
+		}
+		this._preInitUI(d, false, true);
+	}, onIncrementWeek:function (evt) {
+		evt.stopPropagation();
+		if (!this.staticDisplay) {
+			this._incrementWeek(evt);
+		}
+	}, onIncrementMonth:function (evt) {
+		evt.stopPropagation();
+		if (!this.staticDisplay) {
+			this._incrementMonth(evt);
+		}
+	}, onIncrementYear:function (evt) {
+		evt.stopPropagation();
+		if (!this.staticDisplay) {
+			this._incrementYear(evt);
+		}
+	}, _setMonthLabel:function (monthIndex) {
+		this.monthLabelNode.innerHTML = dojo.date.getNames("months", "wide", "standAlone", this.lang)[monthIndex];
+	}, _setYearLabels:function (year) {
+		var y = year - 1;
+		var that = this;
+		function f(n) {
+			that[n + "YearLabelNode"].innerHTML = dojo.date.format(new Date(y++, 0), {formatLength:"yearOnly", locale:that.lang});
+		}
+		f("previous");
+		f("current");
+		f("next");
+	}, _getDateClassName:function (date, monthState) {
+		var currentClassName = this.classNames[monthState];
+		if ((!this.selectedIsUsed && this.value) && (Number(date) == Number(this.value))) {
+			currentClassName = this.classNames.selectedDate + " " + currentClassName;
+			this.selectedIsUsed = true;
+		}
+		if ((!this.currentIsUsed) && (Number(date) == Number(this.today))) {
+			currentClassName = currentClassName + " " + this.classNames.currentDate;
+			this.currentIsUsed = true;
+		}
+		return currentClassName;
+	}, onClick:function (evt) {
+		dojo.event.browser.stopEvent(evt);
+	}, _handleUiClick:function (evt) {
+		var eventTarget = evt.target;
+		if (eventTarget.nodeType != dojo.dom.ELEMENT_NODE) {
+			eventTarget = eventTarget.parentNode;
+		}
+		dojo.event.browser.stopEvent(evt);
+		this.selectedIsUsed = this.todayIsUsed = false;
+		if (dojo.html.hasClass(eventTarget, this.classNames["disabledPrevious"]) || dojo.html.hasClass(eventTarget, this.classNames["disabledCurrent"]) || dojo.html.hasClass(eventTarget, this.classNames["disabledNext"])) {
+			return;
+		}
+		this.clickedNode = eventTarget;
+		this.setDate(new Date(Number(dojo.html.getAttribute(eventTarget, "djDateValue"))));
+	}, onValueChanged:function (date) {
+	}, _isDisabledDate:function (dateObj) {
+		if (dateObj < this.startDate || dateObj > this.endDate) {
+			return true;
+		}
+		return this.isDisabledDate(dateObj, this.lang);
+	}, isDisabledDate:function (dateObj, locale) {
+		return false;
+	}, _initFirstDay:function (dateObj, adj) {
+		var d = new Date(dateObj);
+		if (!adj) {
+			d.setDate(1);
+		}
+		d.setDate(d.getDate() - this._getAdjustedDay(d, this.weekStartsOn));
+		d.setHours(0, 0, 0, 0);
+		return d;
+	}, _getAdjustedDay:function (dateObj) {
+		var days = [0, 1, 2, 3, 4, 5, 6];
+		if (this.weekStartsOn > 0) {
+			for (var i = 0; i < this.weekStartsOn; i++) {
+				days.unshift(days.pop());
+			}
+		}
+		return days[dateObj.getDay()];
+	}, destroy:function () {
+		dojo.widget.DatePicker.superclass.destroy.apply(this, arguments);
+		dojo.html.destroyNode(this.weekTemplate);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Checkbox.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -28252,6 +56451,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Checkbox");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -28355,6 +56556,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor");
 dojo.deprecated("dojo.widget.Editor", "is replaced by dojo.widget.Editor2", "0.5");
 dojo.require("dojo.io.*");
@@ -28734,6 +56937,558 @@
 }});
 
 
+__CPAN_FILE__ src/widget/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.xml.Parse", "dojo.widget.Widget", "dojo.widget.Parse", "dojo.widget.Manager"], browser:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], dashboard:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], svg:["dojo.widget.SvgWidget"], rhino:["dojo.widget.SwtWidget"]}], ["provide", "dojo.widget.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.xml.Parse", "dojo.widget.Widget", "dojo.widget.Parse", "dojo.widget.Manager"], browser:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], dashboard:["dojo.widget.DomWidget", "dojo.widget.HtmlWidget"], svg:["dojo.widget.SvgWidget"], rhino:["dojo.widget.SwtWidget"]});
+	dojo.provide("dojo.widget.*");
+}});
+
+
+__CPAN_FILE__ src/widget/Rounded.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Rounded"], ["require", "dojo.widget.*"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.html.style"], ["require", "dojo.html.display"], ["require", "dojo.gfx.color"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Rounded");
+	dojo.widget.tags.addParseTreeHandler("dojo:rounded");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.gfx.color");
+	dojo.deprecated("dojo.widget.Rounded will be removed in version 0.5; you can now apply rounded corners to any block element using dojo.lfx.rounded.", "0.5");
+	dojo.widget.defineWidget("dojo.widget.Rounded", dojo.widget.ContentPane, {isSafari:dojo.render.html.safari, boxMargin:"50px", radius:14, domNode:"", corners:"TR,TL,BR,BL", antiAlias:true, fillInTemplate:function (args, frag) {
+		dojo.widget.Rounded.superclass.fillInTemplate.call(this, args, frag);
+		dojo.html.insertCssFile(this.templateCssPath);
+		if (this.domNode.style.height <= 0) {
+			var minHeight = (this.radius * 1) + this.domNode.clientHeight;
+			this.domNode.style.height = minHeight + "px";
+		}
+		if (this.domNode.style.width <= 0) {
+			var minWidth = (this.radius * 1) + this.domNode.clientWidth;
+			this.domNode.style.width = minWidth + "px";
+		}
+		var cornersAvailable = ["TR", "TL", "BR", "BL"];
+		var cornersPassed = this.corners.split(",");
+		this.settings = {antiAlias:this.antiAlias};
+		var setCorner = function (currentCorner) {
+			var val = currentCorner.toLowerCase();
+			if (dojo.lang.inArray(cornersPassed, currentCorner)) {
+				this.settings[val] = {radius:this.radius, enabled:true};
+			} else {
+				this.settings[val] = {radius:0};
+			}
+		};
+		dojo.lang.forEach(cornersAvailable, setCorner, this);
+		this.domNode.style.margin = this.boxMargin;
+		this.curvyCorners(this.settings);
+		this.applyCorners();
+	}, curvyCorners:function (settings) {
+		this.box = this.domNode;
+		this.topContainer = null;
+		this.bottomContainer = null;
+		this.masterCorners = [];
+		var boxHeight = dojo.html.getStyle(this.box, "height");
+		if (boxHeight == "") {
+			boxHeight = "0px";
+		}
+		var boxWidth = dojo.html.getStyle(this.box, "width");
+		var borderWidth = dojo.html.getStyle(this.box, "borderTopWidth");
+		if (borderWidth == "") {
+			borderWidth = "0px";
+		}
+		var borderColour = dojo.html.getStyle(this.box, "borderTopColor");
+		if (borderWidth > 0) {
+			this.antiAlias = true;
+		}
+		var boxColour = dojo.html.getStyle(this.box, "backgroundColor");
+		var backgroundImage = dojo.html.getStyle(this.box, "backgroundImage");
+		var boxPosition = dojo.html.getStyle(this.box, "position");
+		this.boxHeight = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight.indexOf("%") == -1) ? boxHeight.substring(0, boxHeight.indexOf("px")) : this.box.scrollHeight));
+		this.boxWidth = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1) ? boxWidth.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth));
+		this.borderWidth = parseInt(((borderWidth != "" && borderWidth.indexOf("px") !== -1) ? borderWidth.slice(0, borderWidth.indexOf("px")) : 0));
+		var test = new dojo.gfx.color.Color(boxColour);
+		this.boxColour = ((boxColour != "" && boxColour != "transparent") ? ((boxColour.substr(0, 3) == "rgb") ? this.rgb2Hex(boxColour) : boxColour) : "#ffffff");
+		this.borderColour = ((borderColour != "" && borderColour != "transparent" && this.borderWidth > 0) ? ((borderColour.substr(0, 3) == "rgb") ? this.rgb2Hex(borderColour) : borderColour) : this.boxColour);
+		this.borderString = this.borderWidth + "px" + " solid " + this.borderColour;
+		this.backgroundImage = ((backgroundImage != "none") ? backgroundImage : "");
+		if (boxPosition != "absolute") {
+			this.box.style.position = "relative";
+		}
+		this.applyCorners = function () {
+			for (var t = 0; t < 2; t++) {
+				switch (t) {
+				  case 0:
+					if (this.settings.tl.enabled || this.settings.tr.enabled) {
+						var newMainContainer = document.createElement("DIV");
+						with (newMainContainer.style) {
+							width = "100%";
+							fontSize = "1px";
+							overflow = "hidden";
+							position = "absolute";
+							paddingLeft = this.borderWidth + "px";
+							paddingRight = this.borderWidth + "px";
+							var topMaxRadius = Math.max(this.settings.tl ? this.settings.tl.radius : 0, this.settings.tr ? this.settings.tr.radius : 0);
+							height = topMaxRadius + "px";
+							top = 0 - topMaxRadius + "px";
+							left = 0 - this.borderWidth + "px";
+						}
+						this.topContainer = this.box.appendChild(newMainContainer);
+					}
+					break;
+				  case 1:
+					if (this.settings.bl.enabled || this.settings.br.enabled) {
+						var newMainContainer = document.createElement("DIV");
+						with (newMainContainer.style) {
+							width = "100%";
+							fontSize = "1px";
+							overflow = "hidden";
+							position = "absolute";
+							paddingLeft = this.borderWidth + "px";
+							paddingRight = this.borderWidth + "px";
+							var botMaxRadius = Math.max(this.settings.bl ? this.settings.bl.radius : 0, this.settings.br ? this.settings.br.radius : 0);
+							height = botMaxRadius + "px";
+							bottom = 0 - botMaxRadius + "px";
+							left = 0 - this.borderWidth + "px";
+						}
+						this.bottomContainer = this.box.appendChild(newMainContainer);
+					}
+					break;
+				}
+			}
+			if (this.topContainer) {
+				this.box.style.borderTopWidth = "0px";
+			}
+			if (this.bottomContainer) {
+				this.box.style.borderBottomWidth = "0px";
+			}
+			var corners = ["tr", "tl", "br", "bl"];
+			for (var i in corners) {
+				var cc = corners[i];
+				if (!this.settings[cc]) {
+					if (((cc == "tr" || cc == "tl") && this.topContainer != null) || ((cc == "br" || cc == "bl") && this.bottomContainer != null)) {
+						var newCorner = document.createElement("DIV");
+						newCorner.style.position = "relative";
+						newCorner.style.fontSize = "1px";
+						newCorner.style.overflow = "hidden";
+						if (this.backgroundImage == "") {
+							newCorner.style.backgroundColor = this.boxColour;
+						} else {
+							newCorner.style.backgroundImage = this.backgroundImage;
+						}
+						switch (cc) {
+						  case "tl":
+							with (newCorner.style) {
+								height = topMaxRadius - this.borderWidth + "px";
+								marginRight = this.settings.tr.radius - (this.borderWidth * 2) + "px";
+								borderLeft = this.borderString;
+								borderTop = this.borderString;
+								left = -this.borderWidth + "px";
+							}
+							break;
+						  case "tr":
+							with (newCorner.style) {
+								height = topMaxRadius - this.borderWidth + "px";
+								marginLeft = this.settings.tl.radius - (this.borderWidth * 2) + "px";
+								borderRight = this.borderString;
+								borderTop = this.borderString;
+								backgroundPosition = "-" + this.boxWidth + "px 0px";
+								left = this.borderWidth + "px";
+							}
+							break;
+						  case "bl":
+							with (newCorner.style) {
+								height = botMaxRadius - this.borderWidth + "px";
+								marginRight = this.settings.br.radius - (this.borderWidth * 2) + "px";
+								borderLeft = this.borderString;
+								borderBottom = this.borderString;
+								left = -this.borderWidth + "px";
+							}
+							break;
+						  case "br":
+							with (newCorner.style) {
+								height = botMaxRadius - this.borderWidth + "px";
+								marginLeft = this.settings.bl.radius - (this.borderWidth * 2) + "px";
+								borderRight = this.borderString;
+								borderBottom = this.borderString;
+								left = this.borderWidth + "px";
+							}
+							break;
+						}
+					}
+				} else {
+					if (this.masterCorners[this.settings[cc].radius]) {
+						var newCorner = this.masterCorners[this.settings[cc].radius].cloneNode(true);
+					} else {
+						var newCorner = document.createElement("DIV");
+						with (newCorner.style) {
+							height = this.settings[cc].radius + "px";
+							width = this.settings[cc].radius + "px";
+							position = "absolute";
+							fontSize = "1px";
+							overflow = "hidden";
+						}
+						var borderRadius = parseInt(this.settings[cc].radius - this.borderWidth);
+						for (var intx = 0, j = this.settings[cc].radius; intx < j; intx++) {
+							if ((intx + 1) >= borderRadius) {
+								var y1 = -1;
+							} else {
+								var y1 = (Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((intx + 1), 2))) - 1);
+							}
+							if (borderRadius != j) {
+								if ((intx) >= borderRadius) {
+									var y2 = -1;
+								} else {
+									var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(intx, 2)));
+								}
+								if ((intx + 1) >= j) {
+									var y3 = -1;
+								} else {
+									var y3 = (Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow((intx + 1), 2))) - 1);
+								}
+							}
+							if ((intx) >= j) {
+								var y4 = -1;
+							} else {
+								var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(intx, 2)));
+							}
+							if (y1 > -1) {
+								this.drawPixel(intx, 0, this.boxColour, 100, (y1 + 1), newCorner, -1, this.settings[cc].radius);
+							}
+							if (borderRadius != j) {
+								if (this.antiAlias) {
+									for (var inty = (y1 + 1); inty < y2; inty++) {
+										if (this.backgroundImage != "") {
+											var borderFract = (this.pixelFraction(intx, inty, borderRadius) * 100);
+											if (borderFract < 30) {
+												this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, 0, this.settings[cc].radius);
+											} else {
+												this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, -1, this.settings[cc].radius);
+											}
+										} else {
+											var pixelcolour = dojo.gfx.color.blend(this.boxColour, this.borderColour, this.pixelFraction(intx, inty, borderRadius));
+											this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner, 0, this.settings[cc].radius);
+										}
+									}
+								}
+								if (y3 >= y2) {
+									if (y1 == -1) {
+										y1 = 0;
+									}
+									this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner, 0, this.settings[cc].radius);
+								}
+								var outsideColour = this.borderColour;
+							} else {
+								var outsideColour = this.boxColour;
+								var y3 = y1;
+							}
+							if (this.antiAlias) {
+								for (var inty = (y3 + 1); inty < y4; inty++) {
+									this.drawPixel(intx, inty, outsideColour, (this.pixelFraction(intx, inty, j) * 100), 1, newCorner, ((this.borderWidth > 0) ? 0 : -1), this.settings[cc].radius);
+								}
+							}
+						}
+						this.masterCorners[this.settings[cc].radius] = newCorner.cloneNode(true);
+					}
+					if (cc != "br") {
+						for (var t = 0, k = newCorner.childNodes.length; t < k; t++) {
+							var pixelBar = newCorner.childNodes[t];
+							var pixelBarTop = parseInt(pixelBar.style.top.substring(0, pixelBar.style.top.indexOf("px")));
+							var pixelBarLeft = parseInt(pixelBar.style.left.substring(0, pixelBar.style.left.indexOf("px")));
+							var pixelBarHeight = parseInt(pixelBar.style.height.substring(0, pixelBar.style.height.indexOf("px")));
+							if (cc == "tl" || cc == "bl") {
+								pixelBar.style.left = this.settings[cc].radius - pixelBarLeft - 1 + "px";
+							}
+							if (cc == "tr" || cc == "tl") {
+								pixelBar.style.top = this.settings[cc].radius - pixelBarHeight - pixelBarTop + "px";
+							}
+							var value;
+							switch (cc) {
+							  case "tr":
+								value = (-1 * (Math.abs((this.boxWidth - this.settings[cc].radius + this.borderWidth) + pixelBarLeft) - (Math.abs(this.settings[cc].radius - pixelBarHeight - pixelBarTop - this.borderWidth))));
+								pixelBar.style.backgroundPosition = value + "px";
+								break;
+							  case "tl":
+								value = (-1 * (Math.abs((this.settings[cc].radius - pixelBarLeft - 1) - this.borderWidth) - (Math.abs(this.settings[cc].radius - pixelBarHeight - pixelBarTop - this.borderWidth))));
+								pixelBar.style.backgroundPosition = value + "px";
+								break;
+							  case "bl":
+								value = (-1 * (Math.abs((this.settings[cc].radius - pixelBarLeft - 1) - this.borderWidth) - (Math.abs((this.boxHeight + this.settings[cc].radius + pixelBarTop) - this.borderWidth))));
+								pixelBar.style.backgroundPosition = value + "px";
+								break;
+							}
+						}
+					}
+				}
+				if (newCorner) {
+					switch (cc) {
+					  case "tl":
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.top = "0px";
+						}
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.left = "0px";
+						}
+						if (this.topContainer) {
+							this.topContainer.appendChild(newCorner);
+						}
+						break;
+					  case "tr":
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.top = "0px";
+						}
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.right = "0px";
+						}
+						if (this.topContainer) {
+							this.topContainer.appendChild(newCorner);
+						}
+						break;
+					  case "bl":
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.bottom = "0px";
+						}
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.left = "0px";
+						}
+						if (this.bottomContainer) {
+							this.bottomContainer.appendChild(newCorner);
+						}
+						break;
+					  case "br":
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.bottom = "0px";
+						}
+						if (newCorner.style.position == "absolute") {
+							newCorner.style.right = "0px";
+						}
+						if (this.bottomContainer) {
+							this.bottomContainer.appendChild(newCorner);
+						}
+						break;
+					}
+				}
+			}
+			var radiusDiff = [];
+			radiusDiff["t"] = this.settings.tl.enabled && this.settings.tr.enabled ? Math.abs(this.settings.tl.radius - this.settings.tr.radius) : 0;
+			radiusDiff["b"] = this.settings.bl.enabled && this.settings.br.enabled ? Math.abs(this.settings.bl.radius - this.settings.br.radius) : 0;
+			for (var z in radiusDiff) {
+				if (radiusDiff[z]) {
+					var smallerCornerType = ((this.settings[z + "l"].radius < this.settings[z + "r"].radius) ? z + "l" : z + "r");
+					var newFiller = document.createElement("DIV");
+					with (newFiller.style) {
+						height = radiusDiff[z] + "px";
+						width = this.settings[smallerCornerType].radius + "px";
+						position = "absolute";
+						fontSize = "1px";
+						overflow = "hidden";
+						backgroundColor = this.boxColour;
+					}
+					switch (smallerCornerType) {
+					  case "tl":
+						with (newFiller.style) {
+							bottom = "0px";
+							left = "0px";
+							borderLeft = this.borderString;
+						}
+						this.topContainer.appendChild(newFiller);
+						break;
+					  case "tr":
+						with (newFiller.style) {
+							bottom = "0px";
+							right = "0px";
+							borderRight = this.borderString;
+						}
+						this.topContainer.appendChild(newFiller);
+						break;
+					  case "bl":
+						with (newFiller.style) {
+							top = "0px";
+							left = "0px";
+							borderLeft = this.borderString;
+						}
+						this.bottomContainer.appendChild(newFiller);
+						break;
+					  case "br":
+						with (newFiller.style) {
+							top = "0px";
+							right = "0px";
+							borderRight = this.borderString;
+						}
+						this.bottomContainer.appendChild(newFiller);
+						break;
+					}
+				}
+				var newFillerBar = document.createElement("DIV");
+				with (newFillerBar.style) {
+					position = "relative";
+					fontSize = "1px";
+					overflow = "hidden";
+					backgroundColor = this.boxColour;
+				}
+				switch (z) {
+				  case "t":
+					if (this.topContainer) {
+						with (newFillerBar.style) {
+							height = topMaxRadius - this.borderWidth + "px";
+							marginLeft = this.settings.tl.radius - this.borderWidth + "px";
+							marginRight = this.settings.tr.radius - this.borderWidth + "px";
+							borderTop = this.borderString;
+						}
+						this.topContainer.appendChild(newFillerBar);
+					}
+					break;
+				  case "b":
+					if (this.bottomContainer) {
+						with (newFillerBar.style) {
+							height = botMaxRadius - this.borderWidth + "px";
+							marginLeft = this.settings.bl.radius - this.borderWidth + "px";
+							marginRight = this.settings.br.radius - this.borderWidth + "px";
+							borderBottom = this.borderString;
+						}
+						this.bottomContainer.appendChild(newFillerBar);
+					}
+					break;
+				}
+			}
+		};
+		this.drawPixel = function (intx, inty, colour, transAmount, height, newCorner, image, cornerRadius) {
+			var pixel = document.createElement("DIV");
+			pixel.style.height = height + "px";
+			pixel.style.width = "1px";
+			pixel.style.position = "absolute";
+			pixel.style.fontSize = "1px";
+			pixel.style.overflow = "hidden";
+			if (image == -1 && this.backgroundImage != "") {
+				pixel.style.backgroundImage = this.backgroundImage;
+				pixel.style.backgroundPosition = "-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + cornerRadius + inty) - this.borderWidth) + "px";
+			} else {
+				pixel.style.backgroundColor = colour;
+			}
+			if (transAmount != 100) {
+				dojo.html.setOpacity(pixel, transAmount);
+			}
+			pixel.style.top = inty + "px";
+			pixel.style.left = intx + "px";
+			newCorner.appendChild(pixel);
+		};
+	}, pixelFraction:function (x, y, r) {
+		var pixelfraction = 0;
+		var xvalues = [];
+		var yvalues = [];
+		var point = 0;
+		var whatsides = "";
+		var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2)));
+		if ((intersect >= y) && (intersect < (y + 1))) {
+			whatsides = "Left";
+			xvalues[point] = 0;
+			yvalues[point] = intersect - y;
+			point = point + 1;
+		}
+		var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2)));
+		if ((intersect >= x) && (intersect < (x + 1))) {
+			whatsides = whatsides + "Top";
+			xvalues[point] = intersect - x;
+			yvalues[point] = 1;
+			point = point + 1;
+		}
+		var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2)));
+		if ((intersect >= y) && (intersect < (y + 1))) {
+			whatsides = whatsides + "Right";
+			xvalues[point] = 1;
+			yvalues[point] = intersect - y;
+			point = point + 1;
+		}
+		var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2)));
+		if ((intersect >= x) && (intersect < (x + 1))) {
+			whatsides = whatsides + "Bottom";
+			xvalues[point] = intersect - x;
+			yvalues[point] = 0;
+		}
+		switch (whatsides) {
+		  case "LeftRight":
+			pixelfraction = Math.min(yvalues[0], yvalues[1]) + ((Math.max(yvalues[0], yvalues[1]) - Math.min(yvalues[0], yvalues[1])) / 2);
+			break;
+		  case "TopRight":
+			pixelfraction = 1 - (((1 - xvalues[0]) * (1 - yvalues[1])) / 2);
+			break;
+		  case "TopBottom":
+			pixelfraction = Math.min(xvalues[0], xvalues[1]) + ((Math.max(xvalues[0], xvalues[1]) - Math.min(xvalues[0], xvalues[1])) / 2);
+			break;
+		  case "LeftBottom":
+			pixelfraction = (yvalues[0] * xvalues[1]) / 2;
+			break;
+		  default:
+			pixelfraction = 1;
+		}
+		return pixelfraction;
+	}, rgb2Hex:function (rgbColour) {
+		try {
+			var rgbArray = this.rgb2Array(rgbColour);
+			var red = parseInt(rgbArray[0]);
+			var green = parseInt(rgbArray[1]);
+			var blue = parseInt(rgbArray[2]);
+			var hexColour = "#" + this.intToHex(red) + this.intToHex(green) + this.intToHex(blue);
+		}
+		catch (e) {
+			alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");
+		}
+		return hexColour;
+	}, intToHex:function (strNum) {
+		var base = strNum / 16;
+		var rem = strNum % 16;
+		var base = base - (rem / 16);
+		var baseS = this.makeHex(base);
+		var remS = this.makeHex(rem);
+		return baseS + "" + remS;
+	}, makeHex:function (x) {
+		if ((x >= 0) && (x <= 9)) {
+			return x;
+		} else {
+			switch (x) {
+			  case 10:
+				return "A";
+			  case 11:
+				return "B";
+			  case 12:
+				return "C";
+			  case 13:
+				return "D";
+			  case 14:
+				return "E";
+			  case 15:
+				return "F";
+			}
+		}
+	}, rgb2Array:function (rgbColour) {
+		var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")"));
+		var rgbArray = rgbValues.split(", ");
+		return rgbArray;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/PopupContainer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -28745,6 +57500,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.PopupContainer");
 dojo.require("dojo.html.style");
 dojo.require("dojo.html.layout");
@@ -29031,6 +57788,283 @@
 };
 
 
+__CPAN_FILE__ src/widget/TreeEditor.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.RichText"], ["provide", "dojo.widget.TreeEditor"]], definePackage:function (dojo) {
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.RichText");
+	dojo.provide("dojo.widget.TreeEditor");
+	dojo.widget.defineWidget("dojo.widget.TreeEditor", dojo.widget.HtmlWidget, {singleLineMode:false, saveOnBlur:true, sync:false, selectOnOpen:true, controller:null, node:null, richTextParams:{styleSheets:"src/widget/templates/TreeEditor.css"}, getContents:function () {
+		return this.richText.getEditorContent();
+	}, open:function (node) {
+		if (!this.richText) {
+			this.richText = dojo.widget.createWidget("RichText", this.richTextParams, node.labelNode);
+			dojo.event.connect("around", this.richText, "onKeyDown", this, "richText_onKeyDown");
+			dojo.event.connect(this.richText, "onBlur", this, "richText_onBlur");
+			var self = this;
+			dojo.event.connect(this.richText, "onLoad", function () {
+				if (self.selectOnOpen) {
+					self.richText.execCommand("selectall");
+				}
+			});
+		} else {
+			this.richText.open(node.labelNode);
+		}
+		this.node = node;
+	}, close:function (save) {
+		this.richText.close(save);
+		this.node = null;
+	}, isClosed:function () {
+		return !this.richText || this.richText.isClosed;
+	}, execCommand:function () {
+		this.richText.execCommand.apply(this.richText, arguments);
+	}, richText_onKeyDown:function (invocation) {
+		var e = invocation.args[0];
+		if ((!e) && (this.object)) {
+			e = dojo.event.browser.fixEvent(this.editor.window.event);
+		}
+		switch (e.keyCode) {
+		  case e.KEY_ESCAPE:
+			this.finish(false);
+			dojo.event.browser.stopEvent(e);
+			break;
+		  case e.KEY_ENTER:
+			if (e.ctrlKey && !this.singleLineMode) {
+				this.execCommand("inserthtml", "<br/>");
+			} else {
+				this.finish(true);
+			}
+			dojo.event.browser.stopEvent(e);
+			break;
+		  default:
+			return invocation.proceed();
+		}
+	}, richText_onBlur:function () {
+		this.finish(this.saveOnBlur);
+	}, finish:function (save) {
+		return this.controller.editLabelFinish(save, this.sync);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/PageContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.PageContainer"], ["require", "dojo.lang.func"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.html.selection"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.PageContainer");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.selection");
+	dojo.widget.defineWidget("dojo.widget.PageContainer", dojo.widget.HtmlWidget, {isContainer:true, doLayout:true, templateString:"<div dojoAttachPoint='containerNode'></div>", selectedChild:"", fillInTemplate:function (args, frag) {
+		var source = this.getFragNodeRef(frag);
+		dojo.html.copyStyle(this.domNode, source);
+		dojo.widget.PageContainer.superclass.fillInTemplate.apply(this, arguments);
+	}, postCreate:function (args, frag) {
+		if (this.children.length) {
+			dojo.lang.forEach(this.children, this._setupChild, this);
+			var initialChild;
+			if (this.selectedChild) {
+				this.selectChild(this.selectedChild);
+			} else {
+				for (var i = 0; i < this.children.length; i++) {
+					if (this.children[i].selected) {
+						this.selectChild(this.children[i]);
+						break;
+					}
+				}
+				if (!this.selectedChildWidget) {
+					this.selectChild(this.children[0]);
+				}
+			}
+		}
+	}, addChild:function (child) {
+		dojo.widget.PageContainer.superclass.addChild.apply(this, arguments);
+		this._setupChild(child);
+		this.onResized();
+		if (!this.selectedChildWidget) {
+			this.selectChild(child);
+		}
+	}, _setupChild:function (page) {
+		page.hide();
+		page.domNode.style.position = "relative";
+		dojo.event.topic.publish(this.widgetId + "-addChild", page);
+	}, removeChild:function (page) {
+		dojo.widget.PageContainer.superclass.removeChild.apply(this, arguments);
+		if (this._beingDestroyed) {
+			return;
+		}
+		dojo.event.topic.publish(this.widgetId + "-removeChild", page);
+		this.onResized();
+		if (this.selectedChildWidget === page) {
+			this.selectedChildWidget = undefined;
+			if (this.children.length > 0) {
+				this.selectChild(this.children[0], true);
+			}
+		}
+	}, selectChild:function (page, callingWidget) {
+		page = dojo.widget.byId(page);
+		this.correspondingPageButton = callingWidget;
+		if (this.selectedChildWidget) {
+			this._hideChild(this.selectedChildWidget);
+		}
+		this.selectedChildWidget = page;
+		this.selectedChild = page.widgetId;
+		this._showChild(page);
+		page.isFirstChild = (page == this.children[0]);
+		page.isLastChild = (page == this.children[this.children.length - 1]);
+		dojo.event.topic.publish(this.widgetId + "-selectChild", page);
+	}, forward:function () {
+		var index = dojo.lang.find(this.children, this.selectedChildWidget);
+		this.selectChild(this.children[index + 1]);
+	}, back:function () {
+		var index = dojo.lang.find(this.children, this.selectedChildWidget);
+		this.selectChild(this.children[index - 1]);
+	}, onResized:function () {
+		if (this.doLayout && this.selectedChildWidget) {
+			with (this.selectedChildWidget.domNode.style) {
+				top = dojo.html.getPixelValue(this.containerNode, "padding-top", true);
+				left = dojo.html.getPixelValue(this.containerNode, "padding-left", true);
+			}
+			var content = dojo.html.getContentBox(this.containerNode);
+			this.selectedChildWidget.resizeTo(content.width, content.height);
+		}
+	}, _showChild:function (page) {
+		if (this.doLayout) {
+			var content = dojo.html.getContentBox(this.containerNode);
+			page.resizeTo(content.width, content.height);
+		}
+		page.selected = true;
+		page.show();
+	}, _hideChild:function (page) {
+		page.selected = false;
+		page.hide();
+	}, closeChild:function (page) {
+		var remove = page.onClose(this, page);
+		if (remove) {
+			this.removeChild(page);
+			page.destroy();
+		}
+	}, destroy:function () {
+		this._beingDestroyed = true;
+		dojo.event.topic.destroy(this.widgetId + "-addChild");
+		dojo.event.topic.destroy(this.widgetId + "-removeChild");
+		dojo.event.topic.destroy(this.widgetId + "-selectChild");
+		dojo.widget.PageContainer.superclass.destroy.apply(this, arguments);
+	}});
+	dojo.widget.defineWidget("dojo.widget.PageController", dojo.widget.HtmlWidget, {templateString:"<span wairole='tablist' dojoAttachEvent='onKey'></span>", isContainer:true, containerId:"", buttonWidget:"PageButton", "class":"dojoPageController", fillInTemplate:function () {
+		dojo.html.addClass(this.domNode, this["class"]);
+		dojo.widget.wai.setAttr(this.domNode, "waiRole", "role", "tablist");
+	}, postCreate:function () {
+		this.pane2button = {};
+		var container = dojo.widget.byId(this.containerId);
+		if (container) {
+			dojo.lang.forEach(container.children, this.onAddChild, this);
+		}
+		dojo.event.topic.subscribe(this.containerId + "-addChild", this, "onAddChild");
+		dojo.event.topic.subscribe(this.containerId + "-removeChild", this, "onRemoveChild");
+		dojo.event.topic.subscribe(this.containerId + "-selectChild", this, "onSelectChild");
+	}, destroy:function () {
+		dojo.event.topic.unsubscribe(this.containerId + "-addChild", this, "onAddChild");
+		dojo.event.topic.unsubscribe(this.containerId + "-removeChild", this, "onRemoveChild");
+		dojo.event.topic.unsubscribe(this.containerId + "-selectChild", this, "onSelectChild");
+		dojo.widget.PageController.superclass.destroy.apply(this, arguments);
+	}, onAddChild:function (page) {
+		var button = dojo.widget.createWidget(this.buttonWidget, {label:page.label, closeButton:page.closable});
+		this.addChild(button);
+		this.domNode.appendChild(button.domNode);
+		this.pane2button[page] = button;
+		page.controlButton = button;
+		var _this = this;
+		dojo.event.connect(button, "onClick", function () {
+			_this.onButtonClick(page);
+		});
+		dojo.event.connect(button, "onCloseButtonClick", function () {
+			_this.onCloseButtonClick(page);
+		});
+	}, onRemoveChild:function (page) {
+		if (this._currentChild == page) {
+			this._currentChild = null;
+		}
+		var button = this.pane2button[page];
+		if (button) {
+			button.destroy();
+		}
+		this.pane2button[page] = null;
+	}, onSelectChild:function (page) {
+		if (this._currentChild) {
+			var oldButton = this.pane2button[this._currentChild];
+			oldButton.clearSelected();
+		}
+		var newButton = this.pane2button[page];
+		newButton.setSelected();
+		this._currentChild = page;
+	}, onButtonClick:function (page) {
+		var container = dojo.widget.byId(this.containerId);
+		container.selectChild(page, false, this);
+	}, onCloseButtonClick:function (page) {
+		var container = dojo.widget.byId(this.containerId);
+		container.closeChild(page);
+	}, onKey:function (evt) {
+		if ((evt.keyCode == evt.KEY_RIGHT_ARROW) || (evt.keyCode == evt.KEY_LEFT_ARROW)) {
+			var current = 0;
+			var next = null;
+			var current = dojo.lang.find(this.children, this.pane2button[this._currentChild]);
+			if (evt.keyCode == evt.KEY_RIGHT_ARROW) {
+				next = this.children[(current + 1) % this.children.length];
+			} else {
+				next = this.children[(current + (this.children.length - 1)) % this.children.length];
+			}
+			dojo.event.browser.stopEvent(evt);
+			next.onClick();
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.PageButton", dojo.widget.HtmlWidget, {templateString:"<span class='item'>" + "<span dojoAttachEvent='onClick' dojoAttachPoint='titleNode' class='selectButton'>${this.label}</span>" + "<span dojoAttachEvent='onClick:onCloseButtonClick' class='closeButton'>[X]</span>" + "</span>", label:"foo", closeButton:false, onClick:function () {
+		this.focus();
+	}, onCloseButtonMouseOver:function () {
+		dojo.html.addClass(this.closeButtonNode, "closeHover");
+	}, onCloseButtonMouseOut:function () {
+		dojo.html.removeClass(this.closeButtonNode, "closeHover");
+	}, onCloseButtonClick:function (evt) {
+	}, setSelected:function () {
+		dojo.html.addClass(this.domNode, "current");
+		this.titleNode.setAttribute("tabIndex", "0");
+	}, clearSelected:function () {
+		dojo.html.removeClass(this.domNode, "current");
+		this.titleNode.setAttribute("tabIndex", "-1");
+	}, focus:function () {
+		if (this.titleNode.focus) {
+			this.titleNode.focus();
+		}
+	}});
+	dojo.lang.extend(dojo.widget.Widget, {label:"", selected:false, closable:false, onClose:function () {
+		return true;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Dialog.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -29042,6 +58076,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Dialog");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.ContentPane");
@@ -29331,6 +58367,227 @@
 }});
 
 
+__CPAN_FILE__ src/widget/ProgressBar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ProgressBar"], ["require", "dojo.widget.*"], ["require", "dojo.event"], ["require", "dojo.dom"], ["require", "dojo.html.style"], ["require", "dojo.string.*"], ["require", "dojo.lfx.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ProgressBar");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.string.*");
+	dojo.require("dojo.lfx.*");
+	dojo.widget.defineWidget("dojo.widget.ProgressBar", dojo.widget.HtmlWidget, {progressValue:0, maxProgressValue:100, width:300, height:30, frontPercentClass:"frontPercent", backPercentClass:"backPercent", frontBarClass:"frontBar", backBarClass:"backBar", hasText:false, isVertical:false, showOnlyIntegers:false, dataSource:"", pollInterval:3000, duration:1000, templateString:"<div dojoAttachPoint=\"containerNode\" style=\"position:relative;overflow:hidden\">\n\t<div style=\"position:absolute;display:none;width:100%;text-align:center\" dojoAttachPoint=\"backPercentLabel\" class=\"dojoBackPercentLabel\"></div>\n\t<div style=\"position:absolute;overflow:hidden;width:100%;height:100%\" dojoAttachPoint=\"internalProgress\">\n\t<div style=\"position:absolute;display:none;width:100%;text-align:center\" dojoAttachPoint=\"frontPercentLabel\" class=\"dojoFrontPercentLabel\"></div></div>\n</div>\n", templateCssString:".backBar{\n\tborder:1px solid #84a3d1;\n}\n.frontBar{\n\tbackground:url(\"images/bar.gif\") repeat bottom left;\n\tbackground-attachment: fixed;\n}\n.h-frontBar{\n\tbackground:url(\"images/h-bar.gif\") repeat bottom left;\n\tbackground-attachment: fixed;\n}\n.simpleFrontBar{\n\tbackground: red;\n}\n.frontPercent,.backPercent{\n\tfont:bold 13px helvetica;\n}\n.backPercent{\n\tcolor:#293a4b;\n}\n.frontPercent{\n\tcolor:#fff;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ProgressBar.css"), containerNode:null, internalProgress:null, _pixelUnitRatio:0, _pixelPercentRatio:0, _unitPercentRatio:0, _unitPixelRatio:0, _floatDimension:0, _intDimension:0, _progressPercentValue:"0%", _floatMaxProgressValue:0, _dimension:"width", _pixelValue:0, _oInterval:null, _animation:null, _animationStopped:true, _progressValueBak:false, _hasTextBak:false, fillInTemplate:function (args, frag) {
+		this.internalProgress.className = this.frontBarClass;
+		this.containerNode.className = this.backBarClass;
+		if (this.isVertical) {
+			this.internalProgress.style.bottom = "0px";
+			this.internalProgress.style.left = "0px";
+			this._dimension = "height";
+		} else {
+			this.internalProgress.style.top = "0px";
+			this.internalProgress.style.left = "0px";
+			this._dimension = "width";
+		}
+		this.frontPercentLabel.className = this.frontPercentClass;
+		this.backPercentLabel.className = this.backPercentClass;
+		this.progressValue = "" + this.progressValue;
+		this.domNode.style.height = this.height + "px";
+		this.domNode.style.width = this.width + "px";
+		this._intDimension = parseInt("0" + eval("this." + this._dimension));
+		this._floatDimension = parseFloat("0" + eval("this." + this._dimension));
+		this._pixelPercentRatio = this._floatDimension / 100;
+		this.setMaxProgressValue(this.maxProgressValue, true);
+		this.setProgressValue(dojo.string.trim(this.progressValue), true);
+		dojo.debug("float dimension: " + this._floatDimension);
+		dojo.debug("this._unitPixelRatio: " + this._unitPixelRatio);
+		this.showText(this.hasText);
+	}, showText:function (visible) {
+		if (visible) {
+			this.backPercentLabel.style.display = "block";
+			this.frontPercentLabel.style.display = "block";
+		} else {
+			this.backPercentLabel.style.display = "none";
+			this.frontPercentLabel.style.display = "none";
+		}
+		this.hasText = visible;
+	}, postCreate:function (args, frag) {
+		this.render();
+	}, _backupValues:function () {
+		this._progressValueBak = this.progressValue;
+		this._hasTextBak = this.hasText;
+	}, _restoreValues:function () {
+		this.setProgressValue(this._progressValueBak);
+		this.showText(this._hasTextBak);
+	}, _setupAnimation:function () {
+		var _self = this;
+		dojo.debug("internalProgress width: " + this.internalProgress.style.width);
+		this._animation = dojo.lfx.html.slideTo(this.internalProgress, {top:0, left:parseInt(this.width) - parseInt(this.internalProgress.style.width)}, parseInt(this.duration), null, function () {
+			var _backAnim = dojo.lfx.html.slideTo(_self.internalProgress, {top:0, left:0}, parseInt(_self.duration));
+			dojo.event.connect(_backAnim, "onEnd", function () {
+				if (!_self._animationStopped) {
+					_self._animation.play();
+				}
+			});
+			if (!_self._animationStopped) {
+				_backAnim.play();
+			}
+			_backAnim = null;
+		});
+	}, getMaxProgressValue:function () {
+		return this.maxProgressValue;
+	}, setMaxProgressValue:function (maxValue, noRender) {
+		if (!this._animationStopped) {
+			return;
+		}
+		this.maxProgressValue = maxValue;
+		this._floatMaxProgressValue = parseFloat("0" + this.maxProgressValue);
+		this._pixelUnitRatio = this._floatDimension / this.maxProgressValue;
+		this._unitPercentRatio = this._floatMaxProgressValue / 100;
+		this._unitPixelRatio = this._floatMaxProgressValue / this._floatDimension;
+		this.setProgressValue(this.progressValue, true);
+		if (!noRender) {
+			this.render();
+		}
+	}, setProgressValue:function (value, noRender) {
+		if (!this._animationStopped) {
+			return;
+		}
+		this._progressPercentValue = "0%";
+		var _value = dojo.string.trim("" + value);
+		var _floatValue = parseFloat("0" + _value);
+		var _intValue = parseInt("0" + _value);
+		var _pixelValue = 0;
+		if (dojo.string.endsWith(_value, "%", false)) {
+			this._progressPercentValue = Math.min(_floatValue.toFixed(1), 100) + "%";
+			_value = Math.min((_floatValue) * this._unitPercentRatio, this.maxProgressValue);
+			_pixelValue = Math.min((_floatValue) * this._pixelPercentRatio, eval("this." + this._dimension));
+		} else {
+			this.progressValue = Math.min(_floatValue, this.maxProgressValue);
+			this._progressPercentValue = Math.min((_floatValue / this._unitPercentRatio).toFixed(1), 100) + "%";
+			_pixelValue = Math.min(_floatValue / this._unitPixelRatio, eval("this." + this._dimension));
+		}
+		this.progressValue = dojo.string.trim(_value);
+		this._pixelValue = _pixelValue;
+		if (!noRender) {
+			this.render();
+		}
+	}, getProgressValue:function () {
+		return this.progressValue;
+	}, getProgressPercentValue:function () {
+		return this._progressPercentValue;
+	}, setDataSource:function (dataSource) {
+		this.dataSource = dataSource;
+	}, setPollInterval:function (pollInterval) {
+		this.pollInterval = pollInterval;
+	}, start:function () {
+		var _showFunction = dojo.lang.hitch(this, this._showRemoteProgress);
+		this._oInterval = setInterval(_showFunction, this.pollInterval);
+	}, startAnimation:function () {
+		if (this._animationStopped) {
+			this._backupValues();
+			this.setProgressValue("10%");
+			this._animationStopped = false;
+			this._setupAnimation();
+			this.showText(false);
+			this.internalProgress.style.height = "105%";
+			this._animation.play();
+		}
+	}, stopAnimation:function () {
+		if (this._animation) {
+			this._animationStopped = true;
+			this._animation.stop();
+			this.internalProgress.style.height = "100%";
+			this.internalProgress.style.left = "0px";
+			this._restoreValues();
+			this._setLabelPosition();
+		}
+	}, _showRemoteProgress:function () {
+		var _self = this;
+		if ((this.getMaxProgressValue() == this.getProgressValue()) && this._oInterval) {
+			clearInterval(this._oInterval);
+			this._oInterval = null;
+			this.setProgressValue("100%");
+			return;
+		}
+		var bArgs = {url:_self.dataSource, method:"POST", mimetype:"text/json", error:function (type, errorObj) {
+			dojo.debug("[ProgressBar] showRemoteProgress error");
+		}, load:function (type, data, evt) {
+			_self.setProgressValue((_self._oInterval ? data["progress"] : "100%"));
+		}};
+		dojo.io.bind(bArgs);
+	}, render:function () {
+		this._setPercentLabel(dojo.string.trim(this._progressPercentValue));
+		this._setPixelValue(this._pixelValue);
+		this._setLabelPosition();
+	}, _setLabelPosition:function () {
+		var _widthFront = dojo.html.getContentBox(this.frontPercentLabel).width;
+		var _heightFront = dojo.html.getContentBox(this.frontPercentLabel).height;
+		var _widthBack = dojo.html.getContentBox(this.backPercentLabel).width;
+		var _heightBack = dojo.html.getContentBox(this.backPercentLabel).height;
+		var _leftFront = (parseInt(this.width) - _widthFront) / 2 + "px";
+		var _bottomFront = (parseInt(this.height) - parseInt(_heightFront)) / 2 + "px";
+		var _leftBack = (parseInt(this.width) - _widthBack) / 2 + "px";
+		var _bottomBack = (parseInt(this.height) - parseInt(_heightBack)) / 2 + "px";
+		this.frontPercentLabel.style.left = _leftFront;
+		this.backPercentLabel.style.left = _leftBack;
+		this.frontPercentLabel.style.bottom = _bottomFront;
+		this.backPercentLabel.style.bottom = _bottomBack;
+	}, _setPercentLabel:function (percentValue) {
+		dojo.dom.removeChildren(this.frontPercentLabel);
+		dojo.dom.removeChildren(this.backPercentLabel);
+		var _percentValue = this.showOnlyIntegers == false ? percentValue : parseInt(percentValue) + "%";
+		this.frontPercentLabel.appendChild(document.createTextNode(_percentValue));
+		this.backPercentLabel.appendChild(document.createTextNode(_percentValue));
+	}, _setPixelValue:function (value) {
+		eval("this.internalProgress.style." + this._dimension + " = " + value + " + 'px'");
+		this.onChange();
+	}, onChange:function () {
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeEmphasizeOnSelect.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeEmphasizeOnSelect"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeSelectorV3"], ["require", "dojo.html.selection"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeEmphasizeOnSelect");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeSelectorV3");
+	dojo.require("dojo.html.selection");
+	dojo.widget.defineWidget("dojo.widget.TreeEmphasizeOnSelect", dojo.widget.HtmlWidget, {selector:"", initialize:function () {
+		this.selector = dojo.widget.byId(this.selector);
+		dojo.event.topic.subscribe(this.selector.eventNames.select, this, "onSelect");
+		dojo.event.topic.subscribe(this.selector.eventNames.deselect, this, "onDeselect");
+	}, onSelect:function (message) {
+		message.node.viewEmphasize();
+	}, onDeselect:function (message) {
+		message.node.viewUnemphasize();
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/InternetTextbox.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -29342,6 +58599,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.InternetTextbox");
 dojo.require("dojo.widget.ValidationTextbox");
 dojo.require("dojo.validate.web");
@@ -29409,6 +58668,896 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Toggler.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Toggler"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Toggler");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.widget.defineWidget("dojo.widget.Toggler", dojo.widget.HtmlWidget, {targetId:"", fillInTemplate:function () {
+		dojo.event.connect(this.domNode, "onclick", this, "onClick");
+	}, onClick:function () {
+		var pane = dojo.widget.byId(this.targetId);
+		if (!pane) {
+			return;
+		}
+		pane.explodeSrc = this.domNode;
+		pane.toggleShowing();
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/AccordionContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.AccordionContainer"], ["require", "dojo.widget.*"], ["require", "dojo.html.*"], ["require", "dojo.lfx.html"], ["require", "dojo.html.selection"], ["require", "dojo.widget.html.layout"], ["require", "dojo.widget.PageContainer"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.AccordionContainer");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.lfx.html");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.widget.html.layout");
+	dojo.require("dojo.widget.PageContainer");
+	dojo.widget.defineWidget("dojo.widget.AccordionContainer", dojo.widget.HtmlWidget, {isContainer:true, labelNodeClass:"label", containerNodeClass:"accBody", duration:250, fillInTemplate:function () {
+		with (this.domNode.style) {
+			if (position != "absolute") {
+				position = "relative";
+			}
+			overflow = "hidden";
+		}
+	}, addChild:function (widget) {
+		var child = this._addChild(widget);
+		this._setSizes();
+		return child;
+	}, _addChild:function (widget) {
+		if (widget.open) {
+			dojo.deprecated("open parameter deprecated, use 'selected=true' instead will be removed in ", "0.5");
+			dojo.debug(widget.widgetId + ": open == " + widget.open);
+			widget.selected = true;
+		}
+		if (widget.widgetType != "AccordionPane") {
+			var wrapper = dojo.widget.createWidget("AccordionPane", {label:widget.label, selected:widget.selected, labelNodeClass:this.labelNodeClass, containerNodeClass:this.containerNodeClass, allowCollapse:this.allowCollapse});
+			wrapper.addChild(widget);
+			this.addWidgetAsDirectChild(wrapper);
+			this.registerChild(wrapper, this.children.length);
+			return wrapper;
+		} else {
+			dojo.html.addClass(widget.containerNode, this.containerNodeClass);
+			dojo.html.addClass(widget.labelNode, this.labelNodeClass);
+			this.addWidgetAsDirectChild(widget);
+			this.registerChild(widget, this.children.length);
+			return widget;
+		}
+	}, postCreate:function () {
+		var tmpChildren = this.children;
+		this.children = [];
+		dojo.html.removeChildren(this.domNode);
+		dojo.lang.forEach(tmpChildren, dojo.lang.hitch(this, "_addChild"));
+		this._setSizes();
+	}, removeChild:function (widget) {
+		dojo.widget.AccordionContainer.superclass.removeChild.call(this, widget);
+		this._setSizes();
+	}, onResized:function () {
+		this._setSizes();
+	}, _setSizes:function () {
+		var totalCollapsedHeight = 0;
+		var openIdx = 0;
+		dojo.lang.forEach(this.children, function (child, idx) {
+			totalCollapsedHeight += child.getLabelHeight();
+			if (child.selected) {
+				openIdx = idx;
+			}
+		});
+		var mySize = dojo.html.getContentBox(this.domNode);
+		var y = 0;
+		dojo.lang.forEach(this.children, function (child, idx) {
+			var childCollapsedHeight = child.getLabelHeight();
+			child.resizeTo(mySize.width, mySize.height - totalCollapsedHeight + childCollapsedHeight);
+			child.domNode.style.zIndex = idx + 1;
+			child.domNode.style.position = "absolute";
+			child.domNode.style.top = y + "px";
+			y += (idx == openIdx) ? dojo.html.getBorderBox(child.domNode).height : childCollapsedHeight;
+		});
+	}, selectChild:function (page) {
+		dojo.lang.forEach(this.children, function (child) {
+			child.setSelected(child == page);
+		});
+		var y = 0;
+		var anims = [];
+		dojo.lang.forEach(this.children, function (child, idx) {
+			if (child.domNode.style.top != (y + "px")) {
+				anims.push(dojo.lfx.html.slideTo(child.domNode, {top:y, left:0}, this.duration));
+			}
+			y += child.selected ? dojo.html.getBorderBox(child.domNode).height : child.getLabelHeight();
+		}, this);
+		dojo.lfx.combine(anims).play();
+	}});
+	dojo.widget.defineWidget("dojo.widget.AccordionPane", dojo.widget.HtmlWidget, {label:"", "class":"dojoAccordionPane", labelNodeClass:"label", containerNodeClass:"accBody", selected:false, templateString:"<div dojoAttachPoint=\"domNode\">\n<div dojoAttachPoint=\"labelNode\" dojoAttachEvent=\"onclick: onLabelClick\" class=\"${this.labelNodeClass}\">${this.label}</div>\n<div dojoAttachPoint=\"containerNode\" style=\"overflow: hidden;\" class=\"${this.containerNodeClass}\"></div>\n</div>\n", templateCssString:".dojoAccordionPane .label {\n\tcolor: #000;\n\tfont-weight: bold;\n\tbackground: url(\"images/soriaAccordionOff.gif\") repeat-x top left #85aeec;\n\tborder:1px solid #d9d9d9;\n\tfont-size:0.9em;\n}\n\n.dojoAccordionPane-selected .label {\n\tbackground: url(\"images/soriaAccordionSelected.gif\") repeat-x top left #85aeec;\n\tborder:1px solid #84a3d1;\n}\n\n.dojoAccordionPane .label:hover {\n\tcursor: pointer;\n}\n\n.dojoAccordionPane .accBody {\n\tbackground: #fff;\n\toverflow: auto;\n\tborder:1px solid #84a3d1;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/AccordionPane.css"), isContainer:true, fillInTemplate:function () {
+		dojo.html.addClass(this.domNode, this["class"]);
+		dojo.widget.AccordionPane.superclass.fillInTemplate.call(this);
+		dojo.html.disableSelection(this.labelNode);
+		this.setSelected(this.selected);
+	}, setLabel:function (label) {
+		this.labelNode.innerHTML = label;
+	}, resizeTo:function (width, height) {
+		dojo.html.setMarginBox(this.domNode, {width:width, height:height});
+		var children = [{domNode:this.labelNode, layoutAlign:"top"}, {domNode:this.containerNode, layoutAlign:"client"}];
+		dojo.widget.html.layout(this.domNode, children);
+		var childSize = dojo.html.getContentBox(this.containerNode);
+		this.children[0].resizeTo(childSize.width, childSize.height);
+	}, getLabelHeight:function () {
+		return dojo.html.getMarginBox(this.labelNode).height;
+	}, onLabelClick:function () {
+		this.parent.selectChild(this);
+	}, setSelected:function (isSelected) {
+		this.selected = isSelected;
+		(isSelected ? dojo.html.addClass : dojo.html.removeClass)(this.domNode, this["class"] + "-selected");
+		var child = this.children[0];
+		if (child) {
+			if (isSelected) {
+				if (!child.isShowing()) {
+					child.show();
+				} else {
+					child.onShow();
+				}
+			} else {
+				child.onHide();
+			}
+		}
+	}});
+	dojo.lang.extend(dojo.widget.Widget, {open:false});
+}});
+
+
+__CPAN_FILE__ src/widget/Toolbar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Toolbar"], ["require", "dojo.widget.*"], ["require", "dojo.html.style"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Toolbar");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.html.style");
+	dojo.widget.defineWidget("dojo.widget.ToolbarContainer", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class=\"toolbarContainer\" dojoAttachPoint=\"containerNode\"></div>", templateCssString:".toolbarContainer {\n\tborder-bottom : 0;\n\tbackground-color : #def;\n\tcolor : ButtonText;\n\tfont : Menu;\n\tbackground-image: url(images/toolbar-bg.gif);\n}\n\n.toolbar {\n\tpadding : 2px 4px;\n\tmin-height : 26px;\n\t_height : 26px;\n}\n\n.toolbarItem {\n\tfloat : left;\n\tpadding : 1px 2px;\n\tmargin : 0 2px 1px 0;\n\tcursor : pointer;\n}\n\n.toolbarItem.selected, .toolbarItem.down {\n\tmargin : 1px 1px 0 1px;\n\tpadding : 0px 1px;\n\tborder : 1px solid #bbf;\n\tbackground-color : #fafaff;\n}\n\n.toolbarButton img {\n\tvertical-align : bottom;\n}\n\n.toolbarButton span {\n\tline-height : 16px;\n\tvertical-align : middle;\n}\n\n.toolbarButton.hover {\n\tpadding : 0px 1px;\n\tborder : 1px solid #99c;\n}\n\n.toolbarItem.disabled {\n\topacity : 0.3;\n\tfilter : alpha(opacity=30);\n\tcursor : default;\n}\n\n.toolbarSeparator {\n\tcursor : default;\n}\n\n.toolbarFlexibleSpace {\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toolbar.css"), getItem:function (name) {
+		if (name instanceof dojo.widget.ToolbarItem) {
+			return name;
+		}
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				var item = child.getItem(name);
+				if (item) {
+					return item;
+				}
+			}
+		}
+		return null;
+	}, getItems:function () {
+		var items = [];
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				items = items.concat(child.getItems());
+			}
+		}
+		return items;
+	}, enable:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				child.enable.apply(child, arguments);
+			}
+		}
+	}, disable:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				child.disable.apply(child, arguments);
+			}
+		}
+	}, select:function (name) {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				child.select(arguments);
+			}
+		}
+	}, deselect:function (name) {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				child.deselect(arguments);
+			}
+		}
+	}, getItemsState:function () {
+		var values = {};
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				dojo.lang.mixin(values, child.getItemsState());
+			}
+		}
+		return values;
+	}, getItemsActiveState:function () {
+		var values = {};
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				dojo.lang.mixin(values, child.getItemsActiveState());
+			}
+		}
+		return values;
+	}, getItemsSelectedState:function () {
+		var values = {};
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.Toolbar) {
+				dojo.lang.mixin(values, child.getItemsSelectedState());
+			}
+		}
+		return values;
+	}});
+	dojo.widget.defineWidget("dojo.widget.Toolbar", dojo.widget.HtmlWidget, {isContainer:true, templateString:"<div class=\"toolbar\" dojoAttachPoint=\"containerNode\" unselectable=\"on\" dojoOnMouseover=\"_onmouseover\" dojoOnMouseout=\"_onmouseout\" dojoOnClick=\"_onclick\" dojoOnMousedown=\"_onmousedown\" dojoOnMouseup=\"_onmouseup\"></div>", _getItem:function (node) {
+		var start = new Date();
+		var widget = null;
+		while (node && node != this.domNode) {
+			if (dojo.html.hasClass(node, "toolbarItem")) {
+				var widgets = dojo.widget.manager.getWidgetsByFilter(function (w) {
+					return w.domNode == node;
+				});
+				if (widgets.length == 1) {
+					widget = widgets[0];
+					break;
+				} else {
+					if (widgets.length > 1) {
+						dojo.raise("Toolbar._getItem: More than one widget matches the node");
+					}
+				}
+			}
+			node = node.parentNode;
+		}
+		return widget;
+	}, _onmouseover:function (e) {
+		var widget = this._getItem(e.target);
+		if (widget && widget._onmouseover) {
+			widget._onmouseover(e);
+		}
+	}, _onmouseout:function (e) {
+		var widget = this._getItem(e.target);
+		if (widget && widget._onmouseout) {
+			widget._onmouseout(e);
+		}
+	}, _onclick:function (e) {
+		var widget = this._getItem(e.target);
+		if (widget && widget._onclick) {
+			widget._onclick(e);
+		}
+	}, _onmousedown:function (e) {
+		var widget = this._getItem(e.target);
+		if (widget && widget._onmousedown) {
+			widget._onmousedown(e);
+		}
+	}, _onmouseup:function (e) {
+		var widget = this._getItem(e.target);
+		if (widget && widget._onmouseup) {
+			widget._onmouseup(e);
+		}
+	}, addChild:function (item, pos, props) {
+		var widget = dojo.widget.ToolbarItem.make(item, null, props);
+		var ret = dojo.widget.Toolbar.superclass.addChild.call(this, widget, null, pos, null);
+		return ret;
+	}, push:function () {
+		for (var i = 0; i < arguments.length; i++) {
+			this.addChild(arguments[i]);
+		}
+	}, getItem:function (name) {
+		if (name instanceof dojo.widget.ToolbarItem) {
+			return name;
+		}
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem && child._name == name) {
+				return child;
+			}
+		}
+		return null;
+	}, getItems:function () {
+		var items = [];
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem) {
+				items.push(child);
+			}
+		}
+		return items;
+	}, getItemsState:function () {
+		var values = {};
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem) {
+				values[child._name] = {selected:child._selected, enabled:!child.disabled};
+			}
+		}
+		return values;
+	}, getItemsActiveState:function () {
+		var values = this.getItemsState();
+		for (var item in values) {
+			values[item] = values[item].enabled;
+		}
+		return values;
+	}, getItemsSelectedState:function () {
+		var values = this.getItemsState();
+		for (var item in values) {
+			values[item] = values[item].selected;
+		}
+		return values;
+	}, enable:function () {
+		var items = arguments.length ? arguments : this.children;
+		for (var i = 0; i < items.length; i++) {
+			var child = this.getItem(items[i]);
+			if (child instanceof dojo.widget.ToolbarItem) {
+				child.enable(false, true);
+			}
+		}
+	}, disable:function () {
+		var items = arguments.length ? arguments : this.children;
+		for (var i = 0; i < items.length; i++) {
+			var child = this.getItem(items[i]);
+			if (child instanceof dojo.widget.ToolbarItem) {
+				child.disable();
+			}
+		}
+	}, select:function () {
+		for (var i = 0; i < arguments.length; i++) {
+			var name = arguments[i];
+			var item = this.getItem(name);
+			if (item) {
+				item.select();
+			}
+		}
+	}, deselect:function () {
+		for (var i = 0; i < arguments.length; i++) {
+			var name = arguments[i];
+			var item = this.getItem(name);
+			if (item) {
+				item.disable();
+			}
+		}
+	}, setValue:function () {
+		for (var i = 0; i < arguments.length; i += 2) {
+			var name = arguments[i], value = arguments[i + 1];
+			var item = this.getItem(name);
+			if (item) {
+				if (item instanceof dojo.widget.ToolbarItem) {
+					item.setValue(value);
+				}
+			}
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.ToolbarItem", dojo.widget.HtmlWidget, {templateString:"<span unselectable=\"on\" class=\"toolbarItem\"></span>", _name:null, getName:function () {
+		return this._name;
+	}, setName:function (value) {
+		return (this._name = value);
+	}, getValue:function () {
+		return this.getName();
+	}, setValue:function (value) {
+		return this.setName(value);
+	}, _selected:false, isSelected:function () {
+		return this._selected;
+	}, setSelected:function (is, force, preventEvent) {
+		if (!this._toggleItem && !force) {
+			return;
+		}
+		is = Boolean(is);
+		if (force || !this.disabled && this._selected != is) {
+			this._selected = is;
+			this.update();
+			if (!preventEvent) {
+				this._fireEvent(is ? "onSelect" : "onDeselect");
+				this._fireEvent("onChangeSelect");
+			}
+		}
+	}, select:function (force, preventEvent) {
+		return this.setSelected(true, force, preventEvent);
+	}, deselect:function (force, preventEvent) {
+		return this.setSelected(false, force, preventEvent);
+	}, _toggleItem:false, isToggleItem:function () {
+		return this._toggleItem;
+	}, setToggleItem:function (value) {
+		this._toggleItem = Boolean(value);
+	}, toggleSelected:function (force) {
+		return this.setSelected(!this._selected, force);
+	}, isEnabled:function () {
+		return !this.disabled;
+	}, setEnabled:function (is, force, preventEvent) {
+		is = Boolean(is);
+		if (force || this.disabled == is) {
+			this.disabled = !is;
+			this.update();
+			if (!preventEvent) {
+				this._fireEvent(this.disabled ? "onDisable" : "onEnable");
+				this._fireEvent("onChangeEnabled");
+			}
+		}
+		return !this.disabled;
+	}, enable:function (force, preventEvent) {
+		return this.setEnabled(true, force, preventEvent);
+	}, disable:function (force, preventEvent) {
+		return this.setEnabled(false, force, preventEvent);
+	}, toggleEnabled:function (force, preventEvent) {
+		return this.setEnabled(this.disabled, force, preventEvent);
+	}, _icon:null, getIcon:function () {
+		return this._icon;
+	}, setIcon:function (value) {
+		var icon = dojo.widget.Icon.make(value);
+		if (this._icon) {
+			this._icon.setIcon(icon);
+		} else {
+			this._icon = icon;
+		}
+		var iconNode = this._icon.getNode();
+		if (iconNode.parentNode != this.domNode) {
+			if (this.domNode.hasChildNodes()) {
+				this.domNode.insertBefore(iconNode, this.domNode.firstChild);
+			} else {
+				this.domNode.appendChild(iconNode);
+			}
+		}
+		return this._icon;
+	}, _label:"", getLabel:function () {
+		return this._label;
+	}, setLabel:function (value) {
+		var ret = (this._label = value);
+		if (!this.labelNode) {
+			this.labelNode = document.createElement("span");
+			this.domNode.appendChild(this.labelNode);
+		}
+		this.labelNode.innerHTML = "";
+		this.labelNode.appendChild(document.createTextNode(this._label));
+		this.update();
+		return ret;
+	}, update:function () {
+		if (this.disabled) {
+			this._selected = false;
+			dojo.html.addClass(this.domNode, "disabled");
+			dojo.html.removeClass(this.domNode, "down");
+			dojo.html.removeClass(this.domNode, "hover");
+		} else {
+			dojo.html.removeClass(this.domNode, "disabled");
+			if (this._selected) {
+				dojo.html.addClass(this.domNode, "selected");
+			} else {
+				dojo.html.removeClass(this.domNode, "selected");
+			}
+		}
+		this._updateIcon();
+	}, _updateIcon:function () {
+		if (this._icon) {
+			if (this.disabled) {
+				this._icon.disable();
+			} else {
+				if (this._cssHover) {
+					this._icon.hover();
+				} else {
+					if (this._selected) {
+						this._icon.select();
+					} else {
+						this._icon.enable();
+					}
+				}
+			}
+		}
+	}, _fireEvent:function (evt) {
+		if (typeof this[evt] == "function") {
+			var args = [this];
+			for (var i = 1; i < arguments.length; i++) {
+				args.push(arguments[i]);
+			}
+			this[evt].apply(this, args);
+		}
+	}, _onmouseover:function (e) {
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.addClass(this.domNode, "hover");
+		this._fireEvent("onMouseOver");
+	}, _onmouseout:function (e) {
+		dojo.html.removeClass(this.domNode, "hover");
+		dojo.html.removeClass(this.domNode, "down");
+		if (!this._selected) {
+			dojo.html.removeClass(this.domNode, "selected");
+		}
+		this._fireEvent("onMouseOut");
+	}, _onclick:function (e) {
+		if (!this.disabled && !this._toggleItem) {
+			this._fireEvent("onClick");
+		}
+	}, _onmousedown:function (e) {
+		if (e.preventDefault) {
+			e.preventDefault();
+		}
+		if (this.disabled) {
+			return;
+		}
+		dojo.html.addClass(this.domNode, "down");
+		if (this._toggleItem) {
+			if (this.parent.preventDeselect && this._selected) {
+				return;
+			}
+			this.toggleSelected();
+		}
+		this._fireEvent("onMouseDown");
+	}, _onmouseup:function (e) {
+		dojo.html.removeClass(this.domNode, "down");
+		this._fireEvent("onMouseUp");
+	}, onClick:function () {
+	}, onMouseOver:function () {
+	}, onMouseOut:function () {
+	}, onMouseDown:function () {
+	}, onMouseUp:function () {
+	}, fillInTemplate:function (args, frag) {
+		if (args.name) {
+			this._name = args.name;
+		}
+		if (args.selected) {
+			this.select();
+		}
+		if (args.disabled) {
+			this.disable();
+		}
+		if (args.label) {
+			this.setLabel(args.label);
+		}
+		if (args.icon) {
+			this.setIcon(args.icon);
+		}
+		if (args.toggleitem || args.toggleItem) {
+			this.setToggleItem(true);
+		}
+	}});
+	dojo.widget.ToolbarItem.make = function (wh, whIsType, props) {
+		var item = null;
+		if (wh instanceof Array) {
+			item = dojo.widget.createWidget("ToolbarButtonGroup", props);
+			item.setName(wh[0]);
+			for (var i = 1; i < wh.length; i++) {
+				item.addChild(wh[i]);
+			}
+		} else {
+			if (wh instanceof dojo.widget.ToolbarItem) {
+				item = wh;
+			} else {
+				if (wh instanceof dojo.uri.Uri) {
+					item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())}));
+				} else {
+					if (whIsType) {
+						item = dojo.widget.createWidget(wh, props);
+					} else {
+						if (typeof wh == "string" || wh instanceof String) {
+							switch (wh.charAt(0)) {
+							  case "|":
+							  case "-":
+							  case "/":
+								item = dojo.widget.createWidget("ToolbarSeparator", props);
+								break;
+							  case " ":
+								if (wh.length == 1) {
+									item = dojo.widget.createWidget("ToolbarSpace", props);
+								} else {
+									item = dojo.widget.createWidget("ToolbarFlexibleSpace", props);
+								}
+								break;
+							  default:
+								if (/\.(gif|jpg|jpeg|png)$/i.test(wh)) {
+									item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:new dojo.widget.Icon(wh.toString())}));
+								} else {
+									item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()}));
+								}
+							}
+						} else {
+							if (wh && wh.tagName && /^img$/i.test(wh.tagName)) {
+								item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {icon:wh}));
+							} else {
+								item = dojo.widget.createWidget("ToolbarButton", dojo.lang.mixin(props || {}, {label:wh.toString()}));
+							}
+						}
+					}
+				}
+			}
+		}
+		return item;
+	};
+	dojo.widget.defineWidget("dojo.widget.ToolbarButtonGroup", dojo.widget.ToolbarItem, {isContainer:true, templateString:"<span unselectable=\"on\" class=\"toolbarButtonGroup\" dojoAttachPoint=\"containerNode\"></span>", defaultButton:"", postCreate:function () {
+		for (var i = 0; i < this.children.length; i++) {
+			this._injectChild(this.children[i]);
+		}
+	}, addChild:function (item, pos, props) {
+		var widget = dojo.widget.ToolbarItem.make(item, null, dojo.lang.mixin(props || {}, {toggleItem:true}));
+		var ret = dojo.widget.ToolbarButtonGroup.superclass.addChild.call(this, widget, null, pos, null);
+		this._injectChild(widget);
+		return ret;
+	}, _injectChild:function (widget) {
+		dojo.event.connect(widget, "onSelect", this, "onChildSelected");
+		dojo.event.connect(widget, "onDeselect", this, "onChildDeSelected");
+		if (widget._name == this.defaultButton || (typeof this.defaultButton == "number" && this.children.length - 1 == this.defaultButton)) {
+			widget.select(false, true);
+		}
+	}, getItem:function (name) {
+		if (name instanceof dojo.widget.ToolbarItem) {
+			return name;
+		}
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem && child._name == name) {
+				return child;
+			}
+		}
+		return null;
+	}, getItems:function () {
+		var items = [];
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem) {
+				items.push(child);
+			}
+		}
+		return items;
+	}, onChildSelected:function (e) {
+		this.select(e._name);
+	}, onChildDeSelected:function (e) {
+		this._fireEvent("onChangeSelect", this._value);
+	}, enable:function (force, preventEvent) {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem) {
+				child.enable(force, preventEvent);
+				if (child._name == this._value) {
+					child.select(force, preventEvent);
+				}
+			}
+		}
+	}, disable:function (force, preventEvent) {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem) {
+				child.disable(force, preventEvent);
+			}
+		}
+	}, _value:"", getValue:function () {
+		return this._value;
+	}, select:function (name, force, preventEvent) {
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (child instanceof dojo.widget.ToolbarItem) {
+				if (child._name == name) {
+					child.select(force, preventEvent);
+					this._value = name;
+				} else {
+					child.deselect(true, true);
+				}
+			}
+		}
+		if (!preventEvent) {
+			this._fireEvent("onSelect", this._value);
+			this._fireEvent("onChangeSelect", this._value);
+		}
+	}, setValue:this.select, preventDeselect:false});
+	dojo.widget.defineWidget("dojo.widget.ToolbarButton", dojo.widget.ToolbarItem, {fillInTemplate:function (args, frag) {
+		dojo.widget.ToolbarButton.superclass.fillInTemplate.call(this, args, frag);
+		dojo.html.addClass(this.domNode, "toolbarButton");
+		if (this._icon) {
+			this.setIcon(this._icon);
+		}
+		if (this._label) {
+			this.setLabel(this._label);
+		}
+		if (!this._name) {
+			if (this._label) {
+				this.setName(this._label);
+			} else {
+				if (this._icon) {
+					var src = this._icon.getSrc("enabled").match(/[\/^]([^\.\/]+)\.(gif|jpg|jpeg|png)$/i);
+					if (src) {
+						this.setName(src[1]);
+					}
+				} else {
+					this._name = this._widgetId;
+				}
+			}
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.ToolbarDialog", dojo.widget.ToolbarButton, {fillInTemplate:function (args, frag) {
+		dojo.widget.ToolbarDialog.superclass.fillInTemplate.call(this, args, frag);
+		dojo.event.connect(this, "onSelect", this, "showDialog");
+		dojo.event.connect(this, "onDeselect", this, "hideDialog");
+	}, showDialog:function (e) {
+		dojo.lang.setTimeout(dojo.event.connect, 1, document, "onmousedown", this, "deselect");
+	}, hideDialog:function (e) {
+		dojo.event.disconnect(document, "onmousedown", this, "deselect");
+	}});
+	dojo.widget.defineWidget("dojo.widget.ToolbarMenu", dojo.widget.ToolbarDialog, {});
+	dojo.widget.ToolbarMenuItem = function () {
+	};
+	dojo.widget.defineWidget("dojo.widget.ToolbarSeparator", dojo.widget.ToolbarItem, {templateString:"<span unselectable=\"on\" class=\"toolbarItem toolbarSeparator\"></span>", defaultIconPath:new dojo.uri.moduleUri("dojo.widget", "templates/buttons/sep.gif"), fillInTemplate:function (args, frag, skip) {
+		dojo.widget.ToolbarSeparator.superclass.fillInTemplate.call(this, args, frag);
+		this._name = this.widgetId;
+		if (!skip) {
+			if (!this._icon) {
+				this.setIcon(this.defaultIconPath);
+			}
+			this.domNode.appendChild(this._icon.getNode());
+		}
+	}, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null});
+	dojo.widget.defineWidget("dojo.widget.ToolbarSpace", dojo.widget.ToolbarSeparator, {fillInTemplate:function (args, frag, skip) {
+		dojo.widget.ToolbarSpace.superclass.fillInTemplate.call(this, args, frag, true);
+		if (!skip) {
+			dojo.html.addClass(this.domNode, "toolbarSpace");
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.ToolbarSelect", dojo.widget.ToolbarItem, {templateString:"<span class=\"toolbarItem toolbarSelect\" unselectable=\"on\"><select dojoAttachPoint=\"selectBox\" dojoOnChange=\"changed\"></select></span>", fillInTemplate:function (args, frag) {
+		dojo.widget.ToolbarSelect.superclass.fillInTemplate.call(this, args, frag, true);
+		var keys = args.values;
+		var i = 0;
+		for (var val in keys) {
+			var opt = document.createElement("option");
+			opt.setAttribute("value", keys[val]);
+			opt.innerHTML = val;
+			this.selectBox.appendChild(opt);
+		}
+	}, changed:function (e) {
+		this._fireEvent("onSetValue", this.selectBox.value);
+	}, setEnabled:function (is, force, preventEvent) {
+		var ret = dojo.widget.ToolbarSelect.superclass.setEnabled.call(this, is, force, preventEvent);
+		this.selectBox.disabled = this.disabled;
+		return ret;
+	}, _onmouseover:null, _onmouseout:null, _onclick:null, _onmousedown:null, _onmouseup:null});
+	dojo.widget.Icon = function (enabled, disabled, hovered, selected) {
+		if (!arguments.length) {
+			throw new Error("Icon must have at least an enabled state");
+		}
+		var states = ["enabled", "disabled", "hovered", "selected"];
+		var currentState = "enabled";
+		var domNode = document.createElement("img");
+		this.getState = function () {
+			return currentState;
+		};
+		this.setState = function (value) {
+			if (dojo.lang.inArray(states, value)) {
+				if (this[value]) {
+					currentState = value;
+					var img = this[currentState];
+					if ((dojo.render.html.ie55 || dojo.render.html.ie60) && img.src && img.src.match(/[.]png$/i)) {
+						domNode.width = img.width || img.offsetWidth;
+						domNode.height = img.height || img.offsetHeight;
+						domNode.setAttribute("src", dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif").uri);
+						domNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "',sizingMethod='image')";
+					} else {
+						domNode.setAttribute("src", img.src);
+					}
+				}
+			} else {
+				throw new Error("Invalid state set on Icon (state: " + value + ")");
+			}
+		};
+		this.setSrc = function (state, value) {
+			if (/^img$/i.test(value.tagName)) {
+				this[state] = value;
+			} else {
+				if (typeof value == "string" || value instanceof String || value instanceof dojo.uri.Uri) {
+					this[state] = new Image();
+					this[state].src = value.toString();
+				}
+			}
+			return this[state];
+		};
+		this.setIcon = function (icon) {
+			for (var i = 0; i < states.length; i++) {
+				if (icon[states[i]]) {
+					this.setSrc(states[i], icon[states[i]]);
+				}
+			}
+			this.update();
+		};
+		this.enable = function () {
+			this.setState("enabled");
+		};
+		this.disable = function () {
+			this.setState("disabled");
+		};
+		this.hover = function () {
+			this.setState("hovered");
+		};
+		this.select = function () {
+			this.setState("selected");
+		};
+		this.getSize = function () {
+			return {width:domNode.width || domNode.offsetWidth, height:domNode.height || domNode.offsetHeight};
+		};
+		this.setSize = function (w, h) {
+			domNode.width = w;
+			domNode.height = h;
+			return {width:w, height:h};
+		};
+		this.getNode = function () {
+			return domNode;
+		};
+		this.getSrc = function (state) {
+			if (state) {
+				return this[state].src;
+			}
+			return domNode.src || "";
+		};
+		this.update = function () {
+			this.setState(currentState);
+		};
+		for (var i = 0; i < states.length; i++) {
+			var arg = arguments[i];
+			var state = states[i];
+			this[state] = null;
+			if (!arg) {
+				continue;
+			}
+			this.setSrc(state, arg);
+		}
+		this.enable();
+	};
+	dojo.widget.Icon.make = function (a, b, c, d) {
+		for (var i = 0; i < arguments.length; i++) {
+			if (arguments[i] instanceof dojo.widget.Icon) {
+				return arguments[i];
+			}
+		}
+		return new dojo.widget.Icon(a, b, c, d);
+	};
+	dojo.widget.defineWidget("dojo.widget.ToolbarColorDialog", dojo.widget.ToolbarDialog, {palette:"7x10", fillInTemplate:function (args, frag) {
+		dojo.widget.ToolbarColorDialog.superclass.fillInTemplate.call(this, args, frag);
+		this.dialog = dojo.widget.createWidget("ColorPalette", {palette:this.palette});
+		this.dialog.domNode.style.position = "absolute";
+		dojo.event.connect(this.dialog, "onColorSelect", this, "_setValue");
+	}, _setValue:function (color) {
+		this._value = color;
+		this._fireEvent("onSetValue", color);
+	}, showDialog:function (e) {
+		dojo.widget.ToolbarColorDialog.superclass.showDialog.call(this, e);
+		var abs = dojo.html.getAbsolutePosition(this.domNode, true);
+		var y = abs.y + dojo.html.getBorderBox(this.domNode).height;
+		this.dialog.showAt(abs.x, y);
+	}, hideDialog:function (e) {
+		dojo.widget.ToolbarColorDialog.superclass.hideDialog.call(this, e);
+		this.dialog.hide();
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/ColorPalette.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -29420,6 +59569,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ColorPalette");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.html.layout");
@@ -29480,6 +59631,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Wizard");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.LayoutContainer");
@@ -29596,6 +59749,87 @@
 }});
 
 
+__CPAN_FILE__ src/widget/SlideShow.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.SlideShow"], ["require", "dojo.event.*"], ["require", "dojo.widget.*"], ["require", "dojo.lfx.*"], ["require", "dojo.html.display"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.SlideShow");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.html.display");
+	dojo.widget.defineWidget("dojo.widget.SlideShow", dojo.widget.HtmlWidget, {templateString:"<div style=\"position: relative; padding: 3px;\">\n\t\t<div>\n\t\t\t<input type=\"button\" value=\"pause\" \n\t\t\t\tdojoAttachPoint=\"startStopButton\"\n\t\t\t\tdojoAttachEvent=\"onClick: togglePaused;\">\n\t\t</div>\n\t\t<div style=\"position: relative; width: ${this.width}; height: ${this.height};\"\n\t\t\tdojoAttachPoint=\"imagesContainer\"\n\t\t\tdojoAttachEvent=\"onClick: togglePaused;\">\n\t\t\t<img dojoAttachPoint=\"img1\" class=\"slideShowImg\" \n\t\t\t\tstyle=\"z-index: 1; width: ${this.width}; height: ${this.height};\"  />\n\t\t\t<img dojoAttachPoint=\"img2\" class=\"slideShowImg\" \n\t\t\t\tstyle=\"z-index: 0; width: ${this.width}; height: ${this.height};\" />\n\t\t</div>\t\n</div>\n", templateCssString:".slideShowImg {\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px; \n\tborder: 2px solid #4d4d4d;\n\tpadding: 0px;\n\tmargin: 0px;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/SlideShow.css"), imgUrls:[], imgUrlBase:"", delay:4000, transitionInterval:2000, imgWidth:800, imgHeight:600, preventCache:false, stopped:false, _urlsIdx:0, _background:"img2", _foreground:"img1", fadeAnim:null, startStopButton:null, img1:null, img2:null, postMixInProperties:function () {
+		this.width = this.imgWidth + "px";
+		this.height = this.imgHeight + "px";
+	}, fillInTemplate:function () {
+		if (dojo.render.html.safari && this.imgUrls.length == 2) {
+			this.preventCache = true;
+		}
+		dojo.html.setOpacity(this.img1, 0.9999);
+		dojo.html.setOpacity(this.img2, 0.9999);
+		if (this.imgUrls.length > 1) {
+			this.img2.src = this.imgUrlBase + this.imgUrls[this._urlsIdx++] + this._getUrlSuffix();
+			this._endTransition();
+		} else {
+			this.img1.src = this.imgUrlBase + this.imgUrls[this._urlsIdx++] + this._getUrlSuffix();
+		}
+	}, _getUrlSuffix:function () {
+		if (this.preventCache) {
+			return "?ts=" + (new Date()).getTime();
+		} else {
+			return "";
+		}
+	}, togglePaused:function () {
+		if (this.stopped) {
+			this.stopped = false;
+			this._backgroundImageLoaded();
+			this.startStopButton.value = "pause";
+		} else {
+			this.stopped = true;
+			this.startStopButton.value = "play";
+		}
+	}, _backgroundImageLoaded:function () {
+		if (this.stopped) {
+			return;
+		}
+		if (this.fadeAnim) {
+			this.fadeAnim.stop();
+		}
+		this.fadeAnim = dojo.lfx.fadeOut(this[this._foreground], this.transitionInterval, null);
+		dojo.event.connect(this.fadeAnim, "onEnd", this, "_endTransition");
+		this.fadeAnim.play();
+	}, _endTransition:function () {
+		with (this[this._background].style) {
+			zIndex = parseInt(zIndex) + 1;
+		}
+		with (this[this._foreground].style) {
+			zIndex = parseInt(zIndex) - 1;
+		}
+		var tmp = this._foreground;
+		this._foreground = this._background;
+		this._background = tmp;
+		this._loadNextImage();
+	}, _loadNextImage:function () {
+		dojo.event.kwConnect({srcObj:this[this._background], srcFunc:"onload", adviceObj:this, adviceFunc:"_backgroundImageLoaded", once:true, delay:this.delay});
+		dojo.html.setOpacity(this[this._background], 1);
+		this[this._background].src = this.imgUrlBase + this.imgUrls[this._urlsIdx++];
+		if (this._urlsIdx > (this.imgUrls.length - 1)) {
+			this._urlsIdx = 0;
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -29607,6 +59841,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2");
 dojo.require("dojo.io.*");
 dojo.require("dojo.widget.RichText");
@@ -30008,6 +60244,509 @@
 }});
 
 
+__CPAN_FILE__ src/widget/ContentPane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ContentPane"], ["require", "dojo.widget.*"], ["require", "dojo.io.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.string"], ["require", "dojo.string.extras"], ["require", "dojo.html.style"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ContentPane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.string");
+	dojo.require("dojo.string.extras");
+	dojo.require("dojo.html.style");
+	dojo.widget.defineWidget("dojo.widget.ContentPane", dojo.widget.HtmlWidget, function () {
+		this._styleNodes = [];
+		this._onLoadStack = [];
+		this._onUnloadStack = [];
+		this._callOnUnload = false;
+		this._ioBindObj;
+		this.scriptScope;
+		this.bindArgs = {};
+	}, {isContainer:true, adjustPaths:true, href:"", extractContent:true, parseContent:true, cacheContent:true, preload:false, refreshOnShow:false, handler:"", executeScripts:false, scriptSeparation:true, loadingMessage:"Loading...", isLoaded:false, postCreate:function (args, frag, parentComp) {
+		if (this.handler !== "") {
+			this.setHandler(this.handler);
+		}
+		if (this.isShowing() || this.preload) {
+			this.loadContents();
+		}
+	}, show:function () {
+		if (this.refreshOnShow) {
+			this.refresh();
+		} else {
+			this.loadContents();
+		}
+		dojo.widget.ContentPane.superclass.show.call(this);
+	}, refresh:function () {
+		this.isLoaded = false;
+		this.loadContents();
+	}, loadContents:function () {
+		if (this.isLoaded) {
+			return;
+		}
+		if (dojo.lang.isFunction(this.handler)) {
+			this._runHandler();
+		} else {
+			if (this.href != "") {
+				this._downloadExternalContent(this.href, this.cacheContent && !this.refreshOnShow);
+			}
+		}
+	}, setUrl:function (url) {
+		this.href = url;
+		this.isLoaded = false;
+		if (this.preload || this.isShowing()) {
+			this.loadContents();
+		}
+	}, abort:function () {
+		var bind = this._ioBindObj;
+		if (!bind || !bind.abort) {
+			return;
+		}
+		bind.abort();
+		delete this._ioBindObj;
+	}, _downloadExternalContent:function (url, useCache) {
+		this.abort();
+		this._handleDefaults(this.loadingMessage, "onDownloadStart");
+		var self = this;
+		this._ioBindObj = dojo.io.bind(this._cacheSetting({url:url, mimetype:"text/html", handler:function (type, data, xhr) {
+			delete self._ioBindObj;
+			if (type == "load") {
+				self.onDownloadEnd.call(self, url, data);
+			} else {
+				var e = {responseText:xhr.responseText, status:xhr.status, statusText:xhr.statusText, responseHeaders:xhr.getAllResponseHeaders(), text:"Error loading '" + url + "' (" + xhr.status + " " + xhr.statusText + ")"};
+				self._handleDefaults.call(self, e, "onDownloadError");
+				self.onLoad();
+			}
+		}}, useCache));
+	}, _cacheSetting:function (bindObj, useCache) {
+		for (var x in this.bindArgs) {
+			if (dojo.lang.isUndefined(bindObj[x])) {
+				bindObj[x] = this.bindArgs[x];
+			}
+		}
+		if (dojo.lang.isUndefined(bindObj.useCache)) {
+			bindObj.useCache = useCache;
+		}
+		if (dojo.lang.isUndefined(bindObj.preventCache)) {
+			bindObj.preventCache = !useCache;
+		}
+		if (dojo.lang.isUndefined(bindObj.mimetype)) {
+			bindObj.mimetype = "text/html";
+		}
+		return bindObj;
+	}, onLoad:function (e) {
+		this._runStack("_onLoadStack");
+		this.isLoaded = true;
+	}, onUnLoad:function (e) {
+		dojo.deprecated(this.widgetType + ".onUnLoad, use .onUnload (lowercased load)", 0.5);
+	}, onUnload:function (e) {
+		this._runStack("_onUnloadStack");
+		delete this.scriptScope;
+		if (this.onUnLoad !== dojo.widget.ContentPane.prototype.onUnLoad) {
+			this.onUnLoad.apply(this, arguments);
+		}
+	}, _runStack:function (stName) {
+		var st = this[stName];
+		var err = "";
+		var scope = this.scriptScope || window;
+		for (var i = 0; i < st.length; i++) {
+			try {
+				st[i].call(scope);
+			}
+			catch (e) {
+				err += "\n" + st[i] + " failed: " + e.description;
+			}
+		}
+		this[stName] = [];
+		if (err.length) {
+			var name = (stName == "_onLoadStack") ? "addOnLoad" : "addOnUnLoad";
+			this._handleDefaults(name + " failure\n " + err, "onExecError", "debug");
+		}
+	}, addOnLoad:function (obj, func) {
+		this._pushOnStack(this._onLoadStack, obj, func);
+	}, addOnUnload:function (obj, func) {
+		this._pushOnStack(this._onUnloadStack, obj, func);
+	}, addOnUnLoad:function () {
+		dojo.deprecated(this.widgetType + ".addOnUnLoad, use addOnUnload instead. (lowercased Load)", 0.5);
+		this.addOnUnload.apply(this, arguments);
+	}, _pushOnStack:function (stack, obj, func) {
+		if (typeof func == "undefined") {
+			stack.push(obj);
+		} else {
+			stack.push(function () {
+				obj[func]();
+			});
+		}
+	}, destroy:function () {
+		this.onUnload();
+		dojo.widget.ContentPane.superclass.destroy.call(this);
+	}, onExecError:function (e) {
+	}, onContentError:function (e) {
+	}, onDownloadError:function (e) {
+	}, onDownloadStart:function (e) {
+	}, onDownloadEnd:function (url, data) {
+		data = this.splitAndFixPaths(data, url);
+		this.setContent(data);
+	}, _handleDefaults:function (e, handler, messType) {
+		if (!handler) {
+			handler = "onContentError";
+		}
+		if (dojo.lang.isString(e)) {
+			e = {text:e};
+		}
+		if (!e.text) {
+			e.text = e.toString();
+		}
+		e.toString = function () {
+			return this.text;
+		};
+		if (typeof e.returnValue != "boolean") {
+			e.returnValue = true;
+		}
+		if (typeof e.preventDefault != "function") {
+			e.preventDefault = function () {
+				this.returnValue = false;
+			};
+		}
+		this[handler](e);
+		if (e.returnValue) {
+			switch (messType) {
+			  case true:
+			  case "alert":
+				alert(e.toString());
+				break;
+			  case "debug":
+				dojo.debug(e.toString());
+				break;
+			  default:
+				if (this._callOnUnload) {
+					this.onUnload();
+				}
+				this._callOnUnload = false;
+				if (arguments.callee._loopStop) {
+					dojo.debug(e.toString());
+				} else {
+					arguments.callee._loopStop = true;
+					this._setContent(e.toString());
+				}
+			}
+		}
+		arguments.callee._loopStop = false;
+	}, splitAndFixPaths:function (s, url) {
+		var titles = [], scripts = [], tmp = [];
+		var match = [], requires = [], attr = [], styles = [];
+		var str = "", path = "", fix = "", tagFix = "", tag = "", origPath = "";
+		if (!url) {
+			url = "./";
+		}
+		if (s) {
+			var regex = /<title[^>]*>([\s\S]*?)<\/title>/i;
+			while (match = regex.exec(s)) {
+				titles.push(match[1]);
+				s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
+			}
+			if (this.adjustPaths) {
+				var regexFindTag = /<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i;
+				var regexFindAttr = /\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i;
+				var regexProtocols = /^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/;
+				while (tag = regexFindTag.exec(s)) {
+					str += s.substring(0, tag.index);
+					s = s.substring((tag.index + tag[0].length), s.length);
+					tag = tag[0];
+					tagFix = "";
+					while (attr = regexFindAttr.exec(tag)) {
+						path = "";
+						origPath = attr[3];
+						switch (attr[1].toLowerCase()) {
+						  case "src":
+						  case "href":
+							if (regexProtocols.exec(origPath)) {
+								path = origPath;
+							} else {
+								path = (new dojo.uri.Uri(url, origPath).toString());
+							}
+							break;
+						  case "style":
+							path = dojo.html.fixPathsInCssText(origPath, url);
+							break;
+						  default:
+							path = origPath;
+						}
+						fix = " " + attr[1] + "=" + attr[2] + path + attr[2];
+						tagFix += tag.substring(0, attr.index) + fix;
+						tag = tag.substring((attr.index + attr[0].length), tag.length);
+					}
+					str += tagFix + tag;
+				}
+				s = str + s;
+			}
+			regex = /(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i;
+			while (match = regex.exec(s)) {
+				if (match[1] && match[1].toLowerCase() == "style") {
+					styles.push(dojo.html.fixPathsInCssText(match[2], url));
+				} else {
+					if (attr = match[3].match(/href=(['"]?)([^'">]*)\1/i)) {
+						styles.push({path:attr[2]});
+					}
+				}
+				s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
+			}
+			var regex = /<script([^>]*)>([\s\S]*?)<\/script>/i;
+			var regexSrc = /src=(['"]?)([^"']*)\1/i;
+			var regexDojoJs = /.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/;
+			var regexInvalid = /(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g;
+			var regexRequires = /dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix|registerModulePath)|defineNamespace)\((['"]).*?\1\)\s*;?/;
+			while (match = regex.exec(s)) {
+				if (this.executeScripts && match[1]) {
+					if (attr = regexSrc.exec(match[1])) {
+						if (regexDojoJs.exec(attr[2])) {
+							dojo.debug("Security note! inhibit:" + attr[2] + " from  being loaded again.");
+						} else {
+							scripts.push({path:attr[2]});
+						}
+					}
+				}
+				if (match[2]) {
+					var sc = match[2].replace(regexInvalid, "");
+					if (!sc) {
+						continue;
+					}
+					while (tmp = regexRequires.exec(sc)) {
+						requires.push(tmp[0]);
+						sc = sc.substring(0, tmp.index) + sc.substr(tmp.index + tmp[0].length);
+					}
+					if (this.executeScripts) {
+						scripts.push(sc);
+					}
+				}
+				s = s.substr(0, match.index) + s.substr(match.index + match[0].length);
+			}
+			if (this.extractContent) {
+				match = s.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+				if (match) {
+					s = match[1];
+				}
+			}
+			if (this.executeScripts && this.scriptSeparation) {
+				var regex = /(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*?\S=)((['"])[^>]*scriptScope[^>]*>)/;
+				var regexAttr = /([\s'";:\(])scriptScope(.*)/;
+				str = "";
+				while (tag = regex.exec(s)) {
+					tmp = ((tag[3] == "'") ? "\"" : "'");
+					fix = "";
+					str += s.substring(0, tag.index) + tag[1];
+					while (attr = regexAttr.exec(tag[2])) {
+						tag[2] = tag[2].substring(0, attr.index) + attr[1] + "dojo.widget.byId(" + tmp + this.widgetId + tmp + ").scriptScope" + attr[2];
+					}
+					str += tag[2];
+					s = s.substr(tag.index + tag[0].length);
+				}
+				s = str + s;
+			}
+		}
+		return {"xml":s, "styles":styles, "titles":titles, "requires":requires, "scripts":scripts, "url":url};
+	}, _setContent:function (cont) {
+		this.destroyChildren();
+		for (var i = 0; i < this._styleNodes.length; i++) {
+			if (this._styleNodes[i] && this._styleNodes[i].parentNode) {
+				this._styleNodes[i].parentNode.removeChild(this._styleNodes[i]);
+			}
+		}
+		this._styleNodes = [];
+		try {
+			var node = this.containerNode || this.domNode;
+			while (node.firstChild) {
+				dojo.html.destroyNode(node.firstChild);
+			}
+			if (typeof cont != "string") {
+				node.appendChild(cont);
+			} else {
+				node.innerHTML = cont;
+			}
+		}
+		catch (e) {
+			e.text = "Couldn't load content:" + e.description;
+			this._handleDefaults(e, "onContentError");
+		}
+	}, setContent:function (data) {
+		this.abort();
+		if (this._callOnUnload) {
+			this.onUnload();
+		}
+		this._callOnUnload = true;
+		if (!data || dojo.html.isNode(data)) {
+			this._setContent(data);
+			this.onResized();
+			this.onLoad();
+		} else {
+			if (typeof data.xml != "string") {
+				this.href = "";
+				data = this.splitAndFixPaths(data);
+			}
+			this._setContent(data.xml);
+			for (var i = 0; i < data.styles.length; i++) {
+				if (data.styles[i].path) {
+					this._styleNodes.push(dojo.html.insertCssFile(data.styles[i].path, dojo.doc(), false, true));
+				} else {
+					this._styleNodes.push(dojo.html.insertCssText(data.styles[i]));
+				}
+			}
+			if (this.parseContent) {
+				for (var i = 0; i < data.requires.length; i++) {
+					try {
+						eval(data.requires[i]);
+					}
+					catch (e) {
+						e.text = "ContentPane: error in package loading calls, " + (e.description || e);
+						this._handleDefaults(e, "onContentError", "debug");
+					}
+				}
+			}
+			var _self = this;
+			function asyncParse() {
+				if (_self.executeScripts) {
+					_self._executeScripts(data.scripts);
+				}
+				if (_self.parseContent) {
+					var node = _self.containerNode || _self.domNode;
+					var parser = new dojo.xml.Parse();
+					var frag = parser.parseElement(node, null, true);
+					dojo.widget.getParser().createSubComponents(frag, _self);
+				}
+				_self.onResized();
+				_self.onLoad();
+			}
+			if (dojo.hostenv.isXDomain && data.requires.length) {
+				dojo.addOnLoad(asyncParse);
+			} else {
+				asyncParse();
+			}
+		}
+	}, setHandler:function (handler) {
+		var fcn = dojo.lang.isFunction(handler) ? handler : window[handler];
+		if (!dojo.lang.isFunction(fcn)) {
+			this._handleDefaults("Unable to set handler, '" + handler + "' not a function.", "onExecError", true);
+			return;
+		}
+		this.handler = function () {
+			return fcn.apply(this, arguments);
+		};
+	}, _runHandler:function () {
+		var ret = true;
+		if (dojo.lang.isFunction(this.handler)) {
+			this.handler(this, this.domNode);
+			ret = false;
+		}
+		this.onLoad();
+		return ret;
+	}, _executeScripts:function (scripts) {
+		var self = this;
+		var tmp = "", code = "";
+		for (var i = 0; i < scripts.length; i++) {
+			if (scripts[i].path) {
+				dojo.io.bind(this._cacheSetting({"url":scripts[i].path, "load":function (type, scriptStr) {
+					dojo.lang.hitch(self, tmp = ";" + scriptStr);
+				}, "error":function (type, error) {
+					error.text = type + " downloading remote script";
+					self._handleDefaults.call(self, error, "onExecError", "debug");
+				}, "mimetype":"text/plain", "sync":true}, this.cacheContent));
+				code += tmp;
+			} else {
+				code += scripts[i];
+			}
+		}
+		try {
+			if (this.scriptSeparation) {
+				delete this.scriptScope;
+				this.scriptScope = new (new Function("_container_", code + "; return this;"))(self);
+			} else {
+				var djg = dojo.global();
+				if (djg.execScript) {
+					djg.execScript(code);
+				} else {
+					var djd = dojo.doc();
+					var sc = djd.createElement("script");
+					sc.appendChild(djd.createTextNode(code));
+					(this.containerNode || this.domNode).appendChild(sc);
+				}
+			}
+		}
+		catch (e) {
+			e.text = "Error running scripts from content:\n" + e.description;
+			this._handleDefaults(e, "onExecError", "debug");
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/SwtWidget.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.SwtWidget"], ["require", "dojo.experimental"], ["require", "dojo.event.*"], ["require", "dojo.widget.Widget"], ["require", "dojo.uri.*"], ["require", "dojo.lang.func"], ["require", "dojo.lang.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.SwtWidget");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.SwtWidget");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.widget.Widget");
+	dojo.require("dojo.uri.*");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.extras");
+	try {
+		importPackage(Packages.org.eclipse.swt.widgets);
+		dojo.declare("dojo.widget.SwtWidget", dojo.widget.Widget, function () {
+			if ((arguments.length > 0) && (typeof arguments[0] == "object")) {
+				this.create(arguments[0]);
+			}
+		}, {display:null, shell:null, show:function () {
+		}, hide:function () {
+		}, addChild:function () {
+		}, registerChild:function () {
+		}, addWidgetAsDirectChild:function () {
+		}, removeChild:function () {
+		}, destroyRendering:function () {
+		}, postInitialize:function () {
+		}});
+		dojo.widget.SwtWidget.prototype.display = new Display();
+		dojo.widget.SwtWidget.prototype.shell = new Shell(dojo.widget.SwtWidget.prototype.display);
+		dojo.widget.manager.startShell = function () {
+			var sh = dojo.widget.SwtWidget.prototype.shell;
+			var d = dojo.widget.SwtWidget.prototype.display;
+			sh.open();
+			while (!sh.isDisposed()) {
+				dojo.widget.manager.doNext();
+				if (!d.readAndDispatch()) {
+					d.sleep();
+				}
+			}
+			d.dispose();
+		};
+	}
+	catch (e) {
+		dojo.debug("dojo.widget.SwtWidget not loaded. SWT classes not available");
+	}
+}});
+
+
 __CPAN_FILE__ src/widget/TreeSelector.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -30019,13 +60758,15 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeSelector");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.widget.defineWidget("dojo.widget.TreeSelector", dojo.widget.HtmlWidget, function () {
 	this.eventNames = {};
 	this.listenedTrees = [];
 }, {widgetType:"TreeSelector", selectedNode:null, dieWithTree:false, eventNamesDefault:{select:"select", destroy:"destroy", deselect:"deselect", dblselect:"dblselect"}, initialize:function () {
-	for (name in this.eventNamesDefault) {
+	for (var name in this.eventNamesDefault) {
 		if (dojo.lang.isUndefined(this.eventNames[name])) {
 			this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
 		}
@@ -30121,6 +60862,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.InlineEditBox");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.event.*");
@@ -30277,6 +61020,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DateTextbox");
 dojo.require("dojo.widget.ValidationTextbox");
 dojo.require("dojo.date.format");
@@ -30313,6 +61058,78 @@
 }});
 
 
+__CPAN_FILE__ src/widget/ResizeHandle.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ResizeHandle"], ["require", "dojo.widget.*"], ["require", "dojo.html.layout"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ResizeHandle");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.event.*");
+	dojo.widget.defineWidget("dojo.widget.ResizeHandle", dojo.widget.HtmlWidget, {targetElmId:"", templateCssString:".dojoHtmlResizeHandle {\n\tfloat: right;\n\tposition: absolute;\n\tright: 2px;\n\tbottom: 2px;\n\twidth: 13px;\n\theight: 13px;\n\tz-index: 20;\n\tcursor: nw-resize;\n\tbackground-image: url(grabCorner.gif);\n\tline-height: 0px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ResizeHandle.css"), templateString:"<div class=\"dojoHtmlResizeHandle\"><div></div></div>", postCreate:function () {
+		dojo.event.connect(this.domNode, "onmousedown", this, "_beginSizing");
+	}, _beginSizing:function (e) {
+		if (this._isSizing) {
+			return false;
+		}
+		this.targetWidget = dojo.widget.byId(this.targetElmId);
+		this.targetDomNode = this.targetWidget ? this.targetWidget.domNode : dojo.byId(this.targetElmId);
+		if (!this.targetDomNode) {
+			return;
+		}
+		this._isSizing = true;
+		this.startPoint = {"x":e.clientX, "y":e.clientY};
+		var mb = dojo.html.getMarginBox(this.targetDomNode);
+		this.startSize = {"w":mb.width, "h":mb.height};
+		dojo.event.kwConnect({srcObj:dojo.body(), srcFunc:"onmousemove", targetObj:this, targetFunc:"_changeSizing", rate:25});
+		dojo.event.connect(dojo.body(), "onmouseup", this, "_endSizing");
+		e.preventDefault();
+	}, _changeSizing:function (e) {
+		try {
+			if (!e.clientX || !e.clientY) {
+				return;
+			}
+		}
+		catch (e) {
+			return;
+		}
+		var dx = this.startPoint.x - e.clientX;
+		var dy = this.startPoint.y - e.clientY;
+		var newW = this.startSize.w - dx;
+		var newH = this.startSize.h - dy;
+		if (this.minSize) {
+			var mb = dojo.html.getMarginBox(this.targetDomNode);
+			if (newW < this.minSize.w) {
+				newW = mb.width;
+			}
+			if (newH < this.minSize.h) {
+				newH = mb.height;
+			}
+		}
+		if (this.targetWidget) {
+			this.targetWidget.resizeTo(newW, newH);
+		} else {
+			dojo.html.setMarginBox(this.targetDomNode, {width:newW, height:newH});
+		}
+		e.preventDefault();
+	}, _endSizing:function (e) {
+		dojo.event.disconnect(dojo.body(), "onmousemove", this, "_changeSizing");
+		dojo.event.disconnect(dojo.body(), "onmouseup", this, "_endSizing");
+		this._isSizing = false;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/ResizeHandle.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -30324,6 +61141,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ResizeHandle");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.html.layout");
@@ -30381,6 +61200,110 @@
 }});
 
 
+__CPAN_FILE__ src/widget/SvgButton.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.SvgButton"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.SvgButton");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.SvgButton");
+	dojo.widget.SvgButton = function () {
+		dojo.widget.DomButton.call(this);
+		dojo.widget.SvgWidget.call(this);
+		this.onFoo = function () {
+			alert("bar");
+		};
+		this.label = "huzzah!";
+		this.setLabel = function (x, y, textSize, label, shape) {
+			var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
+			var textString = "";
+			switch (shape) {
+			  case "ellipse":
+				textString = "<text x='" + coords[6] + "' y='" + coords[7] + "'>" + label + "</text>";
+				break;
+			  case "rectangle":
+				textString = "";
+				break;
+			  case "circle":
+				textString = "";
+				break;
+			}
+			return textString;
+		};
+		this.fillInTemplate = function (x, y, textSize, label, shape) {
+			this.textSize = textSize || 12;
+			this.label = label;
+			var textWidth = this.label.length * this.textSize;
+		};
+	};
+	dojo.inherits(dojo.widget.SvgButton, dojo.widget.DomButton);
+	dojo.widget.SvgButton.prototype.shapeString = function (x, y, textSize, label, shape) {
+		switch (shape) {
+		  case "ellipse":
+			var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
+			return "<ellipse cx='" + coords[4] + "' cy='" + coords[5] + "' rx='" + coords[2] + "' ry='" + coords[3] + "'/>";
+			break;
+		  case "rect":
+			return "";
+			break;
+		  case "circle":
+			return "";
+			break;
+		}
+	};
+	dojo.widget.SvgButton.prototype.coordinates = function (x, y, textSize, label, shape) {
+		switch (shape) {
+		  case "ellipse":
+			var buttonWidth = label.length * textSize;
+			var buttonHeight = textSize * 2.5;
+			var rx = buttonWidth / 2;
+			var ry = buttonHeight / 2;
+			var cx = rx + x;
+			var cy = ry + y;
+			var textX = cx - rx * textSize / 25;
+			var textY = cy * 1.1;
+			return [buttonWidth, buttonHeight, rx, ry, cx, cy, textX, textY];
+			break;
+		  case "rectangle":
+			return "";
+			break;
+		  case "circle":
+			return "";
+			break;
+		}
+	};
+	dojo.widget.SvgButton.prototype.labelString = function (x, y, textSize, label, shape) {
+		var textString = "";
+		var coords = dojo.widget.SvgButton.prototype.coordinates(x, y, textSize, label, shape);
+		switch (shape) {
+		  case "ellipse":
+			textString = "<text x='" + coords[6] + "' y='" + coords[7] + "'>" + label + "</text>";
+			break;
+		  case "rectangle":
+			textString = "";
+			break;
+		  case "circle":
+			textString = "";
+			break;
+		}
+		return textString;
+	};
+	dojo.widget.SvgButton.prototype.templateString = function (x, y, textSize, label, shape) {
+		return "<g class='dojoButton' dojoAttachEvent='onClick; onMouseMove: onFoo;' dojoAttachPoint='labelNode'>" + dojo.widgets.SVGButton.prototype.shapeString(x, y, textSize, label, shape) + dojo.widget.SVGButton.prototype.labelString(x, y, textSize, label, shape) + "</g>";
+	};
+}});
+
+
 __CPAN_FILE__ src/widget/TreeNodeV3.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -30392,6 +61315,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeNodeV3");
 dojo.require("dojo.html.*");
 dojo.require("dojo.event.*");
@@ -30691,6 +61616,913 @@
 }});
 
 
+__CPAN_FILE__ src/widget/InlineEditBox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.InlineEditBox"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.lfx.*"], ["require", "dojo.gfx.color"], ["require", "dojo.string"], ["require", "dojo.html.*"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.InlineEditBox");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.string");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.layout");
+	dojo.widget.defineWidget("dojo.widget.InlineEditBox", dojo.widget.HtmlWidget, function () {
+		this.history = [];
+	}, {templateString:"<form class=\"inlineEditBox\" style=\"display: none\" dojoAttachPoint=\"form\" dojoAttachEvent=\"onSubmit:saveEdit; onReset:cancelEdit; onKeyUp: checkForValueChange;\">\n\t<input type=\"text\" dojoAttachPoint=\"text\" style=\"display: none;\" />\n\t<textarea dojoAttachPoint=\"textarea\" style=\"display: none;\"></textarea>\n\t<input type=\"submit\" value=\"Save\" dojoAttachPoint=\"submitButton\" />\n\t<input type=\"reset\" value=\"Cancel\" dojoAttachPoint=\"cancelButton\" />\n</form>\n", templateCssString:".editLabel {\n\tfont-size : small;\n\tpadding : 0 5px;\n\tdisplay : none;\n}\n\n.editableRegionDisabled {\n\tcursor : pointer;\n\t_cursor : hand;\n}\n\n.editableRegion {\n\tbackground-color : #ffc !important;\n\tcursor : pointer;\n\t_cursor : hand;\n}\n\n.editableRegion .editLabel {\n\tdisplay : inline;\n}\n\n.editableTextareaRegion .editLabel {\n\tdisplay : block;\n}\n\n.inlineEditBox {\n\t/*background-color : #ffc;*/\n\tdisplay : inline;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/InlineEditBox.css"), mode:"text", name:"", minWidth:100, minHeight:200, editing:false, value:"", textValue:"", defaultText:"", postMixInProperties:function () {
+		if (this.textValue) {
+			dojo.deprecated("InlineEditBox: Use value parameter instead of textValue; will be removed in 0.5");
+			this.value = this.textValue;
+		}
+		if (this.defaultText) {
+			dojo.deprecated("InlineEditBox: Use value parameter instead of defaultText; will be removed in 0.5");
+			this.value = this.defaultText;
+		}
+	}, postCreate:function (args, frag) {
+		this.editable = this.getFragNodeRef(frag);
+		dojo.html.insertAfter(this.editable, this.form);
+		dojo.event.connect(this.editable, "onmouseover", this, "onMouseOver");
+		dojo.event.connect(this.editable, "onmouseout", this, "onMouseOut");
+		dojo.event.connect(this.editable, "onclick", this, "_beginEdit");
+		if (this.value) {
+			this.editable.innerHTML = this.value;
+			return;
+		} else {
+			this.value = dojo.string.trim(this.editable.innerHTML);
+			this.editable.innerHTML = this.value;
+		}
+	}, onMouseOver:function () {
+		if (!this.editing) {
+			if (this.disabled) {
+				dojo.html.addClass(this.editable, "editableRegionDisabled");
+			} else {
+				dojo.html.addClass(this.editable, "editableRegion");
+				if (this.mode == "textarea") {
+					dojo.html.addClass(this.editable, "editableTextareaRegion");
+				}
+			}
+		}
+	}, onMouseOut:function () {
+		if (!this.editing) {
+			dojo.html.removeClass(this.editable, "editableRegion");
+			dojo.html.removeClass(this.editable, "editableTextareaRegion");
+			dojo.html.removeClass(this.editable, "editableRegionDisabled");
+		}
+	}, _beginEdit:function (e) {
+		if (this.editing || this.disabled) {
+			return;
+		}
+		this.onMouseOut();
+		this.editing = true;
+		var ee = this[this.mode.toLowerCase()];
+		ee.value = dojo.string.trim(this.value);
+		ee.style.fontSize = dojo.html.getStyle(this.editable, "font-size");
+		ee.style.fontWeight = dojo.html.getStyle(this.editable, "font-weight");
+		ee.style.fontStyle = dojo.html.getStyle(this.editable, "font-style");
+		var bb = dojo.html.getBorderBox(this.editable);
+		ee.style.width = Math.max(bb.width, this.minWidth) + "px";
+		if (this.mode.toLowerCase() == "textarea") {
+			ee.style.display = "block";
+			ee.style.height = Math.max(bb.height, this.minHeight) + "px";
+		} else {
+			ee.style.display = "";
+		}
+		this.form.style.display = "";
+		this.editable.style.display = "none";
+		ee.focus();
+		ee.select();
+		this.submitButton.disabled = true;
+	}, saveEdit:function (e) {
+		e.preventDefault();
+		e.stopPropagation();
+		var ee = this[this.mode.toLowerCase()];
+		if ((this.value != ee.value) && (dojo.string.trim(ee.value) != "")) {
+			this.doFade = true;
+			this.history.push(this.value);
+			this.onSave(ee.value, this.value, this.name);
+			this.value = ee.value;
+			this.editable.innerHTML = "";
+			var textNode = document.createTextNode(this.value);
+			this.editable.appendChild(textNode);
+		} else {
+			this.doFade = false;
+		}
+		this._finishEdit(e);
+	}, _stopEditing:function () {
+		this.editing = false;
+		this.form.style.display = "none";
+		this.editable.style.display = "";
+		return true;
+	}, cancelEdit:function (e) {
+		this._stopEditing();
+		this.onCancel();
+		return true;
+	}, _finishEdit:function (e) {
+		this._stopEditing();
+		if (this.doFade) {
+			dojo.lfx.highlight(this.editable, dojo.gfx.color.hex2rgb("#ffc"), 700).play(300);
+		}
+		this.doFade = false;
+	}, setText:function (txt) {
+		dojo.deprecated("setText() is deprecated, call setValue() instead, will be removed in 0.5");
+		this.setValue(txt);
+	}, setValue:function (txt) {
+		txt = "" + txt;
+		var tt = dojo.string.trim(txt);
+		this.value = tt;
+		this.editable.innerHTML = tt;
+	}, undo:function () {
+		if (this.history.length > 0) {
+			var curValue = this.value;
+			var value = this.history.pop();
+			this.editable.innerHTML = value;
+			this.value = value;
+			this.onUndo(value);
+			this.onSave(value, curValue, this.name);
+		}
+	}, onChange:function (newValue, oldValue) {
+	}, onSave:function (newValue, oldValue, name) {
+	}, onCancel:function () {
+	}, checkForValueChange:function () {
+		var ee = this[this.mode.toLowerCase()];
+		if ((this.value != ee.value) && (dojo.string.trim(ee.value) != "")) {
+			this.submitButton.disabled = false;
+		}
+		this.onChange(this.value, ee.value);
+	}, disable:function () {
+		this.submitButton.disabled = true;
+		this.cancelButton.disabled = true;
+		var ee = this[this.mode.toLowerCase()];
+		ee.disabled = true;
+		dojo.widget.InlineEditBox.superclass.disable.apply(this, arguments);
+	}, enable:function () {
+		this.checkForValueChange();
+		this.cancelButton.disabled = false;
+		var ee = this[this.mode.toLowerCase()];
+		ee.disabled = false;
+		dojo.widget.InlineEditBox.superclass.enable.apply(this, arguments);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Menu2.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Menu2"], ["require", "dojo.widget.PopupContainer"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Menu2");
+	dojo.require("dojo.widget.PopupContainer");
+	dojo.declare("dojo.widget.MenuBase", null, function () {
+		this.eventNames = {open:""};
+	}, {isContainer:true, isMenu:true, eventNaming:"default", templateCssString:"\n.dojoPopupMenu2 {\n\tposition: absolute;\n\tborder: 1px solid #7298d0;\n\tbackground:#85aeec url(images/soriaMenuBg.gif) repeat-x bottom left !important;\n\tpadding: 1px;\n\tmargin-top: 1px;\n\tmargin-bottom: 1px;\n}\n\n.dojoMenuItem2{\n\twhite-space: nowrap;\n\tfont: menu;\n\tmargin: 0;\n}\n\n.dojoMenuItem2Hover {\n\tbackground-color: #D2E4FD;\n\tcursor:pointer;\n\tcursor:hand;\n}\n\n.dojoMenuItem2Icon {\n\tposition: relative;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\twidth: 16px;\n\theight: 16px;\n\tpadding-right: 3px;\n}\n\n.dojoMenuItem2Label {\n\tposition: relative;\n\tvertical-align: middle;\n}\n\n/* main label text */\n.dojoMenuItem2Label {\n\tposition: relative;\n\tvertical-align: middle;\n}\n\n.dojoMenuItem2Accel {\n\tposition: relative;\n\tvertical-align: middle;\n\tpadding-left: 3px;\n}\n\n.dojoMenuItem2Disabled .dojoMenuItem2Label,\n.dojoMenuItem2Disabled .dojoMenuItem2Accel {\n\tcolor: #607a9e;\n}\n\n.dojoMenuItem2Submenu {\n\tposition: relative;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-image: url(images/submenu_off.gif);\n\twidth: 5px;\n\theight: 9px;\n\tpadding-left: 3px;\n}\n.dojoMenuItem2Hover .dojoMenuItem2Submenu {\n\tbackground-image: url(images/submenu_on.gif);\n}\n\n.dojoMenuItem2Disabled .dojoMenuItem2Submenu {\n\tbackground-image: url(images/submenu_disabled.gif);\n}\n\n.dojoMenuSeparator2 {\n\tfont-size: 1px;\n\tmargin: 0;\n}\n\n.dojoMenuSeparator2Top {\n\theight: 50%;\n\tborder-bottom: 1px solid #7a98c4;\n\tmargin: 0px 2px;\n\tfont-size: 1px;\n}\n\n.dojoMenuSeparator2Bottom {\n\theight: 50%;\n\tborder-top: 1px solid #c9deff;\n\tmargin: 0px 2px;\n\tfont-size: 1px;\n}\n\n.dojoMenuBar2 {\n\tbackground:#85aeec url(images/soriaBarBg.gif) repeat-x top left;\n\t/*border-bottom:1px solid #6b9fec;*/\n\tpadding: 1px;\n}\n\n.dojoMenuBar2 .dojoMenuItem2 {\n\twhite-space: nowrap;\n\tfont: menu;\n\tmargin: 0;\n\tposition: relative;\n\tvertical-align: middle;\n\tz-index: 1;\n\tpadding: 3px 8px;\n\tdisplay: inline;/* needed in khtml to display correctly */\n\tdisplay: -moz-inline-box;/* needed in firefox */\n\tcursor:pointer;\n\tcursor:hand;\n}\n\n.dojoMenuBar2 .dojoMenuItem2Hover {\n\tbackground-color:#d2e4fd;\n}\n\n.dojoMenuBar2 .dojoMenuItem2Disabled span {\n\tcolor: #4f6582;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Menu2.css"), submenuDelay:500, initialize:function (args, frag) {
+		if (this.eventNaming == "default") {
+			for (var eventName in this.eventNames) {
+				this.eventNames[eventName] = this.widgetId + "/" + eventName;
+			}
+		}
+	}, _moveToNext:function (evt) {
+		this._highlightOption(1);
+		return true;
+	}, _moveToPrevious:function (evt) {
+		this._highlightOption(-1);
+		return true;
+	}, _moveToParentMenu:function (evt) {
+		if (this._highlighted_option && this.parentMenu) {
+			if (evt._menu2UpKeyProcessed) {
+				return true;
+			} else {
+				this._highlighted_option.onUnhover();
+				this.closeSubmenu();
+				evt._menu2UpKeyProcessed = true;
+			}
+		}
+		return false;
+	}, _moveToChildMenu:function (evt) {
+		if (this._highlighted_option && this._highlighted_option.submenuId) {
+			this._highlighted_option._onClick(true);
+			return true;
+		}
+		return false;
+	}, _selectCurrentItem:function (evt) {
+		if (this._highlighted_option) {
+			this._highlighted_option._onClick();
+			return true;
+		}
+		return false;
+	}, processKey:function (evt) {
+		if (evt.ctrlKey || evt.altKey || !evt.key) {
+			return false;
+		}
+		var rval = false;
+		switch (evt.key) {
+		  case evt.KEY_DOWN_ARROW:
+			rval = this._moveToNext(evt);
+			break;
+		  case evt.KEY_UP_ARROW:
+			rval = this._moveToPrevious(evt);
+			break;
+		  case evt.KEY_RIGHT_ARROW:
+			rval = this._moveToChildMenu(evt);
+			break;
+		  case evt.KEY_LEFT_ARROW:
+			rval = this._moveToParentMenu(evt);
+			break;
+		  case " ":
+		  case evt.KEY_ENTER:
+			if (rval = this._selectCurrentItem(evt)) {
+				break;
+			}
+		  case evt.KEY_ESCAPE:
+		  case evt.KEY_TAB:
+			this.close(true);
+			rval = true;
+			break;
+		}
+		return rval;
+	}, _findValidItem:function (dir, curItem) {
+		if (curItem) {
+			curItem = dir > 0 ? curItem.getNextSibling() : curItem.getPreviousSibling();
+		}
+		for (var i = 0; i < this.children.length; ++i) {
+			if (!curItem) {
+				curItem = dir > 0 ? this.children[0] : this.children[this.children.length - 1];
+			}
+			if (curItem.onHover && curItem.isShowing()) {
+				return curItem;
+			}
+			curItem = dir > 0 ? curItem.getNextSibling() : curItem.getPreviousSibling();
+		}
+	}, _highlightOption:function (dir) {
+		var item;
+		if ((!this._highlighted_option)) {
+			item = this._findValidItem(dir);
+		} else {
+			item = this._findValidItem(dir, this._highlighted_option);
+		}
+		if (item) {
+			if (this._highlighted_option) {
+				this._highlighted_option.onUnhover();
+			}
+			item.onHover();
+			dojo.html.scrollIntoView(item.domNode);
+			try {
+				var node = dojo.html.getElementsByClass("dojoMenuItem2Label", item.domNode)[0];
+				node.focus();
+			}
+			catch (e) {
+			}
+		}
+	}, onItemClick:function (item) {
+	}, closeSubmenu:function (force) {
+		if (this.currentSubmenu == null) {
+			return;
+		}
+		this.currentSubmenu.close(force);
+		this.currentSubmenu = null;
+		this.currentSubmenuTrigger.is_open = false;
+		this.currentSubmenuTrigger._closedSubmenu(force);
+		this.currentSubmenuTrigger = null;
+	}});
+	dojo.widget.defineWidget("dojo.widget.PopupMenu2", [dojo.widget.HtmlWidget, dojo.widget.PopupContainerBase, dojo.widget.MenuBase], function () {
+		this.targetNodeIds = [];
+	}, {templateString:"<table class=\"dojoPopupMenu2\" border=0 cellspacing=0 cellpadding=0 style=\"display: none; position: absolute;\">" + "<tbody dojoAttachPoint=\"containerNode\"></tbody>" + "</table>", submenuOverlap:5, contextMenuForWindow:false, parentMenu:null, postCreate:function () {
+		if (this.contextMenuForWindow) {
+			var doc = dojo.body();
+			this.bindDomNode(doc);
+		} else {
+			if (this.targetNodeIds.length > 0) {
+				dojo.lang.forEach(this.targetNodeIds, this.bindDomNode, this);
+			}
+		}
+		this._subscribeSubitemsOnOpen();
+	}, _subscribeSubitemsOnOpen:function () {
+		var subItems = this.getChildrenOfType(dojo.widget.MenuItem2);
+		for (var i = 0; i < subItems.length; i++) {
+			dojo.event.topic.subscribe(this.eventNames.open, subItems[i], "menuOpen");
+		}
+	}, getTopOpenEvent:function () {
+		var menu = this;
+		while (menu.parentMenu) {
+			menu = menu.parentMenu;
+		}
+		return menu.openEvent;
+	}, bindDomNode:function (node) {
+		node = dojo.byId(node);
+		var win = dojo.html.getElementWindow(node);
+		if (dojo.html.isTag(node, "iframe") == "iframe") {
+			win = dojo.html.iframeContentWindow(node);
+			node = dojo.withGlobal(win, dojo.body);
+		}
+		dojo.widget.Menu2.OperaAndKonqFixer.fixNode(node);
+		dojo.event.kwConnect({srcObj:node, srcFunc:"oncontextmenu", targetObj:this, targetFunc:"onOpen", once:true});
+		if (dojo.render.html.moz && win.document.designMode.toLowerCase() == "on") {
+			dojo.event.browser.addListener(node, "contextmenu", dojo.lang.hitch(this, "onOpen"));
+		}
+		dojo.widget.PopupManager.registerWin(win);
+	}, unBindDomNode:function (nodeName) {
+		var node = dojo.byId(nodeName);
+		dojo.event.kwDisconnect({srcObj:node, srcFunc:"oncontextmenu", targetObj:this, targetFunc:"onOpen", once:true});
+		dojo.widget.Menu2.OperaAndKonqFixer.cleanNode(node);
+	}, _openAsSubmenu:function (parent, explodeSrc, orient) {
+		if (this.isShowingNow) {
+			return;
+		}
+		this.parentMenu = parent;
+		this.open(explodeSrc, parent, explodeSrc, orient);
+	}, close:function (force) {
+		if (this.animationInProgress) {
+			dojo.widget.PopupContainerBase.prototype.close.call(this, force);
+			return;
+		}
+		if (this._highlighted_option) {
+			this._highlighted_option.onUnhover();
+		}
+		dojo.widget.PopupContainerBase.prototype.close.call(this, force);
+		this.parentMenu = null;
+	}, closeAll:function (force) {
+		if (this.parentMenu) {
+			this.parentMenu.closeAll(force);
+		} else {
+			this.close(force);
+		}
+	}, _openSubmenu:function (submenu, from_item) {
+		submenu._openAsSubmenu(this, from_item.arrow, {"TR":"TL", "TL":"TR"});
+		this.currentSubmenu = submenu;
+		this.currentSubmenuTrigger = from_item;
+		this.currentSubmenuTrigger.is_open = true;
+	}, focus:function () {
+		if (this.currentSubmenuTrigger) {
+			if (this.currentSubmenuTrigger.caption) {
+				try {
+					this.currentSubmenuTrigger.caption.focus();
+				}
+				catch (e) {
+				}
+			} else {
+				try {
+					this.currentSubmenuTrigger.domNode.focus();
+				}
+				catch (e) {
+				}
+			}
+		}
+	}, onOpen:function (e) {
+		this.openEvent = e;
+		if (e["target"]) {
+			this.openedForWindow = dojo.html.getElementWindow(e.target);
+		} else {
+			this.openedForWindow = null;
+		}
+		var x = e.pageX, y = e.pageY;
+		var win = dojo.html.getElementWindow(e.target);
+		var iframe = win._frameElement || win.frameElement;
+		if (iframe) {
+			var cood = dojo.html.abs(iframe, true);
+			x += cood.x - dojo.withGlobal(win, dojo.html.getScroll).left;
+			y += cood.y - dojo.withGlobal(win, dojo.html.getScroll).top;
+		}
+		this.open(x, y, null, [x, y]);
+		dojo.event.browser.stopEvent(e);
+	}});
+	dojo.widget.defineWidget("dojo.widget.MenuItem2", dojo.widget.HtmlWidget, function () {
+		this.eventNames = {engage:""};
+	}, {templateString:"<tr class=\"dojoMenuItem2\" dojoAttachEvent=\"onMouseOver: onHover; onMouseOut: onUnhover; onClick: _onClick; onKey:onKey;\">" + "<td><div class=\"${this.iconClass}\" style=\"${this.iconStyle}\"></div></td>" + "<td tabIndex=\"-1\" class=\"dojoMenuItem2Label\" dojoAttachPoint=\"caption\">${this.caption}</td>" + "<td class=\"dojoMenuItem2Accel\">${this.accelKey}</td>" + "<td><div class=\"dojoMenuItem2Submenu\" style=\"display:${this.arrowDisplay};\" dojoAttachPoint=\"arrow\"></div></td>" + "</tr>", is_hovering:false, hover_timer:null, is_open:false, topPosition:0, caption:"Untitled", accelKey:"", iconSrc:"", disabledClass:"dojoMenuItem2Disabled", iconClass:"dojoMenuItem2Icon", submenuId:"", eventNaming:"default", highlightClass:"dojoMenuItem2Hover", postMixInProperties:function () {
+		this.iconStyle = "";
+		if (this.iconSrc) {
+			if ((this.iconSrc.toLowerCase().substring(this.iconSrc.length - 4) == ".png") && (dojo.render.html.ie55 || dojo.render.html.ie60)) {
+				this.iconStyle = "filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.iconSrc + "', sizingMethod='image')";
+			} else {
+				this.iconStyle = "background-image: url(" + this.iconSrc + ")";
+			}
+		}
+		this.arrowDisplay = this.submenuId ? "block" : "none";
+		dojo.widget.MenuItem2.superclass.postMixInProperties.apply(this, arguments);
+	}, fillInTemplate:function () {
+		dojo.html.disableSelection(this.domNode);
+		if (this.disabled) {
+			this.setDisabled(true);
+		}
+		if (this.eventNaming == "default") {
+			for (var eventName in this.eventNames) {
+				this.eventNames[eventName] = this.widgetId + "/" + eventName;
+			}
+		}
+	}, onHover:function () {
+		this.onUnhover();
+		if (this.is_hovering) {
+			return;
+		}
+		if (this.is_open) {
+			return;
+		}
+		if (this.parent._highlighted_option) {
+			this.parent._highlighted_option.onUnhover();
+		}
+		this.parent.closeSubmenu();
+		this.parent._highlighted_option = this;
+		dojo.widget.PopupManager.setFocusedMenu(this.parent);
+		this._highlightItem();
+		if (this.is_hovering) {
+			this._stopSubmenuTimer();
+		}
+		this.is_hovering = true;
+		this._startSubmenuTimer();
+	}, onUnhover:function () {
+		if (!this.is_open) {
+			this._unhighlightItem();
+		}
+		this.is_hovering = false;
+		this.parent._highlighted_option = null;
+		if (this.parent.parentMenu) {
+			dojo.widget.PopupManager.setFocusedMenu(this.parent.parentMenu);
+		}
+		this._stopSubmenuTimer();
+	}, _onClick:function (focus) {
+		var displayingSubMenu = false;
+		if (this.disabled) {
+			return false;
+		}
+		if (this.submenuId) {
+			if (!this.is_open) {
+				this._stopSubmenuTimer();
+				this._openSubmenu();
+			}
+			displayingSubMenu = true;
+		} else {
+			this.onUnhover();
+			this.parent.closeAll(true);
+		}
+		this.onClick();
+		dojo.event.topic.publish(this.eventNames.engage, this);
+		if (displayingSubMenu && focus) {
+			dojo.widget.getWidgetById(this.submenuId)._highlightOption(1);
+		}
+		return;
+	}, onClick:function () {
+		this.parent.onItemClick(this);
+	}, _highlightItem:function () {
+		dojo.html.addClass(this.domNode, this.highlightClass);
+	}, _unhighlightItem:function () {
+		dojo.html.removeClass(this.domNode, this.highlightClass);
+	}, _startSubmenuTimer:function () {
+		this._stopSubmenuTimer();
+		if (this.disabled) {
+			return;
+		}
+		var self = this;
+		var closure = function () {
+			return function () {
+				self._openSubmenu();
+			};
+		}();
+		this.hover_timer = dojo.lang.setTimeout(closure, this.parent.submenuDelay);
+	}, _stopSubmenuTimer:function () {
+		if (this.hover_timer) {
+			dojo.lang.clearTimeout(this.hover_timer);
+			this.hover_timer = null;
+		}
+	}, _openSubmenu:function () {
+		if (this.disabled) {
+			return;
+		}
+		this.parent.closeSubmenu();
+		var submenu = dojo.widget.getWidgetById(this.submenuId);
+		if (submenu) {
+			this.parent._openSubmenu(submenu, this);
+		}
+	}, _closedSubmenu:function () {
+		this.onUnhover();
+	}, setDisabled:function (value) {
+		this.disabled = value;
+		if (this.disabled) {
+			dojo.html.addClass(this.domNode, this.disabledClass);
+		} else {
+			dojo.html.removeClass(this.domNode, this.disabledClass);
+		}
+	}, enable:function () {
+		this.setDisabled(false);
+	}, disable:function () {
+		this.setDisabled(true);
+	}, menuOpen:function (message) {
+	}});
+	dojo.widget.defineWidget("dojo.widget.MenuSeparator2", dojo.widget.HtmlWidget, {templateString:"<tr class=\"dojoMenuSeparator2\"><td colspan=4>" + "<div class=\"dojoMenuSeparator2Top\"></div>" + "<div class=\"dojoMenuSeparator2Bottom\"></div>" + "</td></tr>", postCreate:function () {
+		dojo.html.disableSelection(this.domNode);
+	}});
+	dojo.widget.defineWidget("dojo.widget.MenuBar2", [dojo.widget.HtmlWidget, dojo.widget.MenuBase], {menuOverlap:2, templateString:"<div class=\"dojoMenuBar2\" dojoAttachPoint=\"containerNode\" tabIndex=\"0\"></div>", close:function (force) {
+		if (this._highlighted_option) {
+			this._highlighted_option.onUnhover();
+		}
+		this.closeSubmenu(force);
+	}, closeAll:function (force) {
+		this.close(force);
+	}, processKey:function (evt) {
+		if (evt.ctrlKey || evt.altKey) {
+			return false;
+		}
+		var rval = false;
+		switch (evt.key) {
+		  case evt.KEY_DOWN_ARROW:
+			rval = this._moveToChildMenu(evt);
+			break;
+		  case evt.KEY_UP_ARROW:
+			rval = this._moveToParentMenu(evt);
+			break;
+		  case evt.KEY_RIGHT_ARROW:
+			rval = this._moveToNext(evt);
+			break;
+		  case evt.KEY_LEFT_ARROW:
+			rval = this._moveToPrevious(evt);
+			break;
+		  default:
+			rval = dojo.widget.MenuBar2.superclass.processKey.apply(this, arguments);
+			break;
+		}
+		return rval;
+	}, postCreate:function () {
+		dojo.widget.MenuBar2.superclass.postCreate.apply(this, arguments);
+		this.isShowingNow = true;
+	}, _openSubmenu:function (submenu, from_item) {
+		submenu._openAsSubmenu(this, from_item.domNode, {"BL":"TL", "TL":"BL"});
+		this.currentSubmenu = submenu;
+		this.currentSubmenuTrigger = from_item;
+		this.currentSubmenuTrigger.is_open = true;
+	}});
+	dojo.widget.defineWidget("dojo.widget.MenuBarItem2", dojo.widget.MenuItem2, {templateString:"<span class=\"dojoMenuItem2\" dojoAttachEvent=\"onMouseOver: onHover; onMouseOut: onUnhover; onClick: _onClick;\">${this.caption}</span>"});
+	dojo.widget.Menu2.OperaAndKonqFixer = new function () {
+		var implement = true;
+		var delfunc = false;
+		if (!dojo.lang.isFunction(dojo.doc().oncontextmenu)) {
+			dojo.doc().oncontextmenu = function () {
+				implement = false;
+				delfunc = true;
+			};
+		}
+		if (dojo.doc().createEvent) {
+			try {
+				var e = dojo.doc().createEvent("MouseEvents");
+				e.initMouseEvent("contextmenu", 1, 1, dojo.global(), 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, null);
+				dojo.doc().dispatchEvent(e);
+			}
+			catch (e) {
+			}
+		} else {
+			implement = false;
+		}
+		if (delfunc) {
+			delete dojo.doc().oncontextmenu;
+		}
+		this.fixNode = function (node) {
+			if (implement) {
+				if (!dojo.lang.isFunction(node.oncontextmenu)) {
+					node.oncontextmenu = function (e) {
+					};
+				}
+				if (dojo.render.html.opera) {
+					node._menufixer_opera = function (e) {
+						if (e.ctrlKey) {
+							this.oncontextmenu(e);
+						}
+					};
+					dojo.event.connect(node, "onclick", node, "_menufixer_opera");
+				} else {
+					node._menufixer_konq = function (e) {
+						if (e.button == 2) {
+							e.preventDefault();
+							this.oncontextmenu(e);
+						}
+					};
+					dojo.event.connect(node, "onmousedown", node, "_menufixer_konq");
+				}
+			}
+		};
+		this.cleanNode = function (node) {
+			if (implement) {
+				if (node._menufixer_opera) {
+					dojo.event.disconnect(node, "onclick", node, "_menufixer_opera");
+					delete node._menufixer_opera;
+				} else {
+					if (node._menufixer_konq) {
+						dojo.event.disconnect(node, "onmousedown", node, "_menufixer_konq");
+						delete node._menufixer_konq;
+					}
+				}
+				if (node.oncontextmenu) {
+					delete node.oncontextmenu;
+				}
+			}
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/widget/TreeV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeV3"], ["require", "dojo.widget.TreeWithNode"], ["require", "dojo.widget.*"], ["require", "dojo.event.*"], ["require", "dojo.io.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeNodeV3"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeV3");
+	dojo.require("dojo.widget.TreeWithNode");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeNodeV3");
+	dojo.widget.defineWidget("dojo.widget.TreeV3", [dojo.widget.HtmlWidget, dojo.widget.TreeWithNode], function () {
+		this.eventNames = {};
+		this.DndAcceptTypes = [];
+		this.actionsDisabled = [];
+		this.listeners = [];
+		this.tree = this;
+	}, {DndMode:"", defaultChildWidget:null, defaultChildTitle:"New Node", eagerWidgetInstantiation:false, eventNamesDefault:{afterTreeCreate:"afterTreeCreate", beforeTreeDestroy:"beforeTreeDestroy", beforeNodeDestroy:"beforeNodeDestroy", afterChangeTree:"afterChangeTree", afterSetFolder:"afterSetFolder", afterUnsetFolder:"afterUnsetFolder", beforeMoveFrom:"beforeMoveFrom", beforeMoveTo:"beforeMoveTo", afterMoveFrom:"afterMoveFrom", afterMoveTo:"afterMoveTo", afterAddChild:"afterAddChild", afterDetach:"afterDetach", afterExpand:"afterExpand", beforeExpand:"beforeExpand", afterSetTitle:"afterSetTitle", afterCollapse:"afterCollapse", beforeCollapse:"beforeCollapse"}, classPrefix:"Tree", style:"", allowAddChildToLeaf:true, unsetFolderOnEmpty:true, DndModes:{BETWEEN:1, ONTO:2}, DndAcceptTypes:"", templateCssString:"/* indent for all tree children excepts root */\n.TreeNode {\n	background-image : url('../templates/images/TreeV3/i.gif');\n	background-position : top left;\n	background-repeat : repeat-y;\n	margin-left: 19px;\n	zoom: 1;\n}\n.TreeIsRoot {\n	margin-left: 0;\n}\n \n/* left vertical line (grid) for all nodes */\n.TreeIsLast {\n	background-image: url('../templates/images/TreeV3/i_half.gif');\n	background-repeat : no-repeat;\n}\n \n.TreeExpandOpen .TreeExpand {\n	background-image: url('../templates/images/TreeV3/expand_minus.gif');\n}\n \n/* closed is higher priority than open */\n.TreeExpandClosed .TreeExpand {\n	background-image: url('../templates/images/TreeV3/expand_plus.gif');\n}\n \n/* highest priority */\n.TreeExpandLeaf .TreeExpand {\n	background-image: url('../templates/images/TreeV3/expand_leaf.gif');\n}\n\n/* \nshould always override any expand setting, but do not touch children.\nif I add .TreeExpand .TreeExpandLoading same time and put it to top/bottom, then it will take precedence over +- for all descendants or always fail\nso I have to remove TreeExpand and process this one specifically\n*/\n\n.TreeExpandLoading   {\n	width: 18px;\n	height: 18px;\n	float: left;\n	display: inline;\n	background-repeat : no-repeat;\n	background-image: url('../templates/images/TreeV3/expand_loading.gif');\n}\n \n.TreeContent {\n	min-height: 18px;\n	min-width: 18px;\n	margin-left:18px;\n	cursor: default;\n	/* can't make inline - multiline bugs */\n}\n\n.TreeIEContent {\n\theight: 18px;\n}\n \n.TreeExpand {\n	width: 18px;\n	height: 18px;\n	float: left;\n	display: inline;\n	background-repeat : no-repeat;\n}\n \n/* same style as IE selection */\n.TreeNodeEmphasized {\n	background-color: Highlight;\n	color: HighlightText;\n}\n \n.TreeContent .RichTextEditable, .TreeContent .RichTextEditable iframe {\n	  background-color: #ffc;\n	  color: black;\n}\n\n/* don't use :focus due to opera's lack of support on div's */\n.TreeLabelFocused {\n	  outline: 1px invert dotted;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeV3.css"), templateString:"<div style=\"${this.style}\">\n</div>", isExpanded:true, isTree:true, createNode:function (data) {
+		data.tree = this.widgetId;
+		if (data.widgetName) {
+			return dojo.widget.createWidget(data.widgetName, data);
+		} else {
+			if (this.defaultChildWidget.prototype.createSimple) {
+				return this.defaultChildWidget.prototype.createSimple(data);
+			} else {
+				var ns = this.defaultChildWidget.prototype.ns;
+				var wt = this.defaultChildWidget.prototype.widgetType;
+				return dojo.widget.createWidget(ns + ":" + wt, data);
+			}
+		}
+	}, makeNodeTemplate:function () {
+		var domNode = document.createElement("div");
+		dojo.html.setClass(domNode, this.classPrefix + "Node " + this.classPrefix + "ExpandLeaf " + this.classPrefix + "ChildrenNo");
+		this.nodeTemplate = domNode;
+		var expandNode = document.createElement("div");
+		var clazz = this.classPrefix + "Expand";
+		if (dojo.render.html.ie) {
+			clazz = clazz + " " + this.classPrefix + "IEExpand";
+		}
+		dojo.html.setClass(expandNode, clazz);
+		this.expandNodeTemplate = expandNode;
+		var labelNode = document.createElement("span");
+		dojo.html.setClass(labelNode, this.classPrefix + "Label");
+		this.labelNodeTemplate = labelNode;
+		var contentNode = document.createElement("div");
+		var clazz = this.classPrefix + "Content";
+		if (dojo.render.html.ie && !dojo.render.html.ie70) {
+			clazz = clazz + " " + this.classPrefix + "IEContent";
+		}
+		dojo.html.setClass(contentNode, clazz);
+		this.contentNodeTemplate = contentNode;
+		domNode.appendChild(expandNode);
+		domNode.appendChild(contentNode);
+		contentNode.appendChild(labelNode);
+	}, makeContainerNodeTemplate:function () {
+		var div = document.createElement("div");
+		div.style.display = "none";
+		dojo.html.setClass(div, this.classPrefix + "Container");
+		this.containerNodeTemplate = div;
+	}, actions:{ADDCHILD:"ADDCHILD"}, getInfo:function () {
+		var info = {widgetId:this.widgetId, objectId:this.objectId};
+		return info;
+	}, adjustEventNames:function () {
+		for (var name in this.eventNamesDefault) {
+			if (dojo.lang.isUndefined(this.eventNames[name])) {
+				this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];
+			}
+		}
+	}, adjustDndMode:function () {
+		var _this = this;
+		var DndMode = 0;
+		dojo.lang.forEach(this.DndMode.split(";"), function (elem) {
+			var mode = _this.DndModes[dojo.string.trim(elem).toUpperCase()];
+			if (mode) {
+				DndMode = DndMode | mode;
+			}
+		});
+		this.DndMode = DndMode;
+	}, destroy:function () {
+		dojo.event.topic.publish(this.tree.eventNames.beforeTreeDestroy, {source:this});
+		return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);
+	}, initialize:function (args) {
+		this.domNode.widgetId = this.widgetId;
+		for (var i = 0; i < this.actionsDisabled.length; i++) {
+			this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();
+		}
+		if (!args.defaultChildWidget) {
+			this.defaultChildWidget = dojo.widget.TreeNodeV3;
+		} else {
+			this.defaultChildWidget = dojo.lang.getObjPathValue(args.defaultChildWidget);
+		}
+		this.adjustEventNames();
+		this.adjustDndMode();
+		this.makeNodeTemplate();
+		this.makeContainerNodeTemplate();
+		this.containerNode = this.domNode;
+		dojo.html.setClass(this.domNode, this.classPrefix + "Container");
+		var _this = this;
+		dojo.lang.forEach(this.listeners, function (elem) {
+			var t = dojo.lang.isString(elem) ? dojo.widget.byId(elem) : elem;
+			t.listenTree(_this);
+		});
+	}, postCreate:function () {
+		dojo.event.topic.publish(this.eventNames.afterTreeCreate, {source:this});
+	}, move:function (child, newParent, index) {
+		if (!child.parent) {
+			dojo.raise(this.widgetType + ": child can be moved only while it's attached");
+		}
+		var oldParent = child.parent;
+		var oldTree = child.tree;
+		var oldIndex = child.getParentIndex();
+		var newTree = newParent.tree;
+		var newParent = newParent;
+		var newIndex = index;
+		var message = {oldParent:oldParent, oldTree:oldTree, oldIndex:oldIndex, newParent:newParent, newTree:newTree, newIndex:newIndex, child:child};
+		dojo.event.topic.publish(oldTree.eventNames.beforeMoveFrom, message);
+		dojo.event.topic.publish(newTree.eventNames.beforeMoveTo, message);
+		this.doMove.apply(this, arguments);
+		dojo.event.topic.publish(oldTree.eventNames.afterMoveFrom, message);
+		dojo.event.topic.publish(newTree.eventNames.afterMoveTo, message);
+	}, doMove:function (child, newParent, index) {
+		child.doDetach();
+		newParent.doAddChild(child, index);
+	}, toString:function () {
+		return "[" + this.widgetType + " ID:" + this.widgetId + "]";
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/YahooMap.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.YahooMap"], ["require", "dojo.event.*"], ["require", "dojo.math"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.YahooMap");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.math");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	(function () {
+		var yappid = djConfig["yAppId"] || djConfig["yahooAppId"] || "dojotoolkit";
+		if (!dojo.hostenv.post_load_) {
+			if (yappid == "dojotoolkit") {
+				dojo.debug("please provide a unique Yahoo App ID in djConfig.yahooAppId when using the map widget");
+			}
+			var tag = "<scr" + "ipt src='http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=" + yappid + "'></scri" + "pt>";
+			if (!dj_global["YMap"]) {
+				document.write(tag);
+			}
+		} else {
+			dojo.debug("cannot initialize map system after the page has been loaded! Please either manually include the script block provided by Yahoo in your page or require() the YahooMap widget before onload has fired");
+		}
+	})();
+	dojo.widget.defineWidget("dojo.widget.YahooMap", dojo.widget.HtmlWidget, function () {
+		this.map = null;
+		this.datasrc = "";
+		this.data = [];
+		this.width = 0;
+		this.height = 0;
+		this.controls = ["zoomlong", "maptype", "pan"];
+	}, {isContainer:false, templatePath:null, templateCssPath:null, findCenter:function (aPts) {
+		var start = new YGeoPoint(37, -90);
+		if (aPts.length == 0) {
+			return start;
+		}
+		var minLat, maxLat, minLon, maxLon, cLat, cLon;
+		minLat = maxLat = aPts[0].Lat;
+		minLon = maxLon = aPts[0].Lon;
+		for (var i = 0; i < aPts.length; i++) {
+			minLat = Math.min(minLat, aPts[i].Lat);
+			maxLat = Math.max(maxLat, aPts[i].Lat);
+			minLon = Math.min(minLon, aPts[i].Lon);
+			maxLon = Math.max(maxLon, aPts[i].Lon);
+		}
+		cLat = dojo.math.round((minLat + maxLat) / 2, 6);
+		cLon = dojo.math.round((minLon + maxLon) / 2, 6);
+		return new YGeoPoint(cLat, cLon);
+	}, setControls:function () {
+		var methodmap = {maptype:"addTypeControl", pan:"addPanControl", zoomlong:"addZoomLong", zoomshort:"addZoomShort"};
+		var c = this.controls;
+		for (var i = 0; i < c.length; i++) {
+			var controlMethod = methodmap[c[i].toLowerCase()];
+			if (this.map[controlMethod]) {
+				this.map[controlMethod]();
+			}
+		}
+	}, parse:function (table) {
+		this.data = [];
+		var h = table.getElementsByTagName("thead")[0];
+		if (!h) {
+			return;
+		}
+		var a = [];
+		var cols = h.getElementsByTagName("td");
+		if (cols.length == 0) {
+			cols = h.getElementsByTagName("th");
+		}
+		for (var i = 0; i < cols.length; i++) {
+			var c = cols[i].innerHTML.toLowerCase();
+			if (c == "long") {
+				c = "lng";
+			}
+			a.push(c);
+		}
+		var b = table.getElementsByTagName("tbody")[0];
+		if (!b) {
+			return;
+		}
+		for (var i = 0; i < b.childNodes.length; i++) {
+			if (!(b.childNodes[i].nodeName && b.childNodes[i].nodeName.toLowerCase() == "tr")) {
+				continue;
+			}
+			var cells = b.childNodes[i].getElementsByTagName("td");
+			var o = {};
+			for (var j = 0; j < a.length; j++) {
+				var col = a[j];
+				if (col == "lat" || col == "lng") {
+					o[col] = parseFloat(cells[j].innerHTML);
+				} else {
+					o[col] = cells[j].innerHTML;
+				}
+			}
+			this.data.push(o);
+		}
+	}, render:function () {
+		var pts = [];
+		var d = this.data;
+		for (var i = 0; i < d.length; i++) {
+			var pt = new YGeoPoint(d[i].lat, d[i].lng);
+			pts.push(pt);
+			var icon = d[i].icon || null;
+			if (icon) {
+				icon = new YImage(icon);
+			}
+			var m = new YMarker(pt, icon);
+			if (d[i].description) {
+				m.addAutoExpand("<div>" + d[i].description + "</div>");
+			}
+			this.map.addOverlay(m);
+		}
+		var c = this.findCenter(pts);
+		var z = this.map.getZoomLevel(pts);
+		this.map.drawZoomAndCenter(c, z);
+	}, initialize:function (args, frag) {
+		if (!YMap || !YGeoPoint) {
+			dojo.raise("dojo.widget.YahooMap: The Yahoo Map script must be included in order to use this widget.");
+		}
+		if (this.datasrc) {
+			this.parse(dojo.byId(this.datasrc));
+		} else {
+			if (this.domNode.getElementsByTagName("table")[0]) {
+				this.parse(this.domNode.getElementsByTagName("table")[0]);
+			}
+		}
+	}, postCreate:function () {
+		while (this.domNode.childNodes.length > 0) {
+			this.domNode.removeChild(this.domNode.childNodes[0]);
+		}
+		if (this.width > 0 && this.height > 0) {
+			this.map = new YMap(this.domNode, YAHOO_MAP_REG, new YSize(this.width, this.height));
+		} else {
+			this.map = new YMap(this.domNode);
+		}
+		this.setControls();
+		this.render();
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/DropdownTimePicker.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -30702,6 +62534,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.DropdownTimePicker");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.DropdownContainer");
@@ -30847,6 +62681,138 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Repeater.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Repeater"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.string"], ["require", "dojo.event.*"], ["require", "dojo.experimental"], ["require", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Repeater");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.string");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.Repeater");
+	dojo.widget.defineWidget("dojo.widget.Repeater", dojo.widget.HtmlWidget, {name:"", rowTemplate:"", myObject:null, pattern:"", useDnd:false, isContainer:true, initialize:function (args, frag) {
+		var node = this.getFragNodeRef(frag);
+		node.removeAttribute("dojotype");
+		this.setRow(dojo.string.trim(node.innerHTML), {});
+		node.innerHTML = "";
+		frag = null;
+	}, postCreate:function (args, frag) {
+		if (this.useDnd) {
+			dojo.require("dojo.dnd.*");
+			var dnd = new dojo.dnd.HtmlDropTarget(this.domNode, [this.widgetId]);
+		}
+	}, _reIndexRows:function () {
+		for (var i = 0, len = this.domNode.childNodes.length; i < len; i++) {
+			var elems = ["INPUT", "SELECT", "TEXTAREA"];
+			for (var k = 0; k < elems.length; k++) {
+				var list = this.domNode.childNodes[i].getElementsByTagName(elems[k]);
+				for (var j = 0, len2 = list.length; j < len2; j++) {
+					var name = list[j].name;
+					var index = dojo.string.escape("regexp", this.pattern);
+					index = index.replace(/(%\\\{index\\\})/g, "%{index}");
+					var nameRegexp = dojo.string.substituteParams(index, {"index":"[0-9]*"});
+					var newName = dojo.string.substituteParams(this.pattern, {"index":"" + i});
+					var re = new RegExp(nameRegexp, "g");
+					list[j].name = name.replace(re, newName);
+				}
+			}
+		}
+	}, onDeleteRow:function (e) {
+		var index = dojo.string.escape("regexp", this.pattern);
+		index = index.replace(/%\\\{index\\\}/g, "%{index}");
+		var nameRegexp = dojo.string.substituteParams(index, {"index":"([0-9]*)"});
+		var re = new RegExp(nameRegexp, "g");
+		this.deleteRow(re.exec(e.target.name)[1]);
+	}, hasRows:function () {
+		if (this.domNode.childNodes.length > 0) {
+			return true;
+		}
+		return false;
+	}, getRowCount:function () {
+		return this.domNode.childNodes.length;
+	}, deleteRow:function (idx) {
+		this.domNode.removeChild(this.domNode.childNodes[idx]);
+		this._reIndexRows();
+	}, _changeRowPosition:function (e) {
+		if (e.dragStatus == "dropFailure") {
+			this.domNode.removeChild(e["dragSource"].domNode);
+		} else {
+			if (e.dragStatus == "dropSuccess") {
+			}
+		}
+		this._reIndexRows();
+	}, setRow:function (template, myObject) {
+		template = template.replace(/\%\{(index)\}/g, "0");
+		this.rowTemplate = template;
+		this.myObject = myObject;
+	}, getRow:function () {
+		return this.rowTemplate;
+	}, _initRow:function (node) {
+		if (typeof (node) == "number") {
+			node = this.domNode.childNodes[node];
+		}
+		var elems = ["INPUT", "SELECT", "IMG"];
+		for (var k = 0; k < elems.length; k++) {
+			var list = node.getElementsByTagName(elems[k]);
+			for (var i = 0, len = list.length; i < len; i++) {
+				var child = list[i];
+				if (child.nodeType != 1) {
+					continue;
+				}
+				if (child.getAttribute("rowFunction") != null) {
+					if (typeof (this.myObject[child.getAttribute("rowFunction")]) == "undefined") {
+						dojo.debug("Function " + child.getAttribute("rowFunction") + " not found");
+					} else {
+						this.myObject[child.getAttribute("rowFunction")](child);
+					}
+				} else {
+					if (child.getAttribute("rowAction") != null) {
+						if (child.getAttribute("rowAction") == "delete") {
+							child.name = dojo.string.substituteParams(this.pattern, {"index":"" + (this.getRowCount() - 1)});
+							dojo.event.connect(child, "onclick", this, "onDeleteRow");
+						}
+					}
+				}
+			}
+		}
+	}, onAddRow:function (e) {
+	}, addRow:function (doInit) {
+		if (typeof (doInit) == "undefined") {
+			doInit = true;
+		}
+		var node = document.createElement("span");
+		node.innerHTML = this.getRow();
+		if (node.childNodes.length == 1) {
+			node = node.childNodes[0];
+		}
+		this.domNode.appendChild(node);
+		var parser = new dojo.xml.Parse();
+		var frag = parser.parseElement(node, null, true);
+		dojo.widget.getParser().createSubComponents(frag, this);
+		this._reIndexRows();
+		if (doInit) {
+			this._initRow(node);
+		}
+		if (this.useDnd) {
+			node = new dojo.dnd.HtmlDragSource(node, this.widgetId);
+			dojo.event.connect(node, "onDragEnd", this, "_changeRowPosition");
+		}
+		this.onAddRow(node);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Show.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -30858,6 +62824,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Show");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -31058,6 +63026,88 @@
 }});
 
 
+__CPAN_FILE__ src/widget/InternetTextbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.InternetTextbox"], ["require", "dojo.widget.ValidationTextbox"], ["require", "dojo.validate.web"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.InternetTextbox");
+	dojo.require("dojo.widget.ValidationTextbox");
+	dojo.require("dojo.validate.web");
+	dojo.widget.defineWidget("dojo.widget.IpAddressTextbox", dojo.widget.ValidationTextbox, {mixInProperties:function (localProperties) {
+		dojo.widget.IpAddressTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.allowdotteddecimal) {
+			this.flags.allowDottedDecimal = (localProperties.allowdotteddecimal == "true");
+		}
+		if (localProperties.allowdottedhex) {
+			this.flags.allowDottedHex = (localProperties.allowdottedhex == "true");
+		}
+		if (localProperties.allowdottedoctal) {
+			this.flags.allowDottedOctal = (localProperties.allowdottedoctal == "true");
+		}
+		if (localProperties.allowdecimal) {
+			this.flags.allowDecimal = (localProperties.allowdecimal == "true");
+		}
+		if (localProperties.allowhex) {
+			this.flags.allowHex = (localProperties.allowhex == "true");
+		}
+		if (localProperties.allowipv6) {
+			this.flags.allowIPv6 = (localProperties.allowipv6 == "true");
+		}
+		if (localProperties.allowhybrid) {
+			this.flags.allowHybrid = (localProperties.allowhybrid == "true");
+		}
+	}, isValid:function () {
+		return dojo.validate.isIpAddress(this.textbox.value, this.flags);
+	}});
+	dojo.widget.defineWidget("dojo.widget.UrlTextbox", dojo.widget.IpAddressTextbox, {mixInProperties:function (localProperties) {
+		dojo.widget.UrlTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.scheme) {
+			this.flags.scheme = (localProperties.scheme == "true");
+		}
+		if (localProperties.allowip) {
+			this.flags.allowIP = (localProperties.allowip == "true");
+		}
+		if (localProperties.allowlocal) {
+			this.flags.allowLocal = (localProperties.allowlocal == "true");
+		}
+		if (localProperties.allowcc) {
+			this.flags.allowCC = (localProperties.allowcc == "true");
+		}
+		if (localProperties.allowgeneric) {
+			this.flags.allowGeneric = (localProperties.allowgeneric == "true");
+		}
+	}, isValid:function () {
+		return dojo.validate.isUrl(this.textbox.value, this.flags);
+	}});
+	dojo.widget.defineWidget("dojo.widget.EmailTextbox", dojo.widget.UrlTextbox, {mixInProperties:function (localProperties) {
+		dojo.widget.EmailTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.allowcruft) {
+			this.flags.allowCruft = (localProperties.allowcruft == "true");
+		}
+	}, isValid:function () {
+		return dojo.validate.isEmailAddress(this.textbox.value, this.flags);
+	}});
+	dojo.widget.defineWidget("dojo.widget.EmailListTextbox", dojo.widget.EmailTextbox, {mixInProperties:function (localProperties) {
+		dojo.widget.EmailListTextbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties.listseparator) {
+			this.flags.listSeparator = localProperties.listseparator;
+		}
+	}, isValid:function () {
+		return dojo.validate.isEmailAddressList(this.textbox.value, this.flags);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/LayoutContainer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -31069,6 +63119,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.LayoutContainer");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.html.layout");
@@ -31092,6 +63144,49 @@
 dojo.lang.extend(dojo.widget.Widget, {layoutAlign:"none"});
 
 
+__CPAN_FILE__ src/widget/Select.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Select"], ["require", "dojo.widget.ComboBox"], ["require", "dojo.widget.*"], ["require", "dojo.widget.html.stabile"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Select");
+	dojo.require("dojo.widget.ComboBox");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.html.stabile");
+	dojo.widget.defineWidget("dojo.widget.Select", dojo.widget.ComboBox, {forceValidOption:true, setValue:function (value) {
+		this.comboBoxValue.value = value;
+		dojo.widget.html.stabile.setState(this.widgetId, this.getState(), true);
+		this.onValueChanged(value);
+	}, setLabel:function (value) {
+		this.comboBoxSelectionValue.value = value;
+		if (this.textInputNode.value != value) {
+			this.textInputNode.value = value;
+		}
+	}, getLabel:function () {
+		return this.comboBoxSelectionValue.value;
+	}, getState:function () {
+		return {value:this.getValue(), label:this.getLabel()};
+	}, onKeyUp:function (evt) {
+		this.setLabel(this.textInputNode.value);
+	}, setState:function (state) {
+		this.setValue(state.value);
+		this.setLabel(state.label);
+	}, setAllValues:function (value1, value2) {
+		this.setLabel(value1);
+		this.setValue(value2);
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/ShowSlide.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -31103,6 +63198,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.ShowSlide");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.lang.common");
@@ -31293,6 +63390,137 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Wizard.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Wizard"], ["require", "dojo.widget.*"], ["require", "dojo.widget.LayoutContainer"], ["require", "dojo.widget.ContentPane"], ["require", "dojo.event.*"], ["require", "dojo.html.style"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Wizard");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.LayoutContainer");
+	dojo.require("dojo.widget.ContentPane");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.html.style");
+	dojo.widget.defineWidget("dojo.widget.WizardContainer", dojo.widget.LayoutContainer, {templateString:"<div class=\"WizardContainer\" dojoAttachPoint=\"wizardNode\">\n	<div class=\"WizardText\" dojoAttachPoint=\"wizardPanelContainerNode\">\n	</div>\n	<div class=\"WizardButtonHolder\" dojoAttachPoint=\"wizardControlContainerNode\">\n		<input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"previousButton\"/>\n		<input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"nextButton\"/>\n		<input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"doneButton\" style=\"display:none\"/>\n		<input class=\"WizardButton\" type=\"button\" dojoAttachPoint=\"cancelButton\"/>\n	</div>\n</div>\n", templateCssString:".WizardContainer {\n\tbackground: #EEEEEE;\n\tborder: #798EC5 1px solid;\n\tpadding: 2px;\n}\n\n.WizardTitle {\n\tcolor: #003366;\n\tpadding: 8px 5px 15px 2px;\n\tfont-weight: bold;\n\tfont-size: x-small;\n\tfont-style: normal;\n\tfont-family: Verdana, Arial, Helvetica;\n\ttext-align: left;\n}\n\n.WizardText {\n\tcolor: #000033;\n\tfont-weight: normal;\n\tfont-size: xx-small;\n\tfont-family: Verdana, Arial, Helvetica;\n\tpadding: 2 50; text-align: justify;\n}\n\n.WizardLightText {\n\tcolor: #666666;\n\tfont-weight: normal;\n\tfont-size: xx-small;\n\tfont-family: verdana, arial, helvetica;\n\tpadding: 2px 50px;\n\ttext-align: justify;\n}\n\n.WizardButtonHolder {\n\ttext-align: right;\n\tpadding: 10px 5px;\n}\n\n.WizardButton {\n\tcolor: #ffffff;\n\tbackground: #798EC5;\n\tfont-size: xx-small;\n\tfont-family: verdana, arial, helvetica, sans-serif;\n\tborder-right: #000000 1px solid;\n\tborder-bottom: #000000 1px solid;\n\tborder-left: #666666 1px solid;\n\tborder-top: #666666 1px solid;\n\tpadding-right: 4px;\n\tpadding-left: 4px;\n\ttext-decoration: none; height: 18px;\n}\n\n.WizardButton:hover {\n\tcursor: pointer;\n}\n\n.WizardButtonDisabled {\n\tcolor: #eeeeee;\n\tbackground-color: #999999;\n\tfont-size: xx-small;\n\tFONT-FAMILY: verdana, arial, helvetica, sans-serif;\n\tborder-right: #000000 1px solid;\n\tborder-bottom: #000000 1px solid;\n\tborder-left: #798EC5 1px solid;\n\tborder-top: #798EC5 1px solid;\n\tpadding-right: 4px;\n\tpadding-left: 4px;\n\ttext-decoration: none;\n\theight: 18px;\n}\n\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Wizard.css"), selected:null, nextButtonLabel:"next", previousButtonLabel:"previous", cancelButtonLabel:"cancel", doneButtonLabel:"done", cancelFunction:"", hideDisabledButtons:false, fillInTemplate:function (args, frag) {
+		dojo.event.connect(this.nextButton, "onclick", this, "_onNextButtonClick");
+		dojo.event.connect(this.previousButton, "onclick", this, "_onPreviousButtonClick");
+		if (this.cancelFunction) {
+			dojo.event.connect(this.cancelButton, "onclick", this.cancelFunction);
+		} else {
+			this.cancelButton.style.display = "none";
+		}
+		dojo.event.connect(this.doneButton, "onclick", this, "done");
+		this.nextButton.value = this.nextButtonLabel;
+		this.previousButton.value = this.previousButtonLabel;
+		this.cancelButton.value = this.cancelButtonLabel;
+		this.doneButton.value = this.doneButtonLabel;
+	}, _checkButtons:function () {
+		var lastStep = !this.hasNextPanel();
+		this.nextButton.disabled = lastStep;
+		this._setButtonClass(this.nextButton);
+		if (this.selected.doneFunction) {
+			this.doneButton.style.display = "";
+			if (lastStep) {
+				this.nextButton.style.display = "none";
+			}
+		} else {
+			this.doneButton.style.display = "none";
+		}
+		this.previousButton.disabled = ((!this.hasPreviousPanel()) || (!this.selected.canGoBack));
+		this._setButtonClass(this.previousButton);
+	}, _setButtonClass:function (button) {
+		if (!this.hideDisabledButtons) {
+			button.style.display = "";
+			dojo.html.setClass(button, button.disabled ? "WizardButtonDisabled" : "WizardButton");
+		} else {
+			button.style.display = button.disabled ? "none" : "";
+		}
+	}, registerChild:function (panel, insertionIndex) {
+		dojo.widget.WizardContainer.superclass.registerChild.call(this, panel, insertionIndex);
+		this.wizardPanelContainerNode.appendChild(panel.domNode);
+		panel.hide();
+		if (!this.selected) {
+			this.onSelected(panel);
+		}
+		this._checkButtons();
+	}, onSelected:function (panel) {
+		if (this.selected) {
+			if (this.selected._checkPass()) {
+				this.selected.hide();
+			} else {
+				return;
+			}
+		}
+		panel.show();
+		this.selected = panel;
+	}, getPanels:function () {
+		return this.getChildrenOfType("WizardPane", false);
+	}, selectedIndex:function () {
+		if (this.selected) {
+			return dojo.lang.indexOf(this.getPanels(), this.selected);
+		}
+		return -1;
+	}, _onNextButtonClick:function () {
+		var selectedIndex = this.selectedIndex();
+		if (selectedIndex > -1) {
+			var childPanels = this.getPanels();
+			if (childPanels[selectedIndex + 1]) {
+				this.onSelected(childPanels[selectedIndex + 1]);
+			}
+		}
+		this._checkButtons();
+	}, _onPreviousButtonClick:function () {
+		var selectedIndex = this.selectedIndex();
+		if (selectedIndex > -1) {
+			var childPanels = this.getPanels();
+			if (childPanels[selectedIndex - 1]) {
+				this.onSelected(childPanels[selectedIndex - 1]);
+			}
+		}
+		this._checkButtons();
+	}, hasNextPanel:function () {
+		var selectedIndex = this.selectedIndex();
+		return (selectedIndex < (this.getPanels().length - 1));
+	}, hasPreviousPanel:function () {
+		var selectedIndex = this.selectedIndex();
+		return (selectedIndex > 0);
+	}, done:function () {
+		this.selected.done();
+	}});
+	dojo.widget.defineWidget("dojo.widget.WizardPane", dojo.widget.ContentPane, {canGoBack:true, passFunction:"", doneFunction:"", postMixInProperties:function (args, frag) {
+		if (this.passFunction) {
+			this.passFunction = dj_global[this.passFunction];
+		}
+		if (this.doneFunction) {
+			this.doneFunction = dj_global[this.doneFunction];
+		}
+		dojo.widget.WizardPane.superclass.postMixInProperties.apply(this, arguments);
+	}, _checkPass:function () {
+		if (this.passFunction && dojo.lang.isFunction(this.passFunction)) {
+			var failMessage = this.passFunction();
+			if (failMessage) {
+				alert(failMessage);
+				return false;
+			}
+		}
+		return true;
+	}, done:function () {
+		if (this.doneFunction && dojo.lang.isFunction(this.doneFunction)) {
+			this.doneFunction();
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeBasicController.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -31304,6 +63532,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeBasicController");
 dojo.require("dojo.event.*");
 dojo.require("dojo.json");
@@ -31447,6 +63677,486 @@
 }});
 
 
+__CPAN_FILE__ src/widget/ColorPalette.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.ColorPalette"], ["require", "dojo.widget.*"], ["require", "dojo.html.layout"], ["require", "dojo.html.display"], ["require", "dojo.html.selection"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.ColorPalette");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.selection");
+	dojo.widget.defineWidget("dojo.widget.ColorPalette", dojo.widget.HtmlWidget, {palette:"7x10", _palettes:{"7x10":[["fff", "fcc", "fc9", "ff9", "ffc", "9f9", "9ff", "cff", "ccf", "fcf"], ["ccc", "f66", "f96", "ff6", "ff3", "6f9", "3ff", "6ff", "99f", "f9f"], ["c0c0c0", "f00", "f90", "fc6", "ff0", "3f3", "6cc", "3cf", "66c", "c6c"], ["999", "c00", "f60", "fc3", "fc0", "3c0", "0cc", "36f", "63f", "c3c"], ["666", "900", "c60", "c93", "990", "090", "399", "33f", "60c", "939"], ["333", "600", "930", "963", "660", "060", "366", "009", "339", "636"], ["000", "300", "630", "633", "330", "030", "033", "006", "309", "303"]], "3x4":[["ffffff", "00ff00", "008000", "0000ff"], ["c0c0c0", "ffff00", "ff00ff", "000080"], ["808080", "ff0000", "800080", "000000"]]}, buildRendering:function () {
+		this.domNode = document.createElement("table");
+		dojo.html.disableSelection(this.domNode);
+		dojo.event.connect(this.domNode, "onmousedown", function (e) {
+			e.preventDefault();
+		});
+		with (this.domNode) {
+			cellPadding = "0";
+			cellSpacing = "1";
+			border = "1";
+			style.backgroundColor = "white";
+		}
+		var colors = this._palettes[this.palette];
+		for (var i = 0; i < colors.length; i++) {
+			var tr = this.domNode.insertRow(-1);
+			for (var j = 0; j < colors[i].length; j++) {
+				if (colors[i][j].length == 3) {
+					colors[i][j] = colors[i][j].replace(/(.)(.)(.)/, "$1$1$2$2$3$3");
+				}
+				var td = tr.insertCell(-1);
+				with (td.style) {
+					backgroundColor = "#" + colors[i][j];
+					border = "1px solid gray";
+					width = height = "15px";
+					fontSize = "1px";
+				}
+				td.color = "#" + colors[i][j];
+				td.onmouseover = function (e) {
+					this.style.borderColor = "white";
+				};
+				td.onmouseout = function (e) {
+					this.style.borderColor = "gray";
+				};
+				dojo.event.connect(td, "onmousedown", this, "onClick");
+				td.innerHTML = "&nbsp;";
+			}
+		}
+	}, onClick:function (e) {
+		this.onColorSelect(e.currentTarget.color);
+		e.currentTarget.style.borderColor = "gray";
+	}, onColorSelect:function (color) {
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2"], ["require", "dojo.io.*"], ["require", "dojo.widget.RichText"], ["require", "dojo.widget.Editor2Toolbar"], ["require", "dojo.uri.cache"], ["require", "dojo.widget.FloatingPane"], ["require", this.contentFile], ["require", "dojo.widget.Editor2Plugin.AlwaysShowToolbar"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.RichText");
+	dojo.require("dojo.widget.Editor2Toolbar");
+	dojo.require("dojo.uri.cache");
+	dojo.widget.Editor2Manager = new dojo.widget.HandlerManager;
+	dojo.lang.mixin(dojo.widget.Editor2Manager, {_currentInstance:null, commandState:{Disabled:0, Latched:1, Enabled:2}, getCurrentInstance:function () {
+		return this._currentInstance;
+	}, setCurrentInstance:function (inst) {
+		this._currentInstance = inst;
+	}, getCommand:function (editor, name) {
+		var oCommand;
+		name = name.toLowerCase();
+		for (var i = 0; i < this._registeredHandlers.length; i++) {
+			oCommand = this._registeredHandlers[i](editor, name);
+			if (oCommand) {
+				return oCommand;
+			}
+		}
+		switch (name) {
+		  case "htmltoggle":
+			oCommand = new dojo.widget.Editor2BrowserCommand(editor, name);
+			break;
+		  case "formatblock":
+			oCommand = new dojo.widget.Editor2FormatBlockCommand(editor, name);
+			break;
+		  case "anchor":
+			oCommand = new dojo.widget.Editor2Command(editor, name);
+			break;
+		  case "createlink":
+			oCommand = new dojo.widget.Editor2DialogCommand(editor, name, {contentFile:"dojo.widget.Editor2Plugin.CreateLinkDialog", contentClass:"Editor2CreateLinkDialog", title:"Insert/Edit Link", width:"300px", height:"200px"});
+			break;
+		  case "insertimage":
+			oCommand = new dojo.widget.Editor2DialogCommand(editor, name, {contentFile:"dojo.widget.Editor2Plugin.InsertImageDialog", contentClass:"Editor2InsertImageDialog", title:"Insert/Edit Image", width:"400px", height:"270px"});
+			break;
+		  default:
+			var curtInst = this.getCurrentInstance();
+			if ((curtInst && curtInst.queryCommandAvailable(name)) || (!curtInst && dojo.widget.Editor2.prototype.queryCommandAvailable(name))) {
+				oCommand = new dojo.widget.Editor2BrowserCommand(editor, name);
+			} else {
+				dojo.debug("dojo.widget.Editor2Manager.getCommand: Unknown command " + name);
+				return;
+			}
+		}
+		return oCommand;
+	}, destroy:function () {
+		this._currentInstance = null;
+		dojo.widget.HandlerManager.prototype.destroy.call(this);
+	}});
+	dojo.addOnUnload(dojo.widget.Editor2Manager, "destroy");
+	dojo.lang.declare("dojo.widget.Editor2Command", null, function (editor, name) {
+		this._editor = editor;
+		this._updateTime = 0;
+		this._name = name;
+	}, {_text:"Unknown", execute:function (para) {
+		dojo.unimplemented("dojo.widget.Editor2Command.execute");
+	}, getText:function () {
+		return this._text;
+	}, getState:function () {
+		return dojo.widget.Editor2Manager.commandState.Enabled;
+	}, destroy:function () {
+	}});
+	dojo.widget.Editor2BrowserCommandNames = {"bold":"Bold", "copy":"Copy", "cut":"Cut", "Delete":"Delete", "indent":"Indent", "inserthorizontalrule":"Horizental Rule", "insertorderedlist":"Numbered List", "insertunorderedlist":"Bullet List", "italic":"Italic", "justifycenter":"Align Center", "justifyfull":"Justify", "justifyleft":"Align Left", "justifyright":"Align Right", "outdent":"Outdent", "paste":"Paste", "redo":"Redo", "removeformat":"Remove Format", "selectall":"Select All", "strikethrough":"Strikethrough", "subscript":"Subscript", "superscript":"Superscript", "underline":"Underline", "undo":"Undo", "unlink":"Remove Link", "createlink":"Create Link", "insertimage":"Insert Image", "htmltoggle":"HTML Source", "forecolor":"Foreground Color", "hilitecolor":"Background Color", "plainformatblock":"Paragraph Style", "formatblock":"Paragraph Style", "fontsize":"Font Size", "fontname":"Font Name"};
+	dojo.lang.declare("dojo.widget.Editor2BrowserCommand", dojo.widget.Editor2Command, function (editor, name) {
+		var text = dojo.widget.Editor2BrowserCommandNames[name.toLowerCase()];
+		if (text) {
+			this._text = text;
+		}
+	}, {execute:function (para) {
+		this._editor.execCommand(this._name, para);
+	}, getState:function () {
+		if (this._editor._lastStateTimestamp > this._updateTime || this._state == undefined) {
+			this._updateTime = this._editor._lastStateTimestamp;
+			try {
+				if (this._editor.queryCommandEnabled(this._name)) {
+					if (this._editor.queryCommandState(this._name)) {
+						this._state = dojo.widget.Editor2Manager.commandState.Latched;
+					} else {
+						this._state = dojo.widget.Editor2Manager.commandState.Enabled;
+					}
+				} else {
+					this._state = dojo.widget.Editor2Manager.commandState.Disabled;
+				}
+			}
+			catch (e) {
+				this._state = dojo.widget.Editor2Manager.commandState.Enabled;
+			}
+		}
+		return this._state;
+	}, getValue:function () {
+		try {
+			return this._editor.queryCommandValue(this._name);
+		}
+		catch (e) {
+		}
+	}});
+	dojo.lang.declare("dojo.widget.Editor2FormatBlockCommand", dojo.widget.Editor2BrowserCommand, {});
+	dojo.require("dojo.widget.FloatingPane");
+	dojo.widget.defineWidget("dojo.widget.Editor2Dialog", [dojo.widget.HtmlWidget, dojo.widget.FloatingPaneBase, dojo.widget.ModalDialogBase], {templateString:"<div id=\"${this.widgetId}\" class=\"dojoFloatingPane\">\n\t<span dojoattachpoint=\"tabStartOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\"\ttabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabStart\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoAttachPoint=\"titleBar\" class=\"dojoFloatingPaneTitleBar\"  style=\"display:none\">\n\t  \t<img dojoAttachPoint=\"titleBarIcon\"  class=\"dojoFloatingPaneTitleBarIcon\">\n\t\t<div dojoAttachPoint=\"closeAction\" dojoAttachEvent=\"onClick:hide\"\n   \t  \t\tclass=\"dojoFloatingPaneCloseIcon\"></div>\n\t\t<div dojoAttachPoint=\"restoreAction\" dojoAttachEvent=\"onClick:restoreWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneRestoreIcon\"></div>\n\t\t<div dojoAttachPoint=\"maximizeAction\" dojoAttachEvent=\"onClick:maximizeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneMaximizeIcon\"></div>\n\t\t<div dojoAttachPoint=\"minimizeAction\" dojoAttachEvent=\"onClick:minimizeWindow\"\n   \t  \t\tclass=\"dojoFloatingPaneMinimizeIcon\"></div>\n\t  \t<div dojoAttachPoint=\"titleBarText\" class=\"dojoFloatingPaneTitleText\">${this.title}</div>\n\t</div>\n\n\t<div id=\"${this.widgetId}_container\" dojoAttachPoint=\"containerNode\" class=\"dojoFloatingPaneClient\"></div>\n\t<span dojoattachpoint=\"tabEnd\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<span dojoattachpoint=\"tabEndOuter\" dojoonfocus=\"trapTabs\" dojoonblur=\"clearTrap\" tabindex=\"0\"></span>\n\t<div dojoAttachPoint=\"resizeBar\" class=\"dojoFloatingPaneResizebar\" style=\"display:none\"></div>\n</div>\n", modal:true, width:"", height:"", windowState:"minimized", displayCloseAction:true, contentFile:"", contentClass:"", fillInTemplate:function (args, frag) {
+		this.fillInFloatingPaneTemplate(args, frag);
+		dojo.widget.Editor2Dialog.superclass.fillInTemplate.call(this, args, frag);
+	}, postCreate:function () {
+		if (this.contentFile) {
+			dojo.require(this.contentFile);
+		}
+		if (this.modal) {
+			dojo.widget.ModalDialogBase.prototype.postCreate.call(this);
+		} else {
+			with (this.domNode.style) {
+				zIndex = 999;
+				display = "none";
+			}
+		}
+		dojo.widget.FloatingPaneBase.prototype.postCreate.apply(this, arguments);
+		dojo.widget.Editor2Dialog.superclass.postCreate.call(this);
+		if (this.width && this.height) {
+			with (this.domNode.style) {
+				width = this.width;
+				height = this.height;
+			}
+		}
+	}, createContent:function () {
+		if (!this.contentWidget && this.contentClass) {
+			this.contentWidget = dojo.widget.createWidget(this.contentClass);
+			this.addChild(this.contentWidget);
+		}
+	}, show:function () {
+		if (!this.contentWidget) {
+			dojo.widget.Editor2Dialog.superclass.show.apply(this, arguments);
+			this.createContent();
+			dojo.widget.Editor2Dialog.superclass.hide.call(this);
+		}
+		if (!this.contentWidget || !this.contentWidget.loadContent()) {
+			return;
+		}
+		this.showFloatingPane();
+		dojo.widget.Editor2Dialog.superclass.show.apply(this, arguments);
+		if (this.modal) {
+			this.showModalDialog();
+		}
+		if (this.modal) {
+			this.bg.style.zIndex = this.domNode.style.zIndex - 1;
+		}
+	}, onShow:function () {
+		dojo.widget.Editor2Dialog.superclass.onShow.call(this);
+		this.onFloatingPaneShow();
+	}, closeWindow:function () {
+		this.hide();
+		dojo.widget.Editor2Dialog.superclass.closeWindow.apply(this, arguments);
+	}, hide:function () {
+		if (this.modal) {
+			this.hideModalDialog();
+		}
+		dojo.widget.Editor2Dialog.superclass.hide.call(this);
+	}, checkSize:function () {
+		if (this.isShowing()) {
+			if (this.modal) {
+				this._sizeBackground();
+			}
+			this.placeModalDialog();
+			this.onResized();
+		}
+	}});
+	dojo.widget.defineWidget("dojo.widget.Editor2DialogContent", dojo.widget.HtmlWidget, {widgetsInTemplate:true, loadContent:function () {
+		return true;
+	}, cancel:function () {
+		this.parent.hide();
+	}});
+	dojo.lang.declare("dojo.widget.Editor2DialogCommand", dojo.widget.Editor2BrowserCommand, function (editor, name, dialogParas) {
+		this.dialogParas = dialogParas;
+	}, {execute:function () {
+		if (!this.dialog) {
+			if (!this.dialogParas.contentFile || !this.dialogParas.contentClass) {
+				alert("contentFile and contentClass should be set for dojo.widget.Editor2DialogCommand.dialogParas!");
+				return;
+			}
+			this.dialog = dojo.widget.createWidget("Editor2Dialog", this.dialogParas);
+			dojo.body().appendChild(this.dialog.domNode);
+			dojo.event.connect(this, "destroy", this.dialog, "destroy");
+		}
+		this.dialog.show();
+	}, getText:function () {
+		return this.dialogParas.title || dojo.widget.Editor2DialogCommand.superclass.getText.call(this);
+	}});
+	dojo.widget.Editor2ToolbarGroups = {};
+	dojo.widget.defineWidget("dojo.widget.Editor2", dojo.widget.RichText, function () {
+		this._loadedCommands = {};
+	}, {toolbarAlwaysVisible:false, toolbarWidget:null, scrollInterval:null, toolbarTemplatePath:dojo.uri.cache.set(dojo.uri.moduleUri("dojo.widget", "templates/EditorToolbarOneline.html"), "<div class=\"EditorToolbarDomNode EditorToolbarSmallBg\">\n\t<table cellpadding=\"1\" cellspacing=\"0\" border=\"0\">\n\t\t<tbody>\n\t\t\t<tr valign=\"top\" align=\"left\">\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"htmltoggle\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon\" \n\t\t\t\t\t\tstyle=\"background-image: none; width: 30px;\" >&lt;h&gt;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"copy\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Copy\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"paste\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Paste\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"undo\">\n\t\t\t\t\t\t<!-- FIXME: should we have the text \"undo\" here? -->\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Undo\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"redo\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Redo\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\"\tstyle=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"createlink\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Link\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"insertimage\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Image\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"inserthorizontalrule\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_HorizontalLine \">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"bold\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Bold\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"italic\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Italic\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"underline\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Underline\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"strikethrough\">\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"dojoE2TBIcon dojoE2TBIcon_StrikeThrough\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" \n\t\t\t\t\t\t\tstyle=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"insertunorderedlist\">\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"dojoE2TBIcon dojoE2TBIcon_BulletedList\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"insertorderedlist\">\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"dojoE2TBIcon dojoE2TBIcon_NumberedList\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" style=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"indent\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Indent\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"outdent\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Outdent\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" style=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"forecolor\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_TextColor\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"hilitecolor\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_BackgroundColor\" \n\t\t\t\t\t\t\tunselectable=\"on\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td isSpacer=\"true\">\n\t\t\t\t\t<span class=\"iconContainer\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Sep\" style=\"width: 5px; min-width: 5px;\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifyleft\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_LeftJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifycenter\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_CenterJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifyright\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_RightJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"justifyfull\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_BlockJustify\">&nbsp;</span>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\t\n\t\t\t\t<td>\n\t\t\t\t\t<select class=\"dojoEditorToolbarItem\" dojoETItemName=\"plainformatblock\">\n\t\t\t\t\t\t<!-- FIXME: using \"p\" here inserts a paragraph in most cases! -->\n\t\t\t\t\t\t<option value=\"\">-- format --</option>\n\t\t\t\t\t\t<option value=\"p\">Normal</option>\n\t\t\t\t\t\t<option value=\"pre\">Fixed Font</option>\n\t\t\t\t\t\t<option value=\"h1\">Main Heading</option>\n\t\t\t\t\t\t<option value=\"h2\">Section Heading</option>\n\t\t\t\t\t\t<option value=\"h3\">Sub-Heading</option>\n\t\t\t\t\t\t<!-- <option value=\"blockquote\">Block Quote</option> -->\n\t\t\t\t\t</select>\n\t\t\t\t</td>\n\t\t\t\t<td><!-- uncomment to enable save button -->\n\t\t\t\t\t<!-- save -->\n\t\t\t\t\t<!--span class=\"iconContainer dojoEditorToolbarItem\" dojoETItemName=\"save\">\n\t\t\t\t\t\t<span class=\"dojoE2TBIcon dojoE2TBIcon_Save\">&nbsp;</span>\n\t\t\t\t\t</span-->\n\t\t\t\t</td>\n\t\t\t\t<td width=\"*\">&nbsp;</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n"), toolbarTemplateCssPath:null, toolbarPlaceHolder:"", _inSourceMode:false, _htmlEditNode:null, toolbarGroup:"", shareToolbar:false, contextMenuGroupSet:"", editorOnLoad:function () {
+		dojo.event.topic.publish("dojo.widget.Editor2::preLoadingToolbar", this);
+		if (this.toolbarAlwaysVisible) {
+			dojo.require("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
+		}
+		if (this.toolbarWidget) {
+			this.toolbarWidget.show();
+			dojo.html.insertBefore(this.toolbarWidget.domNode, this.domNode.firstChild);
+		} else {
+			if (this.shareToolbar) {
+				dojo.deprecated("Editor2:shareToolbar is deprecated in favor of toolbarGroup", "0.5");
+				this.toolbarGroup = "defaultDojoToolbarGroup";
+			}
+			if (this.toolbarGroup) {
+				if (dojo.widget.Editor2ToolbarGroups[this.toolbarGroup]) {
+					this.toolbarWidget = dojo.widget.Editor2ToolbarGroups[this.toolbarGroup];
+				}
+			}
+			if (!this.toolbarWidget) {
+				var tbOpts = {shareGroup:this.toolbarGroup, parent:this};
+				tbOpts.templateString = dojo.uri.cache.get(this.toolbarTemplatePath);
+				if (this.toolbarTemplateCssPath) {
+					tbOpts.templateCssPath = this.toolbarTemplateCssPath;
+					tbOpts.templateCssString = dojo.uri.cache.get(this.toolbarTemplateCssPath);
+				}
+				if (this.toolbarPlaceHolder) {
+					this.toolbarWidget = dojo.widget.createWidget("Editor2Toolbar", tbOpts, dojo.byId(this.toolbarPlaceHolder), "after");
+				} else {
+					this.toolbarWidget = dojo.widget.createWidget("Editor2Toolbar", tbOpts, this.domNode.firstChild, "before");
+				}
+				if (this.toolbarGroup) {
+					dojo.widget.Editor2ToolbarGroups[this.toolbarGroup] = this.toolbarWidget;
+				}
+				dojo.event.connect(this, "close", this.toolbarWidget, "hide");
+				this.toolbarLoaded();
+			}
+		}
+		dojo.event.topic.registerPublisher("Editor2.clobberFocus", this, "clobberFocus");
+		dojo.event.topic.subscribe("Editor2.clobberFocus", this, "setBlur");
+		dojo.event.topic.publish("dojo.widget.Editor2::onLoad", this);
+	}, toolbarLoaded:function () {
+	}, registerLoadedPlugin:function (obj) {
+		if (!this.loadedPlugins) {
+			this.loadedPlugins = [];
+		}
+		this.loadedPlugins.push(obj);
+	}, unregisterLoadedPlugin:function (obj) {
+		for (var i in this.loadedPlugins) {
+			if (this.loadedPlugins[i] === obj) {
+				delete this.loadedPlugins[i];
+				return;
+			}
+		}
+		dojo.debug("dojo.widget.Editor2.unregisterLoadedPlugin: unknow plugin object: " + obj);
+	}, execCommand:function (command, argument) {
+		switch (command.toLowerCase()) {
+		  case "htmltoggle":
+			this.toggleHtmlEditing();
+			break;
+		  default:
+			dojo.widget.Editor2.superclass.execCommand.apply(this, arguments);
+		}
+	}, queryCommandEnabled:function (command, argument) {
+		switch (command.toLowerCase()) {
+		  case "htmltoggle":
+			return true;
+		  default:
+			if (this._inSourceMode) {
+				return false;
+			}
+			return dojo.widget.Editor2.superclass.queryCommandEnabled.apply(this, arguments);
+		}
+	}, queryCommandState:function (command, argument) {
+		switch (command.toLowerCase()) {
+		  case "htmltoggle":
+			return this._inSourceMode;
+		  default:
+			return dojo.widget.Editor2.superclass.queryCommandState.apply(this, arguments);
+		}
+	}, onClick:function (e) {
+		dojo.widget.Editor2.superclass.onClick.call(this, e);
+		if (dojo.widget.PopupManager) {
+			if (!e) {
+				e = this.window.event;
+			}
+			dojo.widget.PopupManager.onClick(e);
+		}
+	}, clobberFocus:function () {
+	}, toggleHtmlEditing:function () {
+		if (this === dojo.widget.Editor2Manager.getCurrentInstance()) {
+			if (!this._inSourceMode) {
+				var html = this.getEditorContent();
+				this._inSourceMode = true;
+				if (!this._htmlEditNode) {
+					this._htmlEditNode = dojo.doc().createElement("textarea");
+					dojo.html.insertAfter(this._htmlEditNode, this.editorObject);
+				}
+				this._htmlEditNode.style.display = "";
+				this._htmlEditNode.style.width = "100%";
+				this._htmlEditNode.style.height = dojo.html.getBorderBox(this.editNode).height + "px";
+				this._htmlEditNode.value = html;
+				with (this.editorObject.style) {
+					position = "absolute";
+					left = "-2000px";
+					top = "-2000px";
+				}
+			} else {
+				this._inSourceMode = false;
+				this._htmlEditNode.blur();
+				with (this.editorObject.style) {
+					position = "";
+					left = "";
+					top = "";
+				}
+				var html = this._htmlEditNode.value;
+				dojo.lang.setTimeout(this, "replaceEditorContent", 1, html);
+				this._htmlEditNode.style.display = "none";
+				this.focus();
+			}
+			this.onDisplayChanged(null, true);
+		}
+	}, setFocus:function () {
+		if (dojo.widget.Editor2Manager.getCurrentInstance() === this) {
+			return;
+		}
+		this.clobberFocus();
+		dojo.widget.Editor2Manager.setCurrentInstance(this);
+	}, setBlur:function () {
+	}, saveSelection:function () {
+		this._bookmark = null;
+		this._bookmark = dojo.withGlobal(this.window, dojo.html.selection.getBookmark);
+	}, restoreSelection:function () {
+		if (this._bookmark) {
+			this.focus();
+			dojo.withGlobal(this.window, "moveToBookmark", dojo.html.selection, [this._bookmark]);
+			this._bookmark = null;
+		} else {
+			dojo.debug("restoreSelection: no saved selection is found!");
+		}
+	}, _updateToolbarLastRan:null, _updateToolbarTimer:null, _updateToolbarFrequency:500, updateToolbar:function (force) {
+		if ((!this.isLoaded) || (!this.toolbarWidget)) {
+			return;
+		}
+		var diff = new Date() - this._updateToolbarLastRan;
+		if ((!force) && (this._updateToolbarLastRan) && ((diff < this._updateToolbarFrequency))) {
+			clearTimeout(this._updateToolbarTimer);
+			var _this = this;
+			this._updateToolbarTimer = setTimeout(function () {
+				_this.updateToolbar();
+			}, this._updateToolbarFrequency / 2);
+			return;
+		} else {
+			this._updateToolbarLastRan = new Date();
+		}
+		if (dojo.widget.Editor2Manager.getCurrentInstance() !== this) {
+			return;
+		}
+		this.toolbarWidget.update();
+	}, destroy:function (finalize) {
+		this._htmlEditNode = null;
+		dojo.event.disconnect(this, "close", this.toolbarWidget, "hide");
+		if (!finalize) {
+			this.toolbarWidget.destroy();
+		}
+		dojo.widget.Editor2.superclass.destroy.call(this);
+	}, _lastStateTimestamp:0, onDisplayChanged:function (e, forceUpdate) {
+		this._lastStateTimestamp = (new Date()).getTime();
+		dojo.widget.Editor2.superclass.onDisplayChanged.call(this, e);
+		this.updateToolbar(forceUpdate);
+	}, onLoad:function () {
+		try {
+			dojo.widget.Editor2.superclass.onLoad.call(this);
+		}
+		catch (e) {
+			dojo.debug(e);
+		}
+		this.editorOnLoad();
+	}, onFocus:function () {
+		dojo.widget.Editor2.superclass.onFocus.call(this);
+		this.setFocus();
+	}, getEditorContent:function () {
+		if (this._inSourceMode) {
+			return this._htmlEditNode.value;
+		}
+		return dojo.widget.Editor2.superclass.getEditorContent.call(this);
+	}, replaceEditorContent:function (html) {
+		if (this._inSourceMode) {
+			this._htmlEditNode.value = html;
+			return;
+		}
+		dojo.widget.Editor2.superclass.replaceEditorContent.apply(this, arguments);
+	}, getCommand:function (name) {
+		if (this._loadedCommands[name]) {
+			return this._loadedCommands[name];
+		}
+		var cmd = dojo.widget.Editor2Manager.getCommand(this, name);
+		this._loadedCommands[name] = cmd;
+		return cmd;
+	}, shortcuts:[["bold"], ["italic"], ["underline"], ["selectall", "a"], ["insertunorderedlist", "\\"]], setupDefaultShortcuts:function () {
+		var exec = function (cmd) {
+			return function () {
+				cmd.execute();
+			};
+		};
+		var self = this;
+		dojo.lang.forEach(this.shortcuts, function (item) {
+			var cmd = self.getCommand(item[0]);
+			if (cmd) {
+				self.addKeyHandler(item[1] ? item[1] : item[0].charAt(0), item[2] == undefined ? self.KEY_CTRL : item[2], exec(cmd));
+			}
+		});
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Spinner.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -31458,6 +64168,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Spinner");
 dojo.require("dojo.io.*");
 dojo.require("dojo.lfx.*");
@@ -31984,6 +64696,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Parse");
 dojo.require("dojo.widget.Manager");
 dojo.require("dojo.dom");
@@ -32200,6 +64914,1177 @@
 };
 
 
+__CPAN_FILE__ src/widget/RichText.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.RichText"], ["require", "dojo.widget.*"], ["require", "dojo.html.*"], ["require", "dojo.html.layout"], ["require", "dojo.html.selection"], ["require", "dojo.event.*"], ["require", "dojo.string.extras"], ["require", "dojo.uri.Uri"], ["require", "dojo.Deferred"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.RichText");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.html.*");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.string.extras");
+	dojo.require("dojo.uri.Uri");
+	dojo.require("dojo.Deferred");
+	if (!djConfig["useXDomain"] || djConfig["allowXdRichTextSave"]) {
+		if (dojo.hostenv.post_load_) {
+			(function () {
+				var savetextarea = dojo.doc().createElement("textarea");
+				savetextarea.id = "dojo.widget.RichText.savedContent";
+				savetextarea.style = "display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;";
+				dojo.body().appendChild(savetextarea);
+			})();
+		} else {
+			try {
+				dojo.doc().write("<textarea id=\"dojo.widget.RichText.savedContent\" " + "style=\"display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;\"></textarea>");
+			}
+			catch (e) {
+			}
+		}
+	}
+	dojo.widget.defineWidget("dojo.widget.RichText", dojo.widget.HtmlWidget, function () {
+		this.contentPreFilters = [];
+		this.contentPostFilters = [];
+		this.contentDomPreFilters = [];
+		this.contentDomPostFilters = [];
+		this.editingAreaStyleSheets = [];
+		if (dojo.render.html.moz) {
+			this.contentPreFilters.push(this._fixContentForMoz);
+		}
+		this._keyHandlers = {};
+		if (dojo.Deferred) {
+			this.onLoadDeferred = new dojo.Deferred();
+		}
+	}, {inheritWidth:false, focusOnLoad:false, saveName:"", styleSheets:"", _content:"", height:"", minHeight:"1em", isClosed:true, isLoaded:false, useActiveX:false, relativeImageUrls:false, _SEPARATOR:"@@**%%__RICHTEXTBOUNDRY__%%**@@", onLoadDeferred:null, fillInTemplate:function () {
+		dojo.event.topic.publish("dojo.widget.RichText::init", this);
+		this.open();
+		dojo.event.connect(this, "onKeyPressed", this, "afterKeyPress");
+		dojo.event.connect(this, "onKeyPress", this, "keyPress");
+		dojo.event.connect(this, "onKeyDown", this, "keyDown");
+		dojo.event.connect(this, "onKeyUp", this, "keyUp");
+		this.setupDefaultShortcuts();
+	}, setupDefaultShortcuts:function () {
+		var ctrl = this.KEY_CTRL;
+		var exec = function (cmd, arg) {
+			return arguments.length == 1 ? function () {
+				this.execCommand(cmd);
+			} : function () {
+				this.execCommand(cmd, arg);
+			};
+		};
+		this.addKeyHandler("b", ctrl, exec("bold"));
+		this.addKeyHandler("i", ctrl, exec("italic"));
+		this.addKeyHandler("u", ctrl, exec("underline"));
+		this.addKeyHandler("a", ctrl, exec("selectall"));
+		this.addKeyHandler("s", ctrl, function () {
+			this.save(true);
+		});
+		this.addKeyHandler("1", ctrl, exec("formatblock", "h1"));
+		this.addKeyHandler("2", ctrl, exec("formatblock", "h2"));
+		this.addKeyHandler("3", ctrl, exec("formatblock", "h3"));
+		this.addKeyHandler("4", ctrl, exec("formatblock", "h4"));
+		this.addKeyHandler("\\", ctrl, exec("insertunorderedlist"));
+		if (!dojo.render.html.ie) {
+			this.addKeyHandler("Z", ctrl, exec("redo"));
+		}
+	}, events:["onBlur", "onFocus", "onKeyPress", "onKeyDown", "onKeyUp", "onClick"], open:function (element) {
+		if (this.onLoadDeferred.fired >= 0) {
+			this.onLoadDeferred = new dojo.Deferred();
+		}
+		var h = dojo.render.html;
+		if (!this.isClosed) {
+			this.close();
+		}
+		dojo.event.topic.publish("dojo.widget.RichText::open", this);
+		this._content = "";
+		if ((arguments.length == 1) && (element["nodeName"])) {
+			this.domNode = element;
+		}
+		if ((this.domNode["nodeName"]) && (this.domNode.nodeName.toLowerCase() == "textarea")) {
+			this.textarea = this.domNode;
+			var html = this._preFilterContent(this.textarea.value);
+			this.domNode = dojo.doc().createElement("div");
+			dojo.html.copyStyle(this.domNode, this.textarea);
+			var tmpFunc = dojo.lang.hitch(this, function () {
+				with (this.textarea.style) {
+					display = "block";
+					position = "absolute";
+					left = top = "-1000px";
+					if (h.ie) {
+						this.__overflow = overflow;
+						overflow = "hidden";
+					}
+				}
+			});
+			if (h.ie) {
+				setTimeout(tmpFunc, 10);
+			} else {
+				tmpFunc();
+			}
+			if (!h.safari) {
+				dojo.html.insertBefore(this.domNode, this.textarea);
+			}
+			if (this.textarea.form) {
+				dojo.event.connect("before", this.textarea.form, "onsubmit", dojo.lang.hitch(this, function () {
+					this.textarea.value = this.getEditorContent();
+				}));
+			}
+			var editor = this;
+			dojo.event.connect(this, "postCreate", function () {
+				dojo.html.insertAfter(editor.textarea, editor.domNode);
+			});
+		} else {
+			var html = this._preFilterContent(dojo.string.trim(this.domNode.innerHTML));
+		}
+		if (html == "") {
+			html = "&nbsp;";
+		}
+		var content = dojo.html.getContentBox(this.domNode);
+		this._oldHeight = content.height;
+		this._oldWidth = content.width;
+		this._firstChildContributingMargin = this._getContributingMargin(this.domNode, "top");
+		this._lastChildContributingMargin = this._getContributingMargin(this.domNode, "bottom");
+		this.savedContent = html;
+		this.domNode.innerHTML = "";
+		this.editingArea = dojo.doc().createElement("div");
+		this.domNode.appendChild(this.editingArea);
+		if ((this.domNode["nodeName"]) && (this.domNode.nodeName == "LI")) {
+			this.domNode.innerHTML = " <br>";
+		}
+		if (this.saveName != "" && (!djConfig["useXDomain"] || djConfig["allowXdRichTextSave"])) {
+			var saveTextarea = dojo.doc().getElementById("dojo.widget.RichText.savedContent");
+			if (saveTextarea.value != "") {
+				var datas = saveTextarea.value.split(this._SEPARATOR);
+				for (var i = 0; i < datas.length; i++) {
+					var data = datas[i].split(":");
+					if (data[0] == this.saveName) {
+						html = data[1];
+						datas.splice(i, 1);
+						break;
+					}
+				}
+			}
+			dojo.event.connect("before", window, "onunload", this, "_saveContent");
+		}
+		if (h.ie70 && this.useActiveX) {
+			dojo.debug("activeX in ie70 is not currently supported, useActiveX is ignored for now.");
+			this.useActiveX = false;
+		}
+		if (this.useActiveX && h.ie) {
+			var self = this;
+			setTimeout(function () {
+				self._drawObject(html);
+			}, 0);
+		} else {
+			if (h.ie || this._safariIsLeopard() || h.opera) {
+				this.iframe = dojo.doc().createElement("iframe");
+				this.iframe.src = "javascript:void(0)";
+				this.editorObject = this.iframe;
+				with (this.iframe.style) {
+					border = "0";
+					width = "100%";
+				}
+				this.iframe.frameBorder = 0;
+				this.editingArea.appendChild(this.iframe);
+				this.window = this.iframe.contentWindow;
+				this.document = this.window.document;
+				this.document.open();
+				this.document.write("<html><head><style>body{margin:0;padding:0;border:0;overflow:hidden;}</style></head><body><div></div></body></html>");
+				this.document.close();
+				this.editNode = this.document.body.firstChild;
+				this.editNode.contentEditable = true;
+				with (this.iframe.style) {
+					if (h.ie70) {
+						if (this.height) {
+							height = this.height;
+						}
+						if (this.minHeight) {
+							minHeight = this.minHeight;
+						}
+					} else {
+						height = this.height ? this.height : this.minHeight;
+					}
+				}
+				var formats = ["p", "pre", "address", "h1", "h2", "h3", "h4", "h5", "h6", "ol", "div", "ul"];
+				var localhtml = "";
+				for (var i in formats) {
+					if (formats[i].charAt(1) != "l") {
+						localhtml += "<" + formats[i] + "><span>content</span></" + formats[i] + ">";
+					} else {
+						localhtml += "<" + formats[i] + "><li>content</li></" + formats[i] + ">";
+					}
+				}
+				with (this.editNode.style) {
+					position = "absolute";
+					left = "-2000px";
+					top = "-2000px";
+				}
+				this.editNode.innerHTML = localhtml;
+				var node = this.editNode.firstChild;
+				while (node) {
+					dojo.withGlobal(this.window, "selectElement", dojo.html.selection, [node.firstChild]);
+					var nativename = node.tagName.toLowerCase();
+					this._local2NativeFormatNames[nativename] = this.queryCommandValue("formatblock");
+					this._native2LocalFormatNames[this._local2NativeFormatNames[nativename]] = nativename;
+					node = node.nextSibling;
+				}
+				with (this.editNode.style) {
+					position = "";
+					left = "";
+					top = "";
+				}
+				this.editNode.innerHTML = html;
+				if (this.height) {
+					this.document.body.style.overflowY = "scroll";
+				}
+				dojo.lang.forEach(this.events, function (e) {
+					dojo.event.connect(this.editNode, e.toLowerCase(), this, e);
+				}, this);
+				this.onLoad();
+			} else {
+				this._drawIframe(html);
+				this.editorObject = this.iframe;
+			}
+		}
+		if (this.domNode.nodeName == "LI") {
+			this.domNode.lastChild.style.marginTop = "-1.2em";
+		}
+		dojo.html.addClass(this.domNode, "RichTextEditable");
+		this.isClosed = false;
+	}, _hasCollapseableMargin:function (element, side) {
+		if (dojo.html.getPixelValue(element, "border-" + side + "-width", false)) {
+			return false;
+		} else {
+			if (dojo.html.getPixelValue(element, "padding-" + side, false)) {
+				return false;
+			} else {
+				return true;
+			}
+		}
+	}, _getContributingMargin:function (element, topOrBottom) {
+		if (topOrBottom == "top") {
+			var siblingAttr = "previousSibling";
+			var childSiblingAttr = "nextSibling";
+			var childAttr = "firstChild";
+			var marginProp = "margin-top";
+			var siblingMarginProp = "margin-bottom";
+		} else {
+			var siblingAttr = "nextSibling";
+			var childSiblingAttr = "previousSibling";
+			var childAttr = "lastChild";
+			var marginProp = "margin-bottom";
+			var siblingMarginProp = "margin-top";
+		}
+		var elementMargin = dojo.html.getPixelValue(element, marginProp, false);
+		function isSignificantNode(element) {
+			return !(element.nodeType == 3 && dojo.string.isBlank(element.data)) && dojo.html.getStyle(element, "display") != "none" && !dojo.html.isPositionAbsolute(element);
+		}
+		var childMargin = 0;
+		var child = element[childAttr];
+		while (child) {
+			while ((!isSignificantNode(child)) && child[childSiblingAttr]) {
+				child = child[childSiblingAttr];
+			}
+			childMargin = Math.max(childMargin, dojo.html.getPixelValue(child, marginProp, false));
+			if (!this._hasCollapseableMargin(child, topOrBottom)) {
+				break;
+			}
+			child = child[childAttr];
+		}
+		if (!this._hasCollapseableMargin(element, topOrBottom)) {
+			return parseInt(childMargin);
+		}
+		var contextMargin = 0;
+		var sibling = element[siblingAttr];
+		while (sibling) {
+			if (isSignificantNode(sibling)) {
+				contextMargin = dojo.html.getPixelValue(sibling, siblingMarginProp, false);
+				break;
+			}
+			sibling = sibling[siblingAttr];
+		}
+		if (!sibling) {
+			contextMargin = dojo.html.getPixelValue(element.parentNode, marginProp, false);
+		}
+		if (childMargin > elementMargin) {
+			return parseInt(Math.max((childMargin - elementMargin) - contextMargin, 0));
+		} else {
+			return 0;
+		}
+	}, _drawIframe:function (html) {
+		var oldMoz = Boolean(dojo.render.html.moz && (typeof window.XML == "undefined"));
+		if (!this.iframe) {
+			var currentDomain = (new dojo.uri.Uri(dojo.doc().location)).host;
+			this.iframe = dojo.doc().createElement("iframe");
+			with (this.iframe) {
+				style.border = "none";
+				style.lineHeight = "0";
+				style.verticalAlign = "bottom";
+				scrolling = this.height ? "auto" : "no";
+			}
+		}
+		if (djConfig["useXDomain"] && !djConfig["dojoRichTextFrameUrl"]) {
+			dojo.debug("dojo.widget.RichText: When using cross-domain Dojo builds," + " please save src/widget/templates/richtextframe.html to your domain and set djConfig.dojoRichTextFrameUrl" + " to the path on your domain to richtextframe.html");
+		}
+		this.iframe.src = (djConfig["dojoRichTextFrameUrl"] || dojo.uri.moduleUri("dojo.widget", "templates/richtextframe.html")) + ((dojo.doc().domain != currentDomain) ? ("#" + dojo.doc().domain) : "");
+		this.iframe.width = this.inheritWidth ? this._oldWidth : "100%";
+		if (this.height) {
+			this.iframe.style.height = this.height;
+		} else {
+			var height = this._oldHeight;
+			if (this._hasCollapseableMargin(this.domNode, "top")) {
+				height += this._firstChildContributingMargin;
+			}
+			if (this._hasCollapseableMargin(this.domNode, "bottom")) {
+				height += this._lastChildContributingMargin;
+			}
+			this.iframe.height = height;
+		}
+		var tmpContent = dojo.doc().createElement("div");
+		tmpContent.innerHTML = html;
+		this.editingArea.appendChild(tmpContent);
+		if (this.relativeImageUrls) {
+			var imgs = tmpContent.getElementsByTagName("img");
+			for (var i = 0; i < imgs.length; i++) {
+				imgs[i].src = (new dojo.uri.Uri(dojo.global().location, imgs[i].src)).toString();
+			}
+			html = tmpContent.innerHTML;
+		}
+		var firstChild = dojo.html.firstElement(tmpContent);
+		var lastChild = dojo.html.lastElement(tmpContent);
+		if (firstChild) {
+			firstChild.style.marginTop = this._firstChildContributingMargin + "px";
+		}
+		if (lastChild) {
+			lastChild.style.marginBottom = this._lastChildContributingMargin + "px";
+		}
+		this.editingArea.appendChild(this.iframe);
+		if (dojo.render.html.safari) {
+			this.iframe.src = this.iframe.src;
+		}
+		var _iframeInitialized = false;
+		var ifrFunc = dojo.lang.hitch(this, function () {
+			if (!_iframeInitialized) {
+				_iframeInitialized = true;
+			} else {
+				return;
+			}
+			if (!this.editNode) {
+				if (this.iframe.contentWindow) {
+					this.window = this.iframe.contentWindow;
+					this.document = this.iframe.contentWindow.document;
+				} else {
+					if (this.iframe.contentDocument) {
+						this.window = this.iframe.contentDocument.window;
+						this.document = this.iframe.contentDocument;
+					}
+				}
+				var getStyle = (function (domNode) {
+					return function (style) {
+						return dojo.html.getStyle(domNode, style);
+					};
+				})(this.domNode);
+				var font = getStyle("font-weight") + " " + getStyle("font-size") + " " + getStyle("font-family");
+				var lineHeight = "1.0";
+				var lineHeightStyle = dojo.html.getUnitValue(this.domNode, "line-height");
+				if (lineHeightStyle.value && lineHeightStyle.units == "") {
+					lineHeight = lineHeightStyle.value;
+				}
+				dojo.html.insertCssText("body,html{background:transparent;padding:0;margin:0;}" + "body{top:0;left:0;right:0;" + (((this.height) || (dojo.render.html.opera)) ? "" : "position:fixed;") + "font:" + font + ";" + "min-height:" + this.minHeight + ";" + "line-height:" + lineHeight + "}" + "p{margin: 1em 0 !important;}" + "body > *:first-child{padding-top:0 !important;margin-top:" + this._firstChildContributingMargin + "px !important;}" + "body > *:last-child{padding-bottom:0 !important;margin-bottom:" + this._lastChildContributingMargin + "px !important;}" + "li > ul:-moz-first-node, li > ol:-moz-first-node{padding-top:1.2em;}\n" + "li{min-height:1.2em;}" + "", this.document);
+				dojo.html.removeNode(tmpContent);
+				this.document.body.innerHTML = html;
+				if (oldMoz || dojo.render.html.safari) {
+					this.document.designMode = "on";
+				}
+				this.onLoad();
+			} else {
+				dojo.html.removeNode(tmpContent);
+				this.editNode.innerHTML = html;
+				this.onDisplayChanged();
+			}
+		});
+		if (this.editNode) {
+			ifrFunc();
+		} else {
+			if (dojo.render.html.moz) {
+				this.iframe.onload = function () {
+					setTimeout(ifrFunc, 250);
+				};
+			} else {
+				this.iframe.onload = ifrFunc;
+			}
+		}
+	}, _applyEditingAreaStyleSheets:function () {
+		var files = [];
+		if (this.styleSheets) {
+			files = this.styleSheets.split(";");
+			this.styleSheets = "";
+		}
+		files = files.concat(this.editingAreaStyleSheets);
+		this.editingAreaStyleSheets = [];
+		if (files.length > 0) {
+			for (var i = 0; i < files.length; i++) {
+				var url = files[i];
+				if (url) {
+					this.addStyleSheet(dojo.uri.dojoUri(url));
+				}
+			}
+		}
+	}, addStyleSheet:function (uri) {
+		var url = uri.toString();
+		if (dojo.lang.find(this.editingAreaStyleSheets, url) > -1) {
+			dojo.debug("dojo.widget.RichText.addStyleSheet: Style sheet " + url + " is already applied to the editing area!");
+			return;
+		}
+		if (url.charAt(0) == "." || (url.charAt(0) != "/" && !uri.host)) {
+			url = (new dojo.uri.Uri(dojo.global().location, url)).toString();
+		}
+		this.editingAreaStyleSheets.push(url);
+		if (this.document.createStyleSheet) {
+			this.document.createStyleSheet(url);
+		} else {
+			var head = this.document.getElementsByTagName("head")[0];
+			var stylesheet = this.document.createElement("link");
+			with (stylesheet) {
+				rel = "stylesheet";
+				type = "text/css";
+				href = url;
+			}
+			head.appendChild(stylesheet);
+		}
+	}, removeStyleSheet:function (uri) {
+		var url = uri.toString();
+		if (url.charAt(0) == "." || (url.charAt(0) != "/" && !uri.host)) {
+			url = (new dojo.uri.Uri(dojo.global().location, url)).toString();
+		}
+		var index = dojo.lang.find(this.editingAreaStyleSheets, url);
+		if (index == -1) {
+			dojo.debug("dojo.widget.RichText.removeStyleSheet: Style sheet " + url + " is not applied to the editing area so it can not be removed!");
+			return;
+		}
+		delete this.editingAreaStyleSheets[index];
+		var links = this.document.getElementsByTagName("link");
+		for (var i = 0; i < links.length; i++) {
+			if (links[i].href == url) {
+				if (dojo.render.html.ie) {
+					links[i].href = "";
+				}
+				dojo.html.removeNode(links[i]);
+				break;
+			}
+		}
+	}, _drawObject:function (html) {
+		this.object = dojo.html.createExternalElement(dojo.doc(), "object");
+		with (this.object) {
+			classid = "clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A";
+			width = this.inheritWidth ? this._oldWidth : "100%";
+			style.height = this.height ? this.height : (this._oldHeight + "px");
+			Scrollbars = this.height ? true : false;
+			Appearance = this._activeX.appearance.flat;
+		}
+		this.editorObject = this.object;
+		this.editingArea.appendChild(this.object);
+		this.object.attachEvent("DocumentComplete", dojo.lang.hitch(this, "onLoad"));
+		dojo.lang.forEach(this.events, function (e) {
+			this.object.attachEvent(e.toLowerCase(), dojo.lang.hitch(this, e));
+		}, this);
+		this.object.DocumentHTML = "<!doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" + "<html><title></title>" + "<style type=\"text/css\">" + "	body,html { padding: 0; margin: 0; }" + (this.height ? "" : "	body,  { overflow: hidden; }") + "</style>" + "<body><div>" + html + "<div></body></html>";
+		this._cacheLocalBlockFormatNames();
+	}, _local2NativeFormatNames:{}, _native2LocalFormatNames:{}, _cacheLocalBlockFormatNames:function () {
+		if (!this._native2LocalFormatNames["p"]) {
+			var obj = this.object;
+			var error = false;
+			if (!obj) {
+				try {
+					obj = dojo.html.createExternalElement(dojo.doc(), "object");
+					obj.classid = "clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A";
+					dojo.body().appendChild(obj);
+					obj.DocumentHTML = "<html><head></head><body></body></html>";
+				}
+				catch (e) {
+					error = true;
+				}
+			}
+			try {
+				var oNamesParm = new ActiveXObject("DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam");
+				obj.ExecCommand(this._activeX.command["getblockformatnames"], 0, oNamesParm);
+				var vbNamesArray = new VBArray(oNamesParm.Names);
+				var localFormats = vbNamesArray.toArray();
+				var nativeFormats = ["p", "pre", "address", "h1", "h2", "h3", "h4", "h5", "h6", "ol", "ul", "", "", "", "", "div"];
+				for (var i = 0; i < nativeFormats.length; ++i) {
+					if (nativeFormats[i].length > 0) {
+						this._local2NativeFormatNames[localFormats[i]] = nativeFormats[i];
+						this._native2LocalFormatNames[nativeFormats[i]] = localFormats[i];
+					}
+				}
+			}
+			catch (e) {
+				error = true;
+			}
+			if (obj && !this.object) {
+				dojo.body().removeChild(obj);
+			}
+		}
+		return !error;
+	}, _isResized:function () {
+		return false;
+	}, onLoad:function (e) {
+		this.isLoaded = true;
+		if (this.object) {
+			this.document = this.object.DOM;
+			this.window = this.document.parentWindow;
+			this.editNode = this.document.body.firstChild;
+			this.editingArea.style.height = this.height ? this.height : this.minHeight;
+			if (!this.height) {
+				this.connect(this, "onDisplayChanged", "_updateHeight");
+			}
+			this.window._frameElement = this.object;
+		} else {
+			if (this.iframe && !dojo.render.html.ie) {
+				this.editNode = this.document.body;
+				if (!this.height) {
+					this.connect(this, "onDisplayChanged", "_updateHeight");
+				}
+				try {
+					this.document.execCommand("useCSS", false, true);
+					this.document.execCommand("styleWithCSS", false, false);
+				}
+				catch (e2) {
+				}
+				if (dojo.render.html.safari) {
+					this.connect(this.editNode, "onblur", "onBlur");
+					this.connect(this.editNode, "onfocus", "onFocus");
+					this.connect(this.editNode, "onclick", "onFocus");
+					this.interval = setInterval(dojo.lang.hitch(this, "onDisplayChanged"), 750);
+				} else {
+					if (dojo.render.html.mozilla || dojo.render.html.opera) {
+						var doc = this.document;
+						var addListener = dojo.event.browser.addListener;
+						var self = this;
+						dojo.lang.forEach(this.events, function (e) {
+							var l = addListener(self.document, e.substr(2).toLowerCase(), dojo.lang.hitch(self, e));
+							if (e == "onBlur") {
+								var unBlur = {unBlur:function (e) {
+									dojo.event.browser.removeListener(doc, "blur", l);
+								}};
+								dojo.event.connect("before", self, "close", unBlur, "unBlur");
+							}
+						});
+					}
+				}
+			} else {
+				if (dojo.render.html.ie) {
+					if (!this.height) {
+						this.connect(this, "onDisplayChanged", "_updateHeight");
+					}
+					this.editNode.style.zoom = 1;
+				}
+			}
+		}
+		this._applyEditingAreaStyleSheets();
+		if (this.focusOnLoad) {
+			this.focus();
+		}
+		this.onDisplayChanged(e);
+		if (this.onLoadDeferred) {
+			this.onLoadDeferred.callback(true);
+		}
+	}, onKeyDown:function (e) {
+		if ((!e) && (this.object)) {
+			e = dojo.event.browser.fixEvent(this.window.event);
+		}
+		if ((dojo.render.html.ie) && (e.keyCode == e.KEY_TAB)) {
+			e.preventDefault();
+			e.stopPropagation();
+			this.execCommand((e.shiftKey ? "outdent" : "indent"));
+		} else {
+			if (dojo.render.html.ie) {
+				if ((65 <= e.keyCode) && (e.keyCode <= 90)) {
+					e.charCode = e.keyCode;
+					this.onKeyPress(e);
+				}
+			}
+		}
+	}, onKeyUp:function (e) {
+		return;
+	}, KEY_CTRL:1, onKeyPress:function (e) {
+		if ((!e) && (this.object)) {
+			e = dojo.event.browser.fixEvent(this.window.event);
+		}
+		var modifiers = e.ctrlKey ? this.KEY_CTRL : 0;
+		if (this._keyHandlers[e.key]) {
+			var handlers = this._keyHandlers[e.key], i = 0, handler;
+			while (handler = handlers[i++]) {
+				if (modifiers == handler.modifiers) {
+					e.preventDefault();
+					handler.handler.call(this);
+					break;
+				}
+			}
+		}
+		dojo.lang.setTimeout(this, this.onKeyPressed, 1, e);
+	}, addKeyHandler:function (key, modifiers, handler) {
+		if (!(this._keyHandlers[key] instanceof Array)) {
+			this._keyHandlers[key] = [];
+		}
+		this._keyHandlers[key].push({modifiers:modifiers || 0, handler:handler});
+	}, onKeyPressed:function (e) {
+		this.onDisplayChanged();
+	}, onClick:function (e) {
+		this.onDisplayChanged(e);
+	}, onBlur:function (e) {
+	}, _initialFocus:true, onFocus:function (e) {
+		if ((dojo.render.html.mozilla) && (this._initialFocus)) {
+			this._initialFocus = false;
+			if (dojo.string.trim(this.editNode.innerHTML) == "&nbsp;") {
+				this.placeCursorAtStart();
+			}
+		}
+	}, blur:function () {
+		if (this.iframe) {
+			this.window.blur();
+		} else {
+			if (this.object) {
+				this.document.body.blur();
+			} else {
+				if (this.editNode) {
+					this.editNode.blur();
+				}
+			}
+		}
+	}, focus:function () {
+		if (this.iframe && !dojo.render.html.ie) {
+			this.window.focus();
+		} else {
+			if (this.object) {
+				this.document.focus();
+			} else {
+				if (this.editNode && this.editNode.focus) {
+					this.editNode.focus();
+				} else {
+					dojo.debug("Have no idea how to focus into the editor!");
+				}
+			}
+		}
+	}, onDisplayChanged:function (e) {
+	}, _activeX:{command:{bold:5000, italic:5023, underline:5048, justifycenter:5024, justifyleft:5025, justifyright:5026, cut:5003, copy:5002, paste:5032, "delete":5004, undo:5049, redo:5033, removeformat:5034, selectall:5035, unlink:5050, indent:5018, outdent:5031, insertorderedlist:5030, insertunorderedlist:5051, inserttable:5022, insertcell:5019, insertcol:5020, insertrow:5021, deletecells:5005, deletecols:5006, deleterows:5007, mergecells:5029, splitcell:5047, setblockformat:5043, getblockformat:5011, getblockformatnames:5012, setfontname:5044, getfontname:5013, setfontsize:5045, getfontsize:5014, setbackcolor:5042, getbackcolor:5010, setforecolor:5046, getforecolor:5015, findtext:5008, font:5009, hyperlink:5016, image:5017, lockelement:5027, makeabsolute:5028, sendbackward:5036, bringforward:5037, sendbelowtext:5038, bringabovetext:5039, sendtoback:5040, bringtofront:5041, properties:5052}, ui:{"default":0, prompt:1, noprompt:2}, status:{notsupported:0, disabled:1, enabled:3, latched:7, ninched:11}, appearance:{flat:0, inset:1}, state:{unchecked:0, checked:1, gray:2}}, _normalizeCommand:function (cmd) {
+		var drh = dojo.render.html;
+		var command = cmd.toLowerCase();
+		if (command == "formatblock") {
+			if (drh.safari) {
+				command = "heading";
+			}
+		} else {
+			if (this.object) {
+				switch (command) {
+				  case "createlink":
+					command = "hyperlink";
+					break;
+				  case "insertimage":
+					command = "image";
+					break;
+				}
+			} else {
+				if (command == "hilitecolor" && !drh.mozilla) {
+					command = "backcolor";
+				}
+			}
+		}
+		return command;
+	}, _safariIsLeopard:function () {
+		var gt420 = false;
+		if (dojo.render.html.safari) {
+			var tmp = dojo.render.html.UA.split("AppleWebKit/")[1];
+			var ver = parseFloat(tmp.split(" ")[0]);
+			if (ver >= 420) {
+				gt420 = true;
+			}
+		}
+		return gt420;
+	}, queryCommandAvailable:function (command) {
+		var ie = 1;
+		var mozilla = 1 << 1;
+		var safari = 1 << 2;
+		var opera = 1 << 3;
+		var safari420 = 1 << 4;
+		var gt420 = this._safariIsLeopard();
+		function isSupportedBy(browsers) {
+			return {ie:Boolean(browsers & ie), mozilla:Boolean(browsers & mozilla), safari:Boolean(browsers & safari), safari420:Boolean(browsers & safari420), opera:Boolean(browsers & opera)};
+		}
+		var supportedBy = null;
+		switch (command.toLowerCase()) {
+		  case "bold":
+		  case "italic":
+		  case "underline":
+		  case "subscript":
+		  case "superscript":
+		  case "fontname":
+		  case "fontsize":
+		  case "forecolor":
+		  case "hilitecolor":
+		  case "justifycenter":
+		  case "justifyfull":
+		  case "justifyleft":
+		  case "justifyright":
+		  case "delete":
+		  case "selectall":
+			supportedBy = isSupportedBy(mozilla | ie | safari | opera);
+			break;
+		  case "createlink":
+		  case "unlink":
+		  case "removeformat":
+		  case "inserthorizontalrule":
+		  case "insertimage":
+		  case "insertorderedlist":
+		  case "insertunorderedlist":
+		  case "indent":
+		  case "outdent":
+		  case "formatblock":
+		  case "inserthtml":
+		  case "undo":
+		  case "redo":
+		  case "strikethrough":
+			supportedBy = isSupportedBy(mozilla | ie | opera | safari420);
+			break;
+		  case "blockdirltr":
+		  case "blockdirrtl":
+		  case "dirltr":
+		  case "dirrtl":
+		  case "inlinedirltr":
+		  case "inlinedirrtl":
+			supportedBy = isSupportedBy(ie);
+			break;
+		  case "cut":
+		  case "copy":
+		  case "paste":
+			supportedBy = isSupportedBy(ie | mozilla | safari420);
+			break;
+		  case "inserttable":
+			supportedBy = isSupportedBy(mozilla | (this.object ? ie : 0));
+			break;
+		  case "insertcell":
+		  case "insertcol":
+		  case "insertrow":
+		  case "deletecells":
+		  case "deletecols":
+		  case "deleterows":
+		  case "mergecells":
+		  case "splitcell":
+			supportedBy = isSupportedBy(this.object ? ie : 0);
+			break;
+		  default:
+			return false;
+		}
+		return (dojo.render.html.ie && supportedBy.ie) || (dojo.render.html.mozilla && supportedBy.mozilla) || (dojo.render.html.safari && supportedBy.safari) || (gt420 && supportedBy.safari420) || (dojo.render.html.opera && supportedBy.opera);
+	}, execCommand:function (command, argument) {
+		var returnValue;
+		this.focus();
+		command = this._normalizeCommand(command);
+		if (argument != undefined) {
+			if (command == "heading") {
+				throw new Error("unimplemented");
+			} else {
+				if (command == "formatblock") {
+					if (this.object) {
+						argument = this._native2LocalFormatNames[argument];
+					} else {
+						if (dojo.render.html.ie) {
+							argument = "<" + argument + ">";
+						}
+					}
+				}
+			}
+		}
+		if (this.object) {
+			switch (command) {
+			  case "hilitecolor":
+				command = "setbackcolor";
+				break;
+			  case "forecolor":
+			  case "backcolor":
+			  case "fontsize":
+			  case "fontname":
+				command = "set" + command;
+				break;
+			  case "formatblock":
+				command = "setblockformat";
+			}
+			if (command == "strikethrough") {
+				command = "inserthtml";
+				var range = this.document.selection.createRange();
+				if (!range.htmlText) {
+					return;
+				}
+				argument = range.htmlText.strike();
+			} else {
+				if (command == "inserthorizontalrule") {
+					command = "inserthtml";
+					argument = "<hr>";
+				}
+			}
+			if (command == "inserthtml") {
+				var range = this.document.selection.createRange();
+				if (this.document.selection.type.toUpperCase() == "CONTROL") {
+					for (var i = 0; i < range.length; i++) {
+						range.item(i).outerHTML = argument;
+					}
+				} else {
+					range.pasteHTML(argument);
+					range.select();
+				}
+				returnValue = true;
+			} else {
+				if (arguments.length == 1) {
+					returnValue = this.object.ExecCommand(this._activeX.command[command], this._activeX.ui.noprompt);
+				} else {
+					returnValue = this.object.ExecCommand(this._activeX.command[command], this._activeX.ui.noprompt, argument);
+				}
+			}
+		} else {
+			if (command == "inserthtml") {
+				if (dojo.render.html.ie) {
+					var insertRange = this.document.selection.createRange();
+					insertRange.pasteHTML(argument);
+					insertRange.select();
+					return true;
+				} else {
+					return this.document.execCommand(command, false, argument);
+				}
+			} else {
+				if ((command == "unlink") && (this.queryCommandEnabled("unlink")) && (dojo.render.html.mozilla)) {
+					var selection = this.window.getSelection();
+					var selectionRange = selection.getRangeAt(0);
+					var selectionStartContainer = selectionRange.startContainer;
+					var selectionStartOffset = selectionRange.startOffset;
+					var selectionEndContainer = selectionRange.endContainer;
+					var selectionEndOffset = selectionRange.endOffset;
+					var a = dojo.withGlobal(this.window, "getAncestorElement", dojo.html.selection, ["a"]);
+					dojo.withGlobal(this.window, "selectElement", dojo.html.selection, [a]);
+					returnValue = this.document.execCommand("unlink", false, null);
+					var selectionRange = this.document.createRange();
+					selectionRange.setStart(selectionStartContainer, selectionStartOffset);
+					selectionRange.setEnd(selectionEndContainer, selectionEndOffset);
+					selection.removeAllRanges();
+					selection.addRange(selectionRange);
+					return returnValue;
+				} else {
+					if ((command == "hilitecolor") && (dojo.render.html.mozilla)) {
+						this.document.execCommand("useCSS", false, false);
+						returnValue = this.document.execCommand(command, false, argument);
+						this.document.execCommand("useCSS", false, true);
+					} else {
+						if ((dojo.render.html.ie) && ((command == "backcolor") || (command == "forecolor"))) {
+							argument = arguments.length > 1 ? argument : null;
+							returnValue = this.document.execCommand(command, false, argument);
+						} else {
+							argument = arguments.length > 1 ? argument : null;
+							if (argument || command != "createlink") {
+								returnValue = this.document.execCommand(command, false, argument);
+							}
+						}
+					}
+				}
+			}
+		}
+		this.onDisplayChanged();
+		return returnValue;
+	}, queryCommandEnabled:function (command) {
+		command = this._normalizeCommand(command);
+		if (this.object) {
+			switch (command) {
+			  case "hilitecolor":
+				command = "setbackcolor";
+				break;
+			  case "forecolor":
+			  case "backcolor":
+			  case "fontsize":
+			  case "fontname":
+				command = "set" + command;
+				break;
+			  case "formatblock":
+				command = "setblockformat";
+				break;
+			  case "strikethrough":
+				command = "bold";
+				break;
+			  case "inserthorizontalrule":
+				return true;
+			}
+			if (typeof this._activeX.command[command] == "undefined") {
+				return false;
+			}
+			var status = this.object.QueryStatus(this._activeX.command[command]);
+			return ((status != this._activeX.status.notsupported) && (status != this._activeX.status.disabled));
+		} else {
+			if (dojo.render.html.mozilla) {
+				if (command == "unlink") {
+					return dojo.withGlobal(this.window, "hasAncestorElement", dojo.html.selection, ["a"]);
+				} else {
+					if (command == "inserttable") {
+						return true;
+					}
+				}
+			}
+			var elem = (dojo.render.html.ie) ? this.document.selection.createRange() : this.document;
+			return elem.queryCommandEnabled(command);
+		}
+	}, queryCommandState:function (command) {
+		command = this._normalizeCommand(command);
+		if (this.object) {
+			if (command == "forecolor") {
+				command = "setforecolor";
+			} else {
+				if (command == "backcolor") {
+					command = "setbackcolor";
+				} else {
+					if (command == "strikethrough") {
+						return dojo.withGlobal(this.window, "hasAncestorElement", dojo.html.selection, ["strike"]);
+					} else {
+						if (command == "inserthorizontalrule") {
+							return false;
+						}
+					}
+				}
+			}
+			if (typeof this._activeX.command[command] == "undefined") {
+				return null;
+			}
+			var status = this.object.QueryStatus(this._activeX.command[command]);
+			return ((status == this._activeX.status.latched) || (status == this._activeX.status.ninched));
+		} else {
+			return this.document.queryCommandState(command);
+		}
+	}, queryCommandValue:function (command) {
+		command = this._normalizeCommand(command);
+		if (this.object) {
+			switch (command) {
+			  case "forecolor":
+			  case "backcolor":
+			  case "fontsize":
+			  case "fontname":
+				command = "get" + command;
+				return this.object.execCommand(this._activeX.command[command], this._activeX.ui.noprompt);
+			  case "formatblock":
+				var retvalue = this.object.execCommand(this._activeX.command["getblockformat"], this._activeX.ui.noprompt);
+				if (retvalue) {
+					return this._local2NativeFormatNames[retvalue];
+				}
+			}
+		} else {
+			if (dojo.render.html.ie && command == "formatblock") {
+				return this._local2NativeFormatNames[this.document.queryCommandValue(command)] || this.document.queryCommandValue(command);
+			}
+			return this.document.queryCommandValue(command);
+		}
+	}, placeCursorAtStart:function () {
+		this.focus();
+		if (dojo.render.html.moz && this.editNode.firstChild && this.editNode.firstChild.nodeType != dojo.dom.TEXT_NODE) {
+			dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode.firstChild]);
+		} else {
+			dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode]);
+		}
+		dojo.withGlobal(this.window, "collapse", dojo.html.selection, [true]);
+	}, placeCursorAtEnd:function () {
+		this.focus();
+		if (dojo.render.html.moz && this.editNode.lastChild && this.editNode.lastChild.nodeType != dojo.dom.TEXT_NODE) {
+			dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode.lastChild]);
+		} else {
+			dojo.withGlobal(this.window, "selectElementChildren", dojo.html.selection, [this.editNode]);
+		}
+		dojo.withGlobal(this.window, "collapse", dojo.html.selection, [false]);
+	}, replaceEditorContent:function (html) {
+		html = this._preFilterContent(html);
+		if (this.isClosed) {
+			this.domNode.innerHTML = html;
+		} else {
+			if (this.window && this.window.getSelection && !dojo.render.html.moz) {
+				this.editNode.innerHTML = html;
+			} else {
+				if ((this.window && this.window.getSelection) || (this.document && this.document.selection)) {
+					this.execCommand("selectall");
+					if (dojo.render.html.moz && !html) {
+						html = "&nbsp;";
+					}
+					this.execCommand("inserthtml", html);
+				}
+			}
+		}
+	}, _preFilterContent:function (html) {
+		var ec = html;
+		dojo.lang.forEach(this.contentPreFilters, function (ef) {
+			ec = ef(ec);
+		});
+		if (this.contentDomPreFilters.length > 0) {
+			var dom = dojo.doc().createElement("div");
+			dom.style.display = "none";
+			dojo.body().appendChild(dom);
+			dom.innerHTML = ec;
+			dojo.lang.forEach(this.contentDomPreFilters, function (ef) {
+				dom = ef(dom);
+			});
+			ec = dom.innerHTML;
+			dojo.body().removeChild(dom);
+		}
+		return ec;
+	}, _postFilterContent:function (html) {
+		var ec = html;
+		if (this.contentDomPostFilters.length > 0) {
+			var dom = this.document.createElement("div");
+			dom.innerHTML = ec;
+			dojo.lang.forEach(this.contentDomPostFilters, function (ef) {
+				dom = ef(dom);
+			});
+			ec = dom.innerHTML;
+		}
+		dojo.lang.forEach(this.contentPostFilters, function (ef) {
+			ec = ef(ec);
+		});
+		return ec;
+	}, _lastHeight:0, _updateHeight:function () {
+		if (!this.isLoaded) {
+			return;
+		}
+		if (this.height) {
+			return;
+		}
+		var height = dojo.html.getBorderBox(this.editNode).height;
+		if (!height) {
+			height = dojo.html.getBorderBox(this.document.body).height;
+		}
+		if (height == 0) {
+			dojo.debug("Can not figure out the height of the editing area!");
+			return;
+		}
+		this._lastHeight = height;
+		this.editorObject.style.height = this._lastHeight + "px";
+		this.window.scrollTo(0, 0);
+	}, _saveContent:function (e) {
+		var saveTextarea = dojo.doc().getElementById("dojo.widget.RichText.savedContent");
+		saveTextarea.value += this._SEPARATOR + this.saveName + ":" + this.getEditorContent();
+	}, getEditorContent:function () {
+		var ec = "";
+		try {
+			ec = (this._content.length > 0) ? this._content : this.editNode.innerHTML;
+			if (dojo.string.trim(ec) == "&nbsp;") {
+				ec = "";
+			}
+		}
+		catch (e) {
+		}
+		if (dojo.render.html.ie && !this.object) {
+			var re = new RegExp("(?:<p>&nbsp;</p>[\n\r]*)+$", "i");
+			ec = ec.replace(re, "");
+		}
+		ec = this._postFilterContent(ec);
+		if (this.relativeImageUrls) {
+			var siteBase = dojo.global().location.protocol + "//" + dojo.global().location.host;
+			var pathBase = dojo.global().location.pathname;
+			if (pathBase.match(/\/$/)) {
+			} else {
+				var pathParts = pathBase.split("/");
+				if (pathParts.length) {
+					pathParts.pop();
+				}
+				pathBase = pathParts.join("/") + "/";
+			}
+			var sameSite = new RegExp("(<img[^>]* src=[\"'])(" + siteBase + "(" + pathBase + ")?)", "ig");
+			ec = ec.replace(sameSite, "$1");
+		}
+		return ec;
+	}, close:function (save, force) {
+		if (this.isClosed) {
+			return false;
+		}
+		if (arguments.length == 0) {
+			save = true;
+		}
+		this._content = this._postFilterContent(this.editNode.innerHTML);
+		var changed = (this.savedContent != this._content);
+		if (this.interval) {
+			clearInterval(this.interval);
+		}
+		if (dojo.render.html.ie && !this.object) {
+			dojo.event.browser.clean(this.editNode);
+		}
+		if (this.iframe) {
+			delete this.iframe;
+		}
+		if (this.textarea) {
+			with (this.textarea.style) {
+				position = "";
+				left = top = "";
+				if (dojo.render.html.ie) {
+					overflow = this.__overflow;
+					this.__overflow = null;
+				}
+			}
+			if (save) {
+				this.textarea.value = this._content;
+			} else {
+				this.textarea.value = this.savedContent;
+			}
+			dojo.html.removeNode(this.domNode);
+			this.domNode = this.textarea;
+		} else {
+			if (save) {
+				if (dojo.render.html.moz) {
+					var nc = dojo.doc().createElement("span");
+					this.domNode.appendChild(nc);
+					nc.innerHTML = this.editNode.innerHTML;
+				} else {
+					this.domNode.innerHTML = this._content;
+				}
+			} else {
+				this.domNode.innerHTML = this.savedContent;
+			}
+		}
+		dojo.html.removeClass(this.domNode, "RichTextEditable");
+		this.isClosed = true;
+		this.isLoaded = false;
+		delete this.editNode;
+		if (this.window._frameElement) {
+			this.window._frameElement = null;
+		}
+		this.window = null;
+		this.document = null;
+		this.object = null;
+		this.editingArea = null;
+		this.editorObject = null;
+		return changed;
+	}, destroyRendering:function () {
+	}, destroy:function () {
+		this.destroyRendering();
+		if (!this.isClosed) {
+			this.close(false);
+		}
+		dojo.widget.RichText.superclass.destroy.call(this);
+	}, connect:function (targetObj, targetFunc, thisFunc) {
+		dojo.event.connect(targetObj, targetFunc, this, thisFunc);
+	}, disconnect:function (targetObj, targetFunc, thisFunc) {
+		dojo.event.disconnect(targetObj, targetFunc, this, thisFunc);
+	}, disconnectAllWithRoot:function (targetObj) {
+		dojo.deprecated("disconnectAllWithRoot", "is deprecated. No need to disconnect manually", "0.5");
+	}, _fixContentForMoz:function (html) {
+		html = html.replace(/<strong([ \>])/gi, "<b$1");
+		html = html.replace(/<\/strong>/gi, "</b>");
+		html = html.replace(/<em([ \>])/gi, "<i$1");
+		html = html.replace(/<\/em>/gi, "</i>");
+		return html;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/RemoteTabController.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -32211,6 +66096,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.RemoteTabController");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.TabContainer");
@@ -32239,6 +66126,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Toolbar");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.html.style");
@@ -32952,6 +66841,311 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeRpcControllerV3.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeRpcControllerV3"], ["require", "dojo.event.*"], ["require", "dojo.json"], ["require", "dojo.io.*"], ["require", "dojo.widget.TreeLoadingControllerV3"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeRpcControllerV3");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.widget.TreeLoadingControllerV3");
+	dojo.widget.defineWidget("dojo.widget.TreeRpcControllerV3", dojo.widget.TreeLoadingControllerV3, {extraRpcOnEdit:false, doMove:function (child, newParent, index, sync) {
+		var params = {child:this.getInfo(child), childTree:this.getInfo(child.tree), oldParent:this.getInfo(child.parent), oldParentTree:this.getInfo(child.parent.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), newIndex:index};
+		var deferred = this.runRpc({url:this.getRpcUrl("move"), sync:sync, params:params});
+		var _this = this;
+		var args = arguments;
+		deferred.addCallback(function () {
+			dojo.widget.TreeBasicControllerV3.prototype.doMove.apply(_this, args);
+		});
+		return deferred;
+	}, prepareDetach:function (node, sync) {
+		var deferred = this.startProcessing(node);
+		return deferred;
+	}, finalizeDetach:function (node) {
+		this.finishProcessing(node);
+	}, doDetach:function (node, sync) {
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
+		var deferred = this.runRpc({url:this.getRpcUrl("detach"), sync:sync, params:params});
+		var _this = this;
+		var args = arguments;
+		deferred.addCallback(function () {
+			dojo.widget.TreeBasicControllerV3.prototype.doDetach.apply(_this, args);
+		});
+		return deferred;
+	}, requestEditConfirmation:function (node, action, sync) {
+		if (!this.extraRpcOnEdit) {
+			return dojo.Deferred.prototype.makeCalled();
+		}
+		var _this = this;
+		var deferred = this.startProcessing(node);
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
+		deferred.addCallback(function () {
+			return _this.runRpc({url:_this.getRpcUrl(action), sync:sync, params:params});
+		});
+		deferred.addBoth(function (r) {
+			_this.finishProcessing(node);
+			return r;
+		});
+		return deferred;
+	}, editLabelSave:function (node, newContent, sync) {
+		var deferred = this.startProcessing(node);
+		var _this = this;
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree), newContent:newContent};
+		deferred.addCallback(function () {
+			return _this.runRpc({url:_this.getRpcUrl("editLabelSave"), sync:sync, params:params});
+		});
+		deferred.addBoth(function (r) {
+			_this.finishProcessing(node);
+			return r;
+		});
+		return deferred;
+	}, editLabelStart:function (node, sync) {
+		if (!this.canEditLabel(node)) {
+			return false;
+		}
+		var _this = this;
+		if (!this.editor.isClosed()) {
+			var deferred = this.editLabelFinish(this.editor.saveOnBlur, sync);
+			deferred.addCallback(function () {
+				return _this.editLabelStart(node, sync);
+			});
+			return deferred;
+		}
+		var deferred = this.requestEditConfirmation(node, "editLabelStart", sync);
+		deferred.addCallback(function () {
+			_this.doEditLabelStart(node);
+		});
+		return deferred;
+	}, editLabelFinish:function (save, sync) {
+		var _this = this;
+		var node = this.editor.node;
+		var deferred = dojo.Deferred.prototype.makeCalled();
+		if (!save && !node.isPhantom) {
+			deferred = this.requestEditConfirmation(this.editor.node, "editLabelFinishCancel", sync);
+		}
+		if (save) {
+			if (node.isPhantom) {
+				deferred = this.sendCreateChildRequest(node.parent, node.getParentIndex(), {title:this.editor.getContents()}, sync);
+			} else {
+				deferred = this.editLabelSave(node, this.editor.getContents(), sync);
+			}
+		}
+		deferred.addCallback(function (server_data) {
+			_this.doEditLabelFinish(save, server_data);
+		});
+		deferred.addErrback(function (r) {
+			_this.doEditLabelFinish(false);
+			return false;
+		});
+		return deferred;
+	}, createAndEdit:function (parent, index, sync) {
+		var data = {title:parent.tree.defaultChildTitle};
+		if (!this.canCreateChild(parent, index, data)) {
+			return false;
+		}
+		if (!this.editor.isClosed()) {
+			var deferred = this.editLabelFinish(this.editor.saveOnBlur, sync);
+			deferred.addCallback(function () {
+				return _this.createAndEdit(parent, index, sync);
+			});
+			return deferred;
+		}
+		var _this = this;
+		var deferred = this.prepareCreateChild(parent, index, data, sync);
+		deferred.addCallback(function () {
+			var child = _this.makeDefaultNode(parent, index);
+			child.isPhantom = true;
+			return child;
+		});
+		deferred.addBoth(function (r) {
+			_this.finalizeCreateChild(parent, index, data, sync);
+			return r;
+		});
+		deferred.addCallback(function (child) {
+			var d = _this.exposeCreateChild(parent, index, data, sync);
+			d.addCallback(function () {
+				return child;
+			});
+			return d;
+		});
+		deferred.addCallback(function (child) {
+			_this.doEditLabelStart(child);
+			return child;
+		});
+		return deferred;
+	}, prepareDestroyChild:function (node, sync) {
+		var deferred = this.startProcessing(node);
+		return deferred;
+	}, finalizeDestroyChild:function (node) {
+		this.finishProcessing(node);
+	}, doDestroyChild:function (node, sync) {
+		var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
+		var deferred = this.runRpc({url:this.getRpcUrl("destroyChild"), sync:sync, params:params});
+		var _this = this;
+		var args = arguments;
+		deferred.addCallback(function () {
+			dojo.widget.TreeBasicControllerV3.prototype.doDestroyChild.apply(_this, args);
+		});
+		return deferred;
+	}, sendCreateChildRequest:function (parent, index, data, sync) {
+		var params = {tree:this.getInfo(parent.tree), parent:this.getInfo(parent), index:index, data:data};
+		var deferred = this.runRpc({url:this.getRpcUrl("createChild"), sync:sync, params:params});
+		return deferred;
+	}, doCreateChild:function (parent, index, data, sync) {
+		if (dojo.lang.isUndefined(data.title)) {
+			data.title = parent.tree.defaultChildTitle;
+		}
+		var deferred = this.sendCreateChildRequest(parent, index, data, sync);
+		var _this = this;
+		var args = arguments;
+		deferred.addCallback(function (server_data) {
+			dojo.lang.mixin(data, server_data);
+			return dojo.widget.TreeBasicControllerV3.prototype.doCreateChild.call(_this, parent, index, data);
+		});
+		return deferred;
+	}, doClone:function (child, newParent, index, deep, sync) {
+		var params = {child:this.getInfo(child), oldParent:this.getInfo(child.parent), oldParentTree:this.getInfo(child.parent.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), index:index, deep:deep ? true : false, tree:this.getInfo(child.tree)};
+		var deferred = this.runRpc({url:this.getRpcUrl("clone"), sync:sync, params:params});
+		var _this = this;
+		var args = arguments;
+		deferred.addCallback(function () {
+			dojo.widget.TreeBasicControllerV3.prototype.doClone.apply(_this, args);
+		});
+		return deferred;
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeWithNode.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.lang.declare"], ["provide", "dojo.widget.TreeWithNode"]], definePackage:function (dojo) {
+	dojo.require("dojo.lang.declare");
+	dojo.provide("dojo.widget.TreeWithNode");
+	dojo.declare("dojo.widget.TreeWithNode", null, function () {
+	}, {loadStates:{UNCHECKED:"UNCHECKED", LOADING:"LOADING", LOADED:"LOADED"}, state:"UNCHECKED", objectId:"", isContainer:true, lockLevel:0, lock:function () {
+		this.lockLevel++;
+	}, unlock:function () {
+		if (!this.lockLevel) {
+			dojo.raise(this.widgetType + " unlock: not locked");
+		}
+		this.lockLevel--;
+	}, expandLevel:0, loadLevel:0, hasLock:function () {
+		return this.lockLevel > 0;
+	}, isLocked:function () {
+		var node = this;
+		while (true) {
+			if (node.lockLevel) {
+				return true;
+			}
+			if (!node.parent || node.isTree) {
+				break;
+			}
+			node = node.parent;
+		}
+		return false;
+	}, flushLock:function () {
+		this.lockLevel = 0;
+	}, actionIsDisabled:function (action) {
+		var disabled = false;
+		if (dojo.lang.inArray(this.actionsDisabled, action)) {
+			disabled = true;
+		}
+		if (this.isTreeNode) {
+			if (!this.tree.allowAddChildToLeaf && action == this.actions.ADDCHILD && !this.isFolder) {
+				disabled = true;
+			}
+		}
+		return disabled;
+	}, actionIsDisabledNow:function (action) {
+		return this.actionIsDisabled(action) || this.isLocked();
+	}, setChildren:function (childrenArray) {
+		if (this.isTreeNode && !this.isFolder) {
+			this.setFolder();
+		} else {
+			if (this.isTreeNode) {
+				this.state = this.loadStates.LOADED;
+			}
+		}
+		var hadChildren = this.children.length > 0;
+		if (hadChildren && childrenArray) {
+			this.destroyChildren();
+		}
+		if (childrenArray) {
+			this.children = childrenArray;
+		}
+		var hasChildren = this.children.length > 0;
+		if (this.isTreeNode && hasChildren != hadChildren) {
+			this.viewSetHasChildren();
+		}
+		for (var i = 0; i < this.children.length; i++) {
+			var child = this.children[i];
+			if (!(child instanceof dojo.widget.Widget)) {
+				child = this.children[i] = this.tree.createNode(child);
+				var childWidgetCreated = true;
+			} else {
+				var childWidgetCreated = false;
+			}
+			if (!child.parent) {
+				child.parent = this;
+				if (this.tree !== child.tree) {
+					child.updateTree(this.tree);
+				}
+				child.viewAddLayout();
+				this.containerNode.appendChild(child.domNode);
+				var message = {child:child, index:i, parent:this, childWidgetCreated:childWidgetCreated};
+				delete dojo.widget.manager.topWidgets[child.widgetId];
+				dojo.event.topic.publish(this.tree.eventNames.afterAddChild, message);
+			}
+			if (this.tree.eagerWidgetInstantiation) {
+				dojo.lang.forEach(this.children, function (child) {
+					child.setChildren();
+				});
+			}
+		}
+	}, doAddChild:function (child, index) {
+		return this.addChild(child, index, true);
+	}, addChild:function (child, index, dontPublishEvent) {
+		if (dojo.lang.isUndefined(index)) {
+			index = this.children.length;
+		}
+		if (!child.isTreeNode) {
+			dojo.raise("You can only add TreeNode widgets to a " + this.widgetType + " widget!");
+			return;
+		}
+		this.children.splice(index, 0, child);
+		child.parent = this;
+		child.addedTo(this, index, dontPublishEvent);
+		delete dojo.widget.manager.topWidgets[child.widgetId];
+	}, onShow:function () {
+		this.animationInProgress = false;
+	}, onHide:function () {
+		this.animationInProgress = false;
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/SvgButton.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -32963,6 +67157,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.SvgButton");
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.widget.SvgButton");
@@ -33052,6 +67248,342 @@
 };
 
 
+__CPAN_FILE__ src/widget/HslColorPicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.svg.HslColorPicker"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.HslColorPicker"], ["require", "dojo.math"], ["require", "dojo.svg"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.color.hsl"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.svg.HslColorPicker");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.HslColorPicker");
+	dojo.require("dojo.math");
+	dojo.require("dojo.svg");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.gfx.color.hsl");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.svg.HslColorPicker");
+	dojo.widget.defineWidget("dojo.widget.svg.HslColorPicker", dojo.widget.HtmlWidget, function () {
+		dojo.debug("warning: the HslColorPicker is not a finished widget, and is not yet ready for general use");
+		this.filterObject = {};
+	}, {hue:"0", saturation:"0", light:"0", storedColor:"#0054aa", templateString:"<svg xmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\tversion=\"1.1\" baseProfile=\"full\" width=\"170\" height=\"131\" xmlns:html=\"http://www.w3.org/1999/xhtml\">\n\t<defs>\n\t<linearGradient id=\"colorGradient\" dojoAttachPoint=\"colorGradientNode\" x1=\"0\" x2=\"131\" y1=\"0\" y2=\"0\" gradientUnits=\"userSpaceOnUse\">\n\t\t<stop id=\"leftGradientColor\" dojoAttachPoint=\"leftGradientColorNode\" offset=\"0%\" stop-color=\"#828282\"/>\n\t\t<stop id=\"rightGradientColor\" dojoAttachPoint=\"rightGradientColorNode\" offset=\"100%\" stop-color=\"#053fff\"/>\n\t</linearGradient>\n\t<linearGradient id=\"verticalGradient\" x1=\"0\" x2=\"0\" y1=\"0\" y2=\"131\" gradientUnits=\"userSpaceOnUse\">\n\t\t<stop offset=\"0%\" style=\"stop-color:#000000;\"/>\n\t\t<stop offset=\"50%\" style=\"stop-color:#000000;stop-opacity:0;\"/>\n\t\t<stop offset=\"50%\" style=\"stop-color:#ffffff;stop-opacity:0;\"/>\n\t\t<stop offset=\"100%\" style=\"stop-color:#ffffff;\"/>\n\t</linearGradient>\n\t<linearGradient id=\"sliderGradient\">\n\t\t<stop offset=\"0%\" style=\"stop-color:#000000;\"/>\n\t\t<stop offset=\"15%\" style=\"stop-color:#ffffff;\"/>\n\t\t<stop offset=\"30%\" style=\"stop-color:#000000;\"/>\n\t\t<stop offset=\"45%\" style=\"stop-color:#ffffff;\"/>\n\t\t<stop offset=\"60%\" style=\"stop-color:#000000;\"/>\n\t\t<stop offset=\"75%\" style=\"stop-color:#ffffff;\"/>\n\t\t<stop offset=\"90%\" style=\"stop-color:#000000;\"/>\n\t</linearGradient>\n</defs>\n\t<rect x=\"0\" y=\"0\" width=\"131px\" height=\"131px\" fill=\"url(#colorGradient)\"/>\n\t<rect x=\"0\" y=\"0\" width=\"131px\" height=\"131px\" style=\"fill:url(#verticalGradient);\"/>\n\t<rect id=\"saturationLightSlider\" dojoAttachPoint=\"saturationLightSliderNode\" x=\"100\" y=\"100\" width=\"5px\" height=\"5px\" style=\"stroke:url(#sliderGradient);stroke-width:1px;fill-opacity:0;\"/>\n\t<image xlink:href=\"images/hue.png\" dojoAttachPoint=\"hueNode\" x=\"140px\" y=\"0px\" width=\"21px\" height=\"131px\" dojoAttachEvent=\"onclick: onHueClick;\"/>\n\t<rect dojoAttachPoint=\"hueSliderNode\" x=\"139px\" y=\"40px\" width=\"24px\" height=\"4px\" style=\"stroke-opacity:1;fill-opacity:0;stroke:black;\"/>\n</svg>\n", fillInTemplate:function () {
+		this.height = "131px";
+		this.svgDoc = this.hueNode.ownerDocument;
+		this.leftGradientColorNode = this.hueNode.ownerDocument.getElementById("leftGradientColor");
+		this.rightGradientColorNode = this.hueNode.ownerDocument.getElementById("rightGradientColor");
+		this.hueNode.setAttributeNS(dojo.dom.xmlns.xlink, "href", dojo.uri.moduleUri("dojo.widget", "templates/images/hue.png"));
+		var hsl = dojo.gfx.color.hex2hsl(this.storedColor);
+		this.hue = hsl[0];
+		this.saturation = hsl[1];
+		this.light = hsl[2];
+		this.setSaturationStopColors();
+	}, setSaturationStopColors:function () {
+		this.leftGradientStopColor = dojo.gfx.color.rgb2hex(this.hsl2rgb(this.hue, 0, 50));
+		this.rightGradientStopColor = dojo.gfx.color.rgb2hex(this.hsl2rgb(this.hue, 100, 50));
+		this.leftGradientColorNode.setAttributeNS(null, "stop-color", this.leftGradientStopColor);
+		this.rightGradientColorNode.setAttributeNS(null, "stop-color", this.rightGradientStopColor);
+	}, setHue:function (hue) {
+		this.hue = hue;
+	}, setHueSlider:function () {
+		this.hueSliderNode.setAttribute("y", parseInt((this.hue / 360) * parseInt(this.height) - 2) + "px");
+	}, setSaturationLight:function (saturation, light) {
+		this.saturation = saturation;
+		this.light = light;
+	}, setSaturationLightSlider:function () {
+	}, onHueClick:function (evt) {
+		var yPosition = parseInt(evt.clientY) - parseInt(evt.target.getAttribute("y"));
+		this.setHue(360 - parseInt(yPosition * (360 / parseInt(this.height))));
+		this.setSaturationStopColors();
+		this.setStoredColor(dojo.gfx.color.hsl2hex(this.hue, this.saturation, this.light));
+	}, onHueDrag:function (evt) {
+	}, onSaturationLightClick:function (evt) {
+		var xPosition = parseInt(evt.clientX) - parseInt(evt.target.getAttribute("y"));
+		var yPosition = parseInt(evt.clientY) - parseInt(evt.target.getAttribute("y"));
+		var saturation = parseInt(parseInt(xPosition) * (101 / 106));
+		var light = parseInt(parseInt(yPosition) * (101 / 106));
+		this.setSaturationLight(saturation, light);
+		this.setStoredColor(dojo.gfx.color.hsl2hex(this.hue, this.saturation, this.light));
+	}, onSaturationLightDrag:function (evt) {
+	}, getStoredColor:function () {
+		return this.storedColor;
+	}, setStoredColor:function (rgbHexColor) {
+		this.storedColor = rgbHexColor;
+		dojo.event.topic.publish("/" + this.widgetId + "/setStoredColor", this.filterObject);
+	}, hsl2rgb:function (hue, saturation, light) {
+		function rgb(q1, q2, hue) {
+			if (hue > 360) {
+				hue = hue - 360;
+			}
+			if (hue < 0) {
+				hue = hue + 360;
+			}
+			if (hue < 60) {
+				return (q1 + (q2 - q1) * hue / 60);
+			} else {
+				if (hue < 180) {
+					return (q2);
+				} else {
+					if (hue < 240) {
+						return (q1 + (q2 - q1) * (240 - hue) / 60);
+					} else {
+						return (q1);
+					}
+				}
+			}
+		}
+		this.rgb = rgb;
+		if (saturation == 0) {
+			return [Math.round(light * 255 / 100), Math.round(light * 255 / 100), Math.round(light * 255 / 100)];
+		} else {
+			light = light / 100;
+			saturation = saturation / 100;
+			if ((light) < 0.5) {
+				var temp2 = (light) * (1 + saturation);
+			} else {
+				var temp2 = (light + saturation - (light * saturation));
+			}
+			var temp1 = 2 * light - temp2;
+			var rgbcolor = [];
+			rgbcolor[0] = Math.round(rgb(temp1, temp2, parseInt(hue) + 120) * 255);
+			rgbcolor[1] = Math.round(rgb(temp1, temp2, hue) * 255);
+			rgbcolor[2] = Math.round(rgb(temp1, temp2, parseInt(hue) - 120) * 255);
+			return rgbcolor;
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Toaster.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Toaster"], ["require", "dojo.widget.*"], ["require", "dojo.lfx.*"], ["require", "dojo.html.iframe"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Toaster");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.html.iframe");
+	dojo.widget.defineWidget("dojo.widget.Toaster", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"clipNode\"><div dojoAttachPoint=\"containerNode\" dojoAttachEvent=\"onClick:onSelect\"><div dojoAttachPoint=\"contentNode\"></div></div></div>", templateCssString:".dojoToasterClip {\n\tposition: absolute;\n\toverflow: hidden;\n}\n\n.dojoToasterContainer {\n\tdisplay: block;\n\tposition: absolute;\n\twidth: 17.5em;\n\tz-index: 5000;\n\tmargin: 0px;\n\tfont:0.75em Tahoma, Helvetica, Verdana, Arial;\n}\n\n.dojoToasterContent{\n\tpadding:1em;\n\tpadding-top:0.25em;\n\tbackground:#73c74a;\n}\n\n.dojoToasterMessage{ \n\tcolor:#fff;\n}\n.dojoToasterWarning{ }\n.dojoToasterError,\n.dojoToasterFatal{\n\tfont-weight:bold;\n\tcolor:#fff;\n}\n\n\n.dojoToasterWarning .dojoToasterContent{\n\tpadding:1em;\n\tpadding-top:0.25em;\n\tbackground:#d4d943;\n} \n\n.dojoToasterError .dojoToasterContent{\n\tpadding:1em;\n\tpadding-top:0.25em;\n\tbackground:#c46600;\n} \n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/Toaster.css"), messageTopic:"", messageTypes:{MESSAGE:"MESSAGE", WARNING:"WARNING", ERROR:"ERROR", FATAL:"FATAL"}, defaultType:"MESSAGE", clipCssClass:"dojoToasterClip", containerCssClass:"dojoToasterContainer", contentCssClass:"dojoToasterContent", messageCssClass:"dojoToasterMessage", warningCssClass:"dojoToasterWarning", errorCssClass:"dojoToasterError", fatalCssClass:"dojoToasterFatal", positionDirection:"br-up", positionDirectionTypes:["br-up", "br-left", "bl-up", "bl-right", "tr-down", "tr-left", "tl-down", "tl-right"], showDelay:2000, postCreate:function () {
+		this.hide();
+		dojo.html.setClass(this.clipNode, this.clipCssClass);
+		dojo.html.addClass(this.containerNode, this.containerCssClass);
+		dojo.html.setClass(this.contentNode, this.contentCssClass);
+		if (this.messageTopic) {
+			dojo.event.topic.subscribe(this.messageTopic, this, "_handleMessage");
+		}
+		if (!this.positionDirection || !dojo.lang.inArray(this.positionDirectionTypes, this.positionDirection)) {
+			this.positionDirection = this.positionDirectionTypes.BRU;
+		}
+	}, _handleMessage:function (msg) {
+		if (dojo.lang.isString(msg)) {
+			this.setContent(msg);
+		} else {
+			this.setContent(msg["message"], msg["type"], msg["delay"]);
+		}
+	}, setContent:function (msg, messageType, delay) {
+		var delay = delay || this.showDelay;
+		if (this.slideAnim && this.slideAnim.status() == "playing") {
+			dojo.lang.setTimeout(50, dojo.lang.hitch(this, function () {
+				this.setContent(msg, messageType);
+			}));
+			return;
+		} else {
+			if (this.slideAnim) {
+				this.slideAnim.stop();
+				if (this.fadeAnim) {
+					this.fadeAnim.stop();
+				}
+			}
+		}
+		if (!msg) {
+			dojo.debug(this.widgetId + ".setContent() incoming content was null, ignoring.");
+			return;
+		}
+		if (!this.positionDirection || !dojo.lang.inArray(this.positionDirectionTypes, this.positionDirection)) {
+			dojo.raise(this.widgetId + ".positionDirection is an invalid value: " + this.positionDirection);
+		}
+		dojo.html.removeClass(this.containerNode, this.messageCssClass);
+		dojo.html.removeClass(this.containerNode, this.warningCssClass);
+		dojo.html.removeClass(this.containerNode, this.errorCssClass);
+		dojo.html.removeClass(this.containerNode, this.fatalCssClass);
+		dojo.html.clearOpacity(this.containerNode);
+		if (msg instanceof String || typeof msg == "string") {
+			this.contentNode.innerHTML = msg;
+		} else {
+			if (dojo.html.isNode(msg)) {
+				this.contentNode.innerHTML = dojo.html.getContentAsString(msg);
+			} else {
+				dojo.raise("Toaster.setContent(): msg is of unknown type:" + msg);
+			}
+		}
+		switch (messageType) {
+		  case this.messageTypes.WARNING:
+			dojo.html.addClass(this.containerNode, this.warningCssClass);
+			break;
+		  case this.messageTypes.ERROR:
+			dojo.html.addClass(this.containerNode, this.errorCssClass);
+			break;
+		  case this.messageTypes.FATAL:
+			dojo.html.addClass(this.containerNode, this.fatalCssClass);
+			break;
+		  case this.messageTypes.MESSAGE:
+		  default:
+			dojo.html.addClass(this.containerNode, this.messageCssClass);
+			break;
+		}
+		this.show();
+		var nodeSize = dojo.html.getMarginBox(this.containerNode);
+		if (this.positionDirection.indexOf("-up") >= 0) {
+			this.containerNode.style.left = 0 + "px";
+			this.containerNode.style.top = nodeSize.height + 10 + "px";
+		} else {
+			if (this.positionDirection.indexOf("-left") >= 0) {
+				this.containerNode.style.left = nodeSize.width + 10 + "px";
+				this.containerNode.style.top = 0 + "px";
+			} else {
+				if (this.positionDirection.indexOf("-right") >= 0) {
+					this.containerNode.style.left = 0 - nodeSize.width - 10 + "px";
+					this.containerNode.style.top = 0 + "px";
+				} else {
+					if (this.positionDirection.indexOf("-down") >= 0) {
+						this.containerNode.style.left = 0 + "px";
+						this.containerNode.style.top = 0 - nodeSize.height - 10 + "px";
+					} else {
+						dojo.raise(this.widgetId + ".positionDirection is an invalid value: " + this.positionDirection);
+					}
+				}
+			}
+		}
+		this.slideAnim = dojo.lfx.html.slideTo(this.containerNode, {top:0, left:0}, 450, null, dojo.lang.hitch(this, function (nodes, anim) {
+			dojo.lang.setTimeout(dojo.lang.hitch(this, function (evt) {
+				if (this.bgIframe) {
+					this.bgIframe.hide();
+				}
+				this.fadeAnim = dojo.lfx.html.fadeOut(this.containerNode, 1000, null, dojo.lang.hitch(this, function (evt) {
+					this.hide();
+				})).play();
+			}), delay);
+		})).play();
+	}, _placeClip:function () {
+		var scroll = dojo.html.getScroll();
+		var view = dojo.html.getViewport();
+		var nodeSize = dojo.html.getMarginBox(this.containerNode);
+		this.clipNode.style.height = nodeSize.height + "px";
+		this.clipNode.style.width = nodeSize.width + "px";
+		if (this.positionDirection.match(/^t/)) {
+			this.clipNode.style.top = scroll.top + "px";
+		} else {
+			if (this.positionDirection.match(/^b/)) {
+				this.clipNode.style.top = (view.height - nodeSize.height - 2 + scroll.top) + "px";
+			}
+		}
+		if (this.positionDirection.match(/^[tb]r-/)) {
+			this.clipNode.style.left = (view.width - nodeSize.width - 1 - scroll.left) + "px";
+		} else {
+			if (this.positionDirection.match(/^[tb]l-/)) {
+				this.clipNode.style.left = 0 + "px";
+			}
+		}
+		this.clipNode.style.clip = "rect(0px, " + nodeSize.width + "px, " + nodeSize.height + "px, 0px)";
+		if (dojo.render.html.ie) {
+			if (!this.bgIframe) {
+				this.bgIframe = new dojo.html.BackgroundIframe(this.containerNode);
+				this.bgIframe.setZIndex(this.containerNode);
+			}
+			this.bgIframe.onResized();
+			this.bgIframe.show();
+		}
+	}, onSelect:function (e) {
+	}, show:function () {
+		dojo.widget.Toaster.superclass.show.call(this);
+		this._placeClip();
+		if (!this._scrollConnected) {
+			this._scrollConnected = true;
+			dojo.event.connect(window, "onscroll", this, "_placeClip");
+		}
+	}, hide:function () {
+		dojo.widget.Toaster.superclass.hide.call(this);
+		if (this._scrollConnected) {
+			this._scrollConnected = false;
+			dojo.event.disconnect(window, "onscroll", this, "_placeClip");
+		}
+		dojo.html.setOpacity(this.containerNode, 1);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Textbox.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Textbox"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.Manager"], ["require", "dojo.widget.Parse"], ["require", "dojo.xml.Parse"], ["require", "dojo.lang.array"], ["require", "dojo.lang.common"], ["require", "dojo.i18n.common"], ["xdRequireLocalization", "dojo.widget", "validate", null, "zh-cn,ja,ROOT,fr", "zh-cn,ja,ROOT,fr"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Textbox");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.Manager");
+	dojo.require("dojo.widget.Parse");
+	dojo.require("dojo.xml.Parse");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.i18n.common");
+	dojo.widget.defineWidget("dojo.widget.Textbox", dojo.widget.HtmlWidget, {className:"", name:"", value:"", type:"", trim:false, uppercase:false, lowercase:false, ucFirst:false, digit:false, htmlfloat:"none", templateString:"<span style='float:${this.htmlfloat};'>\n\t<input dojoAttachPoint='textbox' dojoAttachEvent='onblur;onfocus'\n\t\tid='${this.widgetId}' name='${this.name}'\n\t\tclass='${this.className}' type='${this.type}' >\n</span>\n", textbox:null, fillInTemplate:function () {
+		this.textbox.value = this.value;
+	}, filter:function () {
+		if (this.trim) {
+			this.textbox.value = this.textbox.value.replace(/(^\s*|\s*$)/g, "");
+		}
+		if (this.uppercase) {
+			this.textbox.value = this.textbox.value.toUpperCase();
+		}
+		if (this.lowercase) {
+			this.textbox.value = this.textbox.value.toLowerCase();
+		}
+		if (this.ucFirst) {
+			this.textbox.value = this.textbox.value.replace(/\b\w+\b/g, function (word) {
+				return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();
+			});
+		}
+		if (this.digit) {
+			this.textbox.value = this.textbox.value.replace(/\D/g, "");
+		}
+	}, onfocus:function () {
+	}, onblur:function () {
+		this.filter();
+	}, mixInProperties:function (localProperties, frag) {
+		dojo.widget.Textbox.superclass.mixInProperties.apply(this, arguments);
+		if (localProperties["class"]) {
+			this.className = localProperties["class"];
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TreeDndControllerV3.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -33063,6 +67595,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TreeDndControllerV3");
 dojo.require("dojo.dnd.TreeDragAndDropV3");
 dojo.require("dojo.experimental");
@@ -33123,6 +67657,64 @@
 }});
 
 
+__CPAN_FILE__ src/widget/TreeDocIconExtension.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeDocIconExtension"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.TreeExtension"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeDocIconExtension");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.TreeExtension");
+	dojo.widget.defineWidget("dojo.widget.TreeDocIconExtension", [dojo.widget.TreeExtension], {templateCssString:"\n/* CSS for TreeDocIconExtension */\n\n\n/* long vertical line under docIcon, connecting w/ children */\n.TreeStateChildrenYes-ExpandOpen .TreeIconContent {\n	background-image : url('../templates/images/TreeV3/i_long.gif');\n	background-repeat : no-repeat;\n	background-position: 18px 9px;\n}\n\n/* close has higher priority */\n.TreeStateChildrenYes-ExpandClosed .TreeIconContent {\n	background-image : url();\n}\n\n/* higher priotity: same length and appear after background-definition */\n.TreeStateChildrenNo-ExpandLeaf .TreeIconContent {\n	background-image : url();\n}\n\n.TreeStateChildrenNo-ExpandClosed .TreeIconContent {\n	background-image : url();\n}\n\n.TreeStateChildrenNo-ExpandOpen .TreeIconContent {\n	background-image : url();\n}\n\n\n/* highest priority */\n.TreeIconDocument {\n	background-image: url('../templates/images/TreeV3/document.gif');\n}\n\n.TreeExpandOpen .TreeIconFolder {\n	background-image: url('../templates/images/TreeV3/open.gif');\n}\n\n.TreeExpandClosed .TreeIconFolder {\n	background-image: url('../templates/images/TreeV3/closed.gif');\n}\n\n/* generic class for docIcon */\n.TreeIcon {\n	width: 18px;\n	height: 18px;\n	float: left;\n	display: inline;\n	background-repeat : no-repeat;\n}\n\ndiv.TreeContent {\n	margin-left: 36px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TreeDocIcon.css"), listenTreeEvents:["afterChangeTree", "afterSetFolder", "afterUnsetFolder"], listenNodeFilter:function (elem) {
+		return elem instanceof dojo.widget.Widget;
+	}, getnodeDocType:function (node) {
+		var nodeDocType = node.getnodeDocType();
+		if (!nodeDocType) {
+			nodeDocType = node.isFolder ? "Folder" : "Document";
+		}
+		return nodeDocType;
+	}, setnodeDocTypeClass:function (node) {
+		var reg = new RegExp("(^|\\s)" + node.tree.classPrefix + "Icon\\w+", "g");
+		var clazz = dojo.html.getClass(node.iconNode).replace(reg, "") + " " + node.tree.classPrefix + "Icon" + this.getnodeDocType(node);
+		dojo.html.setClass(node.iconNode, clazz);
+	}, onAfterSetFolder:function (message) {
+		if (message.source.iconNode) {
+			this.setnodeDocTypeClass(message.source);
+		}
+	}, onAfterUnsetFolder:function (message) {
+		this.setnodeDocTypeClass(message.source);
+	}, listenNode:function (node) {
+		node.contentIconNode = document.createElement("div");
+		var clazz = node.tree.classPrefix + "IconContent";
+		if (dojo.render.html.ie) {
+			clazz = clazz + " " + node.tree.classPrefix + "IEIconContent";
+		}
+		dojo.html.setClass(node.contentIconNode, clazz);
+		node.contentNode.parentNode.replaceChild(node.contentIconNode, node.expandNode);
+		node.iconNode = document.createElement("div");
+		dojo.html.setClass(node.iconNode, node.tree.classPrefix + "Icon" + " " + node.tree.classPrefix + "Icon" + this.getnodeDocType(node));
+		node.contentIconNode.appendChild(node.expandNode);
+		node.contentIconNode.appendChild(node.iconNode);
+		dojo.dom.removeNode(node.contentNode);
+		node.contentIconNode.appendChild(node.contentNode);
+	}, onAfterChangeTree:function (message) {
+		var _this = this;
+		if (!message.oldTree || !this.listenedTrees[message.oldTree.widgetId]) {
+			this.processDescendants(message.node, this.listenNodeFilter, this.listenNode);
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/TimePicker.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -33134,6 +67726,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.TimePicker");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -33142,7 +67736,7 @@
 dojo.require("dojo.date.format");
 dojo.require("dojo.dom");
 dojo.require("dojo.html.style");
-dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "de,en,es,fi,fr,hu,ja,it,ko,nl,pt,sv,zh,pt-br,zh-cn,zh-hk,zh-tw,ROOT");
+dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br");
 dojo.requireLocalization("dojo.widget", "TimePicker", null, "ROOT");
 dojo.widget.defineWidget("dojo.widget.TimePicker", dojo.widget.HtmlWidget, function () {
 	this.time = "";
@@ -33412,6 +68006,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.SlideShow");
 dojo.require("dojo.event.*");
 dojo.require("dojo.widget.*");
@@ -33478,6 +68074,545 @@
 }});
 
 
+__CPAN_FILE__ src/widget/FisheyeList.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.FisheyeList"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.html.style"], ["require", "dojo.html.selection"], ["require", "dojo.html.util"], ["require", "dojo.event.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.FisheyeList");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.selection");
+	dojo.require("dojo.html.util");
+	dojo.require("dojo.event.*");
+	dojo.widget.defineWidget("dojo.widget.FisheyeList", dojo.widget.HtmlWidget, function () {
+		this.pos = {x:-1, y:-1};
+		this.EDGE = {CENTER:0, LEFT:1, RIGHT:2, TOP:3, BOTTOM:4};
+		this.timerScale = 1;
+	}, {templateString:"<div class=\"dojoHtmlFisheyeListBar\"></div>", templateCssString:".dojoHtmlFisheyeListItemLabel {\n\tfont-family: Arial, Helvetica, sans-serif;\n\tbackground-color: #eee;\n\tborder: 2px solid #666;\n\tpadding: 2px;\n\ttext-align: center;\n\tposition: absolute;\n\tdisplay: none;\n}\n\n.dojoHtmlFisheyeListItemLabel.selected {\n\tdisplay: block;\n}\n\n.dojoHtmlFisheyeListItemImage {\n\tborder: 0px;\n\tposition: absolute;\n}\n\n.dojoHtmlFisheyeListItem {\n\tposition: absolute;\n\tz-index: 2;\n}\n\n.dojoHtmlFisheyeListBar {\n\tposition: relative;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/FisheyeList.css"), isContainer:true, snarfChildDomOutput:true, itemWidth:40, itemHeight:40, itemMaxWidth:150, itemMaxHeight:150, orientation:"horizontal", conservativeTrigger:false, effectUnits:2, itemPadding:10, attachEdge:"center", labelEdge:"bottom", enableCrappySvgSupport:false, fillInTemplate:function () {
+		dojo.html.disableSelection(this.domNode);
+		this.isHorizontal = (this.orientation == "horizontal");
+		this.selectedNode = -1;
+		this.isOver = false;
+		this.hitX1 = -1;
+		this.hitY1 = -1;
+		this.hitX2 = -1;
+		this.hitY2 = -1;
+		this.anchorEdge = this._toEdge(this.attachEdge, this.EDGE.CENTER);
+		this.labelEdge = this._toEdge(this.labelEdge, this.EDGE.TOP);
+		if (this.isHorizontal && (this.anchorEdge == this.EDGE.LEFT)) {
+			this.anchorEdge = this.EDGE.CENTER;
+		}
+		if (this.isHorizontal && (this.anchorEdge == this.EDGE.RIGHT)) {
+			this.anchorEdge = this.EDGE.CENTER;
+		}
+		if (!this.isHorizontal && (this.anchorEdge == this.EDGE.TOP)) {
+			this.anchorEdge = this.EDGE.CENTER;
+		}
+		if (!this.isHorizontal && (this.anchorEdge == this.EDGE.BOTTOM)) {
+			this.anchorEdge = this.EDGE.CENTER;
+		}
+		if (this.labelEdge == this.EDGE.CENTER) {
+			this.labelEdge = this.EDGE.TOP;
+		}
+		if (this.isHorizontal && (this.labelEdge == this.EDGE.LEFT)) {
+			this.labelEdge = this.EDGE.TOP;
+		}
+		if (this.isHorizontal && (this.labelEdge == this.EDGE.RIGHT)) {
+			this.labelEdge = this.EDGE.TOP;
+		}
+		if (!this.isHorizontal && (this.labelEdge == this.EDGE.TOP)) {
+			this.labelEdge = this.EDGE.LEFT;
+		}
+		if (!this.isHorizontal && (this.labelEdge == this.EDGE.BOTTOM)) {
+			this.labelEdge = this.EDGE.LEFT;
+		}
+		this.proximityLeft = this.itemWidth * (this.effectUnits - 0.5);
+		this.proximityRight = this.itemWidth * (this.effectUnits - 0.5);
+		this.proximityTop = this.itemHeight * (this.effectUnits - 0.5);
+		this.proximityBottom = this.itemHeight * (this.effectUnits - 0.5);
+		if (this.anchorEdge == this.EDGE.LEFT) {
+			this.proximityLeft = 0;
+		}
+		if (this.anchorEdge == this.EDGE.RIGHT) {
+			this.proximityRight = 0;
+		}
+		if (this.anchorEdge == this.EDGE.TOP) {
+			this.proximityTop = 0;
+		}
+		if (this.anchorEdge == this.EDGE.BOTTOM) {
+			this.proximityBottom = 0;
+		}
+		if (this.anchorEdge == this.EDGE.CENTER) {
+			this.proximityLeft /= 2;
+			this.proximityRight /= 2;
+			this.proximityTop /= 2;
+			this.proximityBottom /= 2;
+		}
+	}, postCreate:function () {
+		this._initializePositioning();
+		if (!this.conservativeTrigger) {
+			dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
+		}
+		dojo.event.connect(document.documentElement, "onmouseout", this, "_onBodyOut");
+		dojo.event.connect(this, "addChild", this, "_initializePositioning");
+	}, _initializePositioning:function () {
+		this.itemCount = this.children.length;
+		this.barWidth = (this.isHorizontal ? this.itemCount : 1) * this.itemWidth;
+		this.barHeight = (this.isHorizontal ? 1 : this.itemCount) * this.itemHeight;
+		this.totalWidth = this.proximityLeft + this.proximityRight + this.barWidth;
+		this.totalHeight = this.proximityTop + this.proximityBottom + this.barHeight;
+		for (var i = 0; i < this.children.length; i++) {
+			this.children[i].posX = this.itemWidth * (this.isHorizontal ? i : 0);
+			this.children[i].posY = this.itemHeight * (this.isHorizontal ? 0 : i);
+			this.children[i].cenX = this.children[i].posX + (this.itemWidth / 2);
+			this.children[i].cenY = this.children[i].posY + (this.itemHeight / 2);
+			var isz = this.isHorizontal ? this.itemWidth : this.itemHeight;
+			var r = this.effectUnits * isz;
+			var c = this.isHorizontal ? this.children[i].cenX : this.children[i].cenY;
+			var lhs = this.isHorizontal ? this.proximityLeft : this.proximityTop;
+			var rhs = this.isHorizontal ? this.proximityRight : this.proximityBottom;
+			var siz = this.isHorizontal ? this.barWidth : this.barHeight;
+			var range_lhs = r;
+			var range_rhs = r;
+			if (range_lhs > c + lhs) {
+				range_lhs = c + lhs;
+			}
+			if (range_rhs > (siz - c + rhs)) {
+				range_rhs = siz - c + rhs;
+			}
+			this.children[i].effectRangeLeft = range_lhs / isz;
+			this.children[i].effectRangeRght = range_rhs / isz;
+		}
+		this.domNode.style.width = this.barWidth + "px";
+		this.domNode.style.height = this.barHeight + "px";
+		for (var i = 0; i < this.children.length; i++) {
+			var itm = this.children[i];
+			var elm = itm.domNode;
+			elm.style.left = itm.posX + "px";
+			elm.style.top = itm.posY + "px";
+			elm.style.width = this.itemWidth + "px";
+			elm.style.height = this.itemHeight + "px";
+			if (itm.svgNode) {
+				itm.svgNode.style.position = "absolute";
+				itm.svgNode.style.left = this.itemPadding + "%";
+				itm.svgNode.style.top = this.itemPadding + "%";
+				itm.svgNode.style.width = (100 - 2 * this.itemPadding) + "%";
+				itm.svgNode.style.height = (100 - 2 * this.itemPadding) + "%";
+				itm.svgNode.style.zIndex = 1;
+				itm.svgNode.setSize(this.itemWidth, this.itemHeight);
+			} else {
+				itm.imgNode.style.left = this.itemPadding + "%";
+				itm.imgNode.style.top = this.itemPadding + "%";
+				itm.imgNode.style.width = (100 - 2 * this.itemPadding) + "%";
+				itm.imgNode.style.height = (100 - 2 * this.itemPadding) + "%";
+			}
+		}
+		this._calcHitGrid();
+	}, _onBodyOut:function (e) {
+		if (dojo.html.overElement(dojo.body(), e)) {
+			return;
+		}
+		this._setDormant(e);
+	}, _setDormant:function (e) {
+		if (!this.isOver) {
+			return;
+		}
+		this.isOver = false;
+		if (this.conservativeTrigger) {
+			dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
+		}
+		this._onGridMouseMove(-1, -1);
+	}, _setActive:function (e) {
+		if (this.isOver) {
+			return;
+		}
+		this.isOver = true;
+		if (this.conservativeTrigger) {
+			dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
+			this.timerScale = 0;
+			this._onMouseMove(e);
+			this._expandSlowly();
+		}
+	}, _onMouseMove:function (e) {
+		if ((e.pageX >= this.hitX1) && (e.pageX <= this.hitX2) && (e.pageY >= this.hitY1) && (e.pageY <= this.hitY2)) {
+			if (!this.isOver) {
+				this._setActive(e);
+			}
+			this._onGridMouseMove(e.pageX - this.hitX1, e.pageY - this.hitY1);
+		} else {
+			if (this.isOver) {
+				this._setDormant(e);
+			}
+		}
+	}, onResized:function () {
+		this._calcHitGrid();
+	}, _onGridMouseMove:function (x, y) {
+		this.pos = {x:x, y:y};
+		this._paint();
+	}, _paint:function () {
+		var x = this.pos.x;
+		var y = this.pos.y;
+		if (this.itemCount <= 0) {
+			return;
+		}
+		var pos = this.isHorizontal ? x : y;
+		var prx = this.isHorizontal ? this.proximityLeft : this.proximityTop;
+		var siz = this.isHorizontal ? this.itemWidth : this.itemHeight;
+		var sim = this.isHorizontal ? (1 - this.timerScale) * this.itemWidth + this.timerScale * this.itemMaxWidth : (1 - this.timerScale) * this.itemHeight + this.timerScale * this.itemMaxHeight;
+		var cen = ((pos - prx) / siz) - 0.5;
+		var max_off_cen = (sim / siz) - 0.5;
+		if (max_off_cen > this.effectUnits) {
+			max_off_cen = this.effectUnits;
+		}
+		var off_weight = 0;
+		if (this.anchorEdge == this.EDGE.BOTTOM) {
+			var cen2 = (y - this.proximityTop) / this.itemHeight;
+			off_weight = (cen2 > 0.5) ? 1 : y / (this.proximityTop + (this.itemHeight / 2));
+		}
+		if (this.anchorEdge == this.EDGE.TOP) {
+			var cen2 = (y - this.proximityTop) / this.itemHeight;
+			off_weight = (cen2 < 0.5) ? 1 : (this.totalHeight - y) / (this.proximityBottom + (this.itemHeight / 2));
+		}
+		if (this.anchorEdge == this.EDGE.RIGHT) {
+			var cen2 = (x - this.proximityLeft) / this.itemWidth;
+			off_weight = (cen2 > 0.5) ? 1 : x / (this.proximityLeft + (this.itemWidth / 2));
+		}
+		if (this.anchorEdge == this.EDGE.LEFT) {
+			var cen2 = (x - this.proximityLeft) / this.itemWidth;
+			off_weight = (cen2 < 0.5) ? 1 : (this.totalWidth - x) / (this.proximityRight + (this.itemWidth / 2));
+		}
+		if (this.anchorEdge == this.EDGE.CENTER) {
+			if (this.isHorizontal) {
+				off_weight = y / (this.totalHeight);
+			} else {
+				off_weight = x / (this.totalWidth);
+			}
+			if (off_weight > 0.5) {
+				off_weight = 1 - off_weight;
+			}
+			off_weight *= 2;
+		}
+		for (var i = 0; i < this.itemCount; i++) {
+			var weight = this._weighAt(cen, i);
+			if (weight < 0) {
+				weight = 0;
+			}
+			this._setItemSize(i, weight * off_weight);
+		}
+		var main_p = Math.round(cen);
+		var offset = 0;
+		if (cen < 0) {
+			main_p = 0;
+		} else {
+			if (cen > this.itemCount - 1) {
+				main_p = this.itemCount - 1;
+			} else {
+				offset = (cen - main_p) * ((this.isHorizontal ? this.itemWidth : this.itemHeight) - this.children[main_p].sizeMain);
+			}
+		}
+		this._positionElementsFrom(main_p, offset);
+	}, _weighAt:function (cen, i) {
+		var dist = Math.abs(cen - i);
+		var limit = ((cen - i) > 0) ? this.children[i].effectRangeRght : this.children[i].effectRangeLeft;
+		return (dist > limit) ? 0 : (1 - dist / limit);
+	}, _setItemSize:function (p, scale) {
+		scale *= this.timerScale;
+		var w = Math.round(this.itemWidth + ((this.itemMaxWidth - this.itemWidth) * scale));
+		var h = Math.round(this.itemHeight + ((this.itemMaxHeight - this.itemHeight) * scale));
+		if (this.isHorizontal) {
+			this.children[p].sizeW = w;
+			this.children[p].sizeH = h;
+			this.children[p].sizeMain = w;
+			this.children[p].sizeOff = h;
+			var y = 0;
+			if (this.anchorEdge == this.EDGE.TOP) {
+				y = (this.children[p].cenY - (this.itemHeight / 2));
+			} else {
+				if (this.anchorEdge == this.EDGE.BOTTOM) {
+					y = (this.children[p].cenY - (h - (this.itemHeight / 2)));
+				} else {
+					y = (this.children[p].cenY - (h / 2));
+				}
+			}
+			this.children[p].usualX = Math.round(this.children[p].cenX - (w / 2));
+			this.children[p].domNode.style.top = y + "px";
+			this.children[p].domNode.style.left = this.children[p].usualX + "px";
+		} else {
+			this.children[p].sizeW = w;
+			this.children[p].sizeH = h;
+			this.children[p].sizeOff = w;
+			this.children[p].sizeMain = h;
+			var x = 0;
+			if (this.anchorEdge == this.EDGE.LEFT) {
+				x = this.children[p].cenX - (this.itemWidth / 2);
+			} else {
+				if (this.anchorEdge == this.EDGE.RIGHT) {
+					x = this.children[p].cenX - (w - (this.itemWidth / 2));
+				} else {
+					x = this.children[p].cenX - (w / 2);
+				}
+			}
+			this.children[p].domNode.style.left = x + "px";
+			this.children[p].usualY = Math.round(this.children[p].cenY - (h / 2));
+			this.children[p].domNode.style.top = this.children[p].usualY + "px";
+		}
+		this.children[p].domNode.style.width = w + "px";
+		this.children[p].domNode.style.height = h + "px";
+		if (this.children[p].svgNode) {
+			this.children[p].svgNode.setSize(w, h);
+		}
+	}, _positionElementsFrom:function (p, offset) {
+		var pos = 0;
+		if (this.isHorizontal) {
+			pos = Math.round(this.children[p].usualX + offset);
+			this.children[p].domNode.style.left = pos + "px";
+		} else {
+			pos = Math.round(this.children[p].usualY + offset);
+			this.children[p].domNode.style.top = pos + "px";
+		}
+		this._positionLabel(this.children[p]);
+		var bpos = pos;
+		for (var i = p - 1; i >= 0; i--) {
+			bpos -= this.children[i].sizeMain;
+			if (this.isHorizontal) {
+				this.children[i].domNode.style.left = bpos + "px";
+			} else {
+				this.children[i].domNode.style.top = bpos + "px";
+			}
+			this._positionLabel(this.children[i]);
+		}
+		var apos = pos;
+		for (var i = p + 1; i < this.itemCount; i++) {
+			apos += this.children[i - 1].sizeMain;
+			if (this.isHorizontal) {
+				this.children[i].domNode.style.left = apos + "px";
+			} else {
+				this.children[i].domNode.style.top = apos + "px";
+			}
+			this._positionLabel(this.children[i]);
+		}
+	}, _positionLabel:function (itm) {
+		var x = 0;
+		var y = 0;
+		var mb = dojo.html.getMarginBox(itm.lblNode);
+		if (this.labelEdge == this.EDGE.TOP) {
+			x = Math.round((itm.sizeW / 2) - (mb.width / 2));
+			y = -mb.height;
+		}
+		if (this.labelEdge == this.EDGE.BOTTOM) {
+			x = Math.round((itm.sizeW / 2) - (mb.width / 2));
+			y = itm.sizeH;
+		}
+		if (this.labelEdge == this.EDGE.LEFT) {
+			x = -mb.width;
+			y = Math.round((itm.sizeH / 2) - (mb.height / 2));
+		}
+		if (this.labelEdge == this.EDGE.RIGHT) {
+			x = itm.sizeW;
+			y = Math.round((itm.sizeH / 2) - (mb.height / 2));
+		}
+		itm.lblNode.style.left = x + "px";
+		itm.lblNode.style.top = y + "px";
+	}, _calcHitGrid:function () {
+		var pos = dojo.html.getAbsolutePosition(this.domNode, true);
+		this.hitX1 = pos.x - this.proximityLeft;
+		this.hitY1 = pos.y - this.proximityTop;
+		this.hitX2 = this.hitX1 + this.totalWidth;
+		this.hitY2 = this.hitY1 + this.totalHeight;
+	}, _toEdge:function (inp, def) {
+		return this.EDGE[inp.toUpperCase()] || def;
+	}, _expandSlowly:function () {
+		if (!this.isOver) {
+			return;
+		}
+		this.timerScale += 0.2;
+		this._paint();
+		if (this.timerScale < 1) {
+			dojo.lang.setTimeout(this, "_expandSlowly", 10);
+		}
+	}, destroy:function () {
+		dojo.event.disconnect(document.documentElement, "onmouseout", this, "_onBodyOut");
+		dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
+		dojo.widget.FisheyeList.superclass.destroy.call(this);
+	}});
+	dojo.widget.defineWidget("dojo.widget.FisheyeListItem", dojo.widget.HtmlWidget, {iconSrc:"", svgSrc:"", caption:"", id:"", _blankImgPath:dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif"), templateString:"<div class=\"dojoHtmlFisheyeListItem\">" + "  <img class=\"dojoHtmlFisheyeListItemImage\" dojoAttachPoint=\"imgNode\" dojoAttachEvent=\"onMouseOver;onMouseOut;onClick\">" + "  <div class=\"dojoHtmlFisheyeListItemLabel\" dojoAttachPoint=\"lblNode\"></div>" + "</div>", fillInTemplate:function () {
+		if (this.svgSrc != "") {
+			this.svgNode = this._createSvgNode(this.svgSrc);
+			this.domNode.appendChild(this.svgNode);
+			this.imgNode.style.display = "none";
+		} else {
+			if ((this.iconSrc.toLowerCase().substring(this.iconSrc.length - 4) == ".png") && (dojo.render.html.ie) && (!dojo.render.html.ie70)) {
+				if (dojo.dom.hasParent(this.imgNode) && this.id != "") {
+					var parent = this.imgNode.parentNode;
+					parent.setAttribute("id", this.id);
+				}
+				this.imgNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.iconSrc + "', sizingMethod='scale')";
+				this.imgNode.src = this._blankImgPath.toString();
+			} else {
+				if (dojo.dom.hasParent(this.imgNode) && this.id != "") {
+					var parent = this.imgNode.parentNode;
+					parent.setAttribute("id", this.id);
+				}
+				this.imgNode.src = this.iconSrc;
+			}
+		}
+		if (this.lblNode) {
+			this.lblNode.appendChild(document.createTextNode(this.caption));
+		}
+		dojo.html.disableSelection(this.domNode);
+	}, _createSvgNode:function (src) {
+		var elm = document.createElement("embed");
+		elm.src = src;
+		elm.type = "image/svg+xml";
+		elm.style.width = "1px";
+		elm.style.height = "1px";
+		elm.loaded = 0;
+		elm.setSizeOnLoad = false;
+		elm.onload = function () {
+			this.svgRoot = this.getSVGDocument().rootElement;
+			this.svgDoc = this.getSVGDocument().documentElement;
+			this.zeroWidth = this.svgRoot.width.baseVal.value;
+			this.zeroHeight = this.svgRoot.height.baseVal.value;
+			this.loaded = true;
+			if (this.setSizeOnLoad) {
+				this.setSize(this.setWidth, this.setHeight);
+			}
+		};
+		elm.setSize = function (w, h) {
+			if (!this.loaded) {
+				this.setWidth = w;
+				this.setHeight = h;
+				this.setSizeOnLoad = true;
+				return;
+			}
+			this.style.width = w + "px";
+			this.style.height = h + "px";
+			this.svgRoot.width.baseVal.value = w;
+			this.svgRoot.height.baseVal.value = h;
+			var scale_x = w / this.zeroWidth;
+			var scale_y = h / this.zeroHeight;
+			for (var i = 0; i < this.svgDoc.childNodes.length; i++) {
+				if (this.svgDoc.childNodes[i].setAttribute) {
+					this.svgDoc.childNodes[i].setAttribute("transform", "scale(" + scale_x + "," + scale_y + ")");
+				}
+			}
+		};
+		return elm;
+	}, onMouseOver:function (e) {
+		if (!this.parent.isOver) {
+			this.parent._setActive(e);
+		}
+		if (this.caption != "") {
+			dojo.html.addClass(this.lblNode, "selected");
+			this.parent._positionLabel(this);
+		}
+	}, onMouseOut:function (e) {
+		dojo.html.removeClass(this.lblNode, "selected");
+	}, onClick:function (e) {
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/TreeDemo.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.TreeDemo"], ["require", "dojo.Deferred"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.TreeDemo");
+	dojo.require("dojo.Deferred");
+	dojo.widget.TreeDemo = {reportIfDefered:function (res) {
+		if (res instanceof dojo.Deferred) {
+			res.addCallbacks(function (res) {
+				return res;
+			}, function (err) {
+				dojo.debug("Error");
+				dojo.debugShallow(err);
+			});
+		}
+	}, resetRandomChildren:function (maxCount) {
+		this.randomChildrenMaxCount = maxCount;
+		this.randomChildrenCount = 0;
+		this.randomChildrenDepth = 0;
+	}, makeRandomChildren:function (title) {
+		this.randomChildrenDepth++;
+		var children = [];
+		for (var i = 1; i <= 5; i++) {
+			var t = title + (this.randomChildrenDepth == 1 ? "" : ".") + i;
+			var node = {title:t};
+			children.push(node);
+			this.randomChildrenCount++;
+			if (this.randomChildrenCount >= this.randomChildrenMaxCount) {
+				break;
+			}
+		}
+		var i = 1;
+		var _this = this;
+		dojo.lang.forEach(children, function (child) {
+			var t = title + (_this.randomChildrenDepth == 1 ? "" : ".") + i;
+			i++;
+			if (_this.randomChildrenCount < _this.randomChildrenMaxCount && (_this.randomChildrenDepth == 1 && child === children[0] || _this.randomChildrenDepth < 5 && Math.random() > 0.3)) {
+				child.children = _this.makeRandomChildren(t);
+			}
+		});
+		this.randomChildrenDepth--;
+		return children;
+	}, bindDemoMenu:function (controller) {
+		var _t = this;
+		dojo.event.topic.subscribe("treeContextMenuDestroy/engage", function (menuItem) {
+			var node = menuItem.getTreeNode();
+			_t.reportIfDefered(controller.destroyChild(node));
+		});
+		dojo.event.topic.subscribe("treeContextMenuRefresh/engage", function (menuItem) {
+			var node = menuItem.getTreeNode();
+			_t.reportIfDefered(controller.refreshChildren(node));
+		});
+		dojo.event.topic.subscribe("treeContextMenuCreate/engage", function (menuItem) {
+			var node = menuItem.getTreeNode();
+			var d = controller.createAndEdit(node, 0);
+			_t.reportIfDefered(d);
+		});
+		dojo.event.topic.subscribe("treeContextMenuUp/engage", function (menuItem) {
+			var node = menuItem.getTreeNode();
+			if (node.isFirstChild()) {
+				return;
+			}
+			_t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() - 1));
+		});
+		dojo.event.topic.subscribe("treeContextMenuDown/engage", function (menuItem) {
+			var node = menuItem.getTreeNode();
+			if (node.isLastChild()) {
+				return;
+			}
+			_t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() + 1));
+		});
+		dojo.event.topic.subscribe("treeContextMenuEdit/engage", function (menuItem) {
+			var node = menuItem.getTreeNode();
+			_t.reportIfDefered(controller.editLabelStart(node));
+		});
+	}};
+}});
+
+
 __CPAN_FILE__ src/widget/SwtWidget.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -33489,6 +68624,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.SwtWidget");
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.widget.SwtWidget");
@@ -33533,6 +68670,104 @@
 
 
 __CPAN_DIR__ src/widget/html
+__CPAN_FILE__ src/widget/html/layout.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.html.layout"], ["require", "dojo.lang.common"], ["require", "dojo.string.extras"], ["require", "dojo.html.style"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.html.layout");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.string.extras");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.layout");
+	dojo.widget.html.layout = function (container, children, layoutPriority) {
+		dojo.html.addClass(container, "dojoLayoutContainer");
+		children = dojo.lang.filter(children, function (child, idx) {
+			child.idx = idx;
+			return dojo.lang.inArray(["top", "bottom", "left", "right", "client", "flood"], child.layoutAlign);
+		});
+		if (layoutPriority && layoutPriority != "none") {
+			var rank = function (child) {
+				switch (child.layoutAlign) {
+				  case "flood":
+					return 1;
+				  case "left":
+				  case "right":
+					return (layoutPriority == "left-right") ? 2 : 3;
+				  case "top":
+				  case "bottom":
+					return (layoutPriority == "left-right") ? 3 : 2;
+				  default:
+					return 4;
+				}
+			};
+			children.sort(function (a, b) {
+				return (rank(a) - rank(b)) || (a.idx - b.idx);
+			});
+		}
+		var f = {top:dojo.html.getPixelValue(container, "padding-top", true), left:dojo.html.getPixelValue(container, "padding-left", true)};
+		dojo.lang.mixin(f, dojo.html.getContentBox(container));
+		dojo.lang.forEach(children, function (child) {
+			var elm = child.domNode;
+			var pos = child.layoutAlign;
+			with (elm.style) {
+				left = f.left + "px";
+				top = f.top + "px";
+				bottom = "auto";
+				right = "auto";
+			}
+			dojo.html.addClass(elm, "dojoAlign" + dojo.string.capitalize(pos));
+			if ((pos == "top") || (pos == "bottom")) {
+				dojo.html.setMarginBox(elm, {width:f.width});
+				var h = dojo.html.getMarginBox(elm).height;
+				f.height -= h;
+				if (pos == "top") {
+					f.top += h;
+				} else {
+					elm.style.top = f.top + f.height + "px";
+				}
+				if (child.onResized) {
+					child.onResized();
+				}
+			} else {
+				if (pos == "left" || pos == "right") {
+					var w = dojo.html.getMarginBox(elm).width;
+					if (child.resizeTo) {
+						child.resizeTo(w, f.height);
+					} else {
+						dojo.html.setMarginBox(elm, {width:w, height:f.height});
+					}
+					f.width -= w;
+					if (pos == "left") {
+						f.left += w;
+					} else {
+						elm.style.left = f.left + f.width + "px";
+					}
+				} else {
+					if (pos == "flood" || pos == "client") {
+						if (child.resizeTo) {
+							child.resizeTo(f.width, f.height);
+						} else {
+							dojo.html.setMarginBox(elm, {width:f.width, height:f.height});
+						}
+					}
+				}
+			}
+		});
+	};
+	dojo.html.insertCssText(".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }\n" + "body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }\n" + "body .dojoAlignClient { position: absolute }\n" + ".dojoAlignClient { overflow: auto; }\n");
+}});
+
+
 __CPAN_FILE__ src/widget/html/loader.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -33544,6 +68779,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.html.loader");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.io.*");
@@ -34166,6 +69403,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.html.stabile");
 dojo.widget.html.stabile = {_sqQuotables:new RegExp("([\\\\'])", "g"), _depth:0, _recur:false, depthLimit:2};
 dojo.widget.html.stabile.getState = function (id) {
@@ -34294,6 +69533,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.html.layout");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.string.extras");
@@ -34377,7 +69618,1076 @@
 dojo.html.insertCssText(".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }\n" + "body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }\n" + "body .dojoAlignClient { position: absolute }\n" + ".dojoAlignClient { overflow: auto; }\n");
 
 
+__CPAN_FILE__ src/widget/html/stabile.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.html.stabile"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.html.stabile");
+	dojo.widget.html.stabile = {_sqQuotables:new RegExp("([\\\\'])", "g"), _depth:0, _recur:false, depthLimit:2};
+	dojo.widget.html.stabile.getState = function (id) {
+		dojo.widget.html.stabile.setup();
+		return dojo.widget.html.stabile.widgetState[id];
+	};
+	dojo.widget.html.stabile.setState = function (id, state, isCommit) {
+		dojo.widget.html.stabile.setup();
+		dojo.widget.html.stabile.widgetState[id] = state;
+		if (isCommit) {
+			dojo.widget.html.stabile.commit(dojo.widget.html.stabile.widgetState);
+		}
+	};
+	dojo.widget.html.stabile.setup = function () {
+		if (!dojo.widget.html.stabile.widgetState) {
+			var text = dojo.widget.html.stabile._getStorage().value;
+			dojo.widget.html.stabile.widgetState = text ? dj_eval("(" + text + ")") : {};
+		}
+	};
+	dojo.widget.html.stabile.commit = function (state) {
+		dojo.widget.html.stabile._getStorage().value = dojo.widget.html.stabile.description(state);
+	};
+	dojo.widget.html.stabile.description = function (v, showAll) {
+		var depth = dojo.widget.html.stabile._depth;
+		var describeThis = function () {
+			return this.description(this, true);
+		};
+		try {
+			if (v === void (0)) {
+				return "undefined";
+			}
+			if (v === null) {
+				return "null";
+			}
+			if (typeof (v) == "boolean" || typeof (v) == "number" || v instanceof Boolean || v instanceof Number) {
+				return v.toString();
+			}
+			if (typeof (v) == "string" || v instanceof String) {
+				var v1 = v.replace(dojo.widget.html.stabile._sqQuotables, "\\$1");
+				v1 = v1.replace(/\n/g, "\\n");
+				v1 = v1.replace(/\r/g, "\\r");
+				return "'" + v1 + "'";
+			}
+			if (v instanceof Date) {
+				return "new Date(" + d.getFullYear + "," + d.getMonth() + "," + d.getDate() + ")";
+			}
+			var d;
+			if (v instanceof Array || v.push) {
+				if (depth >= dojo.widget.html.stabile.depthLimit) {
+					return "[ ... ]";
+				}
+				d = "[";
+				var first = true;
+				dojo.widget.html.stabile._depth++;
+				for (var i = 0; i < v.length; i++) {
+					if (first) {
+						first = false;
+					} else {
+						d += ",";
+					}
+					d += arguments.callee(v[i], showAll);
+				}
+				return d + "]";
+			}
+			if (v.constructor == Object || v.toString == describeThis) {
+				if (depth >= dojo.widget.html.stabile.depthLimit) {
+					return "{ ... }";
+				}
+				if (typeof (v.hasOwnProperty) != "function" && v.prototype) {
+					throw new Error("description: " + v + " not supported by script engine");
+				}
+				var first = true;
+				d = "{";
+				dojo.widget.html.stabile._depth++;
+				for (var key in v) {
+					if (v[key] == void (0) || typeof (v[key]) == "function") {
+						continue;
+					}
+					if (first) {
+						first = false;
+					} else {
+						d += ", ";
+					}
+					var kd = key;
+					if (!kd.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {
+						kd = arguments.callee(key, showAll);
+					}
+					d += kd + ": " + arguments.callee(v[key], showAll);
+				}
+				return d + "}";
+			}
+			if (showAll) {
+				if (dojo.widget.html.stabile._recur) {
+					var objectToString = Object.prototype.toString;
+					return objectToString.apply(v, []);
+				} else {
+					dojo.widget.html.stabile._recur = true;
+					return v.toString();
+				}
+			} else {
+				throw new Error("Unknown type: " + v);
+				return "'unknown'";
+			}
+		}
+		finally {
+			dojo.widget.html.stabile._depth = depth;
+		}
+	};
+	dojo.widget.html.stabile._getStorage = function () {
+		if (dojo.widget.html.stabile.dataField) {
+			return dojo.widget.html.stabile.dataField;
+		}
+		var form = document.forms._dojo_form;
+		return dojo.widget.html.stabile.dataField = form ? form.stabile : {value:""};
+	};
+}});
+
+
+__CPAN_FILE__ src/widget/html/loader.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.html.loader"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.io.*"], ["require", "dojo.lang.common"], ["require", "dojo.lang.extras"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.html.loader");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.widget.html.loader");
+	dojo.widget.html.loader = new (function () {
+		this.toString = function () {
+			return "dojo.widget.html.loader";
+		};
+		var _loader = this;
+		dojo.addOnLoad(function () {
+			dojo.experimental(_loader.toString());
+			var undo = dojo.evalObjPath("dojo.undo.browser");
+			if (djConfig["preventBackButtonFix"] && undo && !undo.initialState) {
+				undo.setInitialState(new trackerObj);
+			}
+		});
+		var logger = {};
+		var trackerObj = function (id, data) {
+			this.id = id;
+			this.data = data;
+		};
+		trackerObj.prototype.handle = function (type) {
+			if (typeof dojo == "undefined") {
+				return;
+			}
+			var wg = dojo.widget.byId(this.id);
+			if (wg) {
+				wg.setContent(this.data, true);
+			}
+		};
+		this._log = function (widget, data) {
+			if (widget.trackHistory) {
+				if (!logger[widget.widgetId]) {
+					logger[widget.widgetId] = {childrenIds:[], stack:[data]};
+				}
+				var children = logger[widget.widgetId].childrenIds;
+				while (children && children.length) {
+					delete logger[children.pop()];
+				}
+				for (var child in widget.children) {
+					logger[widget.widgetId].childrenIds = child.widgetId;
+				}
+				dojo.undo.browser.addToHistory(new trackerObj(widget.widgetId, dojo.lang.shallowCopy(data, true)));
+			}
+		};
+		var undef = dojo.lang.isUndefined;
+		var isFunc = dojo.lang.isFunction;
+		function handleDefaults(e, handler, useAlert) {
+			if (!handler) {
+				handler = "onContentError";
+			}
+			if (dojo.lang.isString(e)) {
+				e = {_text:e};
+			}
+			if (!e._text) {
+				e._text = e.toString();
+			}
+			e.toString = function () {
+				return this._text;
+			};
+			if (typeof e.returnValue != "boolean") {
+				e.returnValue = true;
+			}
+			if (typeof e.preventDefault != "function") {
+				e.preventDefault = function () {
+					this.returnValue = false;
+				};
+			}
+			this[handler](e);
+			if (e.returnValue) {
+				if (useAlert) {
+					alert(e.toString());
+				} else {
+					this.loader.callOnUnLoad.call(this, false);
+					this.onSetContent(e.toString());
+				}
+			}
+		}
+		function downloader(bindArgs) {
+			for (var x in this.bindArgs) {
+				bindArgs[x] = (undef(bindArgs[x]) ? this.bindArgs[x] : undefined);
+			}
+			var cache = this.cacheContent;
+			if (undef(bindArgs.useCache)) {
+				bindArgs.useCache = cache;
+			}
+			if (undef(bindArgs.preventCache)) {
+				bindArgs.preventCache = !cache;
+			}
+			if (undef(bindArgs.mimetype)) {
+				bindArgs.mimetype = "text/html";
+			}
+			this.loader.bindObj = dojo.io.bind(bindArgs);
+		}
+		function stackRunner(st) {
+			var err = "", func = null;
+			var scope = this.scriptScope || dojo.global();
+			while (st.length) {
+				func = st.shift();
+				try {
+					func.call(scope);
+				}
+				catch (e) {
+					err += "\n" + func + " failed: " + e;
+				}
+			}
+			if (err.length) {
+				var name = (st == this.loader.addOnLoads) ? "addOnLoad" : "addOnUnLoad";
+				handleDefaults.call(this, name + " failure\n " + err, "onExecError", true);
+			}
+		}
+		function stackPusher(st, obj, func) {
+			if (typeof func == "undefined") {
+				st.push(obj);
+			} else {
+				st.push(function () {
+					obj[func]();
+				});
+			}
+		}
+		function refreshed() {
+			this.onResized();
+			this.onLoad();
+			this.isLoaded = true;
+		}
+		function asyncParse(data) {
+			if (this.executeScripts) {
+				this.onExecScript.call(this, data.scripts);
+			}
+			if (this.parseContent) {
+				this.onContentParse.call(this);
+			}
+			refreshed.call(this);
+		}
+		function runHandler() {
+			if (dojo.lang.isFunction(this.handler)) {
+				this.handler(this, this.containerNode || this.domNode);
+				refreshed.call(this);
+				return false;
+			}
+			return true;
+		}
+		this.htmlContentBasicFix = function (s, url) {
+			var titles = [], styles = [];
+			var regex = /<title[^>]*>([\s\S]*?)<\/title>/i;
+			var match, attr;
+			while (match = regex.exec(s)) {
+				titles.push(match[1]);
+				s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
+			}
+			regex = /(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i;
+			while (match = regex.exec(s)) {
+				if (match[1] && match[1].toLowerCase() == "style") {
+					styles.push(dojo.html.fixPathsInCssText(match[2], url));
+				} else {
+					if (attr = match[3].match(/href=(['"]?)([^'">]*)\1/i)) {
+						styles.push({path:attr[2]});
+					}
+				}
+				s = s.substring(0, match.index) + s.substr(match.index + match[0].length);
+			}
+			return {"s":s, "titles":titles, "styles":styles};
+		};
+		this.htmlContentAdjustPaths = function (s, url) {
+			var tag = "", str = "", tagFix = "", path = "";
+			var attr = [], origPath = "", fix = "";
+			var regexFindTag = /<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i;
+			var regexFindAttr = /\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i;
+			var regexProtocols = /^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/;
+			while (tag = regexFindTag.exec(s)) {
+				str += s.substring(0, tag.index);
+				s = s.substring((tag.index + tag[0].length), s.length);
+				tag = tag[0];
+				tagFix = "";
+				while (attr = regexFindAttr.exec(tag)) {
+					path = "";
+					origPath = attr[3];
+					switch (attr[1].toLowerCase()) {
+					  case "src":
+					  case "href":
+						if (regexProtocols.exec(origPath)) {
+							path = origPath;
+						} else {
+							path = (new dojo.uri.Uri(url, origPath).toString());
+						}
+						break;
+					  case "style":
+						path = dojo.html.fixPathsInCssText(origPath, url);
+						break;
+					  default:
+						path = origPath;
+					}
+					fix = " " + attr[1] + "=" + attr[2] + path + attr[2];
+					tagFix += tag.substring(0, attr.index) + fix;
+					tag = tag.substring((attr.index + attr[0].length), tag.length);
+				}
+				str += tagFix + tag;
+			}
+			return str + s;
+		};
+		this.htmlContentScripts = function (s, collectScripts) {
+			var scripts = [], requires = [], match = [];
+			var attr = "", tmp = null, tag = "", sc = "", str = "";
+			var regex = /<script([^>]*)>([\s\S]*?)<\/script>/i;
+			var regexSrc = /src=(['"]?)([^"']*)\1/i;
+			var regexDojoJs = /.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/;
+			var regexInvalid = /(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g;
+			var regexRequires = /dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix)|defineNamespace)\((['"]).*?\1\)\s*;?/;
+			while (match = regex.exec(s)) {
+				if (this.executeScripts && match[1]) {
+					if (attr = regexSrc.exec(match[1])) {
+						if (regexDojoJs.exec(attr[2])) {
+							dojo.debug("Security note! inhibit:" + attr[2] + " from  beeing loaded again.");
+						} else {
+							scripts.push({path:attr[2]});
+						}
+					}
+				}
+				if (match[2]) {
+					sc = match[2].replace(regexInvalid, "");
+					if (!sc) {
+						continue;
+					}
+					while (tmp = regexRequires.exec(sc)) {
+						requires.push(tmp[0]);
+						sc = sc.substring(0, tmp.index) + sc.substr(tmp.index + tmp[0].length);
+					}
+					if (collectScripts) {
+						scripts.push(sc);
+					}
+				}
+				s = s.substr(0, match.index) + s.substr(match.index + match[0].length);
+			}
+			if (collectScripts) {
+				var regex = /(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*\S=(['"])[^>]*[^\.\]])scriptScope([^>]*>)/;
+				str = "";
+				while (tag = regex.exec(s)) {
+					tmp = ((tag[2] == "'") ? "\"" : "'");
+					str += s.substring(0, tag.index);
+					s = s.substr(tag.index).replace(regex, "$1dojo.widget.byId(" + tmp + this.widgetId + tmp + ").scriptScope$3");
+				}
+				s = str + s;
+			}
+			return {"s":s, "requires":requires, "scripts":scripts};
+		};
+		this.splitAndFixPaths = function (args) {
+			if (!args.url) {
+				args.url = "./";
+			}
+			url = new dojo.uri.Uri(location, args.url).toString();
+			var ret = {"xml":"", "styles":[], "titles":[], "requires":[], "scripts":[], "url":url};
+			if (args.content) {
+				var tmp = null, content = args.content;
+				if (args.adjustPaths) {
+					content = _loader.htmlContentAdjustPaths.call(this, content, url);
+				}
+				tmp = _loader.htmlContentBasicFix.call(this, content, url);
+				content = tmp.s;
+				ret.styles = tmp.styles;
+				ret.titles = tmp.titles;
+				if (args.collectRequires || args.collectScripts) {
+					tmp = _loader.htmlContentScripts.call(this, content, args.collectScripts);
+					content = tmp.s;
+					ret.requires = tmp.requires;
+					ret.scripts = tmp.scripts;
+				}
+				var match = [];
+				if (args.bodyExtract) {
+					match = content.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+					if (match) {
+						content = match[1];
+					}
+				}
+				ret.xml = content;
+			}
+			return ret;
+		};
+		this.hookUp = function (args) {
+			var widget = args.widget;
+			if (dojo.lang.isString(widget)) {
+				if (args.mixin) {
+					dojo.raise(this.toString() + ", cant use mixin when widget is a string");
+				}
+				widget = dojo.evalObjPath(widget);
+			}
+			if (!widget || !(widget instanceof dojo.widget.HtmlWidget)) {
+				dojo.raise(this.toString() + " Widget isn't defined or isn't a HtmlWidget instance");
+			}
+			if (widget.loader && widget.setUrl) {
+				return;
+			}
+			var widgetProto = (args.mixin) ? widget : widget.constructor.prototype;
+			widget.loader = {isLoaded:false, styleNodes:[], addOnLoads:[], addOnUnLoads:[], callOnUnLoad:(function (canCall) {
+				return function (after) {
+					this.abort();
+					if (canCall) {
+						this.onUnLoad();
+					}
+					canCall = after;
+				};
+			})(false), bindObj:null, unHook:(function (w, wg) {
+				var oldProps = {isContainer:w.isContainer, adjustPats:w.adjustPaths, href:w.href, extractContent:w.extractContent, parseContent:w.parseContent, cacheContent:w.cacheContent, bindArgs:w.bindArgs, preload:w.preload, refreshOnShow:w.refreshOnShow, handler:w.handler, trackHistory:w.trackHistory, executeScripts:w.executeScripts, scriptScope:w.scriptScope, postCreate:w.postCreate, show:w.show, refresh:w.refresh, loadContents:w.loadContents, abort:w.abort, destroy:w.destroy, onLoad:w.onLoad, onUnLoad:w.onUnLoad, addOnLoad:w.addOnLoad, addOnUnLoad:w.addOnUnLoad, onDownloadStart:w.onDownloadStart, onDownloadEnd:w.onDownloadEnd, onDownloadError:w.onDownloadError, onContentError:w.onContentError, onExecError:w.onExecError, onSetContent:w.onSetContent, setUrl:w.setUrl, setContent:w.setContent, onContentParse:w.onContentParse, onExecScript:w.onExecScript, setHandler:w.setHandler};
+				return function () {
+					if (wg.abort) {
+						wg.abort();
+					}
+					if ((w != wg) && (dojo.widget.byType(wg.widgetType).length > 1)) {
+						return;
+					}
+					for (var x in oldProps) {
+						if (oldProps[x] === undefined) {
+							delete w[x];
+							continue;
+						}
+						w[x] = oldProps[x];
+					}
+					delete wg._loader_defined;
+					delete wg.loader;
+				};
+			})(widgetProto, widget)};
+			if (widgetProto._loader_defined || widget._loader_defined) {
+				return;
+			}
+			dojo.mixin(widgetProto, {isContainer:true, adjustPaths:undef(widgetProto.adjustPaths) ? true : widgetProto.adjustPaths, href:undef(widgetProto.href) ? "" : widgetProto.href, extractContent:undef(widgetProto.extractContent) ? true : widgetProto.extractContent, parseContent:undef(widgetProto.parseContent) ? true : widgetProto.parseContent, cacheContent:undef(widgetProto.cacheContent) ? true : widgetProto.cacheContent, bindArgs:undef(widgetProto.bindArgs) ? {} : widgetProto.bindArgs, preload:undef(widgetProto.preload) ? false : widgetProto.preload, refreshOnShow:undef(widgetProto.refreshOnShow) ? false : widgetProto.refreshOnShow, handler:undef(widgetProto.handler) ? "" : widgetProto.handler, executeScripts:undef(widgetProto.executeScripts) ? false : widgetProto.executeScripts, trackHistory:undef(widgetProto.tracHistory) ? false : widgetProto.trackHistory, scriptScope:null});
+			widgetProto.postCreate = (function (postCreate) {
+				return function () {
+					if (widgetProto.constructor.superclass.postCreate != postCreate) {
+						postCreate.apply(this, arguments);
+					} else {
+						widgetProto.constructor.superclass.postCreate.apply(this, arguments);
+					}
+					if (this.handler !== "") {
+						this.setHandler(this.handler);
+					}
+					if (this.isShowing() || this.preload) {
+						this.loadContents();
+						if (!this.href) {
+							_loader._log(this, (this.domNode || this.containerNode).innerHTML);
+						}
+					}
+				};
+			})(widgetProto.postCreate);
+			widgetProto.show = (function (show) {
+				return function () {
+					if (this.refreshOnShow) {
+						this.refresh();
+					} else {
+						this.loadContents();
+					}
+					if ((widgetProto.constructor.superclass.show == show) || !isFunc(show)) {
+						widgetProto.constructor.superclass.show.apply(this, arguments);
+					} else {
+						show.apply(this, arguments);
+					}
+				};
+			})(widgetProto.show);
+			widgetProto.destroy = (function (destroy) {
+				return function (destroy) {
+					this.onUnLoad();
+					this.abort();
+					this.loader.unHook();
+					if ((widgetProto.constructor.superclass.destroy != destroy) && isFunc(destroy)) {
+						destroy.apply(this, arguments);
+					} else {
+						widgetProto.constructor.superclass.destroy.apply(this, arguments);
+					}
+				};
+			})(widgetProto.destroy);
+			if (!widgetProto.refresh) {
+				widgetProto.refresh = function () {
+					this.loader.isLoaded = false;
+					this.loadContents();
+				};
+			}
+			if (!widgetProto.loadContents) {
+				widgetProto.loadContents = function () {
+					if (this.loader.isLoaded) {
+						return;
+					}
+					if (isFunc(this.handler)) {
+						runHandler.call(this);
+					} else {
+						if (this.href !== "") {
+							handleDefaults.call(this, "Loading...", "onDownloadStart");
+							var self = this, url = this.href;
+							downloader.call(this, {url:url, load:function (type, data, xhr) {
+								self.onDownloadEnd.call(self, url, data);
+							}, error:function (type, err, xhr) {
+								var e = {responseText:xhr.responseText, status:xhr.status, statusText:xhr.statusText, responseHeaders:(xhr.getAllResponseHeaders) ? xhr.getAllResponseHeaders() : [], _text:"Error loading '" + url + "' (" + xhr.status + " " + xhr.statusText + ")"};
+								handleDefaults.call(self, e, "onDownloadError");
+								self.onLoad();
+							}});
+						}
+					}
+				};
+			}
+			if (!widgetProto.abort) {
+				widgetProto.abort = function () {
+					if (!this.loader || !this.loader.bindObj || !this.loader.bindObj.abort) {
+						return;
+					}
+					this.loader.bindObj.abort();
+					this.loader.bindObj = null;
+				};
+			}
+			if (!widgetProto.onLoad) {
+				widgetProto.onLoad = function () {
+					stackRunner.call(this, this.loader.addOnLoads);
+					this.loader.isLoaded = true;
+				};
+			}
+			if (!widgetProto.onUnLoad) {
+				widgetProto.onUnLoad = function () {
+					stackRunner.call(this, this.loader.addOnUnLoads);
+					delete this.scriptScope;
+				};
+			}
+			if (!widgetProto.addOnLoad) {
+				widgetProto.addOnLoad = function (obj, func) {
+					stackPusher.call(this, this.loader.addOnLoads, obj, func);
+				};
+			}
+			if (!widgetProto.addOnUnLoad) {
+				widgetProto.addOnUnLoad = function (obj, func) {
+					stackPusher.call(this, this.loader.addOnUnLoads, obj, func);
+				};
+			}
+			if (!widgetProto.onExecError) {
+				widgetProto.onExecError = function () {
+				};
+			}
+			if (!widgetProto.onContentError) {
+				widgetProto.onContentError = function () {
+				};
+			}
+			if (!widgetProto.onDownloadError) {
+				widgetProto.onDownloadError = function () {
+				};
+			}
+			if (!widgetProto.onDownloadStart) {
+				widgetProto.onDownloadStart = function (onDownloadStart) {
+				};
+			}
+			if (!widgetProto.onDownloadEnd) {
+				widgetProto.onDownloadEnd = function (url, data) {
+					var args = {content:data, url:url, adjustPaths:this.adjustPaths, collectScripts:this.executeScripts, collectRequires:this.parseContent, bodyExtract:this.extractContent};
+					data = _loader.splitAndFixPaths.call(this, args);
+					this.setContent(data);
+				};
+			}
+			if (!widgetProto.onSetContent) {
+				widgetProto.onSetContent = function (cont) {
+					this.destroyChildren();
+					var styleNodes = this.loader.styleNodes;
+					while (styleNodes.length) {
+						var st = styleNodes.pop();
+						if (st && st.parentNode) {
+							st.parentNode.removeChild(st);
+						}
+					}
+					var node = this.containerNode || this.domNode;
+					while (node.firstChild) {
+						try {
+							dojo.event.browser.clean(node.firstChild);
+						}
+						catch (e) {
+						}
+						node.removeChild(node.firstChild);
+					}
+					try {
+						if (typeof cont != "string") {
+							node.appendChild(cont);
+						} else {
+							try {
+								node.innerHTML = cont;
+							}
+							catch (e) {
+								var tmp;
+								(tmp = dojo.doc().createElement("div")).innerHTML = cont;
+								while (tmp.firstChild) {
+									node.appendChild(tmp.removeChild(tmp.firstChild));
+								}
+							}
+						}
+					}
+					catch (e) {
+						e._text = "Could'nt load content: " + e;
+						var useAlert = (this.loader._onSetContent_err == e._text);
+						this.loader._onSetContent_err = e._text;
+						handleDefaults.call(this, e, "onContentError", useAlert);
+					}
+				};
+			}
+			if (!widgetProto.setUrl) {
+				widgetProto.setUrl = function (url) {
+					this.href = url;
+					this.loader.isLoaded = false;
+					if (this.preload || this.isShowing()) {
+						this.loadContents();
+					}
+				};
+			}
+			if (!widgetProto.setContent) {
+				widgetProto.setContent = function (data, dontLog) {
+					this.loader.callOnUnLoad.call(this, true);
+					if (!data || dojo.html.isNode(data)) {
+						this.onSetContent(data);
+						refreshed.call(this);
+					} else {
+						if (typeof data.xml != "string") {
+							this.href = "";
+							var args = {content:data, url:this.href, adjustPaths:this.adjustPaths, collectScripts:this.executeScripts, collectRequires:this.parseContent, bodyExtract:this.extractContent};
+							data = _loader.splitAndFixPaths.call(this, args);
+						} else {
+							if (data.url != "./") {
+								this.url = data.url;
+							}
+						}
+						this.onSetContent(data.xml);
+						for (var i = 0, styles = data.styles; i < styles.length; i++) {
+							if (styles[i].path) {
+								this.loader.styleNodes.push(dojo.html.insertCssFile(styles[i].path));
+							} else {
+								this.loader.styleNodes.push(dojo.html.insertCssText(styles[i]));
+							}
+						}
+						if (this.parseContent) {
+							for (var i = 0, requires = data.requires; i < requires.length; i++) {
+								try {
+									eval(requires[i]);
+								}
+								catch (e) {
+									e._text = "dojo.widget.html.loader.hookUp: error in package loading calls, " + (e.description || e);
+									handleDefaults.call(this, e, "onContentError", true);
+								}
+							}
+						}
+						if (dojo.hostenv.isXDomain && data.requires.length) {
+							dojo.addOnLoad(function () {
+								asyncParse.call(this, data);
+								if (!dontLog) {
+									_loader._log(this, data);
+								}
+							});
+							dontLog = true;
+						} else {
+							asyncParse.call(this, data);
+						}
+					}
+					if (!dontLog) {
+					}
+				};
+			}
+			if (!widgetProto.onContentParse) {
+				widgetProto.onContentParse = function () {
+					var node = this.containerNode || this.domNode;
+					var parser = new dojo.xml.Parse();
+					var frag = parser.parseElement(node, null, true);
+					dojo.widget.getParser().createSubComponents(frag, this);
+				};
+			}
+			if (!widgetProto.onExecScript) {
+				widgetProto.onExecScript = function (scripts) {
+					var self = this, tmp = "", code = "";
+					for (var i = 0; i < scripts.length; i++) {
+						if (scripts[i].path) {
+							var url = scripts[i].path;
+							downloader.call(this, {"url":url, "load":function (type, scriptStr) {
+								(function () {
+									tmp = scriptStr;
+									scripts[i] = scriptStr;
+								}).call(self);
+							}, "error":function (type, error) {
+								error._text = type + " downloading remote script";
+								handleDefaults.call(self, error, "onExecError", true);
+							}, "mimetype":"text/plain", "sync":true});
+							code += tmp;
+						} else {
+							code += scripts[i];
+						}
+					}
+					try {
+						delete this.scriptScope;
+						this.scriptScope = new (new Function("_container_", code + "; return this;"))(self);
+					}
+					catch (e) {
+						e._text = "Error running scripts from content:\n" + (e.description || e.toString());
+						handleDefaults.call(this, e, "onExecError", true);
+					}
+				};
+			}
+			if (!widgetProto.setHandler) {
+				widgetProto.setHandler = function (handler) {
+					var fcn = dojo.lang.isFunction(handler) ? handler : window[handler];
+					if (!isFunc(fcn)) {
+						handleDefaults.call(this, "Unable to set handler, '" + handler + "' not a function.", "onExecError", true);
+						return;
+					}
+					this.handler = function () {
+						return fcn.apply(this, arguments);
+					};
+				};
+			}
+			widgetProto._loader_defined = true;
+		};
+	})();
+}});
+
+
 __CPAN_DIR__ src/widget/Editor2Plugin
+__CPAN_FILE__ src/widget/Editor2Plugin/AlwaysShowToolbar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.AlwaysShowToolbar"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
+	dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
+		if (editor.toolbarAlwaysVisible) {
+			var p = new dojo.widget.Editor2Plugin.AlwaysShowToolbar(editor);
+		}
+	});
+	dojo.declare("dojo.widget.Editor2Plugin.AlwaysShowToolbar", null, function (editor) {
+		this.editor = editor;
+		this.editor.registerLoadedPlugin(this);
+		this.setup();
+	}, {_scrollSetUp:false, _fixEnabled:false, _scrollThreshold:false, _handleScroll:true, setup:function () {
+		var tdn = this.editor.toolbarWidget;
+		if (!tdn.tbBgIframe) {
+			tdn.tbBgIframe = new dojo.html.BackgroundIframe(tdn.domNode);
+			tdn.tbBgIframe.onResized();
+		}
+		this.scrollInterval = setInterval(dojo.lang.hitch(this, "globalOnScrollHandler"), 100);
+		dojo.event.connect("before", this.editor.toolbarWidget, "destroy", this, "destroy");
+	}, globalOnScrollHandler:function () {
+		var isIE = dojo.render.html.ie;
+		if (!this._handleScroll) {
+			return;
+		}
+		var dh = dojo.html;
+		var tdn = this.editor.toolbarWidget.domNode;
+		var db = dojo.body();
+		if (!this._scrollSetUp) {
+			this._scrollSetUp = true;
+			var editorWidth = dh.getMarginBox(this.editor.domNode).width;
+			this._scrollThreshold = dh.abs(tdn, true).y;
+			if ((isIE) && (db) && (dh.getStyle(db, "background-image") == "none")) {
+				with (db.style) {
+					backgroundImage = "url(" + dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif") + ")";
+					backgroundAttachment = "fixed";
+				}
+			}
+		}
+		var scrollPos = (window["pageYOffset"]) ? window["pageYOffset"] : (document["documentElement"] || document["body"]).scrollTop;
+		if (scrollPos > this._scrollThreshold) {
+			if (!this._fixEnabled) {
+				var tdnbox = dojo.html.getMarginBox(tdn);
+				this.editor.editorObject.style.marginTop = tdnbox.height + "px";
+				if (isIE) {
+					tdn.style.left = dojo.html.abs(tdn, dojo.html.boxSizing.MARGIN_BOX).x;
+					if (tdn.previousSibling) {
+						this._IEOriginalPos = ["after", tdn.previousSibling];
+					} else {
+						if (tdn.nextSibling) {
+							this._IEOriginalPos = ["before", tdn.nextSibling];
+						} else {
+							this._IEOriginalPos = ["", tdn.parentNode];
+						}
+					}
+					dojo.body().appendChild(tdn);
+					dojo.html.addClass(tdn, "IEFixedToolbar");
+				} else {
+					with (tdn.style) {
+						position = "fixed";
+						top = "0px";
+					}
+				}
+				tdn.style.width = tdnbox.width + "px";
+				tdn.style.zIndex = 1000;
+				this._fixEnabled = true;
+			}
+			if (!dojo.render.html.safari) {
+				var eHeight = (this.height) ? parseInt(this.editor.height) : this.editor._lastHeight;
+				if (scrollPos > (this._scrollThreshold + eHeight)) {
+					tdn.style.display = "none";
+				} else {
+					tdn.style.display = "";
+				}
+			}
+		} else {
+			if (this._fixEnabled) {
+				(this.editor.object || this.editor.iframe).style.marginTop = null;
+				with (tdn.style) {
+					position = "";
+					top = "";
+					zIndex = "";
+					display = "";
+				}
+				if (isIE) {
+					tdn.style.left = "";
+					dojo.html.removeClass(tdn, "IEFixedToolbar");
+					if (this._IEOriginalPos) {
+						dojo.html.insertAtPosition(tdn, this._IEOriginalPos[1], this._IEOriginalPos[0]);
+						this._IEOriginalPos = null;
+					} else {
+						dojo.html.insertBefore(tdn, this.editor.object || this.editor.iframe);
+					}
+				}
+				tdn.style.width = "";
+				this._fixEnabled = false;
+			}
+		}
+	}, destroy:function () {
+		this._IEOriginalPos = null;
+		this._handleScroll = false;
+		clearInterval(this.scrollInterval);
+		this.editor.unregisterLoadedPlugin(this);
+		if (dojo.render.html.ie) {
+			dojo.html.removeClass(this.editor.toolbarWidget.domNode, "IEFixedToolbar");
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2Plugin/FindReplace.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.FindReplace"], ["require", "dojo.widget.Editor2"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.FindReplace");
+	dojo.require("dojo.widget.Editor2");
+	dojo.declare("dojo.widget.Editor2Plugin.FindCommand", dojo.widget.Editor2DialogCommand, {SearchOption:{CaseSensitive:4, SearchBackwards:64, WholeWord:2, WrapSearch:128}, find:function (text, option) {
+		this._editor.focus();
+		if (window.find) {
+			this._editor.window.find(text, option & this.SearchOption.CaseSensitive ? true : false, option & this.SearchOption.SearchBackwards ? true : false, option & this.SearchOption.WrapSearch ? true : false, option & this.SearchOption.WholeWord ? true : false);
+		} else {
+			if (dojo.body().createTextRange) {
+				var range = this._editor.document.body.createTextRange();
+				var found = range.findText(text, (option & this.SearchOption.SearchBackwards) ? 1 : -1, option);
+				if (found) {
+					range.scrollIntoView();
+					range.select();
+				} else {
+					alert("Can not find " + text + " in the document");
+				}
+			} else {
+				alert("No idea how to search in this browser. Please submit patch if you know.");
+			}
+		}
+	}, getText:function () {
+		return "Find";
+	}});
+	dojo.widget.Editor2Plugin.FindReplace = {getCommand:function (editor, name) {
+		var name = name.toLowerCase();
+		var command;
+		if (name == "find") {
+			command = new dojo.widget.Editor2Plugin.FindCommand(editor, "find", {contentFile:"dojo.widget.Editor2Plugin.FindReplaceDialog", contentClass:"Editor2FindDialog", title:"Find", width:"350px", height:"150px", modal:false});
+		} else {
+			if (name == "replace") {
+				command = new dojo.widget.Editor2DialogCommand(editor, "replace", {contentFile:"dojo.widget.Editor2Plugin.FindReplaceDialog", contentClass:"Editor2ReplaceDialog", href:dojo.uri.cache.set(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/Dialog/replace.html"), "<table style=\"white-space: nowrap;\">\n<tr><td>Find: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td>Replace with: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td colspan='2'><table><tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_casesens\" id=\"dojo_replace_option_casesens\" />\n\t\t<label for=\"dojo_replace_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_backwards\" id=\"dojo_replace_option_backwards\" />\n\t\t<label for=\"dojo_replace_option_backwards\">Search Backwards</label></td></tr></table></td></tr>\n<tr><td colspan=2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replace'>Replace</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replaceAll'>Replace All</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n"), title:"Replace", width:"350px", height:"200px", modal:false});
+			}
+		}
+		return command;
+	}, getToolbarItem:function (name) {
+		var name = name.toLowerCase();
+		var item;
+		if (name == "replace") {
+			item = new dojo.widget.Editor2ToolbarButton("Replace");
+		} else {
+			if (name == "find") {
+				item = new dojo.widget.Editor2ToolbarButton("Find");
+			}
+		}
+		return item;
+	}};
+	dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.FindReplace.getCommand);
+	dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.FindReplace.getToolbarItem);
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2Plugin/TableOperation.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.TableOperation"], ["require", "dojo.widget.Editor2"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.TableOperation");
+	dojo.require("dojo.widget.Editor2");
+	dojo.event.topic.subscribe("dojo.widget.RichText::init", function (editor) {
+		if (dojo.render.html.ie) {
+			editor.contentDomPreFilters.push(dojo.widget.Editor2Plugin.TableOperation.showIETableBorder);
+			editor.contentDomPostFilters.push(dojo.widget.Editor2Plugin.TableOperation.removeIEFakeClass);
+		}
+		editor.getCommand("toggletableborder");
+	});
+	dojo.lang.declare("dojo.widget.Editor2Plugin.deleteTableCommand", dojo.widget.Editor2Command, {execute:function () {
+		var table = dojo.withGlobal(this._editor.window, "getAncestorElement", dojo.html.selection, ["table"]);
+		if (table) {
+			dojo.withGlobal(this._editor.window, "selectElement", dojo.html.selection, [table]);
+			this._editor.execCommand("inserthtml", " ");
+		}
+	}, getState:function () {
+		if (this._editor._lastStateTimestamp > this._updateTime || this._state == undefined) {
+			this._updateTime = this._editor._lastStateTimestamp;
+			var table = dojo.withGlobal(this._editor.window, "hasAncestorElement", dojo.html.selection, ["table"]);
+			this._state = table ? dojo.widget.Editor2Manager.commandState.Enabled : dojo.widget.Editor2Manager.commandState.Disabled;
+		}
+		return this._state;
+	}, getText:function () {
+		return "Delete Table";
+	}});
+	dojo.lang.declare("dojo.widget.Editor2Plugin.toggleTableBorderCommand", dojo.widget.Editor2Command, function () {
+		this._showTableBorder = false;
+		dojo.event.connect(this._editor, "editorOnLoad", this, "execute");
+	}, {execute:function () {
+		if (this._showTableBorder) {
+			this._showTableBorder = false;
+			if (dojo.render.html.moz) {
+				this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));
+			} else {
+				if (dojo.render.html.ie) {
+					this._editor.removeStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));
+				}
+			}
+		} else {
+			this._showTableBorder = true;
+			if (dojo.render.html.moz) {
+				this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_gecko.css"));
+			} else {
+				if (dojo.render.html.ie) {
+					this._editor.addStyleSheet(dojo.uri.moduleUri("dojo.widget", "templates/Editor2/showtableborder_ie.css"));
+				}
+			}
+		}
+	}, getText:function () {
+		return "Toggle Table Border";
+	}, getState:function () {
+		return this._showTableBorder ? dojo.widget.Editor2Manager.commandState.Latched : dojo.widget.Editor2Manager.commandState.Enabled;
+	}});
+	dojo.widget.Editor2Plugin.TableOperation = {getCommand:function (editor, name) {
+		switch (name.toLowerCase()) {
+		  case "toggletableborder":
+			return new dojo.widget.Editor2Plugin.toggleTableBorderCommand(editor, name);
+		  case "inserttable":
+			return new dojo.widget.Editor2DialogCommand(editor, "inserttable", {contentFile:"dojo.widget.Editor2Plugin.InsertTableDialog", contentClass:"Editor2InsertTableDialog", title:"Insert/Edit Table", width:"450px", height:"250px"});
+		  case "deletetable":
+			return new dojo.widget.Editor2Plugin.deleteTableCommand(editor, name);
+		}
+	}, getToolbarItem:function (name) {
+		var name = name.toLowerCase();
+		var item;
+		switch (name) {
+		  case "inserttable":
+		  case "toggletableborder":
+			item = new dojo.widget.Editor2ToolbarButton(name);
+		}
+		return item;
+	}, getContextMenuGroup:function (name, contextmenuplugin) {
+		return new dojo.widget.Editor2Plugin.TableContextMenuGroup(contextmenuplugin);
+	}, showIETableBorder:function (dom) {
+		var tables = dom.getElementsByTagName("table");
+		dojo.lang.forEach(tables, function (t) {
+			dojo.html.addClass(t, "dojoShowIETableBorders");
+		});
+		return dom;
+	}, removeIEFakeClass:function (dom) {
+		var tables = dom.getElementsByTagName("table");
+		dojo.lang.forEach(tables, function (t) {
+			dojo.html.removeClass(t, "dojoShowIETableBorders");
+		});
+		return dom;
+	}};
+	dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getCommand);
+	dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.TableOperation.getToolbarItem);
+	if (dojo.widget.Editor2Plugin.ContextMenuManager) {
+		dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup("Table", dojo.widget.Editor2Plugin.TableOperation.getContextMenuGroup);
+		dojo.declare("dojo.widget.Editor2Plugin.TableContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
+			this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Delete Table", command:"deletetable"}));
+			this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {caption:"Table Property", command:"inserttable", iconClass:"TB_Button_Icon TB_Button_Table"}));
+		}, checkVisibility:function () {
+			var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+			var table = dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"]);
+			if (dojo.withGlobal(curInst.window, "hasAncestorElement", dojo.html.selection, ["table"])) {
+				this.items[0].show();
+				this.items[1].show();
+				return true;
+			} else {
+				this.items[0].hide();
+				this.items[1].hide();
+				return false;
+			}
+		}});
+	}
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2Plugin/SimpleSignalCommands.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -34389,6 +70699,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.SimpleSignalCommands");
 dojo.require("dojo.widget.Editor2");
 dojo.declare("dojo.widget.Editor2Plugin.SimpleSignalCommand", dojo.widget.Editor2Command, function (editor, name) {
@@ -34430,6 +70742,112 @@
 dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.SimpleSignalCommands.Handler);
 
 
+__CPAN_FILE__ src/widget/Editor2Plugin/ToolbarDndSupport.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.ToolbarDndSupport"], ["require", "dojo.dnd.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.ToolbarDndSupport");
+	dojo.require("dojo.dnd.*");
+	dojo.event.topic.subscribe("dojo.widget.Editor2::preLoadingToolbar", function (editor) {
+		dojo.dnd.dragManager.nestedTargets = true;
+		var p = new dojo.widget.Editor2Plugin.ToolbarDndSupport(editor);
+	});
+	dojo.declare("dojo.widget.Editor2Plugin.ToolbarDndSupport", null, {lookForClass:"dojoEditorToolbarDnd TB_ToolbarSet TB_Toolbar", initializer:function (editor) {
+		this.editor = editor;
+		dojo.event.connect(this.editor, "toolbarLoaded", this, "setup");
+		this.editor.registerLoadedPlugin(this);
+	}, setup:function () {
+		dojo.event.disconnect(this.editor, "toolbarLoaded", this, "setup");
+		var tbw = this.editor.toolbarWidget;
+		dojo.event.connect("before", tbw, "destroy", this, "destroy");
+		var nodes = dojo.html.getElementsByClass(this.lookForClass, tbw.domNode, null, dojo.html.classMatchType.ContainsAny);
+		if (!nodes) {
+			dojo.debug("dojo.widget.Editor2Plugin.ToolbarDndSupport: No dom node with class in " + this.lookForClass);
+			return;
+		}
+		for (var i = 0; i < nodes.length; i++) {
+			var node = nodes[i];
+			var droptarget = node.getAttribute("dojoETDropTarget");
+			if (droptarget) {
+				(new dojo.dnd.HtmlDropTarget(node, [droptarget + tbw.widgetId])).vertical = true;
+			}
+			var dragsource = node.getAttribute("dojoETDragSource");
+			if (dragsource) {
+				new dojo.dnd.HtmlDragSource(node, dragsource + tbw.widgetId);
+			}
+		}
+	}, destroy:function () {
+		this.editor.unregisterLoadedPlugin(this);
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2Plugin/SimpleSignalCommands.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.SimpleSignalCommands"], ["require", "dojo.widget.Editor2"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.SimpleSignalCommands");
+	dojo.require("dojo.widget.Editor2");
+	dojo.declare("dojo.widget.Editor2Plugin.SimpleSignalCommand", dojo.widget.Editor2Command, function (editor, name) {
+		if (dojo.widget.Editor2.prototype[name] == undefined) {
+			dojo.widget.Editor2.prototype[name] = function () {
+			};
+		}
+	}, {execute:function () {
+		this._editor[this._name]();
+	}});
+	if (dojo.widget.Editor2Plugin["SimpleSignalCommands"]) {
+		dojo.widget.Editor2Plugin["_SimpleSignalCommands"] = dojo.widget.Editor2Plugin["SimpleSignalCommands"];
+	}
+	dojo.widget.Editor2Plugin.SimpleSignalCommands = {signals:["save", "insertImage"], Handler:function (name) {
+		if (name.toLowerCase() == "save") {
+			return new dojo.widget.Editor2ToolbarButton("Save");
+		} else {
+			if (name.toLowerCase() == "insertimage") {
+				return new dojo.widget.Editor2ToolbarButton("InsertImage");
+			}
+		}
+	}, getCommand:function (editor, name) {
+		var signal;
+		dojo.lang.every(this.signals, function (s) {
+			if (s.toLowerCase() == name.toLowerCase()) {
+				signal = s;
+				return false;
+			}
+			return true;
+		});
+		if (signal) {
+			return new dojo.widget.Editor2Plugin.SimpleSignalCommand(editor, signal);
+		}
+	}};
+	if (dojo.widget.Editor2Plugin["_SimpleSignalCommands"]) {
+		dojo.lang.mixin(dojo.widget.Editor2Plugin.SimpleSignalCommands, dojo.widget.Editor2Plugin["_SimpleSignalCommands"]);
+	}
+	dojo.widget.Editor2Manager.registerHandler(dojo.widget.Editor2Plugin.SimpleSignalCommands, "getCommand");
+	dojo.widget.Editor2ToolbarItemManager.registerHandler(dojo.widget.Editor2Plugin.SimpleSignalCommands.Handler);
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2Plugin/FindReplaceDialog.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -34441,6 +70859,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.FindReplaceDialog");
 dojo.widget.defineWidget("dojo.widget.Editor2FindDialog", dojo.widget.Editor2DialogContent, {templateString:"<table style=\"white-space: nowrap;\">\n<tr><td colspan='2'>Find: <input type=\"text\" dojoAttachPoint=\"find_text\" /></td></tr>\n<tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_casesens\" />\n\t\t<label for=\"find_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_backwards\" />\n\t\t<label for=\"find_option_backwards\">Search Backwards</label></td></tr>\n<tr><td style=\"display: none;\"><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_wholeword\" />\n\t\t<label for=\"find_option_wholeword\">Whole Word</label></td>\n<tr><td colspan=\"1\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:find'>Find</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", find:function () {
 	var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
@@ -34475,6 +70895,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.InsertImageDialog");
 dojo.widget.defineWidget("dojo.widget.Editor2InsertImageDialog", dojo.widget.Editor2DialogContent, {templateString:"<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\" width=\"100%\" height=\"100%\">\n\t<tr>\n\t\t<td>\n\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"100%\">\n\t\t\t\t\t\t<span>URL</span>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style=\"display: none\" nowrap=\"nowrap\" rowspan=\"2\">\n\t\t\t\t\t\t<!--input id=\"btnBrowse\" onclick=\"BrowseServer();\" type=\"button\" value=\"Browse Server\"/-->\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign=\"top\">\n\t\t\t\t\t\t<input dojoAttachPoint=\"image_src\" style=\"width: 100%\" type=\"text\" />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<span>Alternative Text</span><br />\n\t\t\t<input dojoAttachPoint=\"image_alt\" style=\"width: 100%\" type=\"text\" /><br />\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td valign=\"top\">\n\t\t\t<table><tr><td>\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Width</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"3\" dojoAttachPoint=\"image_width\" /></td>\n\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<!--div id=\"btnLockSizes\" class=\"BtnLocked\" onmouseover=\"this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';\"\n\t\t\t\t\t\t\t\t\t\tonmouseout=\"this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );\" title=\"Lock Sizes\"\n\t\t\t\t\t\t\t\t\t\tonclick=\"SwitchLock(this);\">\n\t\t\t\t\t\t\t\t\t</div-->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<!--div id=\"btnResetSize\" class=\"BtnReset\" onmouseover=\"this.className='BtnReset BtnOver';\"\n\t\t\t\t\t\t\t\t\t\tonmouseout=\"this.className='BtnReset';\" title=\"Reset Size\" onclick=\"ResetSizes();\">\n\t\t\t\t\t\t\t\t\t</div-->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Height</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"3\" dojoAttachPoint=\"image_height\" /></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td><td>\n\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >HSpace</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" dojoAttachPoint=\"image_hspace\"/></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >VSpace</span>&nbsp;</td>\n\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" dojoAttachPoint=\"image_vspace\" /></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td></tr>\n\t\t\t\t\t<tr><td colspan=\"2\">\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Border</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" value=\"\" dojoAttachPoint=\"image_border\" /></td>\n\t\t\t\t\t\t\t\t<td>&nbsp;&nbsp;&nbsp;</td>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >Align</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<select dojoAttachPoint=\"image_align\">\n\n\t\t\t\t\t\t\t\t\t\t<option value=\"\" selected=\"selected\"></option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"left\">Left</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"absBottom\">Abs Bottom</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"absMiddle\">Abs Middle</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"baseline\">Baseline</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"bottom\">Bottom</option>\n\n\t\t\t\t\t\t\t\t\t\t<option value=\"middle\">Middle</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"right\">Right</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"textTop\">Text Top</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"top\">Top</option>\n\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr></table>\n\t\t</td>\n\t</tr>\n\t<tr><td>\n\t\t<table><tr>\n\t\t<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>\n\t\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n\t\t</tr></table>\n\t</td></tr>\n</table>\n", editableAttributes:["src", "alt", "width", "height", "hspace", "vspace", "border", "align"], loadContent:function () {
 	var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
@@ -34530,6 +70952,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.CreateLinkDialog");
 dojo.widget.defineWidget("dojo.widget.Editor2CreateLinkDialog", dojo.widget.Editor2DialogContent, {templateString:"<table>\n<tr><td>URL</td><td> <input type=\"text\" dojoAttachPoint=\"link_href\" name=\"dojo_createLink_href\"/></td></tr>\n<tr><td>Target </td><td><select dojoAttachPoint=\"link_target\">\n\t<option value=\"\">Self</option>\n\t<option value=\"_blank\">New Window</option>\n\t<option value=\"_top\">Top Window</option>\n\t</select></td></tr>\n<tr><td>Class </td><td><input type=\"text\" dojoAttachPoint=\"link_class\" /></td></tr>\n<tr><td colspan=\"2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", editableAttributes:["href", "target", "class"], loadContent:function () {
 	var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
@@ -34582,6 +71006,280 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Editor2Plugin/CreateLinkDialog.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.CreateLinkDialog"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.CreateLinkDialog");
+	dojo.widget.defineWidget("dojo.widget.Editor2CreateLinkDialog", dojo.widget.Editor2DialogContent, {templateString:"<table>\n<tr><td>URL</td><td> <input type=\"text\" dojoAttachPoint=\"link_href\" name=\"dojo_createLink_href\"/></td></tr>\n<tr><td>Target </td><td><select dojoAttachPoint=\"link_target\">\n\t<option value=\"\">Self</option>\n\t<option value=\"_blank\">New Window</option>\n\t<option value=\"_top\">Top Window</option>\n\t</select></td></tr>\n<tr><td>Class </td><td><input type=\"text\" dojoAttachPoint=\"link_class\" /></td></tr>\n<tr><td colspan=\"2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", editableAttributes:["href", "target", "class"], loadContent:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		curInst.saveSelection();
+		this.linkNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ["a"]);
+		var linkAttributes = {};
+		this.extraAttribText = "";
+		if (this.linkNode) {
+			var attrs = this.linkNode.attributes;
+			for (var i = 0; i < attrs.length; i++) {
+				if (dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase()) > -1) {
+					linkAttributes[attrs[i].name] = attrs[i].value;
+				} else {
+					if (attrs[i].specified == undefined || attrs[i].specified) {
+						this.extraAttribText += attrs[i].name + "=\"" + attrs[i].value + "\" ";
+					}
+				}
+			}
+		} else {
+			var html = dojo.withGlobal(curInst.window, "getSelectedText", dojo.html.selection);
+			if (html == null || html.length == 0) {
+				alert("Please select some text to create a link.");
+				return false;
+			}
+		}
+		for (var i = 0; i < this.editableAttributes.length; ++i) {
+			name = this.editableAttributes[i];
+			this["link_" + name].value = (linkAttributes[name] == undefined) ? "" : linkAttributes[name];
+		}
+		return true;
+	}, ok:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		curInst.restoreSelection();
+		if (!this.linkNode) {
+			var html = dojo.withGlobal(curInst.window, "getSelectedHtml", dojo.html.selection);
+		} else {
+			var html = this.linkNode.innerHTML;
+			dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.linkNode]);
+		}
+		var attstr = "";
+		for (var i = 0; i < this.editableAttributes.length; ++i) {
+			name = this.editableAttributes[i];
+			var value = this["link_" + name].value;
+			if (value.length > 0) {
+				attstr += name + "=\"" + value + "\" ";
+			}
+		}
+		curInst.execCommand("inserthtml", "<a " + attstr + this.extraAttribText + ">" + html + "</a>");
+		this.cancel();
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2Plugin/ContextMenu.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.ContextMenu"], ["require", "dojo.widget.Menu2"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.ContextMenu");
+	dojo.require("dojo.widget.Menu2");
+	dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
+		dojo.widget.Editor2Plugin.ContextMenuManager.getContextMenu(editor);
+	});
+	dojo.widget.Editor2Plugin.ContextMenuManager = {menuGroups:["Generic", "Link", "Anchor", "Image", "List", "Table"], _contextMenuGroupSets:{}, _registeredGroups:{}, _menus:{}, registerGroup:function (name, handler) {
+		if (this._registeredGroups[name]) {
+			alert("dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup: menu group " + name + "is already registered. Ignored.");
+			return;
+		}
+		this._registeredGroups[name] = handler;
+	}, removeGroup:function (name) {
+		delete this._registeredGroups[name];
+	}, getGroup:function (name, contextmenuplugin) {
+		if (this._registeredGroups[name]) {
+			var item = this._registeredGroups[name](name, contextmenuplugin);
+			if (item) {
+				return item;
+			}
+		}
+		switch (name) {
+		  case "Generic":
+		  case "Link":
+		  case "Image":
+			return new dojo.widget.Editor2Plugin[name + "ContextMenuGroup"](contextmenuplugin);
+		  case "Anchor":
+		  case "List":
+		}
+	}, registerGroupSet:function (name, set) {
+		this._contextMenuGroupSets[name] = set;
+	}, removeGroupSet:function (name) {
+		var set = this._contextMenuGroupSets[name];
+		delete this._contextMenuGroupSets[name];
+		return set;
+	}, getContextMenu:function (editor) {
+		var set = editor.contextMenuGroupSet || "defaultDojoEditor2MenuGroupSet";
+		if (this._menus[set]) {
+			this._menus[set].bindEditor(editor);
+			return this._menus[set];
+		}
+		var gs = (editor.contextMenuGroupSet && this._contextMenuGroupSets[editor.contextMenuGroupSet]) || this.menuGroups;
+		var menu = new dojo.widget.Editor2Plugin.ContextMenu(editor, gs);
+		this._menus[set] = menu;
+		return menu;
+	}};
+	dojo.declare("dojo.widget.Editor2Plugin.ContextMenu", null, function (editor, gs) {
+		this.groups = [];
+		this.separators = [];
+		this.editor = editor;
+		this.editor.registerLoadedPlugin(this);
+		this.contextMenu = dojo.widget.createWidget("PopupMenu2", {});
+		dojo.body().appendChild(this.contextMenu.domNode);
+		this.bindEditor(this.editor);
+		dojo.event.connect(this.contextMenu, "aboutToShow", this, "aboutToShow");
+		dojo.event.connect(this.editor, "destroy", this, "destroy");
+		this.setup(gs);
+	}, {bindEditor:function (editor) {
+		this.contextMenu.bindDomNode(editor.document.body);
+	}, setup:function (gs) {
+		for (var i in gs) {
+			var g = dojo.widget.Editor2Plugin.ContextMenuManager.getGroup(gs[i], this);
+			if (g) {
+				this.groups.push(g);
+			}
+		}
+	}, aboutToShow:function () {
+		var first = true;
+		for (var i in this.groups) {
+			if (i > 0 && this.separators.length != this.groups.length - 1) {
+				this.separators.push(dojo.widget.createWidget("MenuSeparator2", {}));
+				this.contextMenu.addChild(this.separators[this.separators.length - 1]);
+			}
+			if (this.groups[i].refresh()) {
+				if (i > 0) {
+					if (first) {
+						this.separators[i - 1].hide();
+					} else {
+						this.separators[i - 1].show();
+					}
+				}
+				if (first) {
+					first = false;
+				}
+			} else {
+				if (i > 0) {
+					this.separators[i - 1].hide();
+				}
+			}
+		}
+	}, destroy:function () {
+		this.editor.unregisterLoadedPlugin(this);
+		delete this.groups;
+		delete this.separators;
+		this.contextMenu.destroy();
+		delete this.contextMenu;
+	}});
+	dojo.widget.defineWidget("dojo.widget.Editor2ContextMenuItem", dojo.widget.MenuItem2, {command:"", buildRendering:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		this.caption = curInst.getCommand(this.command).getText();
+		dojo.widget.Editor2ContextMenuItem.superclass.buildRendering.apply(this, arguments);
+	}, onClick:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		if (curInst) {
+			var _command = curInst.getCommand(this.command);
+			if (_command) {
+				_command.execute();
+			}
+		}
+	}, refresh:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		if (curInst) {
+			var _command = curInst.getCommand(this.command);
+			if (_command) {
+				if (_command.getState() == dojo.widget.Editor2Manager.commandState.Disabled) {
+					this.disable();
+					return false;
+				} else {
+					this.enable();
+					return true;
+				}
+			}
+		}
+	}, hide:function () {
+		this.domNode.style.display = "none";
+	}, show:function () {
+		this.domNode.style.display = "";
+	}});
+	dojo.declare("dojo.widget.Editor2Plugin.SimpleContextMenuGroup", null, function (contextmenuplugin) {
+		this.contextMenu = contextmenuplugin.contextMenu;
+		this.items = [];
+		dojo.event.connect(contextmenuplugin, "destroy", this, "destroy");
+	}, {refresh:function () {
+		if (!this.items.length) {
+			this.createItems();
+			for (var i in this.items) {
+				this.contextMenu.addChild(this.items[i]);
+			}
+		}
+		return this.checkVisibility();
+	}, destroy:function () {
+		this.contextmenu = null;
+		delete this.items;
+		delete this.contextMenu;
+	}, createItems:function () {
+	}, checkVisibility:function () {
+		var show = false;
+		for (var i in this.items) {
+			show = show || this.items[i].refresh();
+		}
+		var action = show ? "show" : "hide";
+		for (var i in this.items) {
+			this.items[i][action]();
+		}
+		return show;
+	}});
+	dojo.declare("dojo.widget.Editor2Plugin.GenericContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
+		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"cut", iconClass:"dojoE2TBIcon dojoE2TBIcon_Cut"}));
+		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"copy", iconClass:"dojoE2TBIcon dojoE2TBIcon_Copy"}));
+		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"paste", iconClass:"dojoE2TBIcon dojoE2TBIcon_Paste"}));
+	}});
+	dojo.declare("dojo.widget.Editor2Plugin.LinkContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
+		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"createlink", iconClass:"dojoE2TBIcon dojoE2TBIcon_Link"}));
+		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"unlink", iconClass:"dojoE2TBIcon dojoE2TBIcon_UnLink"}));
+	}, checkVisibility:function () {
+		var show = this.items[1].refresh();
+		if (show) {
+			this.items[0].refresh();
+			for (var i in this.items) {
+				this.items[i].show();
+			}
+		} else {
+			for (var i in this.items) {
+				this.items[i].hide();
+			}
+		}
+		return show;
+	}});
+	dojo.declare("dojo.widget.Editor2Plugin.ImageContextMenuGroup", dojo.widget.Editor2Plugin.SimpleContextMenuGroup, {createItems:function () {
+		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command:"insertimage", iconClass:"dojoE2TBIcon dojoE2TBIcon_Image"}));
+	}, checkVisibility:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		var img = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);
+		if (img && img.tagName.toLowerCase() == "img") {
+			this.items[0].show();
+			return true;
+		} else {
+			this.items[0].hide();
+			return false;
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2Plugin/TableOperation.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -34593,6 +71291,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.TableOperation");
 dojo.require("dojo.widget.Editor2");
 dojo.event.topic.subscribe("dojo.widget.RichText::init", function (editor) {
@@ -34713,6 +71413,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.FindReplace");
 dojo.require("dojo.widget.Editor2");
 dojo.declare("dojo.widget.Editor2Plugin.FindCommand", dojo.widget.Editor2DialogCommand, {SearchOption:{CaseSensitive:4, SearchBackwards:64, WholeWord:2, WrapSearch:128}, find:function (text, option) {
@@ -34774,6 +71476,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.InsertTableDialog");
 dojo.widget.defineWidget("dojo.widget.Editor2InsertTableDialog", dojo.widget.Editor2DialogContent, {templateString:"<div>\n<table cellSpacing=\"1\" cellPadding=\"1\" width=\"100%\" border=\"0\">\n\t<tr>\n\t\t<td valign=\"top\">\n\t\t\t<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td><span>Rows</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_rows\" type=\"text\" maxLength=\"3\" size=\"2\" value=\"3\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Columns</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cols\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"2\"></td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Border size</span>:</td>\n\t\t\t\t\t<td>&nbsp;<INPUT dojoAttachPoint=\"table_border\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Alignment</span>:</td>\n\t\t\t\t\t<td>&nbsp;<select dojoAttachPoint=\"table_align\">\n\t\t\t\t\t\t\t<option value=\"\" selected>&lt;Not set&gt;</option>\n\t\t\t\t\t\t\t<option value=\"left\">Left</option>\n\t\t\t\t\t\t\t<option value=\"center\">Center</option>\n\t\t\t\t\t\t\t<option value=\"right\">Right</option>\n\t\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td>&nbsp;&nbsp;&nbsp;</td>\n\t\t<td align=\"right\" valign=\"top\">\n\t\t\t<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Width</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_width\" type=\"text\" maxLength=\"4\" size=\"3\"></td>\n\t\t\t\t\t<td>&nbsp;<select dojoAttachPoint=\"table_widthtype\">\n\t\t\t\t\t\t\t<option value=\"percent\" selected>percent</option>\n\t\t\t\t\t\t\t<option value=\"pixels\">pixels</option>\n\t\t\t\t\t\t</select></td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Height</span>:</td>\n\t\t\t\t\t<td>&nbsp;<INPUT dojoAttachPoint=\"table_height\" type=\"text\" maxLength=\"4\" size=\"3\"></td>\n\t\t\t\t\t<td>&nbsp;<span>pixels</span></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td nowrap><span>Cell spacing</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cellspacing\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td nowrap><span>Cell padding</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cellpadding\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n<table cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\" border=\"0\">\n\t<tr>\n\t\t<td nowrap><span>Caption</span>:</td>\n\t\t<td>&nbsp;</td>\n\t\t<td width=\"100%\" nowrap>&nbsp;\n\t\t\t<input dojoAttachPoint=\"table_caption\" type=\"text\" style=\"WIDTH: 90%\"></td>\n\t</tr>\n\t<tr>\n\t\t<td nowrap><span>Summary</span>:</td>\n\t\t<td>&nbsp;</td>\n\t\t<td width=\"100%\" nowrap>&nbsp;\n\t\t\t<input dojoAttachPoint=\"table_summary\" type=\"text\" style=\"WIDTH: 90%\"></td>\n\t</tr>\n</table>\n<table><tr>\n<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>Ok</button></td>\n<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n</tr></table>\n</div>\n", editableAttributes:["summary", "height", "cellspacing", "cellpadding", "border", "align"], loadContent:function () {
 	var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
@@ -34894,6 +71598,65 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Editor2Plugin/InsertImageDialog.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.InsertImageDialog"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.InsertImageDialog");
+	dojo.widget.defineWidget("dojo.widget.Editor2InsertImageDialog", dojo.widget.Editor2DialogContent, {templateString:"<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\" width=\"100%\" height=\"100%\">\n\t<tr>\n\t\t<td>\n\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td width=\"100%\">\n\t\t\t\t\t\t<span>URL</span>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style=\"display: none\" nowrap=\"nowrap\" rowspan=\"2\">\n\t\t\t\t\t\t<!--input id=\"btnBrowse\" onclick=\"BrowseServer();\" type=\"button\" value=\"Browse Server\"/-->\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign=\"top\">\n\t\t\t\t\t\t<input dojoAttachPoint=\"image_src\" style=\"width: 100%\" type=\"text\" />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<span>Alternative Text</span><br />\n\t\t\t<input dojoAttachPoint=\"image_alt\" style=\"width: 100%\" type=\"text\" /><br />\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td valign=\"top\">\n\t\t\t<table><tr><td>\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Width</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"3\" dojoAttachPoint=\"image_width\" /></td>\n\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<!--div id=\"btnLockSizes\" class=\"BtnLocked\" onmouseover=\"this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';\"\n\t\t\t\t\t\t\t\t\t\tonmouseout=\"this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );\" title=\"Lock Sizes\"\n\t\t\t\t\t\t\t\t\t\tonclick=\"SwitchLock(this);\">\n\t\t\t\t\t\t\t\t\t</div-->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td rowspan=\"2\">\n\t\t\t\t\t\t\t\t\t<!--div id=\"btnResetSize\" class=\"BtnReset\" onmouseover=\"this.className='BtnReset BtnOver';\"\n\t\t\t\t\t\t\t\t\t\tonmouseout=\"this.className='BtnReset';\" title=\"Reset Size\" onclick=\"ResetSizes();\">\n\t\t\t\t\t\t\t\t\t</div-->\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Height</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"3\" dojoAttachPoint=\"image_height\" /></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td><td>\n\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >HSpace</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" dojoAttachPoint=\"image_hspace\"/></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >VSpace</span>&nbsp;</td>\n\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" dojoAttachPoint=\"image_vspace\" /></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td></tr>\n\t\t\t\t\t<tr><td colspan=\"2\">\n\t\t\t\t\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span>Border</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" size=\"2\" value=\"\" dojoAttachPoint=\"image_border\" /></td>\n\t\t\t\t\t\t\t\t<td>&nbsp;&nbsp;&nbsp;</td>\n\t\t\t\t\t\t\t\t<td nowrap=\"nowrap\">\n\t\t\t\t\t\t\t\t\t<span >Align</span>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<select dojoAttachPoint=\"image_align\">\n\n\t\t\t\t\t\t\t\t\t\t<option value=\"\" selected=\"selected\"></option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"left\">Left</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"absBottom\">Abs Bottom</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"absMiddle\">Abs Middle</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"baseline\">Baseline</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"bottom\">Bottom</option>\n\n\t\t\t\t\t\t\t\t\t\t<option value=\"middle\">Middle</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"right\">Right</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"textTop\">Text Top</option>\n\t\t\t\t\t\t\t\t\t\t<option value=\"top\">Top</option>\n\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr></table>\n\t\t</td>\n\t</tr>\n\t<tr><td>\n\t\t<table><tr>\n\t\t<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>\n\t\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n\t\t</tr></table>\n\t</td></tr>\n</table>\n", editableAttributes:["src", "alt", "width", "height", "hspace", "vspace", "border", "align"], loadContent:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		this.imageNode = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);
+		if (!this.imageNode) {
+			this.imageNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ["img"]);
+		}
+		var imageAttributes = {};
+		this.extraAttribText = "";
+		if (this.imageNode) {
+			var attrs = this.imageNode.attributes;
+			for (var i = 0; i < attrs.length; i++) {
+				if (dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase()) > -1) {
+					imageAttributes[attrs[i].name] = attrs[i].value;
+				} else {
+					this.extraAttribText += attrs[i].name + "=\"" + attrs[i].value + "\" ";
+				}
+			}
+		}
+		for (var i = 0; i < this.editableAttributes.length; ++i) {
+			name = this.editableAttributes[i];
+			this["image_" + name].value = (imageAttributes[name] == undefined) ? "" : imageAttributes[name];
+		}
+		return true;
+	}, ok:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		var insertcmd = curInst.getCommand("inserthtml");
+		var option = 0;
+		var attstr = "";
+		for (var i = 0; i < this.editableAttributes.length; ++i) {
+			name = this.editableAttributes[i];
+			var value = this["image_" + name].value;
+			if (value.length > 0) {
+				attstr += name + "=\"" + value + "\" ";
+			}
+		}
+		if (this.imageNode) {
+			dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.imageNode]);
+		}
+		insertcmd.execute("<img " + attstr + this.extraAttribText + "/>");
+		this.cancel();
+	}});
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2Plugin/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -34905,6 +71668,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.widget.Editor2", "dojo.widget.Editor2Toolbar"]});
 dojo.provide("dojo.widget.Editor2Plugin.*");
 
@@ -34920,6 +71685,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.ContextMenu");
 dojo.require("dojo.widget.Menu2");
 dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
@@ -35123,6 +71890,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.ToolbarDndSupport");
 dojo.require("dojo.dnd.*");
 dojo.event.topic.subscribe("dojo.widget.Editor2::preLoadingToolbar", function (editor) {
@@ -35158,6 +71927,198 @@
 }});
 
 
+__CPAN_FILE__ src/widget/Editor2Plugin/FindReplaceDialog.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.FindReplaceDialog"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.FindReplaceDialog");
+	dojo.widget.defineWidget("dojo.widget.Editor2FindDialog", dojo.widget.Editor2DialogContent, {templateString:"<table style=\"white-space: nowrap;\">\n<tr><td colspan='2'>Find: <input type=\"text\" dojoAttachPoint=\"find_text\" /></td></tr>\n<tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_casesens\" />\n\t\t<label for=\"find_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_backwards\" />\n\t\t<label for=\"find_option_backwards\">Search Backwards</label></td></tr>\n<tr><td style=\"display: none;\"><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"find_option_wholeword\" />\n\t\t<label for=\"find_option_wholeword\">Whole Word</label></td>\n<tr><td colspan=\"1\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:find'>Find</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", find:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		var findcmd = curInst.getCommand("find");
+		var option = 0;
+		if (this["find_option_casesens"].checked) {
+			option |= findcmd.SearchOption.CaseSensitive;
+		}
+		if (this["find_option_backwards"].checked) {
+			option |= findcmd.SearchOption.SearchBackwards;
+		}
+		if (this["find_option_wholeword"].checked) {
+			option |= findcmd.SearchOption.WholeWord;
+		}
+		findcmd.find(this["find_text"].value, option);
+	}});
+	dojo.widget.defineWidget("dojo.widget.Editor2ReplaceDialog", dojo.widget.Editor2DialogContent, {templateString:"<table style=\"white-space: nowrap;\">\n<tr><td>Find: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td>Replace with: </td><td> <input type=\"text\" dojoAttachPoint=\"replace_text\" /></td></tr>\n<tr><td colspan='2'><table><tr><td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_casesens\" id=\"dojo_replace_option_casesens\" />\n\t\t<label for=\"dojo_replace_option_casesens\">Case Sensitive</label></td>\n\t\t\t<td><input type=\"checkbox\" dojoType=\"CheckBox\" dojoAttachPoint=\"replace_option_backwards\" id=\"dojo_replace_option_backwards\" />\n\t\t<label for=\"dojo_replace_option_backwards\">Search Backwards</label></td></tr></table></td></tr>\n<tr><td colspan=2\">\n\t<table><tr>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replace'>Replace</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:replaceAll'>Replace All</button></td>\n\t<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>\n\t</tr></table>\n\t</td></tr>\n</table>\n", replace:function () {
+		alert("not implemented yet");
+	}, replaceAll:function () {
+		alert("not implemented yet");
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2Plugin/InsertTableDialog.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.Editor2Plugin.InsertTableDialog"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.Editor2Plugin.InsertTableDialog");
+	dojo.widget.defineWidget("dojo.widget.Editor2InsertTableDialog", dojo.widget.Editor2DialogContent, {templateString:"<div>\n<table cellSpacing=\"1\" cellPadding=\"1\" width=\"100%\" border=\"0\">\n\t<tr>\n\t\t<td valign=\"top\">\n\t\t\t<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n\t\t\t\t<tr>\n\n\t\t\t\t\t<td><span>Rows</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_rows\" type=\"text\" maxLength=\"3\" size=\"2\" value=\"3\"></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Columns</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cols\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"2\"></td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Border size</span>:</td>\n\t\t\t\t\t<td>&nbsp;<INPUT dojoAttachPoint=\"table_border\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Alignment</span>:</td>\n\t\t\t\t\t<td>&nbsp;<select dojoAttachPoint=\"table_align\">\n\t\t\t\t\t\t\t<option value=\"\" selected>&lt;Not set&gt;</option>\n\t\t\t\t\t\t\t<option value=\"left\">Left</option>\n\t\t\t\t\t\t\t<option value=\"center\">Center</option>\n\t\t\t\t\t\t\t<option value=\"right\">Right</option>\n\t\t\t\t\t\t</select></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td>&nbsp;&nbsp;&nbsp;</td>\n\t\t<td align=\"right\" valign=\"top\">\n\t\t\t<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Width</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_width\" type=\"text\" maxLength=\"4\" size=\"3\"></td>\n\t\t\t\t\t<td>&nbsp;<select dojoAttachPoint=\"table_widthtype\">\n\t\t\t\t\t\t\t<option value=\"percent\" selected>percent</option>\n\t\t\t\t\t\t\t<option value=\"pixels\">pixels</option>\n\t\t\t\t\t\t</select></td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>Height</span>:</td>\n\t\t\t\t\t<td>&nbsp;<INPUT dojoAttachPoint=\"table_height\" type=\"text\" maxLength=\"4\" size=\"3\"></td>\n\t\t\t\t\t<td>&nbsp;<span>pixels</span></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td nowrap><span>Cell spacing</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cellspacing\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td nowrap><span>Cell padding</span>:</td>\n\t\t\t\t\t<td>&nbsp;<input dojoAttachPoint=\"table_cellpadding\" type=\"text\" maxLength=\"2\" size=\"2\" value=\"1\"></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n<table cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\" border=\"0\">\n\t<tr>\n\t\t<td nowrap><span>Caption</span>:</td>\n\t\t<td>&nbsp;</td>\n\t\t<td width=\"100%\" nowrap>&nbsp;\n\t\t\t<input dojoAttachPoint=\"table_caption\" type=\"text\" style=\"WIDTH: 90%\"></td>\n\t</tr>\n\t<tr>\n\t\t<td nowrap><span>Summary</span>:</td>\n\t\t<td>&nbsp;</td>\n\t\t<td width=\"100%\" nowrap>&nbsp;\n\t\t\t<input dojoAttachPoint=\"table_summary\" type=\"text\" style=\"WIDTH: 90%\"></td>\n\t</tr>\n</table>\n<table><tr>\n<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>Ok</button></td>\n<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>\n</tr></table>\n</div>\n", editableAttributes:["summary", "height", "cellspacing", "cellpadding", "border", "align"], loadContent:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		curInst.saveSelection();
+		this.tableNode = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);
+		if (!this.tableNode || this.tableNode.tagName.toLowerCase() != "table") {
+			this.tableNode = dojo.withGlobal(curInst.window, "getAncestorElement", dojo.html.selection, ["table"]);
+		}
+		var tableAttributes = {};
+		this.extraAttribText = "";
+		if (this.tableNode) {
+			this["table_rows"].value = this.tableNode.rows.length;
+			this["table_rows"].disabled = true;
+			this["table_cols"].value = this.tableNode.rows[0].cells.length;
+			this["table_cols"].disabled = true;
+			if (this.tableNode.caption) {
+				this["table_caption"].value = this.tableNode.caption.innerHTML;
+			} else {
+				this["table_caption"].value = "";
+			}
+			var width = this.tableNode.style.width || this.tableNode.width;
+			if (width) {
+				this["table_width"].value = parseInt(width);
+				if (width.indexOf("%") > -1) {
+					this["table_widthtype"].value = "percent";
+				} else {
+					this["table_widthtype"].value = "pixels";
+				}
+			} else {
+				this["table_width"].value = "100";
+			}
+			var height = this.tableNode.style.height || this.tableNode.height;
+			if (height) {
+				this["table_height"].value = parseInt(width);
+			} else {
+				this["table_height"].value = "";
+			}
+			var attrs = this.tableNode.attributes;
+			for (var i = 0; i < attrs.length; i++) {
+				if (dojo.lang.find(this.editableAttributes, attrs[i].name.toLowerCase()) > -1) {
+					tableAttributes[attrs[i].name] = attrs[i].value;
+				} else {
+					this.extraAttribText += attrs[i].name + "=\"" + attrs[i].value + "\" ";
+				}
+			}
+		} else {
+			this["table_rows"].value = 3;
+			this["table_rows"].disabled = false;
+			this["table_cols"].value = 2;
+			this["table_cols"].disabled = false;
+			this["table_width"].value = 100;
+			this["table_widthtype"].value = "percent";
+			this["table_height"].value = "";
+		}
+		for (var i = 0; i < this.editableAttributes.length; ++i) {
+			name = this.editableAttributes[i];
+			this["table_" + name].value = (tableAttributes[name] == undefined) ? "" : tableAttributes[name];
+			if (name == "height" && tableAttributes[name] != undefined) {
+				this["table_" + name].value = tableAttributes[name];
+			}
+		}
+		return true;
+	}, ok:function () {
+		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();
+		var args = {};
+		args["rows"] = this["table_rows"].value;
+		args["cols"] = this["table_cols"].value;
+		args["caption"] = this["table_caption"].value;
+		args["tableattrs"] = "";
+		if (this["table_widthtype"].value == "percent") {
+			args["tableattrs"] += "width=\"" + this["table_width"].value + "%\" ";
+		} else {
+			args["tableattrs"] += "width=\"" + this["table_width"].value + "px\" ";
+		}
+		for (var i = 0; i < this.editableAttributes.length; ++i) {
+			var name = this.editableAttributes[i];
+			var value = this["table_" + name].value;
+			if (value.length > 0) {
+				args["tableattrs"] += name + "=\"" + value + "\" ";
+			}
+		}
+		if (!args["tableattrs"]) {
+			args["tableattrs"] = "";
+		}
+		if (dojo.render.html.ie && !this["table_border"].value) {
+			args["tableattrs"] += "class=\"dojoShowIETableBorders\" ";
+		}
+		var html = "<table " + args["tableattrs"] + ">";
+		if (args["caption"]) {
+			html += "<caption>" + args["caption"] + "</caption>";
+		}
+		var outertbody = "<tbody>";
+		if (this.tableNode) {
+			var tbody = this.tableNode.getElementsByTagName("tbody")[0];
+			outertbody = tbody.outerHTML;
+			if (!outertbody) {
+				var cnode = tbody.cloneNode(true);
+				var tmpnode = tbody.ownerDocument.createElement("div");
+				tmpnode.appendChild(cnode);
+				outertbody = tmpnode.innerHTML;
+			}
+			dojo.withGlobal(curInst.window, "selectElement", dojo.html.selection, [this.tableNode]);
+		} else {
+			var cols = "<tr>";
+			for (var i = 0; i < +args.cols; i++) {
+				cols += "<td></td>";
+			}
+			cols += "</tr>";
+			for (var i = 0; i < args.rows; i++) {
+				outertbody += cols;
+			}
+			outertbody += "</tbody>";
+		}
+		html += outertbody + "</table>";
+		curInst.restoreSelection();
+		curInst.execCommand("inserthtml", html);
+		this.cancel();
+	}});
+}});
+
+
+__CPAN_FILE__ src/widget/Editor2Plugin/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.widget.Editor2", "dojo.widget.Editor2Toolbar"]}], ["provide", "dojo.widget.Editor2Plugin.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.widget.Editor2", "dojo.widget.Editor2Toolbar"]});
+	dojo.provide("dojo.widget.Editor2Plugin.*");
+}});
+
+
 __CPAN_FILE__ src/widget/Editor2Plugin/AlwaysShowToolbar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35169,6 +72130,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
 dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
 	if (editor.toolbarAlwaysVisible) {
@@ -35277,6 +72240,23 @@
 
 
 __CPAN_DIR__ src/widget/nls
+__CPAN_FILE__ src/widget/nls/TimePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.TimePicker"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.TimePicker");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "TimePicker", "", ({"any":"any"}));
+}})
 __CPAN_FILE__ src/widget/nls/DropdownDatePicker.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35288,7 +72268,60 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"selectDate":"Select a date"})
+__CPAN_FILE__ src/widget/nls/DropdownTimePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.DropdownTimePicker"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.DropdownTimePicker");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "DropdownTimePicker", "", ({"selectTime":"Select time"}));
+}})
+__CPAN_FILE__ src/widget/nls/DropdownDatePicker.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.DropdownDatePicker"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.DropdownDatePicker");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "DropdownDatePicker", "", ({"selectDate":"Select a date"}));
+}})
+__CPAN_FILE__ src/widget/nls/validate.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.validate"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.validate");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "validate", "", ({"rangeMessage":"* This value is out of range.", "invalidMessage":"* The value entered is not valid.", "missingMessage":"* This value is required."}));
+}})
 __CPAN_FILE__ src/widget/nls/validate.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35300,6 +72333,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"rangeMessage":"* This value is out of range.", "invalidMessage":"* The value entered is not valid.", "missingMessage":"* This value is required."})
 __CPAN_FILE__ src/widget/nls/DropdownTimePicker.js
 /*
@@ -35312,6 +72347,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"selectTime":"Select time"})
 __CPAN_FILE__ src/widget/nls/TimePicker.js
 /*
@@ -35324,8 +72361,27 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"any":"any"})
 __CPAN_DIR__ src/widget/nls/ja
+__CPAN_FILE__ src/widget/nls/ja/validate.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.ja.validate"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.ja.validate");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "validate", "ja", ({"rangeMessage":"* \u5165\u529b\u3057\u305f\u6570\u5024\u306f\u9078\u629e\u7bc4\u56f2\u5916\u3067\u3059\u3002", "invalidMessage":"* \u5165\u529b\u3057\u305f\u30c7\u30fc\u30bf\u306b\u8a72\u5f53\u3059\u308b\u3082\u306e\u304c\u3042\u308a\u307e\u305b\u3093\u3002", "missingMessage":"* \u5165\u529b\u304c\u5fc5\u9808\u3067\u3059\u3002"}));
+}})
 __CPAN_FILE__ src/widget/nls/ja/validate.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35337,8 +72393,27 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"rangeMessage":"* \u5165\u529b\u3057\u305f\u6570\u5024\u306f\u9078\u629e\u7bc4\u56f2\u5916\u3067\u3059\u3002", "invalidMessage":"* \u5165\u529b\u3057\u305f\u30c7\u30fc\u30bf\u306b\u8a72\u5f53\u3059\u308b\u3082\u306e\u304c\u3042\u308a\u307e\u305b\u3093\u3002", "missingMessage":"* \u5165\u529b\u304c\u5fc5\u9808\u3067\u3059\u3002"})
 __CPAN_DIR__ src/widget/nls/zh-cn
+__CPAN_FILE__ src/widget/nls/zh-cn/validate.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.zh-cn.validate"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.zh-cn.validate");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "validate", "zh-cn", ({"rangeMessage":"* \u8f93\u5165\u6570\u636e\u8d85\u51fa\u503c\u57df\u3002", "invalidMessage":"* \u975e\u6cd5\u7684\u8f93\u5165\u503c\u3002", "missingMessage":"* \u6b64\u503c\u662f\u5fc5\u987b\u7684\u3002"}));
+}})
 __CPAN_FILE__ src/widget/nls/zh-cn/validate.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35350,8 +72425,27 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"rangeMessage":"* \u8f93\u5165\u6570\u636e\u8d85\u51fa\u503c\u57df\u3002", "invalidMessage":"* \u975e\u6cd5\u7684\u8f93\u5165\u503c\u3002", "missingMessage":"* \u6b64\u503c\u662f\u5fc5\u987b\u7684\u3002"})
 __CPAN_DIR__ src/widget/nls/fr
+__CPAN_FILE__ src/widget/nls/fr/validate.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.nls.fr.validate"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.nls.fr.validate");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.widget", "validate", "fr", ({"rangeMessage":"* Cette valeur est hors limites.", "invalidMessage":"* La valeur saisie est incorrecte.", "missingMessage":"* Cette valeur est obligatoire."}));
+}})
 __CPAN_FILE__ src/widget/nls/fr/validate.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35363,6 +72457,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"rangeMessage":"* Cette valeur est hors limites.", "invalidMessage":"* La valeur saisie est incorrecte.", "missingMessage":"* Cette valeur est obligatoire."})
 __CPAN_DIR__ src/widget/demoEngine
 __CPAN_FILE__ src/widget/demoEngine/DemoNavigator.js
@@ -35376,6 +72472,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.demoEngine.DemoNavigator");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -35510,6 +72608,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.demoEngine.DemoContainer");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -35585,6 +72685,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.demoEngine.DemoItem");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -35637,6 +72739,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.demoEngine.SourcePane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -35661,6 +72765,124 @@
 });
 
 
+__CPAN_FILE__ src/widget/demoEngine/DemoContainer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.demoEngine.DemoContainer"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.demoEngine.DemoPane"], ["require", "dojo.widget.demoEngine.SourcePane"], ["require", "dojo.widget.TabContainer"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.demoEngine.DemoContainer");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.demoEngine.DemoPane");
+	dojo.require("dojo.widget.demoEngine.SourcePane");
+	dojo.require("dojo.widget.TabContainer");
+	dojo.widget.defineWidget("my.widget.demoEngine.DemoContainer", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">\n\t\t<tbody>\n\t\t\t<tr dojoAttachPoint=\"headerNode\">\n\t\t\t\t<td dojoAttachPoint=\"returnNode\" valign=\"middle\" width=\"1%\">\n\t\t\t\t\t<img dojoAttachPoint=\"returnImageNode\" dojoAttachEvent=\"onclick: returnToDemos\"/>\n\t\t\t\t</td>\n\t\t\t\t<td>\n\t\t\t\t\t<h1 dojoAttachPoint=\"demoNameNode\"></h1>\n\t\t\t\t\t<p dojoAttachPoint=\"summaryNode\"></p>\n\t\t\t\t</td>\n\t\t\t\t<td dojoAttachPoint=\"tabControlNode\" valign=\"middle\" align=\"right\" nowrap>\n\t\t\t\t\t<span dojoAttachPoint=\"sourceButtonNode\" dojoAttachEvent=\"onclick: showSource\">source</span>\n\t\t\t\t\t<span dojoAttachPoint=\"demoButtonNode\" dojoAttachEvent=\"onclick: showDemo\">demo</span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\">\n\t\t\t\t\t<div dojoAttachPoint=\"tabNode\">\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:".demoContainer{\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0px;\n\tmargin: 0px;\n}\n\n.demoContainer .return {\n\tcursor: pointer;\n}\n\n.demoContainer span {\n\tmargin-right: 10px;\n\tcursor: pointer;\n}\n\n.demoContainer .selected {\n\tborder-bottom: 5px solid #95bfff;\n}\n\n.demoContainer table {\n\tbackground: #f5f5f5;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.demoContainerTabs {\n\twidth: 100%;\n\theight: 400px;\n}\n\n.demoContainerTabs .dojoTabLabels-top {\n\tdisplay: none;\n}\n\n.demoContainerTabs .dojoTabPaneWrapper {\n\tborder: 0px;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoContainer.css"), postCreate:function () {
+		dojo.html.addClass(this.domNode, this.domNodeClass);
+		dojo.html.addClass(this.tabNode, this.tabClass);
+		dojo.html.addClass(this.returnImageNode, this.returnClass);
+		this.returnImageNode.src = this.returnImage;
+		this.tabContainer = dojo.widget.createWidget("TabContainer", {}, this.tabNode);
+		this.demoTab = dojo.widget.createWidget("DemoPane", {});
+		this.tabContainer.addChild(this.demoTab);
+		this.sourceTab = dojo.widget.createWidget("SourcePane", {});
+		this.tabContainer.addChild(this.sourceTab);
+		dojo.html.setOpacity(this.domNode, 0);
+		dojo.html.hide(this.domNode);
+	}, loadDemo:function (url) {
+		this.demoTab.setHref(url);
+		this.sourceTab.setHref(url);
+		this.showDemo();
+	}, setName:function (name) {
+		dojo.html.removeChildren(this.demoNameNode);
+		this.demoNameNode.appendChild(document.createTextNode(name));
+	}, setSummary:function (summary) {
+		dojo.html.removeChildren(this.summaryNode);
+		this.summaryNode.appendChild(document.createTextNode(summary));
+	}, showSource:function () {
+		dojo.html.removeClass(this.demoButtonNode, this.selectedButtonClass);
+		dojo.html.addClass(this.sourceButtonNode, this.selectedButtonClass);
+		this.tabContainer.selectTab(this.sourceTab);
+	}, showDemo:function () {
+		dojo.html.removeClass(this.sourceButtonNode, this.selectedButtonClass);
+		dojo.html.addClass(this.demoButtonNode, this.selectedButtonClass);
+		this.tabContainer.selectTab(this.demoTab);
+	}, returnToDemos:function () {
+		dojo.debug("Return To Demos");
+	}, show:function () {
+		dojo.html.setOpacity(this.domNode, 1);
+		dojo.html.show(this.domNode);
+		this.tabContainer.checkSize();
+	}}, "", function () {
+		dojo.debug("DemoPane Init");
+		this.domNodeClass = "demoContainer";
+		this.tabContainer = "";
+		this.sourceTab = "";
+		this.demoTab = "";
+		this.headerNode = "";
+		this.returnNode = "";
+		this.returnImageNode = "";
+		this.returnImage = "images/dojoDemos.gif";
+		this.returnClass = "return";
+		this.summaryNode = "";
+		this.demoNameNode = "";
+		this.tabControlNode = "";
+		this.tabNode = "";
+		this.tabClass = "demoContainerTabs";
+		this.sourceButtonNode = "";
+		this.demoButtonNode = "";
+		this.selectedButtonClass = "selected";
+	});
+}});
+
+
+__CPAN_FILE__ src/widget/demoEngine/SourcePane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.demoEngine.SourcePane"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.io.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.demoEngine.SourcePane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.io.*");
+	dojo.widget.defineWidget("my.widget.demoEngine.SourcePane", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<textarea dojoAttachPoint=\"sourceNode\" rows=\"100%\"></textarea>\n</div>\n", templateCssString:".sourcePane {\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0px;\n\tmargin: 0px;\n\toverflow: hidden;\n}\n\n.sourcePane textarea{\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0px;\n\toverflow: auto;\n\tpadding: 0px;\n\tmargin:0px;\n}\n\n* html .sourcePane {\n\toverflow: auto;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/SourcePane.css"), postCreate:function () {
+		dojo.html.addClass(this.domNode, this.domNodeClass);
+		dojo.debug("PostCreate");
+	}, getSource:function () {
+		if (this.href) {
+			dojo.io.bind({url:this.href, load:dojo.lang.hitch(this, "fillInSource"), mimetype:"text/plain"});
+		}
+	}, fillInSource:function (type, source, e) {
+		this.sourceNode.value = source;
+	}, setHref:function (url) {
+		this.href = url;
+		this.getSource();
+	}}, "", function () {
+		dojo.debug("SourcePane Init");
+		this.domNodeClass = "sourcePane";
+		this.sourceNode = "";
+		this.href = "";
+	});
+}});
+
+
 __CPAN_FILE__ src/widget/demoEngine/DemoPane.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35672,6 +72894,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.demoEngine.DemoPane");
 dojo.require("dojo.widget.*");
 dojo.require("dojo.widget.HtmlWidget");
@@ -35694,6 +72918,144 @@
 });
 
 
+__CPAN_FILE__ src/widget/demoEngine/DemoNavigator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.demoEngine.DemoNavigator"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.Button"], ["require", "dojo.widget.demoEngine.DemoItem"], ["require", "dojo.io.*"], ["require", "dojo.lfx.*"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.demoEngine.DemoNavigator");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.Button");
+	dojo.require("dojo.widget.demoEngine.DemoItem");
+	dojo.require("dojo.io.*");
+	dojo.require("dojo.lfx.*");
+	dojo.require("dojo.lang.common");
+	dojo.widget.defineWidget("my.widget.demoEngine.DemoNavigator", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">\n\t\t<tbody>\n\t\t\t<tr dojoAttachPoint=\"navigationContainer\">\n\t\t\t\t<td dojoAttachPoint=\"categoriesNode\" valign=\"top\" width=\"1%\">\n\t\t\t\t\t<h1>Categories</h1>\n\t\t\t\t\t<div dojoAttachPoint=\"categoriesButtonsNode\"></div>\n\t\t\t\t</td>\n\n\t\t\t\t<td dojoAttachPoint=\"demoListNode\" valign=\"top\">\n\t\t\t\t\t<div dojoAttachPoint=\"demoListWrapperNode\">\n\t\t\t\t\t\t<div dojoAttachPoint=\"demoListContainerNode\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t<div dojoAttachPoint=\"demoNode\"></div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n", templateCssString:".demoNavigatorListWrapper {\n\tborder:1px solid #dcdbdb;\n\tbackground-color:#f8f8f8;\n\tpadding:2px;\n}\n\n.demoNavigatorListContainer {\n\tborder:1px solid #f0f0f0;\n\tbackground-color:#fff;\n\tpadding:1em;\n}\n\n.demoNavigator h1 {\n\tmargin-top: 0px;\n\tmargin-bottom: 10px;\n\tfont-size: 1.2em;\n\tborder-bottom:1px dotted #a9ccf5;\n}\n\n.demoNavigator .dojoButton {\n\tmargin-bottom: 5px;\n}\n\n.demoNavigator .dojoButton .dojoButtonContents {\n\tfont-size: 1.1em;\n\twidth: 100px;\n\tcolor: black;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoNavigator.css"), postCreate:function () {
+		dojo.html.addClass(this.domNode, this.domNodeClass);
+		dojo.html.addClass(this.demoListWrapperNode, this.demoListWrapperClass);
+		dojo.html.addClass(this.demoListContainerNode, this.demoListContainerClass);
+		if (dojo.render.html.ie) {
+			dojo.debug("render ie");
+			dojo.html.hide(this.demoListWrapperNode);
+		} else {
+			dojo.debug("render non-ie");
+			dojo.lfx.html.fadeHide(this.demoListWrapperNode, 0).play();
+		}
+		this.getRegistry(this.demoRegistryUrl);
+		this.demoContainer = dojo.widget.createWidget("DemoContainer", {returnImage:this.returnImage}, this.demoNode);
+		dojo.event.connect(this.demoContainer, "returnToDemos", this, "returnToDemos");
+		this.demoContainer.hide();
+	}, returnToDemos:function () {
+		this.demoContainer.hide();
+		if (dojo.render.html.ie) {
+			dojo.debug("render ie");
+			dojo.html.show(this.navigationContainer);
+		} else {
+			dojo.debug("render non-ie");
+			dojo.lfx.html.fadeShow(this.navigationContainer, 250).play();
+		}
+		dojo.lang.forEach(this.categoriesChildren, dojo.lang.hitch(this, function (child) {
+			child.checkSize();
+		}));
+		dojo.lang.forEach(this.demoListChildren, dojo.lang.hitch(this, function (child) {
+			child.checkSize();
+		}));
+	}, show:function () {
+		dojo.html.show(this.domNode);
+		dojo.html.setOpacity(this.domNode, 1);
+		dojo.html.setOpacity(this.navigationContainer, 1);
+		dojo.lang.forEach(this.categoriesChildren, dojo.lang.hitch(this, function (child) {
+			child.checkSize();
+		}));
+		dojo.lang.forEach(this.demoListChildren, dojo.lang.hitch(this, function (child) {
+			child.checkSize();
+		}));
+	}, getRegistry:function (url) {
+		dojo.io.bind({url:url, load:dojo.lang.hitch(this, this.processRegistry), mimetype:"text/json"});
+	}, processRegistry:function (type, registry, e) {
+		dojo.debug("Processing Registry");
+		this.registry = registry;
+		dojo.lang.forEach(this.registry.navigation, dojo.lang.hitch(this, this.addCategory));
+	}, addCategory:function (category) {
+		var newCat = dojo.widget.createWidget("Button", {caption:category.name});
+		if (!dojo.lang.isObject(this.registry.categories)) {
+			this.registry.categories = function () {
+			};
+		}
+		this.registry.categories[category.name] = category;
+		this.categoriesChildren.push(newCat);
+		this.categoriesButtonsNode.appendChild(newCat.domNode);
+		newCat.domNode.categoryName = category.name;
+		dojo.event.connect(newCat, "onClick", this, "onSelectCategory");
+	}, addDemo:function (demoName) {
+		var demo = this.registry.definitions[demoName];
+		if (dojo.render.html.ie) {
+			dojo.html.show(this.demoListWrapperNode);
+		} else {
+			dojo.lfx.html.fadeShow(this.demoListWrapperNode, 250).play();
+		}
+		var newDemo = dojo.widget.createWidget("DemoItem", {viewDemoImage:this.viewDemoImage, name:demoName, description:demo.description, thumbnail:demo.thumbnail});
+		this.demoListChildren.push(newDemo);
+		this.demoListContainerNode.appendChild(newDemo.domNode);
+		dojo.event.connect(newDemo, "onSelectDemo", this, "onSelectDemo");
+	}, onSelectCategory:function (e) {
+		catName = e.currentTarget.categoryName;
+		dojo.debug("Selected Category: " + catName);
+		dojo.lang.forEach(this.demoListChildren, function (child) {
+			child.destroy();
+		});
+		this.demoListChildren = [];
+		dojo.lang.forEach(this.registry.categories[catName].demos, dojo.lang.hitch(this, function (demoName) {
+			this.addDemo(demoName);
+		}));
+	}, onSelectDemo:function (e) {
+		dojo.debug("Demo Selected: " + e.target.name);
+		if (dojo.render.html.ie) {
+			dojo.debug("render ie");
+			dojo.html.hide(this.navigationContainer);
+			this.demoContainer.show();
+			this.demoContainer.showDemo();
+		} else {
+			dojo.debug("render non-ie");
+			dojo.lfx.html.fadeHide(this.navigationContainer, 250, null, dojo.lang.hitch(this, function () {
+				this.demoContainer.show();
+				this.demoContainer.showDemo();
+			})).play();
+		}
+		this.demoContainer.loadDemo(this.registry.definitions[e.target.name].url);
+		this.demoContainer.setName(e.target.name);
+		this.demoContainer.setSummary(this.registry.definitions[e.target.name].description);
+	}}, "", function () {
+		this.demoRegistryUrl = "demoRegistry.json";
+		this.registry = function () {
+		};
+		this.categoriesNode = "";
+		this.categoriesButtonsNode = "";
+		this.navigationContainer = "";
+		this.domNodeClass = "demoNavigator";
+		this.demoNode = "";
+		this.demoContainer = "";
+		this.demoListWrapperNode = "";
+		this.demoListWrapperClass = "demoNavigatorListWrapper";
+		this.demoListContainerClass = "demoNavigatorListContainer";
+		this.returnImage = "images/dojoDemos.gif";
+		this.viewDemoImage = "images/viewDemo.png";
+		this.demoListChildren = [];
+		this.categoriesChildren = [];
+	});
+}});
+
+
 __CPAN_FILE__ src/widget/demoEngine/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -35705,10 +73067,124 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({browser:["dojo.widget.demoEngine.DemoItem", "dojo.widget.demoEngine.DemoNavigator", "dojo.widget.demoEngine.DemoPane", "dojo.widget.demoEngine.SourcePane", "dojo.widget.demoEngine.DemoContainer"]});
 dojo.provide("dojo.widget.demoEngine.*");
 
 
+__CPAN_FILE__ src/widget/demoEngine/DemoPane.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.demoEngine.DemoPane"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.demoEngine.DemoPane");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("my.widget.demoEngine.DemoPane", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<iframe dojoAttachPoint=\"demoNode\"></iframe>\n</div>\n", templateCssString:".demoPane {\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0px;\n\tmargin: 0px;\n\toverflow: hidden;\n}\n\n.demoPane iframe {\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0px;\n\tborder: none;\n\toverflow: auto;\n\tpadding: 0px;\n\tmargin:0px;\n\tbackground: #ffffff;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoPane.css"), postCreate:function () {
+		dojo.html.addClass(this.domNode, this.domNodeClass);
+		dojo.debug("PostCreate");
+		this._launchDemo();
+	}, _launchDemo:function () {
+		dojo.debug("Launching Demo");
+		dojo.debug(this.demoNode);
+		this.demoNode.src = this.href;
+	}, setHref:function (url) {
+		this.href = url;
+		this._launchDemo();
+	}}, "", function () {
+		dojo.debug("DemoPane Init");
+		this.domNodeClass = "demoPane";
+		this.demoNode = "";
+		this.href = "";
+	});
+}});
+
+
+__CPAN_FILE__ src/widget/demoEngine/DemoItem.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.demoEngine.DemoItem"], ["require", "dojo.widget.*"], ["require", "dojo.widget.HtmlWidget"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.demoEngine.DemoItem");
+	dojo.require("dojo.widget.*");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.widget.defineWidget("my.widget.demoEngine.DemoItem", dojo.widget.HtmlWidget, {templateString:"<div dojoAttachPoint=\"domNode\">\n\t<div dojoAttachPoint=\"summaryBoxNode\">\n\t\t<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n\t\t\t<tbody>\n\t\t\t\t<tr>\n\t\t\t\t\t<td dojoAttachPoint=\"screenshotTdNode\" valign=\"top\" width=\"1%\">\n\t\t\t\t\t\t<img dojoAttachPoint=\"thumbnailImageNode\" dojoAttachEvent=\"onclick: onSelectDemo\" />\n\t\t\t\t\t</td>\n\t\t\t\t\t<td dojoAttachPoint=\"summaryContainerNode\" valign=\"top\">\n\t\t\t\t\t\t<h1 dojoAttachPoint=\"nameNode\">\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t<div dojoAttachPoint=\"summaryNode\">\n\t\t\t\t\t\t\t<p dojoAttachPoint=\"descriptionNode\"></p>\n\t\t\t\t\t\t\t<div dojoAttachPoint=\"viewDemoLinkNode\"><img dojoAttachPoint=\"viewDemoImageNode\"/ dojoAttachEvent=\"onclick: onSelectDemo\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</div>\n", templateCssString:".demoItemSummaryBox {\n\tbackground: #efefef;\n\tborder:1px solid #dae3ee;\n}\n\n.demoItemScreenshot {\n\tpadding:0.65em;\n\twidth:175px;\n\tborder-right:1px solid #fafafa;\n\ttext-align:center;\n\tcursor: pointer;\n}\n\n.demoItemWrapper{\n\tmargin-bottom:1em;\n}\n\n.demoItemWrapper a:link, .demoItemWrapper a:visited {\n\tcolor:#a6238f;\n\ttext-decoration:none;\n}\n\n.demoItemSummaryContainer {\n\tborder-left:1px solid #ddd;\n}\n\n.demoItemSummaryContainer h1 {\n\tbackground-color:#e8e8e8;\n\tborder-bottom: 1px solid #e6e6e6;\n\tcolor:#738fb9;\n\tmargin:1px;\n\tpadding:0.5em;\n\tfont-family:\"Lucida Grande\", \"Tahoma\", serif;\n\tfont-size:1.25em;\n\tfont-weight:normal;\n}\n\n.demoItemSummaryContainer h1 .packageSummary {\n\tdisplay:block;\n\tcolor:#000;\n\tfont-size:10px;\n\tmargin-top:2px;\n}\n\n.demoItemSummaryContainer .demoItemSummary{\n\tpadding:1em;\n}\n\n.demoItemSummaryContainer .demoItemSummary p {\n\tfont-size:0.85em;\n\tpadding:0;\n\tmargin:0;\n}\n\n.demoItemView {\n\ttext-align:right;\n\tcursor: pointer;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "demoEngine/templates/DemoItem.css"), postCreate:function () {
+		dojo.html.addClass(this.domNode, this.domNodeClass);
+		dojo.html.addClass(this.summaryBoxNode, this.summaryBoxClass);
+		dojo.html.addClass(this.screenshotTdNode, this.screenshotTdClass);
+		dojo.html.addClass(this.summaryContainerNode, this.summaryContainerClass);
+		dojo.html.addClass(this.summaryNode, this.summaryClass);
+		dojo.html.addClass(this.viewDemoLinkNode, this.viewDemoLinkClass);
+		this.nameNode.appendChild(document.createTextNode(this.name));
+		this.descriptionNode.appendChild(document.createTextNode(this.description));
+		this.thumbnailImageNode.src = this.thumbnail;
+		this.thumbnailImageNode.name = this.name;
+		this.viewDemoImageNode.src = this.viewDemoImage;
+		this.viewDemoImageNode.name = this.name;
+	}, onSelectDemo:function () {
+	}}, "", function () {
+		this.demo = "";
+		this.domNodeClass = "demoItemWrapper";
+		this.summaryBoxNode = "";
+		this.summaryBoxClass = "demoItemSummaryBox";
+		this.nameNode = "";
+		this.thumbnailImageNode = "";
+		this.viewDemoImageNode = "";
+		this.screenshotTdNode = "";
+		this.screenshotTdClass = "demoItemScreenshot";
+		this.summaryContainerNode = "";
+		this.summaryContainerClass = "demoItemSummaryContainer";
+		this.summaryNode = "";
+		this.summaryClass = "demoItemSummary";
+		this.viewDemoLinkNode = "";
+		this.viewDemoLinkClass = "demoItemView";
+		this.descriptionNode = "";
+		this.name = "Some Demo";
+		this.description = "This is the description of this demo.";
+		this.thumbnail = "images/test_thumb.gif";
+		this.viewDemoImage = "images/viewDemo.png";
+	});
+}});
+
+
+__CPAN_FILE__ src/widget/demoEngine/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {browser:["dojo.widget.demoEngine.DemoItem", "dojo.widget.demoEngine.DemoNavigator", "dojo.widget.demoEngine.DemoPane", "dojo.widget.demoEngine.SourcePane", "dojo.widget.demoEngine.DemoContainer"]}], ["provide", "dojo.widget.demoEngine.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({browser:["dojo.widget.demoEngine.DemoItem", "dojo.widget.demoEngine.DemoNavigator", "dojo.widget.demoEngine.DemoPane", "dojo.widget.demoEngine.SourcePane", "dojo.widget.demoEngine.DemoContainer"]});
+	dojo.provide("dojo.widget.demoEngine.*");
+}});
+
+
 __CPAN_DIR__ src/widget/demoEngine/templates
 __CPAN_FILE__ src/widget/demoEngine/templates/DemoContainer.html
 <div dojoAttachPoint="domNode">
@@ -36063,6 +73539,482 @@
 >=èDd«<—&4^a_}‘¦:CzN§ÓÿØ)—ËË”µ¸o[­Ön·ûÚÀ¾õ¨zoB¨ÍºJ9€îª¾r@¢þµžÉx<^¦¼"à¾B4ßÅ’Qû×áBìiMRc"l|¤|UÄ—xôæÔ©ž¤#i‡Y屈ÈN8¯Éåºõª>Š~éks¾-ý7Ö1j€»W«Õ¾òi#UЀ­"µ©u $à
 x¾ˆBWØ{"mýT^0.:àò	Ì'¦R
à±h‹Ç𕌸^²ᛳ6À$ƒÁແ™‚ìpt&)6M-ò|‘vG ³´UD_Ì툹ÞÙ #Þp at P~€tijÇ‘#?`»@ùo®‰/ECÛ0ŠÔ†6Š£àCQŽ- 'u“½ »*Š5ÿ,lI«3QðW
øZ‡~4´9"'bš·nú1œ!•Ä7ß0zmœ€—«)ÙCz²@¿#^V”ÿ嬓€ãb±H¿¿?
i÷µ¼ÐÇÐ#ÓVQcШXÒ$à1‘QlËN¦„¥­“VJ9$OÒå»)lØÑZÿÙr1[>¼‹xý"ޏxJ|Ëï"Vÿ'G>çÁÍ•—“w¹'9JÍ›™g^W怳Ë8G—
ðvŸ-èMè9ôzÁÏsNŸÒÆš£åŸºMr]÷^ŸkÐë)ùö7Ã>ãeä'ˆé•œE07øŽ`þ"Ä‹<VÓå  Õˆ€\à«    IEND®B`‚
 __CPAN_DIR__ src/widget/svg
+__CPAN_FILE__ src/widget/svg/Chart.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.svg.Chart"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.Chart"], ["require", "dojo.html.layout"], ["require", "dojo.math"], ["require", "dojo.svg"], ["require", "dojo.gfx.color"], ["require", "dojo.json"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.svg.Chart");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.Chart");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.math");
+	dojo.require("dojo.svg");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.json");
+	dojo.widget.defineWidget("dojo.widget.svg.Chart", [dojo.widget.HtmlWidget, dojo.widget.Chart], function () {
+		this.templatePath = null;
+		this.templateCssPath = null;
+		this._isInitialize = false;
+		this.hasData = false;
+		this.vectorNode = null;
+		this.plotArea = null;
+		this.dataGroup = null;
+		this.axisGroup = null;
+		this.properties = {height:0, width:0, defaultWidth:600, defaultHeight:400, plotType:null, padding:{top:10, bottom:2, left:60, right:30}, axes:{x:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}, y:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}}};
+	}, {parseProperties:function (node) {
+		var bRangeX = false;
+		var bRangeY = false;
+		if (node.getAttribute("width")) {
+			this.properties.width = node.getAttribute("width");
+		}
+		if (node.getAttribute("height")) {
+			this.properties.height = node.getAttribute("height");
+		}
+		if (node.getAttribute("plotType")) {
+			this.properties.plotType = node.getAttribute("plotType");
+		}
+		if (node.getAttribute("padding")) {
+			if (node.getAttribute("padding").indexOf(",") > -1) {
+				var p = node.getAttribute("padding").split(",");
+			} else {
+				var p = node.getAttribute("padding").split(" ");
+			}
+			if (p.length == 1) {
+				var pad = parseFloat(p[0]);
+				this.properties.padding.top = pad;
+				this.properties.padding.right = pad;
+				this.properties.padding.bottom = pad;
+				this.properties.padding.left = pad;
+			} else {
+				if (p.length == 2) {
+					var padV = parseFloat(p[0]);
+					var padH = parseFloat(p[1]);
+					this.properties.padding.top = padV;
+					this.properties.padding.right = padH;
+					this.properties.padding.bottom = padV;
+					this.properties.padding.left = padH;
+				} else {
+					if (p.length == 4) {
+						this.properties.padding.top = parseFloat(p[0]);
+						this.properties.padding.right = parseFloat(p[1]);
+						this.properties.padding.bottom = parseFloat(p[2]);
+						this.properties.padding.left = parseFloat(p[3]);
+					}
+				}
+			}
+		}
+		if (node.getAttribute("rangeX")) {
+			var p = node.getAttribute("rangeX");
+			if (p.indexOf(",") > -1) {
+				p = p.split(",");
+			} else {
+				p = p.split(" ");
+			}
+			this.properties.axes.x.range.min = parseFloat(p[0]);
+			this.properties.axes.x.range.max = parseFloat(p[1]);
+			bRangeX = true;
+		}
+		if (node.getAttribute("rangeY")) {
+			var p = node.getAttribute("rangeY");
+			if (p.indexOf(",") > -1) {
+				p = p.split(",");
+			} else {
+				p = p.split(" ");
+			}
+			this.properties.axes.y.range.min = parseFloat(p[0]);
+			this.properties.axes.y.range.max = parseFloat(p[1]);
+			bRangeY = true;
+		}
+		return {rangeX:bRangeX, rangeY:bRangeY};
+	}, setAxesPlot:function (table) {
+		if (table.getAttribute("axisAt")) {
+			var p = table.getAttribute("axisAt");
+			if (p.indexOf(",") > -1) {
+				p = p.split(",");
+			} else {
+				p = p.split(" ");
+			}
+			if (!isNaN(parseFloat(p[0]))) {
+				this.properties.axes.x.plotAt = parseFloat(p[0]);
+			} else {
+				if (p[0].toLowerCase() == "ymin") {
+					this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
+				} else {
+					if (p[0].toLowerCase() == "ymax") {
+						this.properties.axes.x.plotAt = this.properties.axes.y.range.max;
+					}
+				}
+			}
+			if (!isNaN(parseFloat(p[1]))) {
+				this.properties.axes.y.plotAt = parseFloat(p[1]);
+			} else {
+				if (p[1].toLowerCase() == "xmin") {
+					this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
+				} else {
+					if (p[1].toLowerCase() == "xmax") {
+						this.properties.axes.y.plotAt = this.properties.axes.x.range.max;
+					}
+				}
+			}
+		} else {
+			this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
+			this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
+		}
+	}, drawVectorNode:function () {
+		dojo.svg.g.suspend();
+		if (this.vectorNode) {
+			this.destroy();
+		}
+		this.vectorNode = document.createElementNS(dojo.svg.xmlns.svg, "svg");
+		this.vectorNode.setAttribute("width", this.properties.width);
+		this.vectorNode.setAttribute("height", this.properties.height);
+		dojo.svg.g.resume();
+	}, drawPlotArea:function () {
+		dojo.svg.g.suspend();
+		if (this.plotArea) {
+			this.plotArea.parentNode.removeChild(this.plotArea);
+			this.plotArea = null;
+		}
+		var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs");
+		var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath");
+		clip.setAttribute("id", "plotClip" + this.widgetId);
+		var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+		rect.setAttribute("x", this.properties.padding.left);
+		rect.setAttribute("y", this.properties.padding.top);
+		rect.setAttribute("width", this.properties.width - this.properties.padding.left - this.properties.padding.right);
+		rect.setAttribute("height", this.properties.height - this.properties.padding.top - this.properties.padding.bottom);
+		clip.appendChild(rect);
+		defs.appendChild(clip);
+		this.vectorNode.appendChild(defs);
+		this.plotArea = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		this.vectorNode.appendChild(this.plotArea);
+		var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+		rect.setAttribute("x", this.properties.padding.left);
+		rect.setAttribute("y", this.properties.padding.top);
+		rect.setAttribute("width", this.properties.width - this.properties.padding.left - this.properties.padding.right);
+		rect.setAttribute("height", this.properties.height - this.properties.padding.top - this.properties.padding.bottom);
+		rect.setAttribute("fill", "#fff");
+		this.plotArea.appendChild(rect);
+		dojo.svg.g.resume();
+	}, drawDataGroup:function () {
+		dojo.svg.g.suspend();
+		if (this.dataGroup) {
+			this.dataGroup.parentNode.removeChild(this.dataGroup);
+			this.dataGroup = null;
+		}
+		this.dataGroup = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		this.dataGroup.setAttribute("style", "clip-path:url(#plotClip" + this.widgetId + ");");
+		this.plotArea.appendChild(this.dataGroup);
+		dojo.svg.g.resume();
+	}, drawAxes:function () {
+		dojo.svg.g.suspend();
+		if (this.axisGroup) {
+			this.axisGroup.parentNode.removeChild(this.axisGroup);
+			this.axisGroup = null;
+		}
+		this.axisGroup = document.createElementNS(dojo.svg.xmlns.svg, "g");
+		this.plotArea.appendChild(this.axisGroup);
+		var stroke = 1;
+		var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
+		var y = dojo.widget.svg.Chart.Plotter.getY(this.properties.axes.x.plotAt, this);
+		line.setAttribute("y1", y);
+		line.setAttribute("y2", y);
+		line.setAttribute("x1", this.properties.padding.left - stroke);
+		line.setAttribute("x2", this.properties.width - this.properties.padding.right);
+		line.setAttribute("style", "stroke:#000;stroke-width:" + stroke + ";");
+		this.axisGroup.appendChild(line);
+		var textSize = 10;
+		var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+		text.setAttribute("x", this.properties.padding.left);
+		text.setAttribute("y", this.properties.height - this.properties.padding.bottom + textSize + 2);
+		text.setAttribute("style", "text-anchor:middle;font-size:" + textSize + "px;fill:#000;");
+		text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.x.range.min), 2)));
+		this.axisGroup.appendChild(text);
+		var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+		text.setAttribute("x", this.properties.width - this.properties.padding.right - (textSize / 2));
+		text.setAttribute("y", this.properties.height - this.properties.padding.bottom + textSize + 2);
+		text.setAttribute("style", "text-anchor:middle;font-size:" + textSize + "px;fill:#000;");
+		text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.x.range.max), 2)));
+		this.axisGroup.appendChild(text);
+		var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
+		var x = dojo.widget.svg.Chart.Plotter.getX(this.properties.axes.y.plotAt, this);
+		line.setAttribute("x1", x);
+		line.setAttribute("x2", x);
+		line.setAttribute("y1", this.properties.padding.top);
+		line.setAttribute("y2", this.properties.height - this.properties.padding.bottom);
+		line.setAttribute("style", "stroke:#000;stroke-width:" + stroke + ";");
+		this.axisGroup.appendChild(line);
+		var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+		text.setAttribute("x", this.properties.padding.left - 4);
+		text.setAttribute("y", this.properties.height - this.properties.padding.bottom);
+		text.setAttribute("style", "text-anchor:end;font-size:" + textSize + "px;fill:#000;");
+		text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.y.range.min), 2)));
+		this.axisGroup.appendChild(text);
+		var text = document.createElementNS(dojo.svg.xmlns.svg, "text");
+		text.setAttribute("x", this.properties.padding.left - 4);
+		text.setAttribute("y", this.properties.padding.top + (textSize / 2));
+		text.setAttribute("style", "text-anchor:end;font-size:" + textSize + "px;fill:#000;");
+		text.appendChild(document.createTextNode(dojo.math.round(parseFloat(this.properties.axes.y.range.max), 2)));
+		this.axisGroup.appendChild(text);
+		dojo.svg.g.resume();
+	}, init:function () {
+		if (!this.properties.width || !this.properties.height) {
+			var box = dojo.html.getContentBox(this.domNode);
+			if (!this.properties.width) {
+				this.properties.width = (box.width < 32) ? this.properties.defaultWidth : box.width;
+			}
+			if (!this.properties.height) {
+				this.properties.height = (box.height < 32) ? this.properties.defaultHeight : box.height;
+			}
+		}
+		this.drawVectorNode();
+		this.drawPlotArea();
+		this.drawDataGroup();
+		this.drawAxes();
+		this.domNode.appendChild(this.vectorNode);
+		this.assignColors();
+		this._isInitialized = true;
+	}, destroy:function () {
+		while (this.domNode.childNodes.length > 0) {
+			this.domNode.removeChild(this.domNode.childNodes.item(0));
+		}
+		this.vectorNode = this.plotArea = this.dataGroup = this.axisGroup = null;
+	}, render:function () {
+		dojo.svg.g.suspend();
+		if (this.dataGroup) {
+			while (this.dataGroup.childNodes.length > 0) {
+				this.dataGroup.removeChild(this.dataGroup.childNodes.item(0));
+			}
+		} else {
+			this.init();
+		}
+		for (var i = 0; i < this.series.length; i++) {
+			dojo.widget.svg.Chart.Plotter.plot(this.series[i], this);
+		}
+		dojo.svg.g.resume();
+	}, postCreate:function () {
+		var table = this.domNode.getElementsByTagName("table")[0];
+		if (table) {
+			var ranges = this.parseProperties(table);
+			var bRangeX = false;
+			var bRangeY = false;
+			var axisValues = this.parseData(table);
+			if (!bRangeX) {
+				this.properties.axes.x.range = {min:axisValues.x.min, max:axisValues.x.max};
+			}
+			if (!bRangeY) {
+				this.properties.axes.y.range = {min:axisValues.y.min, max:axisValues.y.max};
+			}
+			this.setAxesPlot(table);
+			this.domNode.removeChild(table);
+		}
+		if (this.series.length > 0) {
+			this.render();
+		}
+	}});
+	dojo.widget.svg.Chart.Plotter = new function () {
+		var self = this;
+		var plotters = {};
+		var types = dojo.widget.Chart.PlotTypes;
+		this.getX = function (value, chart) {
+			var v = parseFloat(value);
+			var min = chart.properties.axes.x.range.min;
+			var max = chart.properties.axes.x.range.max;
+			var ofst = 0 - min;
+			min += ofst;
+			max += ofst;
+			v += ofst;
+			var xmin = chart.properties.padding.left;
+			var xmax = chart.properties.width - chart.properties.padding.right;
+			var x = (v * ((xmax - xmin) / max)) + xmin;
+			return x;
+		};
+		this.getY = function (value, chart) {
+			var v = parseFloat(value);
+			var max = chart.properties.axes.y.range.max;
+			var min = chart.properties.axes.y.range.min;
+			var ofst = 0;
+			if (min < 0) {
+				ofst += Math.abs(min);
+			}
+			min += ofst;
+			max += ofst;
+			v += ofst;
+			var ymin = chart.properties.height - chart.properties.padding.bottom;
+			var ymax = chart.properties.padding.top;
+			var y = (((ymin - ymax) / (max - min)) * (max - v)) + ymax;
+			return y;
+		};
+		this.addPlotter = function (name, func) {
+			plotters[name] = func;
+		};
+		this.plot = function (series, chart) {
+			if (series.values.length == 0) {
+				return;
+			}
+			if (series.plotType && plotters[series.plotType]) {
+				return plotters[series.plotType](series, chart);
+			} else {
+				if (chart.plotType && plotters[chart.plotType]) {
+					return plotters[chart.plotType](series, chart);
+				}
+			}
+		};
+		plotters["bar"] = function (series, chart) {
+			var space = 1;
+			var lastW = 0;
+			for (var i = 0; i < series.values.length; i++) {
+				var x = self.getX(series.values[i].x, chart);
+				var w;
+				if (i == series.values.length - 1) {
+					w = lastW;
+				} else {
+					w = self.getX(series.values[i + 1].x, chart) - x - space;
+					lastW = w;
+				}
+				x -= (w / 2);
+				var yA = self.getY(chart.properties.axes.x.plotAt, chart);
+				var y = self.getY(series.values[i].value, chart);
+				var h = Math.abs(yA - y);
+				if (parseFloat(series.values[i].value) < chart.properties.axes.x.plotAt) {
+					var oy = yA;
+					yA = y;
+					y = oy;
+				}
+				var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+				bar.setAttribute("fill", series.color);
+				bar.setAttribute("title", series.label + ": " + series.values[i].value);
+				bar.setAttribute("stroke-width", "0");
+				bar.setAttribute("x", x);
+				bar.setAttribute("y", y);
+				bar.setAttribute("width", w);
+				bar.setAttribute("height", h);
+				bar.setAttribute("fill-opacity", "0.9");
+				chart.dataGroup.appendChild(bar);
+			}
+		};
+		plotters["line"] = function (series, chart) {
+			var tension = 1.5;
+			var line = document.createElementNS(dojo.svg.xmlns.svg, "path");
+			line.setAttribute("fill", "none");
+			line.setAttribute("stroke", series.color);
+			line.setAttribute("stroke-width", "2");
+			line.setAttribute("stroke-opacity", "0.85");
+			line.setAttribute("title", series.label);
+			chart.dataGroup.appendChild(line);
+			var path = [];
+			for (var i = 0; i < series.values.length; i++) {
+				var x = self.getX(series.values[i].x, chart);
+				var y = self.getY(series.values[i].value, chart);
+				var dx = chart.properties.padding.left + 1;
+				var dy = chart.properties.height - chart.properties.padding.bottom;
+				if (i > 0) {
+					dx = x - self.getX(series.values[i - 1].x, chart);
+					dy = self.getY(series.values[i - 1].value, chart);
+				}
+				if (i == 0) {
+					path.push("M");
+				} else {
+					path.push("C");
+					var cx = x - (tension - 1) * (dx / tension);
+					path.push(cx + "," + dy);
+					cx = x - (dx / tension);
+					path.push(cx + "," + y);
+				}
+				path.push(x + "," + y);
+			}
+			line.setAttribute("d", path.join(" "));
+		};
+		plotters["area"] = function (series, chart) {
+			var tension = 1.5;
+			var line = document.createElementNS(dojo.svg.xmlns.svg, "path");
+			line.setAttribute("fill", series.color);
+			line.setAttribute("fill-opacity", "0.4");
+			line.setAttribute("stroke", series.color);
+			line.setAttribute("stroke-width", "1");
+			line.setAttribute("stroke-opacity", "0.8");
+			line.setAttribute("title", series.label);
+			chart.dataGroup.appendChild(line);
+			var path = [];
+			for (var i = 0; i < series.values.length; i++) {
+				var x = self.getX(series.values[i].x, chart);
+				var y = self.getY(series.values[i].value, chart);
+				var dx = chart.properties.padding.left + 1;
+				var dy = chart.properties.height - chart.properties.padding.bottom;
+				if (i > 0) {
+					dx = x - self.getX(series.values[i - 1].x, chart);
+					dy = self.getY(series.values[i - 1].value, chart);
+				}
+				if (i == 0) {
+					path.push("M");
+				} else {
+					path.push("C");
+					var cx = x - (tension - 1) * (dx / tension);
+					path.push(cx + "," + dy);
+					cx = x - (dx / tension);
+					path.push(cx + "," + y);
+				}
+				path.push(x + "," + y);
+			}
+			path.push("L");
+			path.push(x + "," + self.getY(0, chart));
+			path.push("L");
+			path.push(self.getX(0, chart) + "," + self.getY(0, chart));
+			path.push("Z");
+			line.setAttribute("d", path.join(" "));
+		}, plotters["scatter"] = function (series, chart) {
+			var r = 7;
+			for (var i = 0; i < series.values.length; i++) {
+				var x = self.getX(series.values[i].x, chart);
+				var y = self.getY(series.values[i].value, chart);
+				var point = document.createElementNS(dojo.svg.xmlns.svg, "path");
+				point.setAttribute("fill", series.color);
+				point.setAttribute("stroke-width", "0");
+				point.setAttribute("title", series.label + ": " + series.values[i].value);
+				point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z");
+				chart.dataGroup.appendChild(point);
+			}
+		};
+		plotters["bubble"] = function (series, chart) {
+			var minR = 1;
+			var min = chart.properties.axes.x.range.min;
+			var max = chart.properties.axes.x.range.max;
+			var ofst = 0 - min;
+			min += ofst;
+			max += ofst;
+			var xmin = chart.properties.padding.left;
+			var xmax = chart.properties.width - chart.properties.padding.right;
+			var factor = (max - min) / (xmax - xmin) * 25;
+			for (var i = 0; i < series.values.length; i++) {
+				var size = series.values[i].size;
+				if (isNaN(parseFloat(size))) {
+					size = minR;
+				}
+				var point = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+				point.setAttribute("stroke-width", 0);
+				point.setAttribute("fill", series.color);
+				point.setAttribute("fill-opacity", "0.8");
+				point.setAttribute("r", (parseFloat(size) * factor) / 2);
+				point.setAttribute("cx", self.getX(series.values[i].x, chart));
+				point.setAttribute("cy", self.getY(series.values[i].value, chart));
+				point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")");
+				chart.dataGroup.appendChild(point);
+			}
+		};
+	}();
+}});
+
+
 __CPAN_FILE__ src/widget/svg/Chart.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -36074,6 +74026,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.svg.Chart");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.Chart");
@@ -41147,6 +79101,537 @@
 __CPAN_FILE__ src/widget/templates/buttons/justifycenter.gif
 GIF89a  ³ :94˜3/“.@¤?N±M¬Ü¬GªF[¾ZüüüaÅ`T¸SgÊf,+çççÿÿÿ   !ù   ,       1ÐÉI«½8ë}ËJ‡BLÊLHã¾0ÌÍå©®YüÎ\Þ@ŠnØài€ÁÑel:5 ;
 __CPAN_DIR__ src/widget/vml
+__CPAN_FILE__ src/widget/vml/Chart.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.widget.vml.Chart"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.Chart"], ["require", "dojo.math"], ["require", "dojo.html.layout"], ["require", "dojo.gfx.color"]], definePackage:function (dojo) {
+	dojo.provide("dojo.widget.vml.Chart");
+	dojo.require("dojo.widget.HtmlWidget");
+	dojo.require("dojo.widget.Chart");
+	dojo.require("dojo.math");
+	dojo.require("dojo.html.layout");
+	dojo.require("dojo.gfx.color");
+	dojo.widget.defineWidget("dojo.widget.vml.Chart", [dojo.widget.HtmlWidget, dojo.widget.Chart], function () {
+		this.templatePath = null;
+		this.templateCssPath = null;
+		this._isInitialize = false;
+		this.hasData = false;
+		this.vectorNode = null;
+		this.plotArea = null;
+		this.dataGroup = null;
+		this.axisGroup = null;
+		this.properties = {height:0, width:0, defaultWidth:600, defaultHeight:400, plotType:null, padding:{top:10, bottom:2, left:60, right:30}, axes:{x:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}, y:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}}};
+	}, {parseProperties:function (node) {
+		var bRangeX = false;
+		var bRangeY = false;
+		if (node.getAttribute("width")) {
+			this.properties.width = node.getAttribute("width");
+		}
+		if (node.getAttribute("height")) {
+			this.properties.height = node.getAttribute("height");
+		}
+		if (node.getAttribute("plotType")) {
+			this.properties.plotType = node.getAttribute("plotType");
+		}
+		if (node.getAttribute("padding")) {
+			if (node.getAttribute("padding").indexOf(",") > -1) {
+				var p = node.getAttribute("padding").split(",");
+			} else {
+				var p = node.getAttribute("padding").split(" ");
+			}
+			if (p.length == 1) {
+				var pad = parseFloat(p[0]);
+				this.properties.padding.top = pad;
+				this.properties.padding.right = pad;
+				this.properties.padding.bottom = pad;
+				this.properties.padding.left = pad;
+			} else {
+				if (p.length == 2) {
+					var padV = parseFloat(p[0]);
+					var padH = parseFloat(p[1]);
+					this.properties.padding.top = padV;
+					this.properties.padding.right = padH;
+					this.properties.padding.bottom = padV;
+					this.properties.padding.left = padH;
+				} else {
+					if (p.length == 4) {
+						this.properties.padding.top = parseFloat(p[0]);
+						this.properties.padding.right = parseFloat(p[1]);
+						this.properties.padding.bottom = parseFloat(p[2]);
+						this.properties.padding.left = parseFloat(p[3]);
+					}
+				}
+			}
+		}
+		if (node.getAttribute("rangeX")) {
+			var p = node.getAttribute("rangeX");
+			if (p.indexOf(",") > -1) {
+				p = p.split(",");
+			} else {
+				p = p.split(" ");
+			}
+			this.properties.axes.x.range.min = parseFloat(p[0]);
+			this.properties.axes.x.range.max = parseFloat(p[1]);
+			bRangeX = true;
+		}
+		if (node.getAttribute("rangeY")) {
+			var p = node.getAttribute("rangeY");
+			if (p.indexOf(",") > -1) {
+				p = p.split(",");
+			} else {
+				p = p.split(" ");
+			}
+			this.properties.axes.y.range.min = parseFloat(p[0]);
+			this.properties.axes.y.range.max = parseFloat(p[1]);
+			bRangeY = true;
+		}
+		return {rangeX:bRangeX, rangeY:bRangeY};
+	}, setAxesPlot:function (table) {
+		if (table.getAttribute("axisAt")) {
+			var p = table.getAttribute("axisAt");
+			if (p.indexOf(",") > -1) {
+				p = p.split(",");
+			} else {
+				p = p.split(" ");
+			}
+			if (!isNaN(parseFloat(p[0]))) {
+				this.properties.axes.x.plotAt = parseFloat(p[0]);
+			} else {
+				if (p[0].toLowerCase() == "ymin") {
+					this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
+				} else {
+					if (p[0].toLowerCase() == "ymax") {
+						this.properties.axes.x.plotAt = this.properties.axes.y.range.max;
+					}
+				}
+			}
+			if (!isNaN(parseFloat(p[1]))) {
+				this.properties.axes.y.plotAt = parseFloat(p[1]);
+			} else {
+				if (p[1].toLowerCase() == "xmin") {
+					this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
+				} else {
+					if (p[1].toLowerCase() == "xmax") {
+						this.properties.axes.y.plotAt = this.properties.axes.x.range.max;
+					}
+				}
+			}
+		} else {
+			this.properties.axes.x.plotAt = this.properties.axes.y.range.min;
+			this.properties.axes.y.plotAt = this.properties.axes.x.range.min;
+		}
+	}, drawVectorNode:function () {
+		if (this.vectorNode) {
+			this.destroy();
+		}
+		this.vectorNode = document.createElement("div");
+		this.vectorNode.style.width = this.properties.width + "px";
+		this.vectorNode.style.height = this.properties.height + "px";
+		this.vectorNode.style.position = "relative";
+		this.domNode.appendChild(this.vectorNode);
+	}, drawPlotArea:function () {
+		var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right;
+		var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom;
+		if (this.plotArea) {
+			this.plotArea.parentNode.removeChild(this.plotArea);
+			this.plotArea = null;
+		}
+		this.plotArea = document.createElement("div");
+		this.plotArea.style.position = "absolute";
+		this.plotArea.style.backgroundColor = "#fff";
+		this.plotArea.style.top = (this.properties.padding.top) - 2 + "px";
+		this.plotArea.style.left = (this.properties.padding.left - 1) + "px";
+		this.plotArea.style.width = plotWidth + "px";
+		this.plotArea.style.height = plotHeight + "px";
+		this.plotArea.style.clip = "rect(0 " + plotWidth + " " + plotHeight + " 0)";
+		this.vectorNode.appendChild(this.plotArea);
+	}, drawDataGroup:function () {
+		var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right;
+		var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom;
+		if (this.dataGroup) {
+			this.dataGroup.parentNode.removeChild(this.dataGroup);
+			this.dataGroup = null;
+		}
+		this.dataGroup = document.createElement("div");
+		this.dataGroup.style.position = "absolute";
+		this.dataGroup.setAttribute("title", "Data Group");
+		this.dataGroup.style.top = "0px";
+		this.dataGroup.style.left = "0px";
+		this.dataGroup.style.width = plotWidth + "px";
+		this.dataGroup.style.height = plotHeight + "px";
+		this.plotArea.appendChild(this.dataGroup);
+	}, drawAxes:function () {
+		var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right;
+		var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom;
+		if (this.axisGroup) {
+			this.axisGroup.parentNode.removeChild(this.axisGroup);
+			this.axisGroup = null;
+		}
+		this.axisGroup = document.createElement("div");
+		this.axisGroup.style.position = "absolute";
+		this.axisGroup.setAttribute("title", "Axis Group");
+		this.axisGroup.style.top = "0px";
+		this.axisGroup.style.left = "0px";
+		this.axisGroup.style.width = plotWidth + "px";
+		this.axisGroup.style.height = plotHeight + "px";
+		this.plotArea.appendChild(this.axisGroup);
+		var stroke = 1;
+		var line = document.createElement("v:line");
+		var y = dojo.widget.vml.Chart.Plotter.getY(this.properties.axes.x.plotAt, this);
+		line.setAttribute("from", "0px," + y + "px");
+		line.setAttribute("to", plotWidth + "px," + y + "px");
+		line.style.position = "absolute";
+		line.style.top = "0px";
+		line.style.left = "0px";
+		line.style.antialias = "false";
+		line.setAttribute("strokecolor", "#666");
+		line.setAttribute("strokeweight", stroke * 2 + "px");
+		this.axisGroup.appendChild(line);
+		var line = document.createElement("v:line");
+		var x = dojo.widget.vml.Chart.Plotter.getX(this.properties.axes.y.plotAt, this);
+		line.setAttribute("from", x + "px,0px");
+		line.setAttribute("to", x + "px," + plotHeight + "px");
+		line.style.position = "absolute";
+		line.style.top = "0px";
+		line.style.left = "0px";
+		line.style.antialias = "false";
+		line.setAttribute("strokecolor", "#666");
+		line.setAttribute("strokeweight", stroke * 2 + "px");
+		this.axisGroup.appendChild(line);
+		var size = 10;
+		var t = document.createElement("div");
+		t.style.position = "absolute";
+		t.style.top = (this.properties.height - this.properties.padding.bottom) + "px";
+		t.style.left = this.properties.padding.left + "px";
+		t.style.fontFamily = "sans-serif";
+		t.style.fontSize = size + "px";
+		t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.min), 2);
+		this.vectorNode.appendChild(t);
+		t = document.createElement("div");
+		t.style.position = "absolute";
+		t.style.top = (this.properties.height - this.properties.padding.bottom) + "px";
+		t.style.left = (this.properties.width - this.properties.padding.right - size) + "px";
+		t.style.fontFamily = "sans-serif";
+		t.style.fontSize = size + "px";
+		t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.max), 2);
+		this.vectorNode.appendChild(t);
+		t = document.createElement("div");
+		t.style.position = "absolute";
+		t.style.top = (size / 2) + "px";
+		t.style.left = "0px";
+		t.style.width = this.properties.padding.left + "px";
+		t.style.textAlign = "right";
+		t.style.paddingRight = "4px";
+		t.style.fontFamily = "sans-serif";
+		t.style.fontSize = size + "px";
+		t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.max), 2);
+		this.vectorNode.appendChild(t);
+		t = document.createElement("div");
+		t.style.position = "absolute";
+		t.style.top = (this.properties.height - this.properties.padding.bottom - size) + "px";
+		t.style.left = "0px";
+		t.style.width = this.properties.padding.left + "px";
+		t.style.textAlign = "right";
+		t.style.paddingRight = "4px";
+		t.style.fontFamily = "sans-serif";
+		t.style.fontSize = size + "px";
+		t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.min), 2);
+		this.vectorNode.appendChild(t);
+	}, init:function () {
+		if (!this.properties.width || !this.properties.height) {
+			var box = dojo.html.getContentBox(this.domNode);
+			if (!this.properties.width) {
+				this.properties.width = (box.width < 32) ? this.properties.defaultWidth : box.width;
+			}
+			if (!this.properties.height) {
+				this.properties.height = (box.height < 32) ? this.properties.defaultHeight : box.height;
+			}
+		}
+		this.drawVectorNode();
+		this.drawPlotArea();
+		this.drawDataGroup();
+		this.drawAxes();
+		this.assignColors();
+		this._isInitialized = true;
+	}, destroy:function () {
+		while (this.domNode.childNodes.length > 0) {
+			this.domNode.removeChild(this.domNode.childNodes[0]);
+		}
+		this.vectorNode = this.plotArea = this.dataGroup = this.axisGroup = null;
+	}, render:function () {
+		if (this.dataGroup) {
+			while (this.dataGroup.childNodes.length > 0) {
+				this.dataGroup.removeChild(this.dataGroup.childNodes[0]);
+			}
+		} else {
+			this.init();
+		}
+		for (var i = 0; i < this.series.length; i++) {
+			dojo.widget.vml.Chart.Plotter.plot(this.series[i], this);
+		}
+	}, postCreate:function () {
+		var table = this.domNode.getElementsByTagName("table")[0];
+		if (table) {
+			var ranges = this.parseProperties(table);
+			var bRangeX = false;
+			var bRangeY = false;
+			var axisValues = this.parseData(table);
+			if (!bRangeX) {
+				this.properties.axes.x.range = {min:axisValues.x.min, max:axisValues.x.max};
+			}
+			if (!bRangeY) {
+				this.properties.axes.y.range = {min:axisValues.y.min, max:axisValues.y.max};
+			}
+			this.setAxesPlot(table);
+			this.domNode.removeChild(table);
+		}
+		if (this.series.length > 0) {
+			this.render();
+		}
+	}});
+	dojo.widget.vml.Chart.Plotter = new function () {
+		var self = this;
+		var plotters = {};
+		var types = dojo.widget.Chart.PlotTypes;
+		this.getX = function (value, chart) {
+			var v = parseFloat(value);
+			var min = chart.properties.axes.x.range.min;
+			var max = chart.properties.axes.x.range.max;
+			var ofst = 0 - min;
+			min += ofst;
+			max += ofst;
+			v += ofst;
+			var xmin = 0;
+			var xmax = chart.properties.width - chart.properties.padding.left - chart.properties.padding.right;
+			var x = (v * ((xmax - xmin) / max)) + xmin;
+			return x;
+		};
+		this.getY = function (value, chart) {
+			var v = parseFloat(value);
+			var max = chart.properties.axes.y.range.max;
+			var min = chart.properties.axes.y.range.min;
+			var ofst = 0;
+			if (min < 0) {
+				ofst += Math.abs(min);
+			}
+			min += ofst;
+			max += ofst;
+			v += ofst;
+			var ymin = chart.properties.height - chart.properties.padding.top - chart.properties.padding.bottom;
+			var ymax = 0;
+			var y = (((ymin - ymax) / (max - min)) * (max - v)) + ymax;
+			return y;
+		};
+		this.addPlotter = function (name, func) {
+			plotters[name] = func;
+		};
+		this.plot = function (series, chart) {
+			if (series.values.length == 0) {
+				return;
+			}
+			if (series.plotType && plotters[series.plotType]) {
+				return plotters[series.plotType](series, chart);
+			} else {
+				if (chart.plotType && plotters[chart.plotType]) {
+					return plotters[chart.plotType](series, chart);
+				}
+			}
+		};
+		plotters["bar"] = function (series, chart) {
+			var space = 1;
+			var lastW = 0;
+			var ys = [];
+			var yAxis = self.getY(chart.properties.axes.x.plotAt, chart);
+			var yA = yAxis;
+			for (var i = 0; i < series.values.length; i++) {
+				var x = self.getX(series.values[i].x, chart);
+				var w;
+				if (i == series.values.length - 1) {
+					w = lastW;
+				} else {
+					w = self.getX(series.values[i + 1].x, chart) - x - space;
+					lastW = w;
+				}
+				x -= (w / 2);
+				var y = self.getY(series.values[i].value, chart);
+				var h = Math.abs(yA - y);
+				if (parseFloat(series.values[i].value) < chart.properties.axes.x.plotAt) {
+					y = yA;
+				}
+				var bar = document.createElement("v:rect");
+				bar.style.position = "absolute";
+				bar.style.top = y + "px";
+				bar.style.left = x + "px";
+				bar.style.width = w + "px";
+				bar.style.height = h + "px";
+				bar.setAttribute("fillColor", series.color);
+				bar.setAttribute("stroked", "false");
+				bar.style.antialias = "false";
+				bar.setAttribute("title", series.label + " (" + i + "): " + series.values[i].value);
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.9");
+				bar.appendChild(fill);
+				chart.dataGroup.appendChild(bar);
+			}
+		};
+		plotters["line"] = function (series, chart) {
+			var tension = 1.5;
+			var line = document.createElement("v:shape");
+			line.setAttribute("strokeweight", "2px");
+			line.setAttribute("strokecolor", series.color);
+			line.setAttribute("fillcolor", "none");
+			line.setAttribute("filled", "false");
+			line.setAttribute("title", series.label);
+			line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height);
+			line.style.position = "absolute";
+			line.style.top = "0px";
+			line.style.left = "0px";
+			line.style.width = chart.properties.width + "px";
+			line.style.height = chart.properties.height + "px";
+			var stroke = document.createElement("v:stroke");
+			stroke.setAttribute("opacity", "0.85");
+			line.appendChild(stroke);
+			var path = [];
+			for (var i = 0; i < series.values.length; i++) {
+				var x = Math.round(self.getX(series.values[i].x, chart));
+				var y = Math.round(self.getY(series.values[i].value, chart));
+				if (i == 0) {
+					path.push("m");
+					path.push(x + "," + y);
+				} else {
+					var lastx = Math.round(self.getX(series.values[i - 1].x, chart));
+					var lasty = Math.round(self.getY(series.values[i - 1].value, chart));
+					var dx = x - lastx;
+					var dy = y - lasty;
+					path.push("c");
+					var cx = Math.round((x - (tension - 1) * (dx / tension)));
+					path.push(cx + "," + lasty);
+					cx = Math.round((x - (dx / tension)));
+					path.push(cx + "," + y);
+					path.push(x + "," + y);
+				}
+			}
+			line.setAttribute("path", path.join(" ") + " e");
+			chart.dataGroup.appendChild(line);
+		};
+		plotters["area"] = function (series, chart) {
+			var tension = 1.5;
+			var line = document.createElement("v:shape");
+			line.setAttribute("strokeweight", "1px");
+			line.setAttribute("strokecolor", series.color);
+			line.setAttribute("fillcolor", series.color);
+			line.setAttribute("title", series.label);
+			line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height);
+			line.style.position = "absolute";
+			line.style.top = "0px";
+			line.style.left = "0px";
+			line.style.width = chart.properties.width + "px";
+			line.style.height = chart.properties.height + "px";
+			var stroke = document.createElement("v:stroke");
+			stroke.setAttribute("opacity", "0.8");
+			line.appendChild(stroke);
+			var fill = document.createElement("v:fill");
+			fill.setAttribute("opacity", "0.4");
+			line.appendChild(fill);
+			var path = [];
+			for (var i = 0; i < series.values.length; i++) {
+				var x = Math.round(self.getX(series.values[i].x, chart));
+				var y = Math.round(self.getY(series.values[i].value, chart));
+				if (i == 0) {
+					path.push("m");
+					path.push(x + "," + y);
+				} else {
+					var lastx = Math.round(self.getX(series.values[i - 1].x, chart));
+					var lasty = Math.round(self.getY(series.values[i - 1].value, chart));
+					var dx = x - lastx;
+					var dy = y - lasty;
+					path.push("c");
+					var cx = Math.round((x - (tension - 1) * (dx / tension)));
+					path.push(cx + "," + lasty);
+					cx = Math.round((x - (dx / tension)));
+					path.push(cx + "," + y);
+					path.push(x + "," + y);
+				}
+			}
+			path.push("l");
+			path.push(x + "," + self.getY(0, chart));
+			path.push("l");
+			path.push(self.getX(0, chart) + "," + self.getY(0, chart));
+			line.setAttribute("path", path.join(" ") + " x e");
+			chart.dataGroup.appendChild(line);
+		};
+		plotters["scatter"] = function (series, chart) {
+			var r = 6;
+			for (var i = 0; i < series.values.length; i++) {
+				var x = self.getX(series.values[i].x, chart);
+				var y = self.getY(series.values[i].value, chart);
+				var mod = r / 2;
+				var point = document.createElement("v:rect");
+				point.setAttribute("fillcolor", series.color);
+				point.setAttribute("strokecolor", series.color);
+				point.setAttribute("title", series.label + ": " + series.values[i].value);
+				point.style.position = "absolute";
+				point.style.rotation = "45";
+				point.style.top = (y - mod) + "px";
+				point.style.left = (x - mod) + "px";
+				point.style.width = r + "px";
+				point.style.height = r + "px";
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				point.appendChild(fill);
+				chart.dataGroup.appendChild(point);
+			}
+		};
+		plotters["bubble"] = function (series, chart) {
+			var minR = 1;
+			var min = chart.properties.axes.x.range.min;
+			var max = chart.properties.axes.x.range.max;
+			var ofst = 0 - min;
+			min += ofst;
+			max += ofst;
+			var xmin = chart.properties.padding.left;
+			var xmax = chart.properties.width - chart.properties.padding.right;
+			var factor = (max - min) / (xmax - xmin) * 25;
+			for (var i = 0; i < series.values.length; i++) {
+				var size = series.values[i].size;
+				if (isNaN(parseFloat(size))) {
+					size = minR;
+				}
+				var radius = (parseFloat(size) * factor) / 2;
+				var diameter = radius * 2;
+				var cx = self.getX(series.values[i].x, chart);
+				var cy = self.getY(series.values[i].value, chart);
+				var top = cy - radius;
+				var left = cx - radius;
+				var point = document.createElement("v:oval");
+				point.setAttribute("fillcolor", series.color);
+				point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")");
+				point.setAttribute("stroked", "false");
+				point.style.position = "absolute";
+				point.style.top = top + "px";
+				point.style.left = left + "px";
+				point.style.width = diameter + "px";
+				point.style.height = diameter + "px";
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.8");
+				point.appendChild(fill);
+				chart.dataGroup.appendChild(point);
+			}
+		};
+	}();
+}});
+
+
 __CPAN_FILE__ src/widget/vml/Chart.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -41158,6 +79643,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.widget.vml.Chart");
 dojo.require("dojo.widget.HtmlWidget");
 dojo.require("dojo.widget.Chart");
@@ -41675,6 +80162,986 @@
 
 
 __CPAN_DIR__ src/lfx
+__CPAN_FILE__ src/lfx/toggle.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.toggle"], ["require", "dojo.lfx.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lfx.toggle");
+	dojo.require("dojo.lfx.*");
+	dojo.lfx.toggle.plain = {show:function (node, duration, easing, callback) {
+		dojo.html.show(node);
+		if (dojo.lang.isFunction(callback)) {
+			callback();
+		}
+	}, hide:function (node, duration, easing, callback) {
+		dojo.html.hide(node);
+		if (dojo.lang.isFunction(callback)) {
+			callback();
+		}
+	}};
+	dojo.lfx.toggle.fade = {show:function (node, duration, easing, callback) {
+		dojo.lfx.fadeShow(node, duration, easing, callback).play();
+	}, hide:function (node, duration, easing, callback) {
+		dojo.lfx.fadeHide(node, duration, easing, callback).play();
+	}};
+	dojo.lfx.toggle.wipe = {show:function (node, duration, easing, callback) {
+		dojo.lfx.wipeIn(node, duration, easing, callback).play();
+	}, hide:function (node, duration, easing, callback) {
+		dojo.lfx.wipeOut(node, duration, easing, callback).play();
+	}};
+	dojo.lfx.toggle.explode = {show:function (node, duration, easing, callback, explodeSrc) {
+		dojo.lfx.explode(explodeSrc || {x:0, y:0, width:0, height:0}, node, duration, easing, callback).play();
+	}, hide:function (node, duration, easing, callback, explodeSrc) {
+		dojo.lfx.implode(node, explodeSrc || {x:0, y:0, width:0, height:0}, duration, easing, callback).play();
+	}};
+}});
+
+
+__CPAN_FILE__ src/lfx/Animation.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.Animation"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lfx.Animation");
+	dojo.require("dojo.lang.func");
+	dojo.lfx.Line = function (start, end) {
+		this.start = start;
+		this.end = end;
+		if (dojo.lang.isArray(start)) {
+			var diff = [];
+			dojo.lang.forEach(this.start, function (s, i) {
+				diff[i] = this.end[i] - s;
+			}, this);
+			this.getValue = function (n) {
+				var res = [];
+				dojo.lang.forEach(this.start, function (s, i) {
+					res[i] = (diff[i] * n) + s;
+				}, this);
+				return res;
+			};
+		} else {
+			var diff = end - start;
+			this.getValue = function (n) {
+				return (diff * n) + this.start;
+			};
+		}
+	};
+	if ((dojo.render.html.khtml) && (!dojo.render.html.safari)) {
+		dojo.lfx.easeDefault = function (n) {
+			return (parseFloat("0.5") + ((Math.sin((n + parseFloat("1.5")) * Math.PI)) / 2));
+		};
+	} else {
+		dojo.lfx.easeDefault = function (n) {
+			return (0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2));
+		};
+	}
+	dojo.lfx.easeIn = function (n) {
+		return Math.pow(n, 3);
+	};
+	dojo.lfx.easeOut = function (n) {
+		return (1 - Math.pow(1 - n, 3));
+	};
+	dojo.lfx.easeInOut = function (n) {
+		return ((3 * Math.pow(n, 2)) - (2 * Math.pow(n, 3)));
+	};
+	dojo.lfx.IAnimation = function () {
+	};
+	dojo.lang.extend(dojo.lfx.IAnimation, {curve:null, duration:1000, easing:null, repeatCount:0, rate:10, handler:null, beforeBegin:null, onBegin:null, onAnimate:null, onEnd:null, onPlay:null, onPause:null, onStop:null, play:null, pause:null, stop:null, connect:function (evt, scope, newFunc) {
+		if (!newFunc) {
+			newFunc = scope;
+			scope = this;
+		}
+		newFunc = dojo.lang.hitch(scope, newFunc);
+		var oldFunc = this[evt] || function () {
+		};
+		this[evt] = function () {
+			var ret = oldFunc.apply(this, arguments);
+			newFunc.apply(this, arguments);
+			return ret;
+		};
+		return this;
+	}, fire:function (evt, args) {
+		if (this[evt]) {
+			this[evt].apply(this, (args || []));
+		}
+		return this;
+	}, repeat:function (count) {
+		this.repeatCount = count;
+		return this;
+	}, _active:false, _paused:false});
+	dojo.lfx.Animation = function (handlers, duration, curve, easing, repeatCount, rate) {
+		dojo.lfx.IAnimation.call(this);
+		if (dojo.lang.isNumber(handlers) || (!handlers && duration.getValue)) {
+			rate = repeatCount;
+			repeatCount = easing;
+			easing = curve;
+			curve = duration;
+			duration = handlers;
+			handlers = null;
+		} else {
+			if (handlers.getValue || dojo.lang.isArray(handlers)) {
+				rate = easing;
+				repeatCount = curve;
+				easing = duration;
+				curve = handlers;
+				duration = null;
+				handlers = null;
+			}
+		}
+		if (dojo.lang.isArray(curve)) {
+			this.curve = new dojo.lfx.Line(curve[0], curve[1]);
+		} else {
+			this.curve = curve;
+		}
+		if (duration != null && duration > 0) {
+			this.duration = duration;
+		}
+		if (repeatCount) {
+			this.repeatCount = repeatCount;
+		}
+		if (rate) {
+			this.rate = rate;
+		}
+		if (handlers) {
+			dojo.lang.forEach(["handler", "beforeBegin", "onBegin", "onEnd", "onPlay", "onStop", "onAnimate"], function (item) {
+				if (handlers[item]) {
+					this.connect(item, handlers[item]);
+				}
+			}, this);
+		}
+		if (easing && dojo.lang.isFunction(easing)) {
+			this.easing = easing;
+		}
+	};
+	dojo.inherits(dojo.lfx.Animation, dojo.lfx.IAnimation);
+	dojo.lang.extend(dojo.lfx.Animation, {_startTime:null, _endTime:null, _timer:null, _percent:0, _startRepeatCount:0, play:function (delay, gotoStart) {
+		if (gotoStart) {
+			clearTimeout(this._timer);
+			this._active = false;
+			this._paused = false;
+			this._percent = 0;
+		} else {
+			if (this._active && !this._paused) {
+				return this;
+			}
+		}
+		this.fire("handler", ["beforeBegin"]);
+		this.fire("beforeBegin");
+		if (delay > 0) {
+			setTimeout(dojo.lang.hitch(this, function () {
+				this.play(null, gotoStart);
+			}), delay);
+			return this;
+		}
+		this._startTime = new Date().valueOf();
+		if (this._paused) {
+			this._startTime -= (this.duration * this._percent / 100);
+		}
+		this._endTime = this._startTime + this.duration;
+		this._active = true;
+		this._paused = false;
+		var step = this._percent / 100;
+		var value = this.curve.getValue(step);
+		if (this._percent == 0) {
+			if (!this._startRepeatCount) {
+				this._startRepeatCount = this.repeatCount;
+			}
+			this.fire("handler", ["begin", value]);
+			this.fire("onBegin", [value]);
+		}
+		this.fire("handler", ["play", value]);
+		this.fire("onPlay", [value]);
+		this._cycle();
+		return this;
+	}, pause:function () {
+		clearTimeout(this._timer);
+		if (!this._active) {
+			return this;
+		}
+		this._paused = true;
+		var value = this.curve.getValue(this._percent / 100);
+		this.fire("handler", ["pause", value]);
+		this.fire("onPause", [value]);
+		return this;
+	}, gotoPercent:function (pct, andPlay) {
+		clearTimeout(this._timer);
+		this._active = true;
+		this._paused = true;
+		this._percent = pct;
+		if (andPlay) {
+			this.play();
+		}
+		return this;
+	}, stop:function (gotoEnd) {
+		clearTimeout(this._timer);
+		var step = this._percent / 100;
+		if (gotoEnd) {
+			step = 1;
+		}
+		var value = this.curve.getValue(step);
+		this.fire("handler", ["stop", value]);
+		this.fire("onStop", [value]);
+		this._active = false;
+		this._paused = false;
+		return this;
+	}, status:function () {
+		if (this._active) {
+			return this._paused ? "paused" : "playing";
+		} else {
+			return "stopped";
+		}
+		return this;
+	}, _cycle:function () {
+		clearTimeout(this._timer);
+		if (this._active) {
+			var curr = new Date().valueOf();
+			var step = (curr - this._startTime) / (this._endTime - this._startTime);
+			if (step >= 1) {
+				step = 1;
+				this._percent = 100;
+			} else {
+				this._percent = step * 100;
+			}
+			if ((this.easing) && (dojo.lang.isFunction(this.easing))) {
+				step = this.easing(step);
+			}
+			var value = this.curve.getValue(step);
+			this.fire("handler", ["animate", value]);
+			this.fire("onAnimate", [value]);
+			if (step < 1) {
+				this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate);
+			} else {
+				this._active = false;
+				this.fire("handler", ["end"]);
+				this.fire("onEnd");
+				if (this.repeatCount > 0) {
+					this.repeatCount--;
+					this.play(null, true);
+				} else {
+					if (this.repeatCount == -1) {
+						this.play(null, true);
+					} else {
+						if (this._startRepeatCount) {
+							this.repeatCount = this._startRepeatCount;
+							this._startRepeatCount = 0;
+						}
+					}
+				}
+			}
+		}
+		return this;
+	}});
+	dojo.lfx.Combine = function (animations) {
+		dojo.lfx.IAnimation.call(this);
+		this._anims = [];
+		this._animsEnded = 0;
+		var anims = arguments;
+		if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) {
+			anims = anims[0];
+		}
+		dojo.lang.forEach(anims, function (anim) {
+			this._anims.push(anim);
+			anim.connect("onEnd", dojo.lang.hitch(this, "_onAnimsEnded"));
+		}, this);
+	};
+	dojo.inherits(dojo.lfx.Combine, dojo.lfx.IAnimation);
+	dojo.lang.extend(dojo.lfx.Combine, {_animsEnded:0, play:function (delay, gotoStart) {
+		if (!this._anims.length) {
+			return this;
+		}
+		this.fire("beforeBegin");
+		if (delay > 0) {
+			setTimeout(dojo.lang.hitch(this, function () {
+				this.play(null, gotoStart);
+			}), delay);
+			return this;
+		}
+		if (gotoStart || this._anims[0].percent == 0) {
+			this.fire("onBegin");
+		}
+		this.fire("onPlay");
+		this._animsCall("play", null, gotoStart);
+		return this;
+	}, pause:function () {
+		this.fire("onPause");
+		this._animsCall("pause");
+		return this;
+	}, stop:function (gotoEnd) {
+		this.fire("onStop");
+		this._animsCall("stop", gotoEnd);
+		return this;
+	}, _onAnimsEnded:function () {
+		this._animsEnded++;
+		if (this._animsEnded >= this._anims.length) {
+			this.fire("onEnd");
+		}
+		return this;
+	}, _animsCall:function (funcName) {
+		var args = [];
+		if (arguments.length > 1) {
+			for (var i = 1; i < arguments.length; i++) {
+				args.push(arguments[i]);
+			}
+		}
+		var _this = this;
+		dojo.lang.forEach(this._anims, function (anim) {
+			anim[funcName](args);
+		}, _this);
+		return this;
+	}});
+	dojo.lfx.Chain = function (animations) {
+		dojo.lfx.IAnimation.call(this);
+		this._anims = [];
+		this._currAnim = -1;
+		var anims = arguments;
+		if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) {
+			anims = anims[0];
+		}
+		var _this = this;
+		dojo.lang.forEach(anims, function (anim, i, anims_arr) {
+			this._anims.push(anim);
+			if (i < anims_arr.length - 1) {
+				anim.connect("onEnd", dojo.lang.hitch(this, "_playNext"));
+			} else {
+				anim.connect("onEnd", dojo.lang.hitch(this, function () {
+					this.fire("onEnd");
+				}));
+			}
+		}, this);
+	};
+	dojo.inherits(dojo.lfx.Chain, dojo.lfx.IAnimation);
+	dojo.lang.extend(dojo.lfx.Chain, {_currAnim:-1, play:function (delay, gotoStart) {
+		if (!this._anims.length) {
+			return this;
+		}
+		if (gotoStart || !this._anims[this._currAnim]) {
+			this._currAnim = 0;
+		}
+		var currentAnimation = this._anims[this._currAnim];
+		this.fire("beforeBegin");
+		if (delay > 0) {
+			setTimeout(dojo.lang.hitch(this, function () {
+				this.play(null, gotoStart);
+			}), delay);
+			return this;
+		}
+		if (currentAnimation) {
+			if (this._currAnim == 0) {
+				this.fire("handler", ["begin", this._currAnim]);
+				this.fire("onBegin", [this._currAnim]);
+			}
+			this.fire("onPlay", [this._currAnim]);
+			currentAnimation.play(null, gotoStart);
+		}
+		return this;
+	}, pause:function () {
+		if (this._anims[this._currAnim]) {
+			this._anims[this._currAnim].pause();
+			this.fire("onPause", [this._currAnim]);
+		}
+		return this;
+	}, playPause:function () {
+		if (this._anims.length == 0) {
+			return this;
+		}
+		if (this._currAnim == -1) {
+			this._currAnim = 0;
+		}
+		var currAnim = this._anims[this._currAnim];
+		if (currAnim) {
+			if (!currAnim._active || currAnim._paused) {
+				this.play();
+			} else {
+				this.pause();
+			}
+		}
+		return this;
+	}, stop:function () {
+		var currAnim = this._anims[this._currAnim];
+		if (currAnim) {
+			currAnim.stop();
+			this.fire("onStop", [this._currAnim]);
+		}
+		return currAnim;
+	}, _playNext:function () {
+		if (this._currAnim == -1 || this._anims.length == 0) {
+			return this;
+		}
+		this._currAnim++;
+		if (this._anims[this._currAnim]) {
+			this._anims[this._currAnim].play(null, true);
+		}
+		return this;
+	}});
+	dojo.lfx.combine = function (animations) {
+		var anims = arguments;
+		if (dojo.lang.isArray(arguments[0])) {
+			anims = arguments[0];
+		}
+		if (anims.length == 1) {
+			return anims[0];
+		}
+		return new dojo.lfx.Combine(anims);
+	};
+	dojo.lfx.chain = function (animations) {
+		var anims = arguments;
+		if (dojo.lang.isArray(arguments[0])) {
+			anims = arguments[0];
+		}
+		if (anims.length == 1) {
+			return anims[0];
+		}
+		return new dojo.lfx.Chain(anims);
+	};
+}});
+
+
+__CPAN_FILE__ src/lfx/rounded.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.rounded"], ["require", "dojo.lang.common"], ["require", "dojo.html.common"], ["require", "dojo.html.style"], ["require", "dojo.html.display"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lfx.rounded");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.html.common");
+	dojo.require("dojo.html.style");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.layout");
+	dojo.lfx.rounded = function (settings) {
+		var options = {validTags:settings.validTags || ["div"], autoPad:settings.autoPad != null ? settings.autoPad : true, antiAlias:settings.antiAlias != null ? settings.antiAlias : true, radii:{tl:(settings.tl && settings.tl.radius != null) ? settings.tl.radius : 5, tr:(settings.tr && settings.tr.radius != null) ? settings.tr.radius : 5, bl:(settings.bl && settings.bl.radius != null) ? settings.bl.radius : 5, br:(settings.br && settings.br.radius != null) ? settings.br.radius : 5}};
+		var nodes;
+		if (typeof (arguments[1]) == "string") {
+			nodes = dojo.html.getElementsByClass(arguments[1]);
+		} else {
+			if (dojo.lang.isArrayLike(arguments[1])) {
+				nodes = arguments[1];
+				for (var i = 0; i < nodes.length; i++) {
+					nodes[i] = dojo.byId(nodes[i]);
+				}
+			}
+		}
+		if (nodes.length == 0) {
+			return;
+		}
+		for (var i = 0; i < nodes.length; i++) {
+			dojo.lfx.rounded.applyCorners(options, nodes[i]);
+		}
+	};
+	dojo.lfx.rounded.applyCorners = function (options, node) {
+		var top = null;
+		var bottom = null;
+		var contentNode = null;
+		var fns = dojo.lfx.rounded._fns;
+		var width = node.offsetWidth;
+		var height = node.offsetHeight;
+		var borderWidth = parseInt(dojo.html.getComputedStyle(node, "border-top-width"));
+		var borderColor = dojo.html.getComputedStyle(node, "border-top-color");
+		var color = dojo.html.getComputedStyle(node, "background-color");
+		var bgImage = dojo.html.getComputedStyle(node, "background-image");
+		var position = dojo.html.getComputedStyle(node, "position");
+		var padding = parseInt(dojo.html.getComputedStyle(node, "padding-top"));
+		var format = {height:height, width:width, borderWidth:borderWidth, color:fns.getRGB(color), padding:padding, borderColor:fns.getRGB(borderColor), borderString:borderWidth + "px" + " solid " + fns.getRGB(borderColor), bgImage:((bgImage != "none") ? bgImage : ""), content:node.innerHTML};
+		if (!dojo.html.isPositionAbsolute(node)) {
+			node.style.position = "relative";
+		}
+		node.style.padding = "0px";
+		if (dojo.render.html.ie && width == "auto" && height == "auto") {
+			node.style.width = "100%";
+		}
+		if (options.autoPad && format.padding > 0) {
+			node.innerHTML = "";
+		}
+		var topHeight = Math.max(options.radii.tl, options.radii.tr);
+		var bottomHeight = Math.max(options.radii.bl, options.radii.br);
+		if (options.radii.tl || options.radii.tr) {
+			top = document.createElement("div");
+			top.style.width = "100%";
+			top.style.fontSize = "1px";
+			top.style.overflow = "hidden";
+			top.style.position = "absolute";
+			top.style.paddingLeft = format.borderWidth + "px";
+			top.style.paddingRight = format.borderWidth + "px";
+			top.style.height = topHeight + "px";
+			top.style.top = (0 - topHeight) + "px";
+			top.style.left = (0 - format.borderWidth) + "px";
+			node.appendChild(top);
+		}
+		if (options.radii.bl || options.radii.br) {
+			bottom = document.createElement("div");
+			bottom.style.width = "100%";
+			bottom.style.fontSize = "1px";
+			bottom.style.overflow = "hidden";
+			bottom.style.position = "absolute";
+			bottom.style.paddingLeft = format.borderWidth + "px";
+			bottom.style.paddingRight = format.borderWidth + "px";
+			bottom.style.height = bottomHeight + "px";
+			bottom.style.bottom = (0 - bottomHeight) + "px";
+			bottom.style.left = (0 - format.borderWidth) + "px";
+			node.appendChild(bottom);
+		}
+		if (top) {
+			node.style.borderTopWidth = "0px";
+		}
+		if (bottom) {
+			node.style.borderBottomWidth = "0px";
+		}
+		var corners = ["tr", "tl", "br", "bl"];
+		for (var i = 0; i < corners.length; i++) {
+			var cc = corners[i];
+			if (options.radii[cc] == 0) {
+				if ((cc.charAt(0) == "t" && top) || (cc.charAt(0) == "b" && bottom)) {
+					var corner = document.createElement("div");
+					corner.style.position = "relative";
+					corner.style.fontSize = "1px;";
+					corner.style.overflow = "hidden";
+					if (format.bgImage == "") {
+						corner.style.backgroundColor = format.color;
+					} else {
+						corner.style.backgroundImage = format.bgImage;
+					}
+					switch (cc) {
+					  case "tl":
+						corner.style.height = topHeight - format.borderWidth + "px";
+						corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px";
+						corner.style.borderLeft = format.borderString;
+						corner.style.borderTop = format.borderString;
+						corner.style.left = -format.borderWidth + "px";
+						break;
+					  case "tr":
+						corner.style.height = topHeight - format.borderWidth + "px";
+						corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px";
+						corner.style.borderRight = format.borderString;
+						corner.style.borderTop = format.borderString;
+						corner.style.backgroundPosition = "-" + (topHeight - format.borderWidth) + "px 0px";
+						corner.style.left = format.borderWidth + "px";
+						break;
+					  case "bl":
+						corner.style.height = bottomHeight - format.borderWidth + "px";
+						corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px";
+						corner.style.borderLeft = format.borderString;
+						corner.style.borderBottom = format.borderString;
+						corner.style.left = format.borderWidth + "px";
+						corner.style.backgroundPosition = "-" + format.borderWidth + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px";
+						break;
+					  case "br":
+						corner.style.height = bottomHeight - format.borderWidth + "px";
+						corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px";
+						corner.style.borderRight = format.borderString;
+						corner.style.borderBottom = format.borderString;
+						corner.style.left = format.borderWidth + "px";
+						corner.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px";
+						break;
+					}
+				}
+			} else {
+				var corner = document.createElement("div");
+				corner.style.height = options.radii[cc] + "px";
+				corner.style.width = options.radii[cc] + "px";
+				corner.style.position = "absolute";
+				corner.style.fontSize = "1px";
+				corner.style.overflow = "hidden";
+				var borderRadius = Math.floor(options.radii[cc] - format.borderWidth);
+				for (var x = 0, j = options.radii[cc]; x < j; x++) {
+					var y1 = Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((x + 1), 2))) - 1;
+					if ((x + 1) >= borderRadius) {
+						var y1 = -1;
+					}
+					var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(x, 2)));
+					if (x >= borderRadius) {
+						y2 = -1;
+					}
+					var y3 = Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow((x + 1), 2))) - 1;
+					if ((x + 1) >= j) {
+						y3 = -1;
+					}
+					var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(x, 2)));
+					if (x >= j) {
+						y4 = -1;
+					}
+					if (y1 > -1) {
+						fns.draw(x, 0, format.color, 100, (y1 + 1), corner, -1, j, topHeight, format);
+					}
+					for (var y = (y1 + 1); y < y2; y++) {
+						if (options.antiAlias) {
+							if (format.bgImage != "") {
+								var fract = fns.fraction(x, y, borderRadius) * 100;
+								if (fract < 30) {
+									fns.draw(x, y, format.borderColor, 100, 1, corner, 0, options.radii[cc], topHeight, format);
+								} else {
+									fns.draw(x, y, format.borderColor, 100, 1, corner, -1, options.radii[cc], topHeight, format);
+								}
+							} else {
+								var clr = fns.blend(format.color, format.borderColor, fns.fraction(x, y, borderRadius));
+								fns.draw(x, y, clr, 100, 1, corner, 0, options.radii[cc], topHeight, format);
+							}
+						}
+					}
+					if (options.antiAlias) {
+						if (y3 >= y2) {
+							if (y2 == -1) {
+								y2 = 0;
+							}
+							fns.draw(x, y2, format.borderColor, 100, (y3 - y2 + 1), corner, 0, 0, topHeight, format);
+						} else {
+							if (y3 >= y1) {
+								fns.draw(x, (y1 + 1), format.borderColor, 100, (y3 - y1), corner, 0, 0, topHeight, format);
+							}
+						}
+						for (var y = (y3 + 1); y < y4; y++) {
+							fns.draw(x, y, format.borderColor, (fns.fraction(x, y, j) * 100), 1, corner, (format.borderWidth > 0 ? 0 : -1), options.radii[cc], topHeight, format);
+						}
+					} else {
+						y3 = y1;
+					}
+				}
+				if (cc != "br") {
+					for (var t = 0, k = corner.childNodes.length; t < k; t++) {
+						var bar = corner.childNodes[t];
+						var barTop = parseInt(dojo.html.getComputedStyle(bar, "top"));
+						var barLeft = parseInt(dojo.html.getComputedStyle(bar, "left"));
+						var barHeight = parseInt(dojo.html.getComputedStyle(bar, "height"));
+						if (cc.charAt(1) == "l") {
+							bar.style.left = (options.radii[cc] - barLeft - 1) + "px";
+						}
+						if (cc == "tr") {
+							bar.style.top = (options.radii[cc] - barHeight - barTop) + "px";
+							bar.style.backgroundPosition = "-" + Math.abs((format.width - options.radii[cc] + format.borderWidth) + barLeft) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px";
+						} else {
+							if (cc == "tl") {
+								bar.style.top = (options.radii[cc] - barHeight - barTop) + "px";
+								bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] - barLeft - 1) - format.borderWidth) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px";
+							} else {
+								bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] + barLeft) + format.borderWidth) + "px -" + Math.abs((format.height + options.radii[cc] + barTop) - format.borderWidth) + "px";
+							}
+						}
+					}
+				}
+			}
+			if (corner) {
+				var psn = [];
+				if (cc.charAt(0) == "t") {
+					psn.push("top");
+				} else {
+					psn.push("bottom");
+				}
+				if (cc.charAt(1) == "l") {
+					psn.push("left");
+				} else {
+					psn.push("right");
+				}
+				if (corner.style.position == "absolute") {
+					for (var z = 0; z < psn.length; z++) {
+						corner.style[psn[z]] = "0px";
+					}
+				}
+				if (psn[0] == "top") {
+					if (top) {
+						top.appendChild(corner);
+					}
+				} else {
+					if (bottom) {
+						bottom.appendChild(corner);
+					}
+				}
+			}
+		}
+		var diff = {t:Math.abs(options.radii.tl - options.radii.tr), b:Math.abs(options.radii.bl - options.radii.br)};
+		for (var z in diff) {
+			var smaller = (options.radii[z + "l"] < options.radii[z + "r"] ? z + "l" : z + "r");
+			var filler = document.createElement("div");
+			filler.style.height = diff[z] + "px";
+			filler.style.width = options.radii[smaller] + "px";
+			filler.style.position = "absolute";
+			filler.style.fontSize = "1px";
+			filler.style.overflow = "hidden";
+			filler.style.backgroundColor = format.color;
+			switch (smaller) {
+			  case "tl":
+				filler.style.bottom = "0px";
+				filler.style.left = "0px";
+				filler.style.borderLeft = format.borderString;
+				top.appendChild(filler);
+				break;
+			  case "tr":
+				filler.style.bottom = "0px";
+				filler.style.right = "0px";
+				filler.style.borderRight = format.borderString;
+				top.appendChild(filler);
+				break;
+			  case "bl":
+				filler.style.top = "0px";
+				filler.style.left = "0px";
+				filler.style.borderLeft = format.borderString;
+				bottom.appendChild(filler);
+				break;
+			  case "br":
+				filler.style.top = "0px";
+				filler.style.right = "0px";
+				filler.style.borderRight = format.borderString;
+				bottom.appendChild(filler);
+				break;
+			}
+			var fillBar = document.createElement("div");
+			fillBar.style.position = "relative";
+			fillBar.style.fontSize = "1px";
+			fillBar.style.overflow = "hidden";
+			fillBar.style.backgroundColor = format.color;
+			fillBar.style.backgroundImage = format.bgImage;
+			if (z == "t") {
+				if (top) {
+					if (options.radii.tl && options.radii.tr) {
+						fillBar.style.height = (topHeight - format.borderWidth) + "px";
+						fillBar.style.marginLeft = (options.radii.tl - format.borderWidth) + "px";
+						fillBar.style.marginRight = (options.radii.tr - format.borderWidth) + "px";
+						fillBar.style.borderTop = format.borderString;
+						if (format.bgImage != "") {
+							fillBar.style.backgroundPosition = "-" + (topHeight + format.borderWidth) + "px 0px";
+						}
+					}
+					top.appendChild(fillBar);
+				}
+			} else {
+				if (bottom) {
+					if (options.radii.bl && options.radii.br) {
+						fillBar.style.height = (bottomHeight - format.borderWidth) + "px";
+						fillBar.style.marginLeft = (options.radii.bl - format.borderWidth) + "px";
+						fillBar.style.marginRight = (options.radii.br - format.borderWidth) + "px";
+						fillBar.style.borderBottom = format.borderString;
+						if (format.bgImage != "") {
+							fillBar.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (topHeight + format.borderWidth)) + "px";
+						}
+					}
+					bottom.appendChild(fillBar);
+				}
+			}
+		}
+		if (options.autoPad && format.padding > 0) {
+			var content = document.createElement("div");
+			content.style.position = "relative";
+			content.innerHTML = format.content;
+			content.className = "autoPadDiv";
+			if (topHeight < format.padding) {
+				content.style.paddingTop = Math.abs(topHeight - format.padding) + "px";
+			}
+			if (bottomHeight < format.padding) {
+				content.style.paddingBottom = Math.abs(bottomHeight - format.padding) + "px";
+			}
+			content.style.paddingLeft = format.padding + "px";
+			content.style.paddingRight = format.padding + "px";
+			node.appendChild(content);
+		}
+	};
+	var count = 0;
+	dojo.lfx.rounded._fns = {blend:function (clr1, clr2, frac) {
+		var c1 = {r:parseInt(clr1.substr(1, 2), 16), g:parseInt(clr1.substr(3, 2), 16), b:parseInt(clr1.substr(5, 2), 16)};
+		var c2 = {r:parseInt(clr2.substr(1, 2), 16), g:parseInt(clr2.substr(3, 2), 16), b:parseInt(clr2.substr(5, 2), 16)};
+		if (frac > 1 || frac < 0) {
+			frac = 1;
+		}
+		var ret = [Math.min(Math.max(Math.round((c1.r * frac) + (c2.r * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.g * frac) + (c2.g * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.b * frac) + (c2.b * (1 - frac))), 0), 255)];
+		for (var i = 0; i < ret.length; i++) {
+			var n = ret[i].toString(16);
+			if (n.length < 2) {
+				n = "0" + n;
+			}
+			ret[i] = n;
+		}
+		return "#" + ret.join("");
+	}, fraction:function (x, y, r) {
+		var frac = 0;
+		var xval = [];
+		var yval = [];
+		var point = 0;
+		var whatsides = "";
+		var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2)));
+		if (intersect >= y && intersect < (y + 1)) {
+			whatsides = "Left";
+			xval[point] = 0;
+			yval[point++] = intersect - y;
+		}
+		intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2)));
+		if (intersect >= x && intersect < (x + 1)) {
+			whatsides += "Top";
+			xval[point] = intersect - x;
+			yval[point++] = 1;
+		}
+		intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2)));
+		if (intersect >= y && intersect < (y + 1)) {
+			whatsides += "Right";
+			xval[point] = 1;
+			yval[point++] = intersect - y;
+		}
+		intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2)));
+		if (intersect >= x && intersect < (x + 1)) {
+			whatsides += "Bottom";
+			xval[point] = intersect - x;
+			yval[point] = 1;
+		}
+		switch (whatsides) {
+		  case "LeftRight":
+			return Math.min(yval[0], yval[1]) + ((Math.max(yval[0], yval[1]) - Math.min(yval[0], yval[1])) / 2);
+		  case "TopRight":
+			return 1 - (((1 - xval[0]) * (1 - yval[1])) / 2);
+		  case "TopBottom":
+			return Math.min(xval[0], xval[1]) + ((Math.max(xval[0], xval[1]) - Math.min(xval[0], xval[1])) / 2);
+		  case "LeftBottom":
+			return (yval[0] * xval[1]) / 2;
+		  default:
+			return 1;
+		}
+	}, draw:function (x, y, color, opac, height, corner, image, radius, top, format) {
+		var px = document.createElement("div");
+		px.style.height = height + "px";
+		px.style.width = "1px";
+		px.style.position = "absolute";
+		px.style.fontSize = "1px";
+		px.style.overflow = "hidden";
+		if (image == -1 && format.bgImage != "") {
+			px.style.backgroundImage = format.bgImage;
+			px.style.backgroundPosition = "-" + (format.width - (radius - x) + format.borderWidth) + "px -" + ((format.height + top + y) - format.borderWidth) + "px";
+		} else {
+			px.style.backgroundColor = color;
+		}
+		if (opac != 100) {
+			dojo.html.setOpacity(px, (opac / 100));
+		}
+		px.style.top = y + "px";
+		px.style.left = x + "px";
+		corner.appendChild(px);
+	}, getRGB:function (clr) {
+		var ret = "#ffffff";
+		if (clr != "" && clr != "transparent") {
+			if (clr.substr(0, 3) == "rgb") {
+				var t = clr.substring(4, clr.indexOf(")"));
+				t = t.split(",");
+				for (var i = 0; i < t.length; i++) {
+					var n = parseInt(t[i]).toString(16);
+					if (n.length < 2) {
+						n = "0" + n;
+					}
+					t[i] = n;
+				}
+				ret = "#" + t.join("");
+			} else {
+				if (clr.length == 4) {
+					ret = "#" + clr.substring(1, 2) + clr.substring(1, 2) + clr.substring(2, 3) + clr.substring(2, 3) + clr.substring(3, 4) + clr.substring(3, 4);
+				} else {
+					ret = clr;
+				}
+			}
+		}
+		return ret;
+	}};
+}});
+
+
+__CPAN_FILE__ src/lfx/shadow.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.shadow"], ["require", "dojo.lang.common"], ["require", "dojo.uri.Uri"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lfx.shadow");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.uri.Uri");
+	dojo.lfx.shadow = function (node) {
+		this.shadowPng = dojo.uri.moduleUri("dojo.html", "images/shadow");
+		this.shadowThickness = 8;
+		this.shadowOffset = 15;
+		this.init(node);
+	};
+	dojo.extend(dojo.lfx.shadow, {init:function (node) {
+		this.node = node;
+		this.pieces = {};
+		var x1 = -1 * this.shadowThickness;
+		var y0 = this.shadowOffset;
+		var y1 = this.shadowOffset + this.shadowThickness;
+		this._makePiece("tl", "top", y0, "left", x1);
+		this._makePiece("l", "top", y1, "left", x1, "scale");
+		this._makePiece("tr", "top", y0, "left", 0);
+		this._makePiece("r", "top", y1, "left", 0, "scale");
+		this._makePiece("bl", "top", 0, "left", x1);
+		this._makePiece("b", "top", 0, "left", 0, "crop");
+		this._makePiece("br", "top", 0, "left", 0);
+	}, _makePiece:function (name, vertAttach, vertCoord, horzAttach, horzCoord, sizing) {
+		var img;
+		var url = this.shadowPng + name.toUpperCase() + ".png";
+		if (dojo.render.html.ie55 || dojo.render.html.ie60) {
+			img = dojo.doc().createElement("div");
+			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "'" + (sizing ? ", sizingMethod='" + sizing + "'" : "") + ")";
+		} else {
+			img = dojo.doc().createElement("img");
+			img.src = url;
+		}
+		img.style.position = "absolute";
+		img.style[vertAttach] = vertCoord + "px";
+		img.style[horzAttach] = horzCoord + "px";
+		img.style.width = this.shadowThickness + "px";
+		img.style.height = this.shadowThickness + "px";
+		this.pieces[name] = img;
+		this.node.appendChild(img);
+	}, size:function (width, height) {
+		var sideHeight = height - (this.shadowOffset + this.shadowThickness + 1);
+		if (sideHeight < 0) {
+			sideHeight = 0;
+		}
+		if (height < 1) {
+			height = 1;
+		}
+		if (width < 1) {
+			width = 1;
+		}
+		with (this.pieces) {
+			l.style.height = sideHeight + "px";
+			r.style.height = sideHeight + "px";
+			b.style.width = (width - 1) + "px";
+			bl.style.top = (height - 1) + "px";
+			b.style.top = (height - 1) + "px";
+			br.style.top = (height - 1) + "px";
+			tr.style.left = (width - 1) + "px";
+			r.style.left = (width - 1) + "px";
+			br.style.left = (width - 1) + "px";
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/lfx/Animation.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -41686,6 +81153,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lfx.Animation");
 dojo.require("dojo.lang.func");
 dojo.lfx.Line = function (start, end) {
@@ -42090,6 +81559,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lfx.html");
 dojo.require("dojo.gfx.color");
 dojo.require("dojo.lfx.Animation");
@@ -42599,6 +82070,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lfx.rounded");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.html.common");
@@ -43043,10 +82516,628 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]});
 dojo.provide("dojo.lfx.*");
 
 
+__CPAN_FILE__ src/lfx/html.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.html"], ["require", "dojo.gfx.color"], ["require", "dojo.lfx.Animation"], ["require", "dojo.lang.array"], ["require", "dojo.html.display"], ["require", "dojo.html.color"], ["require", "dojo.html.layout"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lfx.html");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.lfx.Animation");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.html.display");
+	dojo.require("dojo.html.color");
+	dojo.require("dojo.html.layout");
+	dojo.lfx.html._byId = function (nodes) {
+		if (!nodes) {
+			return [];
+		}
+		if (dojo.lang.isArrayLike(nodes)) {
+			if (!nodes.alreadyChecked) {
+				var n = [];
+				dojo.lang.forEach(nodes, function (node) {
+					n.push(dojo.byId(node));
+				});
+				n.alreadyChecked = true;
+				return n;
+			} else {
+				return nodes;
+			}
+		} else {
+			var n = [];
+			n.push(dojo.byId(nodes));
+			n.alreadyChecked = true;
+			return n;
+		}
+	};
+	dojo.lfx.html.propertyAnimation = function (nodes, propertyMap, duration, easing, handlers) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var targs = {"propertyMap":propertyMap, "nodes":nodes, "duration":duration, "easing":easing || dojo.lfx.easeDefault};
+		var setEmUp = function (args) {
+			if (args.nodes.length == 1) {
+				var pm = args.propertyMap;
+				if (!dojo.lang.isArray(args.propertyMap)) {
+					var parr = [];
+					for (var pname in pm) {
+						pm[pname].property = pname;
+						parr.push(pm[pname]);
+					}
+					pm = args.propertyMap = parr;
+				}
+				dojo.lang.forEach(pm, function (prop) {
+					if (dj_undef("start", prop)) {
+						if (prop.property != "opacity") {
+							prop.start = parseInt(dojo.html.getComputedStyle(args.nodes[0], prop.property));
+						} else {
+							prop.start = dojo.html.getOpacity(args.nodes[0]);
+						}
+					}
+				});
+			}
+		};
+		var coordsAsInts = function (coords) {
+			var cints = [];
+			dojo.lang.forEach(coords, function (c) {
+				cints.push(Math.round(c));
+			});
+			return cints;
+		};
+		var setStyle = function (n, style) {
+			n = dojo.byId(n);
+			if (!n || !n.style) {
+				return;
+			}
+			for (var s in style) {
+				try {
+					if (s == "opacity") {
+						dojo.html.setOpacity(n, style[s]);
+					} else {
+						n.style[s] = style[s];
+					}
+				}
+				catch (e) {
+					dojo.debug(e);
+				}
+			}
+		};
+		var propLine = function (properties) {
+			this._properties = properties;
+			this.diffs = new Array(properties.length);
+			dojo.lang.forEach(properties, function (prop, i) {
+				if (dojo.lang.isFunction(prop.start)) {
+					prop.start = prop.start(prop, i);
+				}
+				if (dojo.lang.isFunction(prop.end)) {
+					prop.end = prop.end(prop, i);
+				}
+				if (dojo.lang.isArray(prop.start)) {
+					this.diffs[i] = null;
+				} else {
+					if (prop.start instanceof dojo.gfx.color.Color) {
+						prop.startRgb = prop.start.toRgb();
+						prop.endRgb = prop.end.toRgb();
+					} else {
+						this.diffs[i] = prop.end - prop.start;
+					}
+				}
+			}, this);
+			this.getValue = function (n) {
+				var ret = {};
+				dojo.lang.forEach(this._properties, function (prop, i) {
+					var value = null;
+					if (dojo.lang.isArray(prop.start)) {
+					} else {
+						if (prop.start instanceof dojo.gfx.color.Color) {
+							value = (prop.units || "rgb") + "(";
+							for (var j = 0; j < prop.startRgb.length; j++) {
+								value += Math.round(((prop.endRgb[j] - prop.startRgb[j]) * n) + prop.startRgb[j]) + (j < prop.startRgb.length - 1 ? "," : "");
+							}
+							value += ")";
+						} else {
+							value = ((this.diffs[i]) * n) + prop.start + (prop.property != "opacity" ? prop.units || "px" : "");
+						}
+					}
+					ret[dojo.html.toCamelCase(prop.property)] = value;
+				}, this);
+				return ret;
+			};
+		};
+		var anim = new dojo.lfx.Animation({beforeBegin:function () {
+			setEmUp(targs);
+			anim.curve = new propLine(targs.propertyMap);
+		}, onAnimate:function (propValues) {
+			dojo.lang.forEach(targs.nodes, function (node) {
+				setStyle(node, propValues);
+			});
+		}}, targs.duration, null, targs.easing);
+		if (handlers) {
+			for (var x in handlers) {
+				if (dojo.lang.isFunction(handlers[x])) {
+					anim.connect(x, anim, handlers[x]);
+				}
+			}
+		}
+		return anim;
+	};
+	dojo.lfx.html._makeFadeable = function (nodes) {
+		var makeFade = function (node) {
+			if (dojo.render.html.ie) {
+				if ((node.style.zoom.length == 0) && (dojo.html.getStyle(node, "zoom") == "normal")) {
+					node.style.zoom = "1";
+				}
+				if ((node.style.width.length == 0) && (dojo.html.getStyle(node, "width") == "auto")) {
+					node.style.width = "auto";
+				}
+			}
+		};
+		if (dojo.lang.isArrayLike(nodes)) {
+			dojo.lang.forEach(nodes, makeFade);
+		} else {
+			makeFade(nodes);
+		}
+	};
+	dojo.lfx.html.fade = function (nodes, values, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var props = {property:"opacity"};
+		if (!dj_undef("start", values)) {
+			props.start = values.start;
+		} else {
+			props.start = function () {
+				return dojo.html.getOpacity(nodes[0]);
+			};
+		}
+		if (!dj_undef("end", values)) {
+			props.end = values.end;
+		} else {
+			dojo.raise("dojo.lfx.html.fade needs an end value");
+		}
+		var anim = dojo.lfx.propertyAnimation(nodes, [props], duration, easing);
+		anim.connect("beforeBegin", function () {
+			dojo.lfx.html._makeFadeable(nodes);
+		});
+		if (callback) {
+			anim.connect("onEnd", function () {
+				callback(nodes, anim);
+			});
+		}
+		return anim;
+	};
+	dojo.lfx.html.fadeIn = function (nodes, duration, easing, callback) {
+		return dojo.lfx.html.fade(nodes, {end:1}, duration, easing, callback);
+	};
+	dojo.lfx.html.fadeOut = function (nodes, duration, easing, callback) {
+		return dojo.lfx.html.fade(nodes, {end:0}, duration, easing, callback);
+	};
+	dojo.lfx.html.fadeShow = function (nodes, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		dojo.lang.forEach(nodes, function (node) {
+			dojo.html.setOpacity(node, 0);
+		});
+		var anim = dojo.lfx.html.fadeIn(nodes, duration, easing, callback);
+		anim.connect("beforeBegin", function () {
+			if (dojo.lang.isArrayLike(nodes)) {
+				dojo.lang.forEach(nodes, dojo.html.show);
+			} else {
+				dojo.html.show(nodes);
+			}
+		});
+		return anim;
+	};
+	dojo.lfx.html.fadeHide = function (nodes, duration, easing, callback) {
+		var anim = dojo.lfx.html.fadeOut(nodes, duration, easing, function () {
+			if (dojo.lang.isArrayLike(nodes)) {
+				dojo.lang.forEach(nodes, dojo.html.hide);
+			} else {
+				dojo.html.hide(nodes);
+			}
+			if (callback) {
+				callback(nodes, anim);
+			}
+		});
+		return anim;
+	};
+	dojo.lfx.html.wipeIn = function (nodes, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		dojo.lang.forEach(nodes, function (node) {
+			var oprop = {};
+			var origTop, origLeft, origPosition;
+			with (node.style) {
+				origTop = top;
+				origLeft = left;
+				origPosition = position;
+				top = "-9999px";
+				left = "-9999px";
+				position = "absolute";
+				display = "";
+			}
+			var nodeHeight = dojo.html.getBorderBox(node).height;
+			with (node.style) {
+				top = origTop;
+				left = origLeft;
+				position = origPosition;
+				display = "none";
+			}
+			var anim = dojo.lfx.propertyAnimation(node, {"height":{start:1, end:function () {
+				return nodeHeight;
+			}}}, duration, easing);
+			anim.connect("beforeBegin", function () {
+				oprop.overflow = node.style.overflow;
+				oprop.height = node.style.height;
+				with (node.style) {
+					overflow = "hidden";
+					height = "1px";
+				}
+				dojo.html.show(node);
+			});
+			anim.connect("onEnd", function () {
+				with (node.style) {
+					overflow = oprop.overflow;
+					height = oprop.height;
+				}
+				if (callback) {
+					callback(node, anim);
+				}
+			});
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lfx.html.wipeOut = function (nodes, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		dojo.lang.forEach(nodes, function (node) {
+			var oprop = {};
+			var anim = dojo.lfx.propertyAnimation(node, {"height":{start:function () {
+				return dojo.html.getContentBox(node).height;
+			}, end:1}}, duration, easing, {"beforeBegin":function () {
+				oprop.overflow = node.style.overflow;
+				oprop.height = node.style.height;
+				with (node.style) {
+					overflow = "hidden";
+				}
+				dojo.html.show(node);
+			}, "onEnd":function () {
+				dojo.html.hide(node);
+				with (node.style) {
+					overflow = oprop.overflow;
+					height = oprop.height;
+				}
+				if (callback) {
+					callback(node, anim);
+				}
+			}});
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lfx.html.slideTo = function (nodes, coords, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		var compute = dojo.html.getComputedStyle;
+		if (dojo.lang.isArray(coords)) {
+			dojo.deprecated("dojo.lfx.html.slideTo(node, array)", "use dojo.lfx.html.slideTo(node, {top: value, left: value});", "0.5");
+			coords = {top:coords[0], left:coords[1]};
+		}
+		dojo.lang.forEach(nodes, function (node) {
+			var top = null;
+			var left = null;
+			var init = (function () {
+				var innerNode = node;
+				return function () {
+					var pos = compute(innerNode, "position");
+					top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0);
+					left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0);
+					if (!dojo.lang.inArray(["absolute", "relative"], pos)) {
+						var ret = dojo.html.abs(innerNode, true);
+						dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;");
+						top = ret.y;
+						left = ret.x;
+					}
+				};
+			})();
+			init();
+			var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:(coords.top || 0)}, "left":{start:left, end:(coords.left || 0)}}, duration, easing, {"beforeBegin":init});
+			if (callback) {
+				anim.connect("onEnd", function () {
+					callback(nodes, anim);
+				});
+			}
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lfx.html.slideBy = function (nodes, coords, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		var compute = dojo.html.getComputedStyle;
+		if (dojo.lang.isArray(coords)) {
+			dojo.deprecated("dojo.lfx.html.slideBy(node, array)", "use dojo.lfx.html.slideBy(node, {top: value, left: value});", "0.5");
+			coords = {top:coords[0], left:coords[1]};
+		}
+		dojo.lang.forEach(nodes, function (node) {
+			var top = null;
+			var left = null;
+			var init = (function () {
+				var innerNode = node;
+				return function () {
+					var pos = compute(innerNode, "position");
+					top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0);
+					left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0);
+					if (!dojo.lang.inArray(["absolute", "relative"], pos)) {
+						var ret = dojo.html.abs(innerNode, true);
+						dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;");
+						top = ret.y;
+						left = ret.x;
+					}
+				};
+			})();
+			init();
+			var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:top + (coords.top || 0)}, "left":{start:left, end:left + (coords.left || 0)}}, duration, easing).connect("beforeBegin", init);
+			if (callback) {
+				anim.connect("onEnd", function () {
+					callback(nodes, anim);
+				});
+			}
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lfx.html.explode = function (start, endNode, duration, easing, callback) {
+		var h = dojo.html;
+		start = dojo.byId(start);
+		endNode = dojo.byId(endNode);
+		var startCoords = h.toCoordinateObject(start, true);
+		var outline = document.createElement("div");
+		h.copyStyle(outline, endNode);
+		if (endNode.explodeClassName) {
+			outline.className = endNode.explodeClassName;
+		}
+		with (outline.style) {
+			position = "absolute";
+			display = "none";
+			var backgroundStyle = h.getStyle(start, "background-color");
+			backgroundColor = backgroundStyle ? backgroundStyle.toLowerCase() : "transparent";
+			backgroundColor = (backgroundColor == "transparent") ? "rgb(221, 221, 221)" : backgroundColor;
+		}
+		dojo.body().appendChild(outline);
+		with (endNode.style) {
+			visibility = "hidden";
+			display = "block";
+		}
+		var endCoords = h.toCoordinateObject(endNode, true);
+		with (endNode.style) {
+			display = "none";
+			visibility = "visible";
+		}
+		var props = {opacity:{start:0.5, end:1}};
+		dojo.lang.forEach(["height", "width", "top", "left"], function (type) {
+			props[type] = {start:startCoords[type], end:endCoords[type]};
+		});
+		var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () {
+			h.setDisplay(outline, "block");
+		}, "onEnd":function () {
+			h.setDisplay(endNode, "block");
+			outline.parentNode.removeChild(outline);
+		}});
+		if (callback) {
+			anim.connect("onEnd", function () {
+				callback(endNode, anim);
+			});
+		}
+		return anim;
+	};
+	dojo.lfx.html.implode = function (startNode, end, duration, easing, callback) {
+		var h = dojo.html;
+		startNode = dojo.byId(startNode);
+		end = dojo.byId(end);
+		var startCoords = dojo.html.toCoordinateObject(startNode, true);
+		var endCoords = dojo.html.toCoordinateObject(end, true);
+		var outline = document.createElement("div");
+		dojo.html.copyStyle(outline, startNode);
+		if (startNode.explodeClassName) {
+			outline.className = startNode.explodeClassName;
+		}
+		dojo.html.setOpacity(outline, 0.3);
+		with (outline.style) {
+			position = "absolute";
+			display = "none";
+			backgroundColor = h.getStyle(startNode, "background-color").toLowerCase();
+		}
+		dojo.body().appendChild(outline);
+		var props = {opacity:{start:1, end:0.5}};
+		dojo.lang.forEach(["height", "width", "top", "left"], function (type) {
+			props[type] = {start:startCoords[type], end:endCoords[type]};
+		});
+		var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () {
+			dojo.html.hide(startNode);
+			dojo.html.show(outline);
+		}, "onEnd":function () {
+			outline.parentNode.removeChild(outline);
+		}});
+		if (callback) {
+			anim.connect("onEnd", function () {
+				callback(startNode, anim);
+			});
+		}
+		return anim;
+	};
+	dojo.lfx.html.highlight = function (nodes, startColor, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		dojo.lang.forEach(nodes, function (node) {
+			var color = dojo.html.getBackgroundColor(node);
+			var bg = dojo.html.getStyle(node, "background-color").toLowerCase();
+			var bgImage = dojo.html.getStyle(node, "background-image");
+			var wasTransparent = (bg == "transparent" || bg == "rgba(0, 0, 0, 0)");
+			while (color.length > 3) {
+				color.pop();
+			}
+			var rgb = new dojo.gfx.color.Color(startColor);
+			var endRgb = new dojo.gfx.color.Color(color);
+			var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:rgb, end:endRgb}}, duration, easing, {"beforeBegin":function () {
+				if (bgImage) {
+					node.style.backgroundImage = "none";
+				}
+				node.style.backgroundColor = "rgb(" + rgb.toRgb().join(",") + ")";
+			}, "onEnd":function () {
+				if (bgImage) {
+					node.style.backgroundImage = bgImage;
+				}
+				if (wasTransparent) {
+					node.style.backgroundColor = "transparent";
+				}
+				if (callback) {
+					callback(node, anim);
+				}
+			}});
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lfx.html.unhighlight = function (nodes, endColor, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		dojo.lang.forEach(nodes, function (node) {
+			var color = new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
+			var rgb = new dojo.gfx.color.Color(endColor);
+			var bgImage = dojo.html.getStyle(node, "background-image");
+			var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:color, end:rgb}}, duration, easing, {"beforeBegin":function () {
+				if (bgImage) {
+					node.style.backgroundImage = "none";
+				}
+				node.style.backgroundColor = "rgb(" + color.toRgb().join(",") + ")";
+			}, "onEnd":function () {
+				if (callback) {
+					callback(node, anim);
+				}
+			}});
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lang.mixin(dojo.lfx, dojo.lfx.html);
+}});
+
+
+__CPAN_FILE__ src/lfx/extras.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.extras"], ["require", "dojo.lfx.html"], ["require", "dojo.lfx.Animation"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lfx.extras");
+	dojo.require("dojo.lfx.html");
+	dojo.require("dojo.lfx.Animation");
+	dojo.lfx.html.fadeWipeIn = function (nodes, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anim = dojo.lfx.combine(dojo.lfx.fadeIn(nodes, duration, easing), dojo.lfx.wipeIn(nodes, duration, easing));
+		if (callback) {
+			anim.connect("onEnd", function () {
+				callback(nodes, anim);
+			});
+		}
+		return anim;
+	};
+	dojo.lfx.html.fadeWipeOut = function (nodes, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anim = dojo.lfx.combine(dojo.lfx.fadeOut(nodes, duration, easing), dojo.lfx.wipeOut(nodes, duration, easing));
+		if (callback) {
+			anim.connect("onEnd", function () {
+				callback(nodes, anim);
+			});
+		}
+		return anim;
+	};
+	dojo.lfx.html.scale = function (nodes, percentage, scaleContent, fromCenter, duration, easing, callback) {
+		nodes = dojo.lfx.html._byId(nodes);
+		var anims = [];
+		dojo.lang.forEach(nodes, function (node) {
+			var outer = dojo.html.getMarginBox(node);
+			var actualPct = percentage / 100;
+			var props = [{property:"width", start:outer.width, end:outer.width * actualPct}, {property:"height", start:outer.height, end:outer.height * actualPct}];
+			if (scaleContent) {
+				var fontSize = dojo.html.getStyle(node, "font-size");
+				var fontSizeType = null;
+				if (!fontSize) {
+					fontSize = parseFloat("100%");
+					fontSizeType = "%";
+				} else {
+					dojo.lang.some(["em", "px", "%"], function (item, index, arr) {
+						if (fontSize.indexOf(item) > 0) {
+							fontSize = parseFloat(fontSize);
+							fontSizeType = item;
+							return true;
+						}
+					});
+				}
+				props.push({property:"font-size", start:fontSize, end:fontSize * actualPct, units:fontSizeType});
+			}
+			if (fromCenter) {
+				var positioning = dojo.html.getStyle(node, "position");
+				var originalTop = node.offsetTop;
+				var originalLeft = node.offsetLeft;
+				var endTop = ((outer.height * actualPct) - outer.height) / 2;
+				var endLeft = ((outer.width * actualPct) - outer.width) / 2;
+				props.push({property:"top", start:originalTop, end:(positioning == "absolute" ? originalTop - endTop : (-1 * endTop))});
+				props.push({property:"left", start:originalLeft, end:(positioning == "absolute" ? originalLeft - endLeft : (-1 * endLeft))});
+			}
+			var anim = dojo.lfx.propertyAnimation(node, props, duration, easing);
+			if (callback) {
+				anim.connect("onEnd", function () {
+					callback(node, anim);
+				});
+			}
+			anims.push(anim);
+		});
+		return dojo.lfx.combine(anims);
+	};
+	dojo.lang.mixin(dojo.lfx, dojo.lfx.html);
+}});
+
+
+__CPAN_FILE__ src/lfx/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]}], ["provide", "dojo.lfx.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]});
+	dojo.provide("dojo.lfx.*");
+}});
+
+
 __CPAN_FILE__ src/lfx/shadow.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -43058,6 +83149,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lfx.shadow");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.uri.Uri");
@@ -43133,6 +83226,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lfx.toggle");
 dojo.require("dojo.lfx.*");
 dojo.lfx.toggle.plain = {show:function (node, duration, easing, callback) {
@@ -43174,6 +83269,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lfx.extras");
 dojo.require("dojo.lfx.html");
 dojo.require("dojo.lfx.Animation");
@@ -43255,6 +83352,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.i18n.common");
 dojo.i18n.getLocalization = function (packageName, bundleName, locale) {
 	dojo.hostenv.preloadLocalizations();
@@ -43288,6 +83387,54 @@
 };
 
 
+__CPAN_FILE__ src/i18n/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.common");
+	dojo.i18n.getLocalization = function (packageName, bundleName, locale) {
+		dojo.hostenv.preloadLocalizations();
+		locale = dojo.hostenv.normalizeLocale(locale);
+		var elements = locale.split("-");
+		var module = [packageName, "nls", bundleName].join(".");
+		var bundle = dojo.hostenv.findModule(module, true);
+		var localization;
+		for (var i = elements.length; i > 0; i--) {
+			var loc = elements.slice(0, i).join("_");
+			if (bundle[loc]) {
+				localization = bundle[loc];
+				break;
+			}
+		}
+		if (!localization) {
+			localization = bundle.ROOT;
+		}
+		if (localization) {
+			var clazz = function () {
+			};
+			clazz.prototype = localization;
+			return new clazz();
+		}
+		dojo.raise("Bundle not found: " + bundleName + " in " + packageName + " , locale=" + locale);
+	};
+	dojo.i18n.isLTR = function (locale) {
+		var lang = dojo.hostenv.normalizeLocale(locale).split("-")[0];
+		var RTL = {ar:true, fa:true, he:true, ur:true, yi:true};
+		return !RTL[lang];
+	};
+}});
+
+
 __CPAN_FILE__ src/i18n/currency.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -43299,6 +83446,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.i18n.currency");
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.i18n.currency");
@@ -43426,6 +83575,303 @@
 })();
 
 
+__CPAN_FILE__ src/i18n/number.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.number"], ["require", "dojo.experimental"], ["require", "dojo.regexp"], ["require", "dojo.i18n.common"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.number");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.i18n.number");
+	dojo.require("dojo.regexp");
+	dojo.require("dojo.i18n.common");
+	dojo.require("dojo.lang.common");
+	dojo.i18n.number.format = function (value, flags, locale) {
+		flags = (typeof flags == "object") ? flags : {};
+		var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
+		if (typeof flags.separator == "undefined") {
+			flags.separator = formatData[1];
+		}
+		if (typeof flags.decimal == "undefined") {
+			flags.decimal = formatData[2];
+		}
+		if (typeof flags.groupSize == "undefined") {
+			flags.groupSize = formatData[3];
+		}
+		if (typeof flags.groupSize2 == "undefined") {
+			flags.groupSize2 = formatData[4];
+		}
+		if (typeof flags.round == "undefined") {
+			flags.round = true;
+		}
+		if (typeof flags.signed == "undefined") {
+			flags.signed = true;
+		}
+		var output = (flags.signed && (value < 0)) ? "-" : "";
+		value = Math.abs(value);
+		var whole = String((((flags.places > 0) || !flags.round) ? Math.floor : Math.round)(value));
+		function splitSubstrings(str, count) {
+			for (var subs = []; str.length >= count; str = str.substr(0, str.length - count)) {
+				subs.push(str.substr(-count));
+			}
+			if (str.length > 0) {
+				subs.push(str);
+			}
+			return subs.reverse();
+		}
+		if (flags.groupSize2 && (whole.length > flags.groupSize)) {
+			var groups = splitSubstrings(whole.substr(0, whole.length - flags.groupSize), flags.groupSize2);
+			groups.push(whole.substr(-flags.groupSize));
+			output = output + groups.join(flags.separator);
+		} else {
+			if (flags.groupSize) {
+				output = output + splitSubstrings(whole, flags.groupSize).join(flags.separator);
+			} else {
+				output = output + whole;
+			}
+		}
+		if (flags.places > 0) {
+			var fract = value - Math.floor(value);
+			fract = (flags.round ? Math.round : Math.floor)(fract * Math.pow(10, flags.places));
+			output = output + flags.decimal + fract;
+		}
+		return output;
+	};
+	dojo.i18n.number.parse = function (value, locale, flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
+		if (typeof flags.separator == "undefined") {
+			flags.separator = formatData[1];
+		}
+		if (typeof flags.decimal == "undefined") {
+			flags.decimal = formatData[2];
+		}
+		if (typeof flags.groupSize == "undefined") {
+			flags.groupSize = formatData[3];
+		}
+		if (typeof flags.groupSize2 == "undefined") {
+			flags.groupSize2 = formatData[4];
+		}
+		if (typeof flags.validate == "undefined") {
+			flags.validate = true;
+		}
+		if (flags.validate && !dojo.i18n.number.isReal(value, locale, flags)) {
+			return Number.NaN;
+		}
+		var numbers = value.split(flags.decimal);
+		if (numbers.length > 2) {
+			return Number.NaN;
+		}
+		var whole = Number(numbers[0].replace(new RegExp("\\" + flags.separator, "g"), ""));
+		var fract = (numbers.length == 1) ? 0 : Number(numbers[1]) / Math.pow(10, String(numbers[1]).length);
+		return whole + fract;
+	};
+	dojo.i18n.number.isInteger = function (value, locale, flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
+		if (typeof flags.separator == "undefined") {
+			flags.separator = formatData[1];
+		} else {
+			if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) {
+				flags.separator = [formatData[1], ""];
+			}
+		}
+		if (typeof flags.groupSize == "undefined") {
+			flags.groupSize = formatData[3];
+		}
+		if (typeof flags.groupSize2 == "undefined") {
+			flags.groupSize2 = formatData[4];
+		}
+		var re = new RegExp("^" + dojo.regexp.integer(flags) + "$");
+		return re.test(value);
+	};
+	dojo.i18n.number.isReal = function (value, locale, flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
+		if (typeof flags.separator == "undefined") {
+			flags.separator = formatData[1];
+		} else {
+			if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) {
+				flags.separator = [formatData[1], ""];
+			}
+		}
+		if (typeof flags.decimal == "undefined") {
+			flags.decimal = formatData[2];
+		}
+		if (typeof flags.groupSize == "undefined") {
+			flags.groupSize = formatData[3];
+		}
+		if (typeof flags.groupSize2 == "undefined") {
+			flags.groupSize2 = formatData[4];
+		}
+		var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$");
+		return re.test(value);
+	};
+	(function () {
+		dojo.i18n.number.FORMAT_TABLE = {"ar-ae":["", "", ",", 1], "ar-bh":["", "", ",", 1], "ar-dz":["", "", ",", 1], "ar-eg":["", "", ",", 1], "ar-jo":["", "", ",", 1], "ar-kw":["", "", ",", 1], "ar-lb":["", "", ",", 1], "ar-ma":["", "", ",", 1], "ar-om":["", "", ",", 1], "ar-qa":["", "", ",", 1], "ar-sa":["", "", ",", 1], "ar-sy":["", "", ",", 1], "ar-tn":["", "", ",", 1], "ar-ye":["", "", ",", 1], "cs-cz":[".", ".", ",", 3], "da-dk":[".", ".", ",", 3], "de-at":[".", ".", ",", 3], "de-de":[".", ".", ",", 3], "de-lu":[".", ".", ",", 3], "de-ch":["'", "'", ".", 3], "el-gr":[".", ".", ",", 3], "en-au":[",", ",", ".", 3], "en-ca":[",", ",", ".", 3], "en-gb":[",", ",", ".", 3], "en-hk":[",", ",", ".", 3], "en-ie":[",", ",", ".", 3], "en-in":[",", ",", ".", 3, 2], "en-nz":[",", ",", ".", 3], "en-us":[",", ",", ".", 3], "en-za":[",", ",", ".", 3], "es-ar":[".", ".", ",", 3], "es-bo":[".", ".", ",", 3], "es-cl":[".", ".", ",", 3], "es-co":[".", ".", ",", 3], "es-cr":[".", ".", ",", 3], "es-do":[".", ".", ",", 3], "es-ec":[".", ".", ",", 3], "es-es":[".", ".", ",", 3], "es-gt":[",", ",", ".", 3], "es-hn":[",", ",", ".", 3], "es-mx":[",", ",", ".", 3], "es-ni":[",", ",", ".", 3], "es-pa":[",", ",", ".", 3], "es-pe":[",", ",", ".", 3], "es-pr":[",", ",", ".", 3], "es-py":[".", ".", ",", 3], "es-sv":[",", ",", ".", 3], "es-uy":[".", ".", ",", 3], "es-ve":[".", ".", ",", 3], "fi-fi":[" ", " ", ",", 3], "fr-be":[".", ".", ",", 3], "fr-ca":[" ", " ", ",", 3], "fr-ch":[" ", " ", ".", 3], "fr-fr":[" ", " ", ",", 3], "fr-lu":[".", ".", ",", 3], "he-il":[",", ",", ".", 3], "hu-hu":[" ", " ", ",", 3], "it-ch":[" ", " ", ".", 3], "it-it":[".", ".", ",", 3], "ja-jp":[",", ",", ".", 3], "ko-kr":[",", ",", ".", 3], "no-no":[".", ".", ",", 3], "nl-be":[" ", " ", ",", 3], "nl-nl":[".", ".", ",", 3], "pl-pl":[".", ".", ",", 3], "pt-br":[".", ".", ",", 3], "pt-pt":[".", ".", "$", 3], "ru-ru":[" ", " ", ",", 3], "sv-se":[".", " ", ",", 3], "tr-tr":[".", ".", ",", 3], "zh-cn":[",", ",", ".", 3], "zh-hk":[",", ",", ".", 3], "zh-tw":[",", ",", ".", 3], "*":[",", ",", ".", 3]};
+	})();
+	dojo.i18n.number._mapToLocalizedFormatData = function (table, locale) {
+		locale = dojo.hostenv.normalizeLocale(locale);
+		var data = table[locale];
+		if (typeof data == "undefined") {
+			data = table["*"];
+		}
+		return data;
+	};
+}});
+
+
+__CPAN_FILE__ src/i18n/currency.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency"], ["require", "dojo.experimental"], ["require", "dojo.regexp"], ["require", "dojo.i18n.common"], ["require", "dojo.i18n.number"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.i18n.currency");
+	dojo.require("dojo.regexp");
+	dojo.require("dojo.i18n.common");
+	dojo.require("dojo.i18n.number");
+	dojo.require("dojo.lang.common");
+	dojo.i18n.currency.format = function (value, iso, flags, locale) {
+		flags = (typeof flags == "object") ? flags : {};
+		var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
+		if (typeof flags.places == "undefined") {
+			flags.places = formatData.places;
+		}
+		if (typeof flags.places == "undefined") {
+			flags.places = 2;
+		}
+		flags.signed = false;
+		var result = dojo.i18n.number.format(value, flags, locale);
+		var sym = formatData.symbol;
+		if (formatData.adjSpace == "symbol") {
+			if (formatData.placement == "after") {
+				sym = " " + sym;
+			} else {
+				sym = sym + " ";
+			}
+		}
+		if (value < 0) {
+			if (formatData.signPlacement == "before") {
+				sym = "-" + sym;
+			} else {
+				if (formatData.signPlacement == "after") {
+					sym = sym + "-";
+				}
+			}
+		}
+		var spc = (formatData.adjSpace == "number") ? " " : "";
+		if (formatData.placement == "after") {
+			result = result + spc + sym;
+		} else {
+			result = sym + spc + result;
+		}
+		if (value < 0) {
+			if (formatData.signPlacement == "around") {
+				result = "(" + result + ")";
+			} else {
+				if (formatData.signPlacement == "end") {
+					result = result + "-";
+				} else {
+					if (!formatData.signPlacement || formatData.signPlacement == "begin") {
+						result = "-" + result;
+					}
+				}
+			}
+		}
+		return result;
+	};
+	dojo.i18n.currency.parse = function (value, iso, locale, flags) {
+		if (typeof flags.validate == "undefined") {
+			flags.validate = true;
+		}
+		if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) {
+			return Number.NaN;
+		}
+		var sign = (value.indexOf("-") != -1);
+		var abs = abs.replace(/\-/, "");
+		var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
+		abs = abs.replace(new RegExp("\\" + formatData.symbol), "");
+		var number = dojo.i18n.number.parse(abs, locale, flags);
+		if (sign) {
+			number = number * -1;
+		}
+		return number;
+	};
+	dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
+		if (typeof flags.separator == "undefined") {
+			flags.separator = numberFormatData[0];
+		} else {
+			if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) {
+				flags.separator = [numberFormatData[0], ""];
+			}
+		}
+		if (typeof flags.decimal == "undefined") {
+			flags.decimal = numberFormatData[2];
+		}
+		if (typeof flags.groupSize == "undefined") {
+			flags.groupSize = numberFormatData[3];
+		}
+		if (typeof flags.groupSize2 == "undefined") {
+			flags.groupSize2 = numberFormatData[4];
+		}
+		var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
+		if (typeof flags.places == "undefined") {
+			flags.places = formatData.places;
+		}
+		if (typeof flags.places == "undefined") {
+			flags.places = 2;
+		}
+		if (typeof flags.symbol == "undefined") {
+			flags.symbol = formatData.symbol;
+		} else {
+			if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) {
+				flags.symbol = [formatData.symbol, ""];
+			}
+		}
+		if (typeof flags.placement == "undefined") {
+			flags.placement = formatData.placement;
+		}
+		var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
+		return re.test(value);
+	};
+	dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) {
+		var formatData = dojo.i18n.currency.FORMAT_TABLE[iso];
+		if (!dojo.lang.isArray(formatData)) {
+			return formatData;
+		}
+		return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale);
+	};
+	(function () {
+		var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"};
+		var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"};
+		var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"};
+		dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}};
+	})();
+}});
+
+
 __CPAN_FILE__ src/i18n/number.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -43437,6 +83883,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.i18n.number");
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.i18n.number");
@@ -43590,6 +84038,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"dateFormat-yearOnly":"yyyy"})
 __CPAN_FILE__ src/i18n/calendar/nls/README
 All files within this directory and subdirectories were manually derived from http://unicode.org/cldr
@@ -43610,7 +84060,43 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "pm":"PM", "timeFormat-full":"HH:mm:ss z", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "am":"AM", "days-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7"], "field-year":"Year", "eras":["BCE", "CE"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "months-format-wide":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-era":"Era", "timeFormat-short":"HH:mm", "months-format-abbr":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "timeFormat-long":"HH:mm:ss z", "days-format-wide":["1", "2", "3", "4", "5", "6", "7"], "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone", "days-format-abbr":["1", "2", "3", "4", "5", "6", "7"]})
+__CPAN_FILE__ src/i18n/calendar/nls/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "", ({"field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "pm":"PM", "timeFormat-full":"HH:mm:ss z", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "am":"AM", "days-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7"], "field-year":"Year", "eras":["BCE", "CE"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "months-format-wide":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-era":"Era", "timeFormat-short":"HH:mm", "months-format-abbr":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "timeFormat-long":"HH:mm:ss z", "days-format-wide":["1", "2", "3", "4", "5", "6", "7"], "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone", "days-format-abbr":["1", "2", "3", "4", "5", "6", "7"]}));
+}})
+__CPAN_FILE__ src/i18n/calendar/nls/gregorianExtras.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.gregorianExtras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.gregorianExtras");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorianExtras", "", ({"dateFormat-yearOnly":"yyyy"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/es
 __CPAN_FILE__ src/i18n/calendar/nls/es/gregorian.js
 /*
@@ -43623,7 +84109,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"d\xeda de la semana", "dateFormat-medium":"dd-MMM-yy", "field-second":"segundo", "field-week":"semana", "pm":"p.m.", "timeFormat-full":"HH'H'mm''ss\" z", "months-standAlone-narrow":["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"a.m.", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"a\xf1o", "eras":["a.C.", "d.C."], "field-minute":"minuto", "field-hour":"hora", "dateFormat-long":"d' de 'MMMM' de 'yyyy", "field-day":"d\xeda", "field-dayperiod":"periodo del d\xeda", "field-month":"mes", "dateFormat-short":"d/MM/yy", "months-format-wide":["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], "field-era":"era", "months-format-abbr":["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], "days-format-wide":["domingo", "lunes", "martes", "mi\xe9rcoles", "jueves", "viernes", "s\xe1bado"], "dateFormat-full":"EEEE d' de 'MMMM' de 'yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mi\xe9", "jue", "vie", "s\xe1b"], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
+__CPAN_FILE__ src/i18n/calendar/nls/es/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.es.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.es.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "es", ({"field-weekday":"d\xeda de la semana", "dateFormat-medium":"dd-MMM-yy", "field-second":"segundo", "field-week":"semana", "pm":"p.m.", "timeFormat-full":"HH'H'mm''ss\" z", "months-standAlone-narrow":["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"a.m.", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"a\xf1o", "eras":["a.C.", "d.C."], "field-minute":"minuto", "field-hour":"hora", "dateFormat-long":"d' de 'MMMM' de 'yyyy", "field-day":"d\xeda", "field-dayperiod":"periodo del d\xeda", "field-month":"mes", "dateFormat-short":"d/MM/yy", "months-format-wide":["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], "field-era":"era", "months-format-abbr":["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], "days-format-wide":["domingo", "lunes", "martes", "mi\xe9rcoles", "jueves", "viernes", "s\xe1bado"], "dateFormat-full":"EEEE d' de 'MMMM' de 'yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mi\xe9", "jue", "vie", "s\xe1b"], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/de
 __CPAN_FILE__ src/i18n/calendar/nls/de/gregorian.js
 /*
@@ -43636,7 +84141,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"Wochentag", "dateFormat-medium":"dd.MM.yyyy", "field-second":"Sekunde", "field-week":"Woche", "pm":"nachm.", "timeFormat-full":"H:mm' Uhr 'z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"vorm.", "days-standAlone-narrow":["S", "M", "D", "M", "D", "F", "S"], "field-year":"Jahr", "eras":["v. Chr.", "n. Chr."], "field-hour":"Stunde", "dateFormat-long":"d. MMMM yyyy", "field-day":"Tag", "field-dayperiod":"Tagesh\xe4lfte", "field-month":"Monat", "dateFormat-short":"dd.MM.yy", "months-format-wide":["Januar", "Februar", "M\xe4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], "field-era":"Epoche", "months-format-abbr":["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], "days-format-wide":["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], "dateFormat-full":"EEEE, d. MMMM yyyy", "field-zone":"Zone", "days-format-abbr":["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
+__CPAN_FILE__ src/i18n/calendar/nls/de/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.de.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.de.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "de", ({"field-weekday":"Wochentag", "dateFormat-medium":"dd.MM.yyyy", "field-second":"Sekunde", "field-week":"Woche", "pm":"nachm.", "timeFormat-full":"H:mm' Uhr 'z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"vorm.", "days-standAlone-narrow":["S", "M", "D", "M", "D", "F", "S"], "field-year":"Jahr", "eras":["v. Chr.", "n. Chr."], "field-hour":"Stunde", "dateFormat-long":"d. MMMM yyyy", "field-day":"Tag", "field-dayperiod":"Tagesh\xe4lfte", "field-month":"Monat", "dateFormat-short":"dd.MM.yy", "months-format-wide":["Januar", "Februar", "M\xe4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], "field-era":"Epoche", "months-format-abbr":["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], "days-format-wide":["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], "dateFormat-full":"EEEE, d. MMMM yyyy", "field-zone":"Zone", "days-format-abbr":["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/zh
 __CPAN_FILE__ src/i18n/calendar/nls/zh/gregorianExtras.js
 /*
@@ -43649,6 +84173,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"dateFormat-yearOnly":"yyyy'\u5e74'"})
 __CPAN_FILE__ src/i18n/calendar/nls/zh/gregorian.js
 /*
@@ -43661,7 +84187,43 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "timeFormat-full":"HH:mm:ss z", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/zh/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.zh.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh", ({"days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "timeFormat-full":"HH:mm:ss z", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone"}));
+}})
+__CPAN_FILE__ src/i18n/calendar/nls/zh/gregorianExtras.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh.gregorianExtras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.zh.gregorianExtras");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorianExtras", "zh", ({"dateFormat-yearOnly":"yyyy'\u5e74'"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/ja
 __CPAN_FILE__ src/i18n/calendar/nls/ja/gregorianExtras.js
 /*
@@ -43674,6 +84236,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"dateFormat-yearOnly":"yyyy\u5e74"})
 __CPAN_FILE__ src/i18n/calendar/nls/ja/gregorian.js
 /*
@@ -43686,7 +84250,43 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"days-standAlone-narrow":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-full":"H'\u6642'mm'\u5206'ss'\u79d2'z", "eras":["\u7d00\u5143\u524d", "\u897f\u66a6"], "timeFormat-medium":"H:mm:ss", "dateFormat-medium":"yyyy/MM/dd", "am":"\u5348\u524d", "months-format-abbr":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-long":"H:mm:ss:z", "timeFormat-short":"H:mm", "pm":"\u5348\u5f8c", "months-format-wide":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-format-wide":["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/ja/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.ja.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.ja.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "ja", ({"days-standAlone-narrow":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-full":"H'\u6642'mm'\u5206'ss'\u79d2'z", "eras":["\u7d00\u5143\u524d", "\u897f\u66a6"], "timeFormat-medium":"H:mm:ss", "dateFormat-medium":"yyyy/MM/dd", "am":"\u5348\u524d", "months-format-abbr":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-long":"H:mm:ss:z", "timeFormat-short":"H:mm", "pm":"\u5348\u5f8c", "months-format-wide":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-format-wide":["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "field-zone":"Zone"}));
+}})
+__CPAN_FILE__ src/i18n/calendar/nls/ja/gregorianExtras.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.ja.gregorianExtras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.ja.gregorianExtras");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorianExtras", "ja", ({"dateFormat-yearOnly":"yyyy\u5e74"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/fi
 __CPAN_FILE__ src/i18n/calendar/nls/fi/gregorian.js
 /*
@@ -43699,7 +84299,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"viikonp\xe4iv\xe4", "dateFormat-medium":"d.M.yyyy", "field-second":"sekunti", "field-week":"viikko", "pm":"ip.", "timeFormat-full":"H.mm.ss v", "months-standAlone-narrow":["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], "am":"ap.", "days-standAlone-narrow":["S", "M", "T", "K", "T", "P", "L"], "field-year":"vuosi", "eras":["eKr.", "jKr."], "field-minute":"minuutti", "timeFormat-medium":"H.mm.ss", "field-hour":"tunti", "dateFormat-long":"d. MMMM'ta 'yyyy", "field-day":"p\xe4iv\xe4", "field-dayperiod":"ap/ip-valinta", "field-month":"kuukausi", "dateFormat-short":"d.M.yyyy", "months-format-wide":["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kes\xe4kuu", "hein\xe4kuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], "field-era":"aikakausi", "timeFormat-short":"H.mm", "months-format-abbr":["tammi", "helmi", "maalis", "huhti", "touko", "kes\xe4", "hein\xe4", "elo", "syys", "loka", "marras", "joulu"], "timeFormat-long":"'klo 'H.mm.ss", "days-format-wide":["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], "dateFormat-full":"EEEE'na 'd. MMMM'ta 'yyyy", "field-zone":"aikavy\xf6hyke", "days-format-abbr":["su", "ma", "ti", "ke", "to", "pe", "la"]})
+__CPAN_FILE__ src/i18n/calendar/nls/fi/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.fi.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.fi.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "fi", ({"field-weekday":"viikonp\xe4iv\xe4", "dateFormat-medium":"d.M.yyyy", "field-second":"sekunti", "field-week":"viikko", "pm":"ip.", "timeFormat-full":"H.mm.ss v", "months-standAlone-narrow":["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], "am":"ap.", "days-standAlone-narrow":["S", "M", "T", "K", "T", "P", "L"], "field-year":"vuosi", "eras":["eKr.", "jKr."], "field-minute":"minuutti", "timeFormat-medium":"H.mm.ss", "field-hour":"tunti", "dateFormat-long":"d. MMMM'ta 'yyyy", "field-day":"p\xe4iv\xe4", "field-dayperiod":"ap/ip-valinta", "field-month":"kuukausi", "dateFormat-short":"d.M.yyyy", "months-format-wide":["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kes\xe4kuu", "hein\xe4kuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], "field-era":"aikakausi", "timeFormat-short":"H.mm", "months-format-abbr":["tammi", "helmi", "maalis", "huhti", "touko", "kes\xe4", "hein\xe4", "elo", "syys", "loka", "marras", "joulu"], "timeFormat-long":"'klo 'H.mm.ss", "days-format-wide":["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], "dateFormat-full":"EEEE'na 'd. MMMM'ta 'yyyy", "field-zone":"aikavy\xf6hyke", "days-format-abbr":["su", "ma", "ti", "ke", "to", "pe", "la"]}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/zh-cn
 __CPAN_FILE__ src/i18n/calendar/nls/zh-cn/gregorian.js
 /*
@@ -43712,7 +84331,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"dateFormat-medium":"yyyy-M-d", "field-second":"\u79d2\u949f", "field-week":"\u5468", "timeFormat-full":"ahh'\u65f6'mm'\u5206'ss'\u79d2' z", "field-year":"\u5e74", "field-minute":"\u5206\u949f", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u65f6", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u65e5", "field-dayperiod":"\u4e0a\u5348/\u4e0b\u5348", "field-month":"\u6708", "dateFormat-short":"yy-M-d", "field-era":"\u65f6\u671f", "timeFormat-short":"ah:mm", "timeFormat-long":"ahh'\u65f6'mm'\u5206'ss'\u79d2'", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-weekday":"\u5468\u5929", "field-zone":"\u533a\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]})
+__CPAN_FILE__ src/i18n/calendar/nls/zh-cn/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh-cn.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.zh-cn.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh-cn", ({"dateFormat-medium":"yyyy-M-d", "field-second":"\u79d2\u949f", "field-week":"\u5468", "timeFormat-full":"ahh'\u65f6'mm'\u5206'ss'\u79d2' z", "field-year":"\u5e74", "field-minute":"\u5206\u949f", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u65f6", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u65e5", "field-dayperiod":"\u4e0a\u5348/\u4e0b\u5348", "field-month":"\u6708", "dateFormat-short":"yy-M-d", "field-era":"\u65f6\u671f", "timeFormat-short":"ah:mm", "timeFormat-long":"ahh'\u65f6'mm'\u5206'ss'\u79d2'", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-weekday":"\u5468\u5929", "field-zone":"\u533a\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/ko
 __CPAN_FILE__ src/i18n/calendar/nls/ko/gregorian.js
 /*
@@ -43725,7 +84363,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"months-standAlone-narrow":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-long":"yyyy'\ub144' M'\uc6d4' d'\uc77c'", "timeFormat-full":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08' z", "eras":["\uae30\uc6d0\uc804", "\uc11c\uae30"], "timeFormat-medium":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-medium":"yyyy. MM. dd", "am":"\uc624\uc804", "months-format-abbr":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-full":"yyyy'\ub144' M'\uc6d4' d'\uc77c' EEEE", "days-format-abbr":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "timeFormat-long":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08'", "timeFormat-short":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-short":"yy. MM. dd", "pm":"\uc624\ud6c4", "months-format-wide":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "days-standAlone-narrow":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "days-format-wide":["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/ko/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.ko.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.ko.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "ko", ({"months-standAlone-narrow":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-long":"yyyy'\ub144' M'\uc6d4' d'\uc77c'", "timeFormat-full":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08' z", "eras":["\uae30\uc6d0\uc804", "\uc11c\uae30"], "timeFormat-medium":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-medium":"yyyy. MM. dd", "am":"\uc624\uc804", "months-format-abbr":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-full":"yyyy'\ub144' M'\uc6d4' d'\uc77c' EEEE", "days-format-abbr":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "timeFormat-long":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08'", "timeFormat-short":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-short":"yy. MM. dd", "pm":"\uc624\ud6c4", "months-format-wide":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "days-standAlone-narrow":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "days-format-wide":["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/sv
 __CPAN_FILE__ src/i18n/calendar/nls/sv/gregorian.js
 /*
@@ -43738,7 +84395,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"veckodag", "dateFormat-medium":"d MMM yyyy", "field-second":"sekund", "field-week":"vecka", "pm":"em", "timeFormat-full":"'kl. 'HH.mm.ss z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"fm", "days-standAlone-narrow":["S", "M", "T", "O", "T", "F", "L"], "field-year":"\xe5r", "eras":["f.Kr.", "e.Kr."], "field-minute":"minut", "timeFormat-medium":"HH.mm.ss", "field-hour":"timme", "dateFormat-long":"EEEE d MMM yyyy", "field-day":"dag", "field-dayperiod":"dagsperiod", "field-month":"m\xe5nad", "dateFormat-short":"yyyy-MM-dd", "months-format-wide":["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], "field-era":"era", "timeFormat-short":"HH.mm", "months-format-abbr":["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "timeFormat-long":"HH.mm.ss z", "days-format-wide":["s\xf6ndag", "m\xe5ndag", "tisdag", "onsdag", "torsdag", "fredag", "l\xf6rdag"], "dateFormat-full":"EEEE'en den' d MMMM yyyy", "field-zone":"tidszon", "days-format-abbr":["s\xf6", "m\xe5", "ti", "on", "to", "fr", "l\xf6"]})
+__CPAN_FILE__ src/i18n/calendar/nls/sv/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.sv.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.sv.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "sv", ({"field-weekday":"veckodag", "dateFormat-medium":"d MMM yyyy", "field-second":"sekund", "field-week":"vecka", "pm":"em", "timeFormat-full":"'kl. 'HH.mm.ss z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"fm", "days-standAlone-narrow":["S", "M", "T", "O", "T", "F", "L"], "field-year":"\xe5r", "eras":["f.Kr.", "e.Kr."], "field-minute":"minut", "timeFormat-medium":"HH.mm.ss", "field-hour":"timme", "dateFormat-long":"EEEE d MMM yyyy", "field-day":"dag", "field-dayperiod":"dagsperiod", "field-month":"m\xe5nad", "dateFormat-short":"yyyy-MM-dd", "months-format-wide":["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], "field-era":"era", "timeFormat-short":"HH.mm", "months-format-abbr":["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "timeFormat-long":"HH.mm.ss z", "days-format-wide":["s\xf6ndag", "m\xe5ndag", "tisdag", "onsdag", "torsdag", "fredag", "l\xf6rdag"], "dateFormat-full":"EEEE'en den' d MMMM yyyy", "field-zone":"tidszon", "days-format-abbr":["s\xf6", "m\xe5", "ti", "on", "to", "fr", "l\xf6"]}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/en
 __CPAN_FILE__ src/i18n/calendar/nls/en/gregorian.js
 /*
@@ -43751,7 +84427,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"MMMM d, yyyy", "timeFormat-full":"h:mm:ss a v", "eras":["BC", "AD"], "timeFormat-medium":"h:mm:ss a", "dateFormat-medium":"MMM d, yyyy", "months-format-abbr":["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "dateFormat-full":"EEEE, MMMM d, yyyy", "days-format-abbr":["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "timeFormat-long":"h:mm:ss a z", "timeFormat-short":"h:mm a", "dateFormat-short":"M/d/yy", "months-format-wide":["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "days-standAlone-narrow":["S", "M", "T", "W", "T", "F", "S"], "days-format-wide":["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/en/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.en.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.en.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "en", ({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"MMMM d, yyyy", "timeFormat-full":"h:mm:ss a v", "eras":["BC", "AD"], "timeFormat-medium":"h:mm:ss a", "dateFormat-medium":"MMM d, yyyy", "months-format-abbr":["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "dateFormat-full":"EEEE, MMMM d, yyyy", "days-format-abbr":["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "timeFormat-long":"h:mm:ss a z", "timeFormat-short":"h:mm a", "dateFormat-short":"M/d/yy", "months-format-wide":["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "days-standAlone-narrow":["S", "M", "T", "W", "T", "F", "S"], "days-format-wide":["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/zh-hk
 __CPAN_FILE__ src/i18n/calendar/nls/zh-hk/gregorian.js
 /*
@@ -43764,7 +84459,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "timeFormat-medium":"a h:mm:ss", "dateFormat-medium":"yyyy/M/d", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "timeFormat-short":"a h:mm", "dateFormat-short":"yyyy/M/d", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/zh-hk/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh-hk.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.zh-hk.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh-hk", ({"timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "timeFormat-medium":"a h:mm:ss", "dateFormat-medium":"yyyy/M/d", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "timeFormat-short":"a h:mm", "dateFormat-short":"yyyy/M/d", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/zh-tw
 __CPAN_FILE__ src/i18n/calendar/nls/zh-tw/gregorian.js
 /*
@@ -43777,7 +84491,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"dateFormat-medium":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-second":"\u79d2", "field-week":"\u9031", "timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "field-year":"\u5e74", "field-minute":"\u5206\u9418", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u6642", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u6574\u65e5", "field-dayperiod":"\u65e5\u9593", "field-month":"\u6708", "dateFormat-short":"yy'\u5e74'M'\u6708'd'\u65e5'", "field-era":"\u5e74\u4ee3", "timeFormat-short":"ah:mm", "months-format-abbr":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "field-weekday":"\u9031\u5929", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-zone":"\u5340\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]})
+__CPAN_FILE__ src/i18n/calendar/nls/zh-tw/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh-tw.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.zh-tw.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh-tw", ({"dateFormat-medium":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-second":"\u79d2", "field-week":"\u9031", "timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "field-year":"\u5e74", "field-minute":"\u5206\u9418", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u6642", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u6574\u65e5", "field-dayperiod":"\u65e5\u9593", "field-month":"\u6708", "dateFormat-short":"yy'\u5e74'M'\u6708'd'\u65e5'", "field-era":"\u5e74\u4ee3", "timeFormat-short":"ah:mm", "months-format-abbr":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "field-weekday":"\u9031\u5929", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-zone":"\u5340\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/pt
 __CPAN_FILE__ src/i18n/calendar/nls/pt/gregorian.js
 /*
@@ -43790,7 +84523,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "timeFormat-full":"HH'H'mm'm'ss's' z", "eras":["a.C.", "d.C."], "dateFormat-medium":"d/MMM/yyyy", "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "dateFormat-short":"dd-MM-yyyy", "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/pt/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.pt.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.pt.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "pt", ({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "timeFormat-full":"HH'H'mm'm'ss's' z", "eras":["a.C.", "d.C."], "dateFormat-medium":"d/MMM/yyyy", "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "dateFormat-short":"dd-MM-yyyy", "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/it
 __CPAN_FILE__ src/i18n/calendar/nls/it/gregorian.js
 /*
@@ -43803,7 +84555,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"giorno della settimana", "dateFormat-medium":"dd/MMM/yy", "field-second":"secondo", "field-week":"settimana", "pm":"p.", "months-standAlone-narrow":["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], "am":"m.", "days-standAlone-narrow":["D", "L", "M", "M", "G", "V", "S"], "field-year":"anno", "eras":["aC", "dC"], "field-minute":"minuto", "field-hour":"ora", "dateFormat-long":"dd MMMM yyyy", "field-day":"giorno", "field-dayperiod":"periodo del giorno", "field-month":"mese", "dateFormat-short":"dd/MM/yy", "months-format-wide":["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"], "field-era":"era", "months-format-abbr":["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], "days-format-wide":["domenica", "luned\xec", "marted\xec", "mercoled\xec", "gioved\xec", "venerd\xec", "sabato"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mer", "gio", "ven", "sab"], "timeFormat-full":"HH:mm:ss z", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
+__CPAN_FILE__ src/i18n/calendar/nls/it/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.it.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.it.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "it", ({"field-weekday":"giorno della settimana", "dateFormat-medium":"dd/MMM/yy", "field-second":"secondo", "field-week":"settimana", "pm":"p.", "months-standAlone-narrow":["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], "am":"m.", "days-standAlone-narrow":["D", "L", "M", "M", "G", "V", "S"], "field-year":"anno", "eras":["aC", "dC"], "field-minute":"minuto", "field-hour":"ora", "dateFormat-long":"dd MMMM yyyy", "field-day":"giorno", "field-dayperiod":"periodo del giorno", "field-month":"mese", "dateFormat-short":"dd/MM/yy", "months-format-wide":["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"], "field-era":"era", "months-format-abbr":["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], "days-format-wide":["domenica", "luned\xec", "marted\xec", "mercoled\xec", "gioved\xec", "venerd\xec", "sabato"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mer", "gio", "ven", "sab"], "timeFormat-full":"HH:mm:ss z", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/hu
 __CPAN_FILE__ src/i18n/calendar/nls/hu/gregorian.js
 /*
@@ -43816,7 +84587,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"h\xe9t napja", "dateFormat-medium":"yyyy MMM d", "field-second":"m\xe1sodperc", "field-week":"h\xe9t", "pm":"d.u.", "timeFormat-full":"h:mm:ss a v", "months-standAlone-narrow":["J", "F", "M", "\xc1", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"d.e.", "days-standAlone-narrow":["V", "H", "K", "Sz", "Cs", "P", "Sz"], "field-year":"\xe9v", "eras":["k.e.", "k.u."], "field-minute":"perc", "timeFormat-medium":"h:mm:ss a", "field-hour":"\xf3ra", "dateFormat-long":"yyyy MMMM d", "field-day":"nap", "field-dayperiod":"napszak", "field-month":"h\xf3nap", "dateFormat-short":"yyyy-M-d", "months-format-wide":["janu\xe1r", "febru\xe1r", "m\xe1rcius", "\xe1prilis", "m\xe1jus", "j\xfanius", "j\xfalius", "augusztus", "szeptember", "okt\xf3ber", "november", "december"], "field-era":"\xe9ra", "timeFormat-short":"h:mm a", "months-format-abbr":["jan", "feb", "m\xe1r", "apr", "m\xe1j", "j\xfan", "j\xfal", "aug", "sze", "okt", "nov", "dec"], "timeFormat-long":"h:mm:ss a z", "days-format-wide":["vas\xe1rnap", "h\xe9tf\u0151", "kedd", "szerda", "cs\xfct\xf6rt\xf6k", "p\xe9ntek", "szombat"], "dateFormat-full":"yyyy MMMM d, EEEE", "field-zone":"z\xf3na", "days-format-abbr":["Va", "H\xe9", "Ke", "Sze", "Cs\xfc", "P\xe9", "Szo"]})
+__CPAN_FILE__ src/i18n/calendar/nls/hu/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.hu.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.hu.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "hu", ({"field-weekday":"h\xe9t napja", "dateFormat-medium":"yyyy MMM d", "field-second":"m\xe1sodperc", "field-week":"h\xe9t", "pm":"d.u.", "timeFormat-full":"h:mm:ss a v", "months-standAlone-narrow":["J", "F", "M", "\xc1", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"d.e.", "days-standAlone-narrow":["V", "H", "K", "Sz", "Cs", "P", "Sz"], "field-year":"\xe9v", "eras":["k.e.", "k.u."], "field-minute":"perc", "timeFormat-medium":"h:mm:ss a", "field-hour":"\xf3ra", "dateFormat-long":"yyyy MMMM d", "field-day":"nap", "field-dayperiod":"napszak", "field-month":"h\xf3nap", "dateFormat-short":"yyyy-M-d", "months-format-wide":["janu\xe1r", "febru\xe1r", "m\xe1rcius", "\xe1prilis", "m\xe1jus", "j\xfanius", "j\xfalius", "augusztus", "szeptember", "okt\xf3ber", "november", "december"], "field-era":"\xe9ra", "timeFormat-short":"h:mm a", "months-format-abbr":["jan", "feb", "m\xe1r", "apr", "m\xe1j", "j\xfan", "j\xfal", "aug", "sze", "okt", "nov", "dec"], "timeFormat-long":"h:mm:ss a z", "days-format-wide":["vas\xe1rnap", "h\xe9tf\u0151", "kedd", "szerda", "cs\xfct\xf6rt\xf6k", "p\xe9ntek", "szombat"], "dateFormat-full":"yyyy MMMM d, EEEE", "field-zone":"z\xf3na", "days-format-abbr":["Va", "H\xe9", "Ke", "Sze", "Cs\xfc", "P\xe9", "Szo"]}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/pt-br
 __CPAN_FILE__ src/i18n/calendar/nls/pt-br/gregorian.js
 /*
@@ -43829,7 +84619,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-hour":"Hora", "field-dayperiod":"Per\xedodo do dia", "field-minute":"Minuto", "timeFormat-full":"HH'h'mm'min'ss's' z", "field-weekday":"Dia da semana", "field-week":"Semana", "field-second":"Segundo", "dateFormat-medium":"dd/MM/yyyy", "field-day":"Dia", "timeFormat-long":"H'h'm'min's's' z", "field-month":"M\xeas", "field-year":"Ano", "dateFormat-short":"dd/MM/yy", "field-zone":"Fuso", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "eras":["a.C.", "d.C."], "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "field-era":"Era", "timeFormat-short":"HH:mm"})
+__CPAN_FILE__ src/i18n/calendar/nls/pt-br/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.pt-br.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.pt-br.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "pt-br", ({"field-hour":"Hora", "field-dayperiod":"Per\xedodo do dia", "field-minute":"Minuto", "timeFormat-full":"HH'h'mm'min'ss's' z", "field-weekday":"Dia da semana", "field-week":"Semana", "field-second":"Segundo", "dateFormat-medium":"dd/MM/yyyy", "field-day":"Dia", "timeFormat-long":"H'h'm'min's's' z", "field-month":"M\xeas", "field-year":"Ano", "dateFormat-short":"dd/MM/yy", "field-zone":"Fuso", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "eras":["a.C.", "d.C."], "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "field-era":"Era", "timeFormat-short":"HH:mm"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/fr
 __CPAN_FILE__ src/i18n/calendar/nls/fr/gregorian.js
 /*
@@ -43842,7 +84651,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"field-weekday":"jour de la semaine", "dateFormat-medium":"d MMM yy", "field-second":"seconde", "field-week":"semaine", "pm":"ap. m.", "timeFormat-full":"HH' h 'mm z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"matin", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"ann\xe9e", "eras":["av. J.-C.", "apr. J.-C."], "field-minute":"minute", "field-hour":"heure", "dateFormat-long":"d MMMM yyyy", "field-day":"jour", "field-dayperiod":"p\xe9riode de la journ\xe9e", "field-month":"mois", "dateFormat-short":"dd/MM/yy", "months-format-wide":["janvier", "f\xe9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\xfbt", "septembre", "octobre", "novembre", "d\xe9cembre"], "field-era":"\xe9poque", "months-format-abbr":["janv.", "f\xe9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\xfbt", "sept.", "oct.", "nov.", "d\xe9c."], "days-format-wide":["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zone", "days-format-abbr":["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})
+__CPAN_FILE__ src/i18n/calendar/nls/fr/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.fr.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.fr.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "fr", ({"field-weekday":"jour de la semaine", "dateFormat-medium":"d MMM yy", "field-second":"seconde", "field-week":"semaine", "pm":"ap. m.", "timeFormat-full":"HH' h 'mm z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"matin", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"ann\xe9e", "eras":["av. J.-C.", "apr. J.-C."], "field-minute":"minute", "field-hour":"heure", "dateFormat-long":"d MMMM yyyy", "field-day":"jour", "field-dayperiod":"p\xe9riode de la journ\xe9e", "field-month":"mois", "dateFormat-short":"dd/MM/yy", "months-format-wide":["janvier", "f\xe9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\xfbt", "septembre", "octobre", "novembre", "d\xe9cembre"], "field-era":"\xe9poque", "months-format-abbr":["janv.", "f\xe9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\xfbt", "sept.", "oct.", "nov.", "d\xe9c."], "days-format-wide":["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zone", "days-format-abbr":["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}));
+}})
 __CPAN_DIR__ src/i18n/calendar/nls/nl
 __CPAN_FILE__ src/i18n/calendar/nls/nl/gregorian.js
 /*
@@ -43855,7 +84683,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"dateFormat-medium":"d MMM yyyy", "field-second":"Seconde", "timeFormat-full":"HH:mm:ss v", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "days-standAlone-narrow":["Z", "M", "D", "W", "D", "V", "Z"], "field-year":"Jaar", "eras":["v. Chr.", "n. Chr."], "field-minute":"Minuut", "field-hour":"Uur", "dateFormat-long":"d MMMM yyyy", "field-day":"Dag", "field-dayperiod":"Dagdeel", "field-month":"Maand", "dateFormat-short":"dd-MM-yy", "months-format-wide":["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], "field-era":"Tijdperk", "months-format-abbr":["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "days-format-wide":["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], "dateFormat-full":"EEEE d MMMM yyyy", "days-format-abbr":["zo", "ma", "di", "wo", "do", "vr", "za"], "field-weekday":"Dag van de week", "field-week":"Week", "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"})
+__CPAN_FILE__ src/i18n/calendar/nls/nl/gregorian.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.nl.gregorian"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.calendar.nls.nl.gregorian");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "nl", ({"dateFormat-medium":"d MMM yyyy", "field-second":"Seconde", "timeFormat-full":"HH:mm:ss v", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "days-standAlone-narrow":["Z", "M", "D", "W", "D", "V", "Z"], "field-year":"Jaar", "eras":["v. Chr.", "n. Chr."], "field-minute":"Minuut", "field-hour":"Uur", "dateFormat-long":"d MMMM yyyy", "field-day":"Dag", "field-dayperiod":"Dagdeel", "field-month":"Maand", "dateFormat-short":"dd-MM-yy", "months-format-wide":["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], "field-era":"Tijdperk", "months-format-abbr":["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "days-format-wide":["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], "dateFormat-full":"EEEE d MMMM yyyy", "days-format-abbr":["zo", "ma", "di", "wo", "do", "vr", "za"], "field-weekday":"Dag van de week", "field-week":"Week", "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"}));
+}})
 __CPAN_DIR__ src/i18n/currency
 __CPAN_FILE__ src/i18n/currency/common.js
 /*
@@ -43868,6 +84715,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.i18n.currency.common");
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.i18n.currency");
@@ -43995,6 +84844,148 @@
 })();
 
 
+__CPAN_FILE__ src/i18n/currency/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.common"], ["require", "dojo.experimental"], ["require", "dojo.regexp"], ["require", "dojo.i18n.common"], ["require", "dojo.i18n.number"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.common");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.i18n.currency");
+	dojo.require("dojo.regexp");
+	dojo.require("dojo.i18n.common");
+	dojo.require("dojo.i18n.number");
+	dojo.require("dojo.lang.common");
+	dojo.i18n.currency.format = function (value, iso, flags, locale) {
+		flags = (typeof flags == "object") ? flags : {};
+		var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
+		if (typeof flags.places == "undefined") {
+			flags.places = formatData.places;
+		}
+		if (typeof flags.places == "undefined") {
+			flags.places = 2;
+		}
+		flags.signed = false;
+		var result = dojo.i18n.number.format(value, flags, locale);
+		var sym = formatData.symbol;
+		if (formatData.adjSpace == "symbol") {
+			if (formatData.placement == "after") {
+				sym = " " + sym;
+			} else {
+				sym = sym + " ";
+			}
+		}
+		if (value < 0) {
+			if (formatData.signPlacement == "before") {
+				sym = "-" + sym;
+			} else {
+				if (formatData.signPlacement == "after") {
+					sym = sym + "-";
+				}
+			}
+		}
+		var spc = (formatData.adjSpace == "number") ? " " : "";
+		if (formatData.placement == "after") {
+			result = result + spc + sym;
+		} else {
+			result = sym + spc + result;
+		}
+		if (value < 0) {
+			if (formatData.signPlacement == "around") {
+				result = "(" + result + ")";
+			} else {
+				if (formatData.signPlacement == "end") {
+					result = result + "-";
+				} else {
+					if (!formatData.signPlacement || formatData.signPlacement == "begin") {
+						result = "-" + result;
+					}
+				}
+			}
+		}
+		return result;
+	};
+	dojo.i18n.currency.parse = function (value, iso, locale, flags) {
+		if (typeof flags.validate == "undefined") {
+			flags.validate = true;
+		}
+		if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) {
+			return Number.NaN;
+		}
+		var sign = (value.indexOf("-") != -1);
+		var abs = abs.replace(/\-/, "");
+		var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
+		abs = abs.replace(new RegExp("\\" + formatData.symbol), "");
+		var number = dojo.i18n.number.parse(abs, locale, flags);
+		if (sign) {
+			number = number * -1;
+		}
+		return number;
+	};
+	dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) {
+		flags = (typeof flags == "object") ? flags : {};
+		var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale);
+		if (typeof flags.separator == "undefined") {
+			flags.separator = numberFormatData[0];
+		} else {
+			if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) {
+				flags.separator = [numberFormatData[0], ""];
+			}
+		}
+		if (typeof flags.decimal == "undefined") {
+			flags.decimal = numberFormatData[2];
+		}
+		if (typeof flags.groupSize == "undefined") {
+			flags.groupSize = numberFormatData[3];
+		}
+		if (typeof flags.groupSize2 == "undefined") {
+			flags.groupSize2 = numberFormatData[4];
+		}
+		var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale);
+		if (typeof flags.places == "undefined") {
+			flags.places = formatData.places;
+		}
+		if (typeof flags.places == "undefined") {
+			flags.places = 2;
+		}
+		if (typeof flags.symbol == "undefined") {
+			flags.symbol = formatData.symbol;
+		} else {
+			if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) {
+				flags.symbol = [formatData.symbol, ""];
+			}
+		}
+		if (typeof flags.placement == "undefined") {
+			flags.placement = formatData.placement;
+		}
+		var re = new RegExp("^" + dojo.regexp.currency(flags) + "$");
+		return re.test(value);
+	};
+	dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) {
+		var formatData = dojo.i18n.currency.FORMAT_TABLE[iso];
+		if (!dojo.lang.isArray(formatData)) {
+			return formatData;
+		}
+		return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale);
+	};
+	(function () {
+		var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"};
+		var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"};
+		var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"};
+		dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}};
+	})();
+}});
+
+
 __CPAN_DIR__ src/i18n/currency/nls
 __CPAN_FILE__ src/i18n/currency/nls/JPY.js
 /*
@@ -44007,7 +84998,60 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"JPY", "symbol":"\xa5"})
+__CPAN_FILE__ src/i18n/currency/nls/EUR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.EUR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.EUR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "", ({"displayName":"EUR", "symbol":"\u20ac"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/ITL.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ITL"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ITL");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "", ({"displayName":"ITL", "symbol":"\u20a4"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/JPY.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.JPY"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.JPY");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "", ({"displayName":"JPY", "symbol":"\xa5"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/GBP.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44019,6 +85063,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"GBP", "symbol":"\xa3"})
 __CPAN_FILE__ src/i18n/currency/nls/README
 All files within this directory and subdirectories were manually derived from http://unicode.org/cldr
@@ -44028,6 +85074,23 @@
 Eventually, this data should be generated directly from the XML in the CLDR repository to provide
 accurate and full support for the full set of locales.
 
+__CPAN_FILE__ src/i18n/currency/nls/INR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.INR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.INR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "", ({"displayName":"INR"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/ITL.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44039,6 +85102,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"ITL", "symbol":"\u20a4"})
 __CPAN_FILE__ src/i18n/currency/nls/USD.js
 /*
@@ -44051,6 +85116,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"USD", "symbol":"$"})
 __CPAN_FILE__ src/i18n/currency/nls/INR.js
 /*
@@ -44063,7 +85130,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"INR"})
+__CPAN_FILE__ src/i18n/currency/nls/GBP.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.GBP"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.GBP");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "", ({"displayName":"GBP", "symbol":"\xa3"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/EUR.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44075,7 +85161,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"EUR", "symbol":"\u20ac"})
+__CPAN_FILE__ src/i18n/currency/nls/USD.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.USD"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.USD");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "", ({"displayName":"USD", "symbol":"$"}));
+}})
 __CPAN_DIR__ src/i18n/currency/nls/ja
 __CPAN_FILE__ src/i18n/currency/nls/ja/JPY.js
 /*
@@ -44088,7 +85193,60 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u65e5\u672c\u5186", "symbol":"\uffe5"})
+__CPAN_FILE__ src/i18n/currency/nls/ja/EUR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.EUR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ja.EUR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "ja", ({"displayName":"\u30e6\u30fc\u30ed", "symbol":"\u20ac"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/ja/ITL.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.ITL"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ja.ITL");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "ja", ({"displayName":"\u30a4\u30bf\u30ea\u30a2 \u30ea\u30e9", "symbol":"\u20a4"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/ja/JPY.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.JPY"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ja.JPY");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "ja", ({"displayName":"\u65e5\u672c\u5186", "symbol":"\uffe5"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/ja/GBP.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44100,7 +85258,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u82f1\u56fd\u30dd\u30f3\u30c9", "symbol":"\xa3"})
+__CPAN_FILE__ src/i18n/currency/nls/ja/INR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.INR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ja.INR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "ja", ({"displayName":"\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc", "symbol":"INR"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/ja/ITL.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44112,6 +85289,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u30a4\u30bf\u30ea\u30a2 \u30ea\u30e9", "symbol":"\u20a4"})
 __CPAN_FILE__ src/i18n/currency/nls/ja/USD.js
 /*
@@ -44124,6 +85303,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u7c73\u30c9\u30eb", "symbol":"$"})
 __CPAN_FILE__ src/i18n/currency/nls/ja/INR.js
 /*
@@ -44136,7 +85317,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc", "symbol":"INR"})
+__CPAN_FILE__ src/i18n/currency/nls/ja/GBP.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.GBP"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ja.GBP");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "ja", ({"displayName":"\u82f1\u56fd\u30dd\u30f3\u30c9", "symbol":"\xa3"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/ja/EUR.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44148,7 +85348,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u30e6\u30fc\u30ed", "symbol":"\u20ac"})
+__CPAN_FILE__ src/i18n/currency/nls/ja/USD.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.USD"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.ja.USD");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "ja", ({"displayName":"\u7c73\u30c9\u30eb", "symbol":"$"}));
+}})
 __CPAN_DIR__ src/i18n/currency/nls/en-us
 __CPAN_FILE__ src/i18n/currency/nls/en-us/USD.js
 /*
@@ -44161,7 +85380,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"symbol":"$", "displayName":"US Dollar"})
+__CPAN_FILE__ src/i18n/currency/nls/en-us/USD.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en-us.USD"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en-us.USD");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "en-us", ({"symbol":"$", "displayName":"US Dollar"}));
+}})
 __CPAN_DIR__ src/i18n/currency/nls/en
 __CPAN_FILE__ src/i18n/currency/nls/en/JPY.js
 /*
@@ -44174,7 +85412,60 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"Japanese Yen", "symbol":"\xa5"})
+__CPAN_FILE__ src/i18n/currency/nls/en/EUR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.EUR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en.EUR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "en", ({"displayName":"Euro", "symbol":"\u20ac"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/en/ITL.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.ITL"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en.ITL");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "en", ({"displayName":"Italian Lira", "symbol":"\u20a4"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/en/JPY.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.JPY"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en.JPY");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "en", ({"displayName":"Japanese Yen", "symbol":"\xa5"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/en/GBP.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44186,7 +85477,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"British Pound Sterling", "symbol":"\xa3"})
+__CPAN_FILE__ src/i18n/currency/nls/en/INR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.INR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en.INR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "en", ({"displayName":"Indian Rupee"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/en/ITL.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44198,6 +85508,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"Italian Lira", "symbol":"\u20a4"})
 __CPAN_FILE__ src/i18n/currency/nls/en/USD.js
 /*
@@ -44210,6 +85522,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"US Dollar", "symbol":"US$"})
 __CPAN_FILE__ src/i18n/currency/nls/en/INR.js
 /*
@@ -44222,7 +85536,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"Indian Rupee"})
+__CPAN_FILE__ src/i18n/currency/nls/en/GBP.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.GBP"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en.GBP");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "en", ({"displayName":"British Pound Sterling", "symbol":"\xa3"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/en/EUR.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44234,7 +85567,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"Euro", "symbol":"\u20ac"})
+__CPAN_FILE__ src/i18n/currency/nls/en/USD.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.USD"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.en.USD");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "en", ({"displayName":"US Dollar", "symbol":"US$"}));
+}})
 __CPAN_DIR__ src/i18n/currency/nls/hi
 __CPAN_FILE__ src/i18n/currency/nls/hi/JPY.js
 /*
@@ -44247,7 +85599,60 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u091c\u093e\u092a\u093e\u0928\u0940 \u092f\u0947\u0928", "symbol":"\xa5"})
+__CPAN_FILE__ src/i18n/currency/nls/hi/EUR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.EUR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.hi.EUR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "hi", ({"displayName":"\u092f\u0941\u0930\u094b", "symbol":"\u20ac"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/hi/ITL.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.ITL"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.hi.ITL");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "hi", ({"displayName":"\u0907\u0924\u0932\u0940 \u0915\u093e \u0932\u0940\u0930\u093e", "symbol":"\u20a4"}));
+}})
+__CPAN_FILE__ src/i18n/currency/nls/hi/JPY.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.JPY"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.hi.JPY");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "hi", ({"displayName":"\u091c\u093e\u092a\u093e\u0928\u0940 \u092f\u0947\u0928", "symbol":"\xa5"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/hi/GBP.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44259,7 +85664,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u092c\u094d\u0930\u093f\u0924\u0928 \u0915\u093e \u092a\u094c\u0928\u094d\u0921 \u0938\u094d\u091f\u0930\u094d\u0932\u093f\u0917", "symbol":"\xa3"})
+__CPAN_FILE__ src/i18n/currency/nls/hi/INR.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.INR"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.hi.INR");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "hi", ({"displayName":"\u092d\u093e\u0930\u0924\u0940\u092f  \u0930\u0942\u092a\u092f\u093e", "symbol":"\u0930\u0941."}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/hi/ITL.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44271,6 +85695,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u0907\u0924\u0932\u0940 \u0915\u093e \u0932\u0940\u0930\u093e", "symbol":"\u20a4"})
 __CPAN_FILE__ src/i18n/currency/nls/hi/USD.js
 /*
@@ -44283,6 +85709,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u0905\u092e\u0930\u0940\u0915\u0940 \u0921\u093e\u0932\u0930", "symbol":"$"})
 __CPAN_FILE__ src/i18n/currency/nls/hi/INR.js
 /*
@@ -44295,7 +85723,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u092d\u093e\u0930\u0924\u0940\u092f  \u0930\u0942\u092a\u092f\u093e", "symbol":"\u0930\u0941."})
+__CPAN_FILE__ src/i18n/currency/nls/hi/GBP.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.GBP"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.hi.GBP");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "hi", ({"displayName":"\u092c\u094d\u0930\u093f\u0924\u0928 \u0915\u093e \u092a\u094c\u0928\u094d\u0921 \u0938\u094d\u091f\u0930\u094d\u0932\u093f\u0917", "symbol":"\xa3"}));
+}})
 __CPAN_FILE__ src/i18n/currency/nls/hi/EUR.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44307,7 +85754,26 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 ({"displayName":"\u092f\u0941\u0930\u094b", "symbol":"\u20ac"})
+__CPAN_FILE__ src/i18n/currency/nls/hi/USD.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.USD"]], definePackage:function (dojo) {
+	dojo.provide("dojo.i18n.currency.nls.hi.USD");
+	dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "hi", ({"displayName":"\u0905\u092e\u0930\u0940\u0915\u0940 \u0921\u093e\u0932\u0930", "symbol":"$"}));
+}})
 __CPAN_DIR__ src/namespaces
 __CPAN_FILE__ src/namespaces/dojo.js
 /*
@@ -44474,7 +85940,69 @@
 	dojo.registerNamespaceResolver("dojo", dojoNamespaceResolver);
 })();
 
+__CPAN_FILE__ src/namespaces/dojo.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.namespaces.dojo"], ["require", "dojo.ns"], ["require", ]], definePackage:function (dojo) {
+	dojo.provide("dojo.namespaces.dojo");
+	dojo.require("dojo.ns");
+	(function () {
+		var map = {html:{"accordioncontainer":"dojo.widget.AccordionContainer", "animatedpng":"dojo.widget.AnimatedPng", "button":"dojo.widget.Button", "chart":"dojo.widget.Chart", "checkbox":"dojo.widget.Checkbox", "clock":"dojo.widget.Clock", "colorpalette":"dojo.widget.ColorPalette", "combobox":"dojo.widget.ComboBox", "combobutton":"dojo.widget.Button", "contentpane":"dojo.widget.ContentPane", "currencytextbox":"dojo.widget.CurrencyTextbox", "datepicker":"dojo.widget.DatePicker", "datetextbox":"dojo.widget.DateTextbox", "debugconsole":"dojo.widget.DebugConsole", "dialog":"dojo.widget.Dialog", "dropdownbutton":"dojo.widget.Button", "dropdowndatepicker":"dojo.widget.DropdownDatePicker", "dropdowntimepicker":"dojo.widget.DropdownTimePicker", "emaillisttextbox":"dojo.widget.InternetTextbox", "emailtextbox":"dojo.widget.InternetTextbox", "editor":"dojo.widget.Editor", "editor2":"dojo.widget.Editor2", "filteringtable":"dojo.widget.FilteringTable", "fisheyelist":"dojo.widget.FisheyeList", "fisheyelistitem":"dojo.widget.FisheyeList", "floatingpane":"dojo.widget.FloatingPane", "modalfloatingpane":"dojo.widget.FloatingPane", "form":"dojo.widget.Form", "googlemap":"dojo.widget.GoogleMap", "inlineeditbox":"dojo.widget.InlineEditBox", "integerspinner":"dojo.widget.Spinner", "integertextbox":"dojo.widget.IntegerTextbox", "ipaddresstextbox":"dojo.widget.InternetTextbox", "layoutcontainer":"dojo.widget.LayoutContainer", "linkpane":"dojo.widget.LinkPane", "popupmenu2":"dojo.widget.Menu2", "menuitem2":"dojo.widget.Menu2", "menuseparator2":"dojo.widget.Menu2", "menubar2":"dojo.widget.Menu2", "menubaritem2":"dojo.widget.Menu2", "pagecontainer":"dojo.widget.PageContainer", "pagecontroller":"dojo.widget.PageContainer", "popupcontainer":"dojo.widget.PopupContainer", "progressbar":"dojo.widget.ProgressBar", "radiogroup":"dojo.widget.RadioGroup", "realnumbertextbox":"dojo.widget.RealNumberTextbox", "regexptextbox":"dojo.widget.RegexpTextbox", "repeater":"dojo.widget.Repeater", "resizabletextarea":"dojo.widget.ResizableTextarea", "richtext":"dojo.widget.RichText", "select":"dojo.widget.Select", "show":"dojo.widget.Show", "showaction":"dojo.widget.ShowAction", "showslide":"dojo.widget.ShowSlide", "slidervertical":"dojo.widget.Slider", "sliderhorizontal":"dojo.widget.Slider", "slider":"dojo.widget.Slider", "slideshow":"dojo.widget.SlideShow", "sortabletable":"dojo.widget.SortableTable", "splitcontainer":"dojo.widget.SplitContainer", "tabcontainer":"dojo.widget.TabContainer", "tabcontroller":"dojo.widget.TabContainer", "taskbar":"dojo.widget.TaskBar", "textbox":"dojo.widget.Textbox", "timepicker":"dojo.widget.TimePicker", "timetextbox":"dojo.widget.DateTextbox", "titlepane":"dojo.widget.TitlePane", "toaster":"dojo.widget.Toaster", "toggler":"dojo.widget.Toggler", "toolbar":"dojo.widget.Toolbar", "toolbarcontainer":"dojo.widget.Toolbar", "toolbaritem":"dojo.widget.Toolbar", "toolbarbuttongroup":"dojo.widget.Toolbar", "toolbarbutton":"dojo.widget.Toolbar", "toolbardialog":"dojo.widget.Toolbar", "toolbarmenu":"dojo.widget.Toolbar", "toolbarseparator":"dojo.widget.Toolbar", "toolbarspace":"dojo.widget.Toolbar", "toolbarselect":"dojo.widget.Toolbar", "toolbarcolordialog":"dojo.widget.Toolbar", "tooltip":"dojo.widget.Tooltip", "tree":"dojo.widget.Tree", "treebasiccontroller":"dojo.widget.TreeBasicController", "treecontextmenu":"dojo.widget.TreeContextMenu", "treedisablewrapextension":"dojo.widget.TreeDisableWrapExtension", "treedociconextension":"dojo.widget.TreeDocIconExtension", "treeeditor":"dojo.widget.TreeEditor", "treeemphasizeonselect":"dojo.widget.TreeEmphasizeOnSelect", "treeexpandtonodeonselect":"dojo.widget.TreeExpandToNodeOnSelect", "treelinkextension":"dojo.widget.TreeLinkExtension", "treeloadingcontroller":"dojo.widget.TreeLoadingController", "treemenuitem":"dojo.widget.TreeContextMenu", "treenode":"dojo.widget.TreeNode", "treerpccontroller":"dojo.widget.TreeRPCController", "treeselector":"dojo.widget.TreeSelector", "treetoggleonselect":"dojo.widget.TreeToggleOnSelect", "treev3":"dojo.widget.TreeV3", "treebasiccontrollerv3":"dojo.widget.TreeBasicControllerV3", "treecontextmenuv3":"dojo.widget.TreeContextMenuV3", "treedndcontrollerv3":"dojo.widget.TreeDndControllerV3", "treeloadingcontrollerv3":"dojo.widget.TreeLoadingControllerV3", "treemenuitemv3":"dojo.widget.TreeContextMenuV3", "treerpccontrollerv3":"dojo.widget.TreeRpcControllerV3", "treeselectorv3":"dojo.widget.TreeSelectorV3", "urltextbox":"dojo.widget.InternetTextbox", "usphonenumbertextbox":"dojo.widget.UsTextbox", "ussocialsecuritynumbertextbox":"dojo.widget.UsTextbox", "usstatetextbox":"dojo.widget.UsTextbox", "usziptextbox":"dojo.widget.UsTextbox", "validationtextbox":"dojo.widget.ValidationTextbox", "treeloadingcontroller":"dojo.widget.TreeLoadingController", "wizardcontainer":"dojo.widget.Wizard", "wizardpane":"dojo.widget.Wizard", "yahoomap":"dojo.widget.YahooMap"}, svg:{"chart":"dojo.widget.svg.Chart"}, vml:{"chart":"dojo.widget.vml.Chart"}};
+		dojo.addDojoNamespaceMapping = function (shortName, packageName) {
+			map[shortName] = packageName;
+		};
+		function dojoNamespaceResolver(name, domain) {
+			if (!domain) {
+				domain = "html";
+			}
+			if (!map[domain]) {
+				return null;
+			}
+			return map[domain][name];
+		}
+		dojo.registerNamespaceResolver("dojo", dojoNamespaceResolver);
+	})();
+}});
+
+
 __CPAN_DIR__ src/crypto
+__CPAN_FILE__ src/crypto/Rijndael.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.crypto.Rijndael"], ["require", "dojo.crypto"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.crypto.Rijndael");
+	dojo.require("dojo.crypto");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.crypto.Rijndael");
+	dojo.crypto.Rijndael = new function () {
+		this.encrypt = function (plaintext, key) {
+		};
+		this.decrypt = function (ciphertext, key) {
+		};
+	}();
+}});
+
+
 __CPAN_FILE__ src/crypto/LICENSE
 License Disclaimer:
 
@@ -44499,6 +86027,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.crypto.SHA256");
 dojo.require("dojo.crypto");
 dojo.require("dojo.experimental");
@@ -44520,6 +86050,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.crypto.Rijndael");
 dojo.require("dojo.crypto");
 dojo.require("dojo.experimental");
@@ -44533,20 +86065,18 @@
 
 
 __CPAN_FILE__ src/crypto/MD5.js
-/*	Return to a port of Paul Johnstone's MD5 implementation
- *	http://pajhome.org.uk/crypt/md5/index.html
- *
- *	Copyright (C) Paul Johnston 1999 - 2002.
- *	Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * 	Distributed under the BSD License
- *
- *	Dojo port by Tom Trenka
- *
- *	2005-12-7
- *	All conversions are internalized (no dependencies)
- *	implemented getHMAC for message digest auth.
- */
+/*
+	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.crypto");
 dojo.provide("dojo.crypto.MD5");
 dojo.crypto.MD5 = new function () {
@@ -44734,6 +86264,31 @@
 }();
 
 
+__CPAN_FILE__ src/crypto/SHA256.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.crypto.SHA256"], ["require", "dojo.crypto"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.crypto.SHA256");
+	dojo.require("dojo.crypto");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.crypto.SHA256");
+	dojo.crypto.SHA256 = new function () {
+		this.compute = function (s) {
+		};
+	}();
+}});
+
+
 __CPAN_FILE__ src/crypto/Blowfish.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -44745,6 +86300,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.crypto");
 dojo.provide("dojo.crypto.Blowfish");
 dojo.crypto.Blowfish = new function () {
@@ -45118,6 +86675,394 @@
 }();
 
 
+__CPAN_FILE__ src/crypto/Blowfish.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.crypto"], ["provide", "dojo.crypto.Blowfish"]], definePackage:function (dojo) {
+	dojo.require("dojo.crypto");
+	dojo.provide("dojo.crypto.Blowfish");
+	dojo.crypto.Blowfish = new function () {
+		var POW2 = Math.pow(2, 2);
+		var POW3 = Math.pow(2, 3);
+		var POW4 = Math.pow(2, 4);
+		var POW8 = Math.pow(2, 8);
+		var POW16 = Math.pow(2, 16);
+		var POW24 = Math.pow(2, 24);
+		var iv = null;
+		var boxes = {p:[608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731], s0:[3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946], s1:[1266315497, 3048417604, 3681880366, 3289982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055], s2:[3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504], s3:[976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]};
+		function add(x, y) {
+			var sum = (x + y) & 4294967295;
+			if (sum < 0) {
+				sum = -sum;
+				return (65536 * ((sum >> 16) ^ 65535)) + (((sum & 65535) ^ 65535) + 1);
+			}
+			return sum;
+		}
+		function split(x) {
+			var r = x & 4294967295;
+			if (r < 0) {
+				r = -r;
+				return [((r & 65535) ^ 65535) + 1, (r >> 16) ^ 65535];
+			}
+			return [r & 65535, (r >> 16)];
+		}
+		function xor(x, y) {
+			var xs = split(x);
+			var ys = split(y);
+			return (65536 * (xs[1] ^ ys[1])) + (xs[0] ^ ys[0]);
+		}
+		function $(v, box) {
+			var d = v & 255;
+			v >>= 8;
+			var c = v & 255;
+			v >>= 8;
+			var b = v & 255;
+			v >>= 8;
+			var a = v & 255;
+			var r = add(box.s0[a], box.s1[b]);
+			r = xor(r, box.s2[c]);
+			return add(r, box.s3[d]);
+		}
+		function eb(o, box) {
+			var l = o.left;
+			var r = o.right;
+			l = xor(l, box.p[0]);
+			r = xor(r, xor($(l, box), box.p[1]));
+			l = xor(l, xor($(r, box), box.p[2]));
+			r = xor(r, xor($(l, box), box.p[3]));
+			l = xor(l, xor($(r, box), box.p[4]));
+			r = xor(r, xor($(l, box), box.p[5]));
+			l = xor(l, xor($(r, box), box.p[6]));
+			r = xor(r, xor($(l, box), box.p[7]));
+			l = xor(l, xor($(r, box), box.p[8]));
+			r = xor(r, xor($(l, box), box.p[9]));
+			l = xor(l, xor($(r, box), box.p[10]));
+			r = xor(r, xor($(l, box), box.p[11]));
+			l = xor(l, xor($(r, box), box.p[12]));
+			r = xor(r, xor($(l, box), box.p[13]));
+			l = xor(l, xor($(r, box), box.p[14]));
+			r = xor(r, xor($(l, box), box.p[15]));
+			l = xor(l, xor($(r, box), box.p[16]));
+			o.right = l;
+			o.left = xor(r, box.p[17]);
+		}
+		function db(o, box) {
+			var l = o.left;
+			var r = o.right;
+			l = xor(l, box.p[17]);
+			r = xor(r, xor($(l, box), box.p[16]));
+			l = xor(l, xor($(r, box), box.p[15]));
+			r = xor(r, xor($(l, box), box.p[14]));
+			l = xor(l, xor($(r, box), box.p[13]));
+			r = xor(r, xor($(l, box), box.p[12]));
+			l = xor(l, xor($(r, box), box.p[11]));
+			r = xor(r, xor($(l, box), box.p[10]));
+			l = xor(l, xor($(r, box), box.p[9]));
+			r = xor(r, xor($(l, box), box.p[8]));
+			l = xor(l, xor($(r, box), box.p[7]));
+			r = xor(r, xor($(l, box), box.p[6]));
+			l = xor(l, xor($(r, box), box.p[5]));
+			r = xor(r, xor($(l, box), box.p[4]));
+			l = xor(l, xor($(r, box), box.p[3]));
+			r = xor(r, xor($(l, box), box.p[2]));
+			l = xor(l, xor($(r, box), box.p[1]));
+			o.right = l;
+			o.left = xor(r, box.p[0]);
+		}
+		function init(key) {
+			var k = key;
+			if (typeof (k) == "string") {
+				var a = [];
+				for (var i = 0; i < k.length; i++) {
+					a.push(k.charCodeAt(i) & 255);
+				}
+				k = a;
+			}
+			var box = {p:[], s0:[], s1:[], s2:[], s3:[]};
+			for (var i = 0; i < boxes.p.length; i++) {
+				box.p.push(boxes.p[i]);
+			}
+			for (var i = 0; i < boxes.s0.length; i++) {
+				box.s0.push(boxes.s0[i]);
+			}
+			for (var i = 0; i < boxes.s1.length; i++) {
+				box.s1.push(boxes.s1[i]);
+			}
+			for (var i = 0; i < boxes.s2.length; i++) {
+				box.s2.push(boxes.s2[i]);
+			}
+			for (var i = 0; i < boxes.s3.length; i++) {
+				box.s3.push(boxes.s3[i]);
+			}
+			var pos = 0;
+			var data = 0;
+			for (var i = 0; i < box.p.length; i++) {
+				for (var j = 0; j < 4; j++) {
+					data = (data * POW8) | k[pos];
+					if (++pos == k.length) {
+						pos = 0;
+					}
+				}
+				box.p[i] = xor(box.p[i], data);
+			}
+			var res = {left:0, right:0};
+			for (var i = 0; i < box.p.length; ) {
+				eb(res, box);
+				box.p[i++] = res.left;
+				box.p[i++] = res.right;
+			}
+			for (var i = 0; i < 4; i++) {
+				for (var j = 0; j < box["s" + i].length; ) {
+					eb(res, box);
+					box["s" + i][j++] = res.left;
+					box["s" + i][j++] = res.right;
+				}
+			}
+			return box;
+		}
+		function toBase64(ba) {
+			var p = "=";
+			var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+			var s = [];
+			var l = ba.length;
+			var rm = l % 3;
+			var x = l - rm;
+			for (var i = 0; i < x; ) {
+				var t = ba[i++] << 16 | ba[i++] << 8 | ba[i++];
+				s.push(tab.charAt((t >>> 18) & 63));
+				s.push(tab.charAt((t >>> 12) & 63));
+				s.push(tab.charAt((t >>> 6) & 63));
+				s.push(tab.charAt(t & 63));
+			}
+			switch (rm) {
+			  case 2:
+				var t = ba[i++] << 16 | ba[i++] << 8;
+				s.push(tab.charAt((t >>> 18) & 63));
+				s.push(tab.charAt((t >>> 12) & 63));
+				s.push(tab.charAt((t >>> 6) & 63));
+				s.push(p);
+				break;
+			  case 1:
+				var t = ba[i++] << 16;
+				s.push(tab.charAt((t >>> 18) & 63));
+				s.push(tab.charAt((t >>> 12) & 63));
+				s.push(p);
+				s.push(p);
+				break;
+			}
+			return s.join("");
+		}
+		function fromBase64(str) {
+			var s = str.split("");
+			var p = "=";
+			var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+			var out = [];
+			var l = s.length;
+			while (s[--l] == p) {
+			}
+			for (var i = 0; i < l; ) {
+				var t = tab.indexOf(s[i++]) << 18 | tab.indexOf(s[i++]) << 12 | tab.indexOf(s[i++]) << 6 | tab.indexOf(s[i++]);
+				out.push((t >>> 16) & 255);
+				out.push((t >>> 8) & 255);
+				out.push(t & 255);
+			}
+			return out;
+		}
+		this.getIV = function (outputType) {
+			var out = outputType || dojo.crypto.outputTypes.Base64;
+			switch (out) {
+			  case dojo.crypto.outputTypes.Hex:
+				var s = [];
+				for (var i = 0; i < iv.length; i++) {
+					s.push((iv[i]).toString(16));
+				}
+				return s.join("");
+			  case dojo.crypto.outputTypes.String:
+				return iv.join("");
+			  case dojo.crypto.outputTypes.Raw:
+				return iv;
+			  default:
+				return toBase64(iv);
+			}
+		};
+		this.setIV = function (data, inputType) {
+			var ip = inputType || dojo.crypto.outputTypes.Base64;
+			var ba = null;
+			switch (ip) {
+			  case dojo.crypto.outputTypes.String:
+				ba = [];
+				for (var i = 0; i < data.length; i++) {
+					ba.push(data.charCodeAt(i));
+				}
+				break;
+			  case dojo.crypto.outputTypes.Hex:
+				ba = [];
+				var i = 0;
+				while (i + 1 < data.length) {
+					ba.push(parseInt(data.substr(i, 2), 16));
+					i += 2;
+				}
+				break;
+			  case dojo.crypto.outputTypes.Raw:
+				ba = data;
+				break;
+			  default:
+				ba = fromBase64(data);
+				break;
+			}
+			iv = {};
+			iv.left = ba[0] * POW24 | ba[1] * POW16 | ba[2] * POW8 | ba[3];
+			iv.right = ba[4] * POW24 | ba[5] * POW16 | ba[6] * POW8 | ba[7];
+		};
+		this.encrypt = function (plaintext, key, ao) {
+			var out = dojo.crypto.outputTypes.Base64;
+			var mode = dojo.crypto.cipherModes.EBC;
+			if (ao) {
+				if (ao.outputType) {
+					out = ao.outputType;
+				}
+				if (ao.cipherMode) {
+					mode = ao.cipherMode;
+				}
+			}
+			var bx = init(key);
+			var padding = 8 - (plaintext.length & 7);
+			for (var i = 0; i < padding; i++) {
+				plaintext += String.fromCharCode(padding);
+			}
+			var cipher = [];
+			var count = plaintext.length >> 3;
+			var pos = 0;
+			var o = {};
+			var isCBC = (mode == dojo.crypto.cipherModes.CBC);
+			var vector = {left:iv.left || null, right:iv.right || null};
+			for (var i = 0; i < count; i++) {
+				o.left = plaintext.charCodeAt(pos) * POW24 | plaintext.charCodeAt(pos + 1) * POW16 | plaintext.charCodeAt(pos + 2) * POW8 | plaintext.charCodeAt(pos + 3);
+				o.right = plaintext.charCodeAt(pos + 4) * POW24 | plaintext.charCodeAt(pos + 5) * POW16 | plaintext.charCodeAt(pos + 6) * POW8 | plaintext.charCodeAt(pos + 7);
+				if (isCBC) {
+					o.left = xor(o.left, vector.left);
+					o.right = xor(o.right, vector.right);
+				}
+				eb(o, bx);
+				if (isCBC) {
+					vector.left = o.left;
+					vector.right = o.right;
+					dojo.crypto.outputTypes.Hex;
+				}
+				cipher.push((o.left >> 24) & 255);
+				cipher.push((o.left >> 16) & 255);
+				cipher.push((o.left >> 8) & 255);
+				cipher.push(o.left & 255);
+				cipher.push((o.right >> 24) & 255);
+				cipher.push((o.right >> 16) & 255);
+				cipher.push((o.right >> 8) & 255);
+				cipher.push(o.right & 255);
+				pos += 8;
+			}
+			switch (out) {
+			  case dojo.crypto.outputTypes.Hex:
+				var s = [];
+				for (var i = 0; i < cipher.length; i++) {
+					s.push((cipher[i]).toString(16));
+				}
+				return s.join("");
+			  case dojo.crypto.outputTypes.String:
+				return cipher.join("");
+			  case dojo.crypto.outputTypes.Raw:
+				return cipher;
+			  default:
+				return toBase64(cipher);
+			}
+		};
+		this.decrypt = function (ciphertext, key, ao) {
+			var ip = dojo.crypto.outputTypes.Base64;
+			var mode = dojo.crypto.cipherModes.EBC;
+			if (ao) {
+				if (ao.outputType) {
+					ip = ao.outputType;
+				}
+				if (ao.cipherMode) {
+					mode = ao.cipherMode;
+				}
+			}
+			var bx = init(key);
+			var pt = [];
+			var c = null;
+			switch (ip) {
+			  case dojo.crypto.outputTypes.Hex:
+				c = [];
+				var i = 0;
+				while (i + 1 < ciphertext.length) {
+					c.push(parseInt(ciphertext.substr(i, 2), 16));
+					i += 2;
+				}
+				break;
+			  case dojo.crypto.outputTypes.String:
+				c = [];
+				for (var i = 0; i < ciphertext.length; i++) {
+					c.push(ciphertext.charCodeAt(i));
+				}
+				break;
+			  case dojo.crypto.outputTypes.Raw:
+				c = ciphertext;
+				break;
+			  default:
+				c = fromBase64(ciphertext);
+				break;
+			}
+			var count = c.length >> 3;
+			var pos = 0;
+			var o = {};
+			var isCBC = (mode == dojo.crypto.cipherModes.CBC);
+			var vector = {left:iv.left || null, right:iv.right || null};
+			for (var i = 0; i < count; i++) {
+				o.left = c[pos] * POW24 | c[pos + 1] * POW16 | c[pos + 2] * POW8 | c[pos + 3];
+				o.right = c[pos + 4] * POW24 | c[pos + 5] * POW16 | c[pos + 6] * POW8 | c[pos + 7];
+				if (isCBC) {
+					var left = o.left;
+					var right = o.right;
+				}
+				db(o, bx);
+				if (isCBC) {
+					o.left = xor(o.left, vector.left);
+					o.right = xor(o.right, vector.right);
+					vector.left = left;
+					vector.right = right;
+				}
+				pt.push((o.left >> 24) & 255);
+				pt.push((o.left >> 16) & 255);
+				pt.push((o.left >> 8) & 255);
+				pt.push(o.left & 255);
+				pt.push((o.right >> 24) & 255);
+				pt.push((o.right >> 16) & 255);
+				pt.push((o.right >> 8) & 255);
+				pt.push(o.right & 255);
+				pos += 8;
+			}
+			if (pt[pt.length - 1] == pt[pt.length - 2] || pt[pt.length - 1] == 1) {
+				var n = pt[pt.length - 1];
+				pt.splice(pt.length - n, n);
+			}
+			for (var i = 0; i < pt.length; i++) {
+				pt[i] = String.fromCharCode(pt[i]);
+			}
+			return pt.join("");
+		};
+		this.setIV("0000000000000000", dojo.crypto.outputTypes.Hex);
+	}();
+}});
+
+
 __CPAN_FILE__ src/crypto/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -45129,23 +87074,421 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.crypto", "dojo.crypto.MD5"]});
 dojo.provide("dojo.crypto.*");
 
 
+__CPAN_FILE__ src/crypto/SHA1.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.crypto"], ["provide", "dojo.crypto.SHA1"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.require("dojo.crypto");
+	dojo.provide("dojo.crypto.SHA1");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.crypto.SHA1");
+	dojo.crypto.SHA1 = new function () {
+		var chrsz = 8;
+		var mask = (1 << chrsz) - 1;
+		function toWord(s) {
+			var wa = [];
+			for (var i = 0; i < s.length * chrsz; i += chrsz) {
+				wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32);
+			}
+			return wa;
+		}
+		function toString(wa) {
+			var s = [];
+			for (var i = 0; i < wa.length * 32; i += chrsz) {
+				s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask));
+			}
+			return s.join("");
+		}
+		function toHex(wa) {
+			var h = "0123456789abcdef";
+			var s = [];
+			for (var i = 0; i < wa.length * 4; i++) {
+				s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15));
+			}
+			return s.join("");
+		}
+		function toBase64(wa) {
+			var p = "=";
+			var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+			var s = [];
+			for (var i = 0; i < wa.length * 4; i += 3) {
+				var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);
+				for (var j = 0; j < 4; j++) {
+					if (i * 8 + j * 6 > wa.length * 32) {
+						s.push(p);
+					} else {
+						s.push(tab.charAt((t >> 6 * (3 - j)) & 63));
+					}
+				}
+			}
+			return s.join("");
+		}
+		function add(x, y) {
+			var l = (x & 65535) + (y & 65535);
+			var m = (x >> 16) + (y >> 16) + (l >> 16);
+			return (m << 16) | (l & 65535);
+		}
+		function r(x, n) {
+			return (x << n) | (x >>> (32 - n));
+		}
+		function f(u, v, w) {
+			return ((u & v) | (~u & w));
+		}
+		function g(u, v, w) {
+			return ((u & v) | (u & w) | (v & w));
+		}
+		function h(u, v, w) {
+			return (u ^ v ^ w);
+		}
+		function fn(i, u, v, w) {
+			if (i < 20) {
+				return f(u, v, w);
+			}
+			if (i < 40) {
+				return h(u, v, w);
+			}
+			if (i < 60) {
+				return g(u, v, w);
+			}
+			return h(u, v, w);
+		}
+		function cnst(i) {
+			if (i < 20) {
+				return 1518500249;
+			}
+			if (i < 40) {
+				return 1859775393;
+			}
+			if (i < 60) {
+				return -1894007588;
+			}
+			return -899497514;
+		}
+		function core(x, len) {
+			x[len >> 5] |= 128 << (24 - len % 32);
+			x[((len + 64 >> 9) << 4) + 15] = len;
+			var w = [];
+			var a = 1732584193;
+			var b = -271733879;
+			var c = -1732584194;
+			var d = 271733878;
+			var e = -1009589776;
+			for (var i = 0; i < x.length; i += 16) {
+				var olda = a;
+				var oldb = b;
+				var oldc = c;
+				var oldd = d;
+				var olde = e;
+				for (var j = 0; j < 80; j++) {
+					if (j < 16) {
+						w[j] = x[i + j];
+					} else {
+						w[j] = r(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
+					}
+					var t = add(add(r(a, 5), fn(j, b, c, d)), add(add(e, w[j]), cnst(j)));
+					e = d;
+					d = c;
+					c = r(b, 30);
+					b = a;
+					a = t;
+				}
+				a = add(a, olda);
+				b = add(b, oldb);
+				c = add(c, oldc);
+				d = add(d, oldd);
+				e = add(e, olde);
+			}
+			return [a, b, c, d, e];
+		}
+		function hmac(data, key) {
+			var wa = toWord(key);
+			if (wa.length > 16) {
+				wa = core(wa, key.length * chrsz);
+			}
+			var l = [], r = [];
+			for (var i = 0; i < 16; i++) {
+				l[i] = wa[i] ^ 909522486;
+				r[i] = wa[i] ^ 1549556828;
+			}
+			var h = core(l.concat(toWord(data)), 512 + data.length * chrsz);
+			return core(r.concat(h), 640);
+		}
+		this.compute = function (data, outputType) {
+			var out = outputType || dojo.crypto.outputTypes.Base64;
+			switch (out) {
+			  case dojo.crypto.outputTypes.Hex:
+				return toHex(core(toWord(data), data.length * chrsz));
+			  case dojo.crypto.outputTypes.String:
+				return toString(core(toWord(data), data.length * chrsz));
+			  default:
+				return toBase64(core(toWord(data), data.length * chrsz));
+			}
+		};
+		this.getHMAC = function (data, key, outputType) {
+			var out = outputType || dojo.crypto.outputTypes.Base64;
+			switch (out) {
+			  case dojo.crypto.outputTypes.Hex:
+				return toHex(hmac(data, key));
+			  case dojo.crypto.outputTypes.String:
+				return toString(hmac(data, key));
+			  default:
+				return toBase64(hmac(data, key));
+			}
+		};
+	}();
+}});
+
+
+__CPAN_FILE__ src/crypto/MD5.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.crypto"], ["provide", "dojo.crypto.MD5"]], definePackage:function (dojo) {
+	dojo.require("dojo.crypto");
+	dojo.provide("dojo.crypto.MD5");
+	dojo.crypto.MD5 = new function () {
+		var chrsz = 8;
+		var mask = (1 << chrsz) - 1;
+		function toWord(s) {
+			var wa = [];
+			for (var i = 0; i < s.length * chrsz; i += chrsz) {
+				wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32);
+			}
+			return wa;
+		}
+		function toString(wa) {
+			var s = [];
+			for (var i = 0; i < wa.length * 32; i += chrsz) {
+				s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask));
+			}
+			return s.join("");
+		}
+		function toHex(wa) {
+			var h = "0123456789abcdef";
+			var s = [];
+			for (var i = 0; i < wa.length * 4; i++) {
+				s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15));
+			}
+			return s.join("");
+		}
+		function toBase64(wa) {
+			var p = "=";
+			var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+			var s = [];
+			for (var i = 0; i < wa.length * 4; i += 3) {
+				var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);
+				for (var j = 0; j < 4; j++) {
+					if (i * 8 + j * 6 > wa.length * 32) {
+						s.push(p);
+					} else {
+						s.push(tab.charAt((t >> 6 * (3 - j)) & 63));
+					}
+				}
+			}
+			return s.join("");
+		}
+		function add(x, y) {
+			var l = (x & 65535) + (y & 65535);
+			var m = (x >> 16) + (y >> 16) + (l >> 16);
+			return (m << 16) | (l & 65535);
+		}
+		function R(n, c) {
+			return (n << c) | (n >>> (32 - c));
+		}
+		function C(q, a, b, x, s, t) {
+			return add(R(add(add(a, q), add(x, t)), s), b);
+		}
+		function FF(a, b, c, d, x, s, t) {
+			return C((b & c) | ((~b) & d), a, b, x, s, t);
+		}
+		function GG(a, b, c, d, x, s, t) {
+			return C((b & d) | (c & (~d)), a, b, x, s, t);
+		}
+		function HH(a, b, c, d, x, s, t) {
+			return C(b ^ c ^ d, a, b, x, s, t);
+		}
+		function II(a, b, c, d, x, s, t) {
+			return C(c ^ (b | (~d)), a, b, x, s, t);
+		}
+		function core(x, len) {
+			x[len >> 5] |= 128 << ((len) % 32);
+			x[(((len + 64) >>> 9) << 4) + 14] = len;
+			var a = 1732584193;
+			var b = -271733879;
+			var c = -1732584194;
+			var d = 271733878;
+			for (var i = 0; i < x.length; i += 16) {
+				var olda = a;
+				var oldb = b;
+				var oldc = c;
+				var oldd = d;
+				a = FF(a, b, c, d, x[i + 0], 7, -680876936);
+				d = FF(d, a, b, c, x[i + 1], 12, -389564586);
+				c = FF(c, d, a, b, x[i + 2], 17, 606105819);
+				b = FF(b, c, d, a, x[i + 3], 22, -1044525330);
+				a = FF(a, b, c, d, x[i + 4], 7, -176418897);
+				d = FF(d, a, b, c, x[i + 5], 12, 1200080426);
+				c = FF(c, d, a, b, x[i + 6], 17, -1473231341);
+				b = FF(b, c, d, a, x[i + 7], 22, -45705983);
+				a = FF(a, b, c, d, x[i + 8], 7, 1770035416);
+				d = FF(d, a, b, c, x[i + 9], 12, -1958414417);
+				c = FF(c, d, a, b, x[i + 10], 17, -42063);
+				b = FF(b, c, d, a, x[i + 11], 22, -1990404162);
+				a = FF(a, b, c, d, x[i + 12], 7, 1804603682);
+				d = FF(d, a, b, c, x[i + 13], 12, -40341101);
+				c = FF(c, d, a, b, x[i + 14], 17, -1502002290);
+				b = FF(b, c, d, a, x[i + 15], 22, 1236535329);
+				a = GG(a, b, c, d, x[i + 1], 5, -165796510);
+				d = GG(d, a, b, c, x[i + 6], 9, -1069501632);
+				c = GG(c, d, a, b, x[i + 11], 14, 643717713);
+				b = GG(b, c, d, a, x[i + 0], 20, -373897302);
+				a = GG(a, b, c, d, x[i + 5], 5, -701558691);
+				d = GG(d, a, b, c, x[i + 10], 9, 38016083);
+				c = GG(c, d, a, b, x[i + 15], 14, -660478335);
+				b = GG(b, c, d, a, x[i + 4], 20, -405537848);
+				a = GG(a, b, c, d, x[i + 9], 5, 568446438);
+				d = GG(d, a, b, c, x[i + 14], 9, -1019803690);
+				c = GG(c, d, a, b, x[i + 3], 14, -187363961);
+				b = GG(b, c, d, a, x[i + 8], 20, 1163531501);
+				a = GG(a, b, c, d, x[i + 13], 5, -1444681467);
+				d = GG(d, a, b, c, x[i + 2], 9, -51403784);
+				c = GG(c, d, a, b, x[i + 7], 14, 1735328473);
+				b = GG(b, c, d, a, x[i + 12], 20, -1926607734);
+				a = HH(a, b, c, d, x[i + 5], 4, -378558);
+				d = HH(d, a, b, c, x[i + 8], 11, -2022574463);
+				c = HH(c, d, a, b, x[i + 11], 16, 1839030562);
+				b = HH(b, c, d, a, x[i + 14], 23, -35309556);
+				a = HH(a, b, c, d, x[i + 1], 4, -1530992060);
+				d = HH(d, a, b, c, x[i + 4], 11, 1272893353);
+				c = HH(c, d, a, b, x[i + 7], 16, -155497632);
+				b = HH(b, c, d, a, x[i + 10], 23, -1094730640);
+				a = HH(a, b, c, d, x[i + 13], 4, 681279174);
+				d = HH(d, a, b, c, x[i + 0], 11, -358537222);
+				c = HH(c, d, a, b, x[i + 3], 16, -722521979);
+				b = HH(b, c, d, a, x[i + 6], 23, 76029189);
+				a = HH(a, b, c, d, x[i + 9], 4, -640364487);
+				d = HH(d, a, b, c, x[i + 12], 11, -421815835);
+				c = HH(c, d, a, b, x[i + 15], 16, 530742520);
+				b = HH(b, c, d, a, x[i + 2], 23, -995338651);
+				a = II(a, b, c, d, x[i + 0], 6, -198630844);
+				d = II(d, a, b, c, x[i + 7], 10, 1126891415);
+				c = II(c, d, a, b, x[i + 14], 15, -1416354905);
+				b = II(b, c, d, a, x[i + 5], 21, -57434055);
+				a = II(a, b, c, d, x[i + 12], 6, 1700485571);
+				d = II(d, a, b, c, x[i + 3], 10, -1894986606);
+				c = II(c, d, a, b, x[i + 10], 15, -1051523);
+				b = II(b, c, d, a, x[i + 1], 21, -2054922799);
+				a = II(a, b, c, d, x[i + 8], 6, 1873313359);
+				d = II(d, a, b, c, x[i + 15], 10, -30611744);
+				c = II(c, d, a, b, x[i + 6], 15, -1560198380);
+				b = II(b, c, d, a, x[i + 13], 21, 1309151649);
+				a = II(a, b, c, d, x[i + 4], 6, -145523070);
+				d = II(d, a, b, c, x[i + 11], 10, -1120210379);
+				c = II(c, d, a, b, x[i + 2], 15, 718787259);
+				b = II(b, c, d, a, x[i + 9], 21, -343485551);
+				a = add(a, olda);
+				b = add(b, oldb);
+				c = add(c, oldc);
+				d = add(d, oldd);
+			}
+			return [a, b, c, d];
+		}
+		function hmac(data, key) {
+			var wa = toWord(key);
+			if (wa.length > 16) {
+				wa = core(wa, key.length * chrsz);
+			}
+			var l = [], r = [];
+			for (var i = 0; i < 16; i++) {
+				l[i] = wa[i] ^ 909522486;
+				r[i] = wa[i] ^ 1549556828;
+			}
+			var h = core(l.concat(toWord(data)), 512 + data.length * chrsz);
+			return core(r.concat(h), 640);
+		}
+		this.compute = function (data, outputType) {
+			var out = outputType || dojo.crypto.outputTypes.Base64;
+			switch (out) {
+			  case dojo.crypto.outputTypes.Hex:
+				return toHex(core(toWord(data), data.length * chrsz));
+			  case dojo.crypto.outputTypes.String:
+				return toString(core(toWord(data), data.length * chrsz));
+			  default:
+				return toBase64(core(toWord(data), data.length * chrsz));
+			}
+		};
+		this.getHMAC = function (data, key, outputType) {
+			var out = outputType || dojo.crypto.outputTypes.Base64;
+			switch (out) {
+			  case dojo.crypto.outputTypes.Hex:
+				return toHex(hmac(data, key));
+			  case dojo.crypto.outputTypes.String:
+				return toString(hmac(data, key));
+			  default:
+				return toBase64(hmac(data, key));
+			}
+		};
+	}();
+}});
+
+
+__CPAN_FILE__ src/crypto/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.crypto", "dojo.crypto.MD5"]}], ["provide", "dojo.crypto.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.crypto", "dojo.crypto.MD5"]});
+	dojo.provide("dojo.crypto.*");
+}});
+
+
 __CPAN_FILE__ src/crypto/SHA1.js
 /*
- *	A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
- *	in FIPS PUB 180-1
- *
- * 	Version 2.1a Copyright Paul Johnston 2000 - 2002.
- * 	Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * 	Distributed under the BSD License
- * 	See http://pajhome.org.uk/crypt/md5 for details.
- *
- *	Dojo port by Tom Trenka
- */
+	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.crypto");
 dojo.provide("dojo.crypto.SHA1");
 dojo.require("dojo.experimental");
@@ -45307,6 +87650,67 @@
 
 
 __CPAN_DIR__ src/cal
+__CPAN_FILE__ src/cal/textDirectory.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.cal.textDirectory"], ["require", "dojo.string"]], definePackage:function (dojo) {
+	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;
+	};
+}});
+
+
 __CPAN_FILE__ src/cal/textDirectory.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -45318,6 +87722,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.cal.textDirectory");
 dojo.require("dojo.string");
 dojo.cal.textDirectory.Property = function (line) {
@@ -45364,6 +87770,577 @@
 };
 
 
+__CPAN_FILE__ src/cal/iCalendar.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.cal.iCalendar"], ["require", "dojo.lang.common"], ["require", "dojo.cal.textDirectory"], ["require", "dojo.date.common"], ["require", "dojo.date.serialize"]], definePackage:function (dojo) {
+	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);
+}});
+
+
 __CPAN_FILE__ src/cal/iCalendar.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -45375,6 +88352,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.cal.iCalendar");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.cal.textDirectory");
@@ -45943,6 +88922,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.date.common");
 dojo.date.setDayOfYear = function (dateObject, dayOfYear) {
 	dateObject.setMonth(0);
@@ -46248,6 +89229,139 @@
 };
 
 
+__CPAN_FILE__ src/date/serialize.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.date.serialize"], ["require", "dojo.string.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.date.serialize");
+	dojo.require("dojo.string.common");
+	dojo.date.setIso8601 = function (dateObject, formattedString) {
+		var comps = (formattedString.indexOf("T") == -1) ? formattedString.split(" ") : formattedString.split("T");
+		dateObject = dojo.date.setIso8601Date(dateObject, comps[0]);
+		if (comps.length == 2) {
+			dateObject = dojo.date.setIso8601Time(dateObject, comps[1]);
+		}
+		return dateObject;
+	};
+	dojo.date.fromIso8601 = function (formattedString) {
+		return dojo.date.setIso8601(new Date(0, 0), formattedString);
+	};
+	dojo.date.setIso8601Date = function (dateObject, formattedString) {
+		var regexp = "^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|" + "(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$";
+		var d = formattedString.match(new RegExp(regexp));
+		if (!d) {
+			dojo.debug("invalid date string: " + formattedString);
+			return null;
+		}
+		var year = d[1];
+		var month = d[4];
+		var date = d[6];
+		var dayofyear = d[8];
+		var week = d[10];
+		var dayofweek = d[12] ? d[12] : 1;
+		dateObject.setFullYear(year);
+		if (dayofyear) {
+			dateObject.setMonth(0);
+			dateObject.setDate(Number(dayofyear));
+		} else {
+			if (week) {
+				dateObject.setMonth(0);
+				dateObject.setDate(1);
+				var gd = dateObject.getDay();
+				var day = gd ? gd : 7;
+				var offset = Number(dayofweek) + (7 * Number(week));
+				if (day <= 4) {
+					dateObject.setDate(offset + 1 - day);
+				} else {
+					dateObject.setDate(offset + 8 - day);
+				}
+			} else {
+				if (month) {
+					dateObject.setDate(1);
+					dateObject.setMonth(month - 1);
+				}
+				if (date) {
+					dateObject.setDate(date);
+				}
+			}
+		}
+		return dateObject;
+	};
+	dojo.date.fromIso8601Date = function (formattedString) {
+		return dojo.date.setIso8601Date(new Date(0, 0), formattedString);
+	};
+	dojo.date.setIso8601Time = function (dateObject, formattedString) {
+		var timezone = "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$";
+		var d = formattedString.match(new RegExp(timezone));
+		var offset = 0;
+		if (d) {
+			if (d[0] != "Z") {
+				offset = (Number(d[3]) * 60) + Number(d[5]);
+				offset *= ((d[2] == "-") ? 1 : -1);
+			}
+			offset -= dateObject.getTimezoneOffset();
+			formattedString = formattedString.substr(0, formattedString.length - d[0].length);
+		}
+		var regexp = "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(.([0-9]+))?)?)?$";
+		d = formattedString.match(new RegExp(regexp));
+		if (!d) {
+			dojo.debug("invalid time string: " + formattedString);
+			return null;
+		}
+		var hours = d[1];
+		var mins = Number((d[3]) ? d[3] : 0);
+		var secs = (d[5]) ? d[5] : 0;
+		var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0;
+		dateObject.setHours(hours);
+		dateObject.setMinutes(mins);
+		dateObject.setSeconds(secs);
+		dateObject.setMilliseconds(ms);
+		if (offset !== 0) {
+			dateObject.setTime(dateObject.getTime() + offset * 60000);
+		}
+		return dateObject;
+	};
+	dojo.date.fromIso8601Time = function (formattedString) {
+		return dojo.date.setIso8601Time(new Date(0, 0), formattedString);
+	};
+	dojo.date.toRfc3339 = function (dateObject, selector) {
+		if (!dateObject) {
+			dateObject = new Date();
+		}
+		var _ = dojo.string.pad;
+		var formattedDate = [];
+		if (selector != "timeOnly") {
+			var date = [_(dateObject.getFullYear(), 4), _(dateObject.getMonth() + 1, 2), _(dateObject.getDate(), 2)].join("-");
+			formattedDate.push(date);
+		}
+		if (selector != "dateOnly") {
+			var time = [_(dateObject.getHours(), 2), _(dateObject.getMinutes(), 2), _(dateObject.getSeconds(), 2)].join(":");
+			var timezoneOffset = dateObject.getTimezoneOffset();
+			time += (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60), 2) + ":" + _(Math.abs(timezoneOffset) % 60, 2);
+			formattedDate.push(time);
+		}
+		return formattedDate.join("T");
+	};
+	dojo.date.fromRfc3339 = function (rfcDate) {
+		if (rfcDate.indexOf("Tany") != -1) {
+			rfcDate = rfcDate.replace("Tany", "");
+		}
+		var dateObject = new Date();
+		return dojo.date.setIso8601(dateObject, rfcDate);
+	};
+}});
+
+
 __CPAN_FILE__ src/date/serialize.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -46259,6 +89373,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.date.serialize");
 dojo.require("dojo.string.common");
 dojo.date.setIso8601 = function (dateObject, formattedString) {
@@ -46377,6 +89493,57 @@
 };
 
 
+__CPAN_FILE__ src/date/supplemental.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.date.supplemental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.date.supplemental");
+	dojo.date.getFirstDayOfWeek = function (locale) {
+		var firstDay = {mv:5, ae:6, af:6, bh:6, dj:6, dz:6, eg:6, er:6, et:6, iq:6, ir:6, jo:6, ke:6, kw:6, lb:6, ly:6, ma:6, om:6, qa:6, sa:6, sd:6, so:6, tn:6, ye:6, as:0, au:0, az:0, bw:0, ca:0, cn:0, fo:0, ge:0, gl:0, gu:0, hk:0, ie:0, il:0, is:0, jm:0, jp:0, kg:0, kr:0, la:0, mh:0, mo:0, mp:0, mt:0, nz:0, ph:0, pk:0, sg:0, th:0, tt:0, tw:0, um:0, us:0, uz:0, vi:0, za:0, zw:0, et:0, mw:0, ng:0, tj:0, gb:0, sy:4};
+		locale = dojo.hostenv.normalizeLocale(locale);
+		var country = locale.split("-")[1];
+		var dow = firstDay[country];
+		return (typeof dow == "undefined") ? 1 : dow;
+	};
+	dojo.date.getWeekend = function (locale) {
+		var weekendStart = {eg:5, il:5, sy:5, "in":0, ae:4, bh:4, dz:4, iq:4, jo:4, kw:4, lb:4, ly:4, ma:4, om:4, qa:4, sa:4, sd:4, tn:4, ye:4};
+		var weekendEnd = {ae:5, bh:5, dz:5, iq:5, jo:5, kw:5, lb:5, ly:5, ma:5, om:5, qa:5, sa:5, sd:5, tn:5, ye:5, af:5, ir:5, eg:6, il:6, sy:6};
+		locale = dojo.hostenv.normalizeLocale(locale);
+		var country = locale.split("-")[1];
+		var start = weekendStart[country];
+		var end = weekendEnd[country];
+		if (typeof start == "undefined") {
+			start = 6;
+		}
+		if (typeof end == "undefined") {
+			end = 0;
+		}
+		return {start:start, end:end};
+	};
+	dojo.date.isWeekend = function (dateObj, locale) {
+		var weekend = dojo.date.getWeekend(locale);
+		var day = (dateObj || new Date()).getDay();
+		if (weekend.end < weekend.start) {
+			weekend.end += 7;
+			if (day < weekend.start) {
+				day += 7;
+			}
+		}
+		return day >= weekend.start && day <= weekend.end;
+	};
+}});
+
+
 __CPAN_FILE__ src/date/supplemental.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -46388,6 +89555,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.date.supplemental");
 dojo.date.getFirstDayOfWeek = function (locale) {
 	var firstDay = {mv:5, ae:6, af:6, bh:6, dj:6, dz:6, eg:6, er:6, et:6, iq:6, ir:6, jo:6, ke:6, kw:6, lb:6, ly:6, ma:6, om:6, qa:6, sa:6, sd:6, so:6, tn:6, ye:6, as:0, au:0, az:0, bw:0, ca:0, cn:0, fo:0, ge:0, gl:0, gu:0, hk:0, ie:0, il:0, is:0, jm:0, jp:0, kg:0, kr:0, la:0, mh:0, mo:0, mp:0, mt:0, nz:0, ph:0, pk:0, sg:0, th:0, tt:0, tw:0, um:0, us:0, uz:0, vi:0, za:0, zw:0, et:0, mw:0, ng:0, tj:0, gb:0, sy:4};
@@ -46435,6 +89604,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.date.format");
 dojo.require("dojo.date.common");
 dojo.require("dojo.date.supplemental");
@@ -46443,8 +89614,8 @@
 dojo.require("dojo.lang.func");
 dojo.require("dojo.string.common");
 dojo.require("dojo.i18n.common");
-dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "de,en,es,fi,fr,hu,ja,it,ko,nl,pt,sv,zh,pt-br,zh-cn,zh-hk,zh-tw,ROOT");
-dojo.requireLocalization("dojo.i18n.calendar", "gregorianExtras", null, "ja,zh,ROOT");
+dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br");
+dojo.requireLocalization("dojo.i18n.calendar", "gregorianExtras", null, "zh,ROOT,ja");
 (function () {
 	dojo.date.format = function (dateObject, options) {
 		if (typeof options == "string") {
@@ -47137,6 +90308,1041 @@
 };
 
 
+__CPAN_FILE__ src/date/format.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.date.format"], ["require", "dojo.date.common"], ["require", "dojo.date.supplemental"], ["require", "dojo.lang.array"], ["require", "dojo.lang.common"], ["require", "dojo.lang.func"], ["require", "dojo.string.common"], ["require", "dojo.i18n.common"], ["xdRequireLocalization", "dojo.i18n.calendar", "gregorian", null, "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br", "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br"], ["xdRequireLocalization", "dojo.i18n.calendar", "gregorianExtras", null, "zh,ROOT,ja", "zh,ROOT,ja"]], definePackage:function (dojo) {
+	dojo.provide("dojo.date.format");
+	dojo.require("dojo.date.common");
+	dojo.require("dojo.date.supplemental");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.string.common");
+	dojo.require("dojo.i18n.common");
+	(function () {
+		dojo.date.format = function (dateObject, options) {
+			if (typeof options == "string") {
+				dojo.deprecated("dojo.date.format", "To format dates with POSIX-style strings, please use dojo.date.strftime instead", "0.5");
+				return dojo.date.strftime(dateObject, options);
+			}
+			function formatPattern(dateObject, pattern) {
+				return pattern.replace(/([a-z])\1*/ig, function (match) {
+					var s;
+					var c = match.charAt(0);
+					var l = match.length;
+					var pad;
+					var widthList = ["abbr", "wide", "narrow"];
+					switch (c) {
+					  case "G":
+						if (l > 3) {
+							dojo.unimplemented("Era format not implemented");
+						}
+						s = info.eras[dateObject.getFullYear() < 0 ? 1 : 0];
+						break;
+					  case "y":
+						s = dateObject.getFullYear();
+						switch (l) {
+						  case 1:
+							break;
+						  case 2:
+							s = String(s).substr(-2);
+							break;
+						  default:
+							pad = true;
+						}
+						break;
+					  case "Q":
+					  case "q":
+						s = Math.ceil((dateObject.getMonth() + 1) / 3);
+						switch (l) {
+						  case 1:
+						  case 2:
+							pad = true;
+							break;
+						  case 3:
+						  case 4:
+							dojo.unimplemented("Quarter format not implemented");
+						}
+						break;
+					  case "M":
+					  case "L":
+						var m = dateObject.getMonth();
+						var width;
+						switch (l) {
+						  case 1:
+						  case 2:
+							s = m + 1;
+							pad = true;
+							break;
+						  case 3:
+						  case 4:
+						  case 5:
+							width = widthList[l - 3];
+							break;
+						}
+						if (width) {
+							var type = (c == "L") ? "standalone" : "format";
+							var prop = ["months", type, width].join("-");
+							s = info[prop][m];
+						}
+						break;
+					  case "w":
+						var firstDay = 0;
+						s = dojo.date.getWeekOfYear(dateObject, firstDay);
+						pad = true;
+						break;
+					  case "d":
+						s = dateObject.getDate();
+						pad = true;
+						break;
+					  case "D":
+						s = dojo.date.getDayOfYear(dateObject);
+						pad = true;
+						break;
+					  case "E":
+					  case "e":
+					  case "c":
+						var d = dateObject.getDay();
+						var width;
+						switch (l) {
+						  case 1:
+						  case 2:
+							if (c == "e") {
+								var first = dojo.date.getFirstDayOfWeek(options.locale);
+								d = (d - first + 7) % 7;
+							}
+							if (c != "c") {
+								s = d + 1;
+								pad = true;
+								break;
+							}
+						  case 3:
+						  case 4:
+						  case 5:
+							width = widthList[l - 3];
+							break;
+						}
+						if (width) {
+							var type = (c == "c") ? "standalone" : "format";
+							var prop = ["days", type, width].join("-");
+							s = info[prop][d];
+						}
+						break;
+					  case "a":
+						var timePeriod = (dateObject.getHours() < 12) ? "am" : "pm";
+						s = info[timePeriod];
+						break;
+					  case "h":
+					  case "H":
+					  case "K":
+					  case "k":
+						var h = dateObject.getHours();
+						switch (c) {
+						  case "h":
+							s = (h % 12) || 12;
+							break;
+						  case "H":
+							s = h;
+							break;
+						  case "K":
+							s = (h % 12);
+							break;
+						  case "k":
+							s = h || 24;
+							break;
+						}
+						pad = true;
+						break;
+					  case "m":
+						s = dateObject.getMinutes();
+						pad = true;
+						break;
+					  case "s":
+						s = dateObject.getSeconds();
+						pad = true;
+						break;
+					  case "S":
+						s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l - 3));
+						break;
+					  case "v":
+					  case "z":
+						s = dojo.date.getTimezoneName(dateObject);
+						if (s) {
+							break;
+						}
+						l = 4;
+					  case "Z":
+						var offset = dateObject.getTimezoneOffset();
+						var tz = [(offset <= 0 ? "+" : "-"), dojo.string.pad(Math.floor(Math.abs(offset) / 60), 2), dojo.string.pad(Math.abs(offset) % 60, 2)];
+						if (l == 4) {
+							tz.splice(0, 0, "GMT");
+							tz.splice(3, 0, ":");
+						}
+						s = tz.join("");
+						break;
+					  case "Y":
+					  case "u":
+					  case "W":
+					  case "F":
+					  case "g":
+					  case "A":
+						dojo.debug(match + " modifier not yet implemented");
+						s = "?";
+						break;
+					  default:
+						dojo.raise("dojo.date.format: invalid pattern char: " + pattern);
+					}
+					if (pad) {
+						s = dojo.string.pad(s, l);
+					}
+					return s;
+				});
+			}
+			options = options || {};
+			var locale = dojo.hostenv.normalizeLocale(options.locale);
+			var formatLength = options.formatLength || "full";
+			var info = dojo.date._getGregorianBundle(locale);
+			var str = [];
+			var sauce = dojo.lang.curry(this, formatPattern, dateObject);
+			if (options.selector != "timeOnly") {
+				var datePattern = options.datePattern || info["dateFormat-" + formatLength];
+				if (datePattern) {
+					str.push(_processPattern(datePattern, sauce));
+				}
+			}
+			if (options.selector != "dateOnly") {
+				var timePattern = options.timePattern || info["timeFormat-" + formatLength];
+				if (timePattern) {
+					str.push(_processPattern(timePattern, sauce));
+				}
+			}
+			var result = str.join(" ");
+			return result;
+		};
+		dojo.date.parse = function (value, options) {
+			options = options || {};
+			var locale = dojo.hostenv.normalizeLocale(options.locale);
+			var info = dojo.date._getGregorianBundle(locale);
+			var formatLength = options.formatLength || "full";
+			if (!options.selector) {
+				options.selector = "dateOnly";
+			}
+			var datePattern = options.datePattern || info["dateFormat-" + formatLength];
+			var timePattern = options.timePattern || info["timeFormat-" + formatLength];
+			var pattern;
+			if (options.selector == "dateOnly") {
+				pattern = datePattern;
+			} else {
+				if (options.selector == "timeOnly") {
+					pattern = timePattern;
+				} else {
+					if (options.selector == "dateTime") {
+						pattern = datePattern + " " + timePattern;
+					} else {
+						var msg = "dojo.date.parse: Unknown selector param passed: '" + options.selector + "'.";
+						msg += " Defaulting to date pattern.";
+						dojo.debug(msg);
+						pattern = datePattern;
+					}
+				}
+			}
+			var groups = [];
+			var dateREString = _processPattern(pattern, dojo.lang.curry(this, _buildDateTimeRE, groups, info, options));
+			var dateRE = new RegExp("^" + dateREString + "$");
+			var match = dateRE.exec(value);
+			if (!match) {
+				return null;
+			}
+			var widthList = ["abbr", "wide", "narrow"];
+			var result = new Date(1972, 0);
+			var expected = {};
+			for (var i = 1; i < match.length; i++) {
+				var grp = groups[i - 1];
+				var l = grp.length;
+				var v = match[i];
+				switch (grp.charAt(0)) {
+				  case "y":
+					if (l != 2) {
+						result.setFullYear(v);
+						expected.year = v;
+					} else {
+						if (v < 100) {
+							v = Number(v);
+							var year = "" + new Date().getFullYear();
+							var century = year.substring(0, 2) * 100;
+							var yearPart = Number(year.substring(2, 4));
+							var cutoff = Math.min(yearPart + 20, 99);
+							var num = (v < cutoff) ? century + v : century - 100 + v;
+							result.setFullYear(num);
+							expected.year = num;
+						} else {
+							if (options.strict) {
+								return null;
+							}
+							result.setFullYear(v);
+							expected.year = v;
+						}
+					}
+					break;
+				  case "M":
+					if (l > 2) {
+						if (!options.strict) {
+							v = v.replace(/\./g, "");
+							v = v.toLowerCase();
+						}
+						var months = info["months-format-" + widthList[l - 3]].concat();
+						for (var j = 0; j < months.length; j++) {
+							if (!options.strict) {
+								months[j] = months[j].toLowerCase();
+							}
+							if (v == months[j]) {
+								result.setMonth(j);
+								expected.month = j;
+								break;
+							}
+						}
+						if (j == months.length) {
+							dojo.debug("dojo.date.parse: Could not parse month name: '" + v + "'.");
+							return null;
+						}
+					} else {
+						result.setMonth(v - 1);
+						expected.month = v - 1;
+					}
+					break;
+				  case "E":
+				  case "e":
+					if (!options.strict) {
+						v = v.toLowerCase();
+					}
+					var days = info["days-format-" + widthList[l - 3]].concat();
+					for (var j = 0; j < days.length; j++) {
+						if (!options.strict) {
+							days[j] = days[j].toLowerCase();
+						}
+						if (v == days[j]) {
+							break;
+						}
+					}
+					if (j == days.length) {
+						dojo.debug("dojo.date.parse: Could not parse weekday name: '" + v + "'.");
+						return null;
+					}
+					break;
+				  case "d":
+					result.setDate(v);
+					expected.date = v;
+					break;
+				  case "a":
+					var am = options.am || info.am;
+					var pm = options.pm || info.pm;
+					if (!options.strict) {
+						v = v.replace(/\./g, "").toLowerCase();
+						am = am.replace(/\./g, "").toLowerCase();
+						pm = pm.replace(/\./g, "").toLowerCase();
+					}
+					if (options.strict && v != am && v != pm) {
+						dojo.debug("dojo.date.parse: Could not parse am/pm part.");
+						return null;
+					}
+					var hours = result.getHours();
+					if (v == pm && hours < 12) {
+						result.setHours(hours + 12);
+					} else {
+						if (v == am && hours == 12) {
+							result.setHours(0);
+						}
+					}
+					break;
+				  case "K":
+					if (v == 24) {
+						v = 0;
+					}
+				  case "h":
+				  case "H":
+				  case "k":
+					if (v > 23) {
+						dojo.debug("dojo.date.parse: Illegal hours value");
+						return null;
+					}
+					result.setHours(v);
+					break;
+				  case "m":
+					result.setMinutes(v);
+					break;
+				  case "s":
+					result.setSeconds(v);
+					break;
+				  case "S":
+					result.setMilliseconds(v);
+					break;
+				  default:
+					dojo.unimplemented("dojo.date.parse: unsupported pattern char=" + grp.charAt(0));
+				}
+			}
+			if (expected.year && result.getFullYear() != expected.year) {
+				dojo.debug("Parsed year: '" + result.getFullYear() + "' did not match input year: '" + expected.year + "'.");
+				return null;
+			}
+			if (expected.month && result.getMonth() != expected.month) {
+				dojo.debug("Parsed month: '" + result.getMonth() + "' did not match input month: '" + expected.month + "'.");
+				return null;
+			}
+			if (expected.date && result.getDate() != expected.date) {
+				dojo.debug("Parsed day of month: '" + result.getDate() + "' did not match input day of month: '" + expected.date + "'.");
+				return null;
+			}
+			return result;
+		};
+		function _processPattern(pattern, applyPattern, applyLiteral, applyAll) {
+			var identity = function (x) {
+				return x;
+			};
+			applyPattern = applyPattern || identity;
+			applyLiteral = applyLiteral || identity;
+			applyAll = applyAll || identity;
+			var chunks = pattern.match(/(''|[^'])+/g);
+			var literal = false;
+			for (var i = 0; i < chunks.length; i++) {
+				if (!chunks[i]) {
+					chunks[i] = "";
+				} else {
+					chunks[i] = (literal ? applyLiteral : applyPattern)(chunks[i]);
+					literal = !literal;
+				}
+			}
+			return applyAll(chunks.join(""));
+		}
+		function _buildDateTimeRE(groups, info, options, pattern) {
+			return pattern.replace(/([a-z])\1*/ig, function (match) {
+				var s;
+				var c = match.charAt(0);
+				var l = match.length;
+				switch (c) {
+				  case "y":
+					s = "\\d" + ((l == 2) ? "{2,4}" : "+");
+					break;
+				  case "M":
+					s = (l > 2) ? "\\S+" : "\\d{1,2}";
+					break;
+				  case "d":
+					s = "\\d{1,2}";
+					break;
+				  case "E":
+					s = "\\S+";
+					break;
+				  case "h":
+				  case "H":
+				  case "K":
+				  case "k":
+					s = "\\d{1,2}";
+					break;
+				  case "m":
+				  case "s":
+					s = "[0-5]\\d";
+					break;
+				  case "S":
+					s = "\\d{1,3}";
+					break;
+				  case "a":
+					var am = options.am || info.am || "AM";
+					var pm = options.pm || info.pm || "PM";
+					if (options.strict) {
+						s = am + "|" + pm;
+					} else {
+						s = am;
+						s += (am != am.toLowerCase()) ? "|" + am.toLowerCase() : "";
+						s += "|";
+						s += (pm != pm.toLowerCase()) ? pm + "|" + pm.toLowerCase() : pm;
+					}
+					break;
+				  default:
+					dojo.unimplemented("parse of date format, pattern=" + pattern);
+				}
+				if (groups) {
+					groups.push(match);
+				}
+				return "\\s*(" + s + ")\\s*";
+			});
+		}
+	})();
+	dojo.date.strftime = function (dateObject, format, locale) {
+		var padChar = null;
+		function _(s, n) {
+			return dojo.string.pad(s, n || 2, padChar || "0");
+		}
+		var info = dojo.date._getGregorianBundle(locale);
+		function $(property) {
+			switch (property) {
+			  case "a":
+				return dojo.date.getDayShortName(dateObject, locale);
+			  case "A":
+				return dojo.date.getDayName(dateObject, locale);
+			  case "b":
+			  case "h":
+				return dojo.date.getMonthShortName(dateObject, locale);
+			  case "B":
+				return dojo.date.getMonthName(dateObject, locale);
+			  case "c":
+				return dojo.date.format(dateObject, {locale:locale});
+			  case "C":
+				return _(Math.floor(dateObject.getFullYear() / 100));
+			  case "d":
+				return _(dateObject.getDate());
+			  case "D":
+				return $("m") + "/" + $("d") + "/" + $("y");
+			  case "e":
+				if (padChar == null) {
+					padChar = " ";
+				}
+				return _(dateObject.getDate());
+			  case "f":
+				if (padChar == null) {
+					padChar = " ";
+				}
+				return _(dateObject.getMonth() + 1);
+			  case "g":
+				break;
+			  case "G":
+				dojo.unimplemented("unimplemented modifier 'G'");
+				break;
+			  case "F":
+				return $("Y") + "-" + $("m") + "-" + $("d");
+			  case "H":
+				return _(dateObject.getHours());
+			  case "I":
+				return _(dateObject.getHours() % 12 || 12);
+			  case "j":
+				return _(dojo.date.getDayOfYear(dateObject), 3);
+			  case "k":
+				if (padChar == null) {
+					padChar = " ";
+				}
+				return _(dateObject.getHours());
+			  case "l":
+				if (padChar == null) {
+					padChar = " ";
+				}
+				return _(dateObject.getHours() % 12 || 12);
+			  case "m":
+				return _(dateObject.getMonth() + 1);
+			  case "M":
+				return _(dateObject.getMinutes());
+			  case "n":
+				return "\n";
+			  case "p":
+				return info[dateObject.getHours() < 12 ? "am" : "pm"];
+			  case "r":
+				return $("I") + ":" + $("M") + ":" + $("S") + " " + $("p");
+			  case "R":
+				return $("H") + ":" + $("M");
+			  case "S":
+				return _(dateObject.getSeconds());
+			  case "t":
+				return "\t";
+			  case "T":
+				return $("H") + ":" + $("M") + ":" + $("S");
+			  case "u":
+				return String(dateObject.getDay() || 7);
+			  case "U":
+				return _(dojo.date.getWeekOfYear(dateObject));
+			  case "V":
+				return _(dojo.date.getIsoWeekOfYear(dateObject));
+			  case "W":
+				return _(dojo.date.getWeekOfYear(dateObject, 1));
+			  case "w":
+				return String(dateObject.getDay());
+			  case "x":
+				return dojo.date.format(dateObject, {selector:"dateOnly", locale:locale});
+			  case "X":
+				return dojo.date.format(dateObject, {selector:"timeOnly", locale:locale});
+			  case "y":
+				return _(dateObject.getFullYear() % 100);
+			  case "Y":
+				return String(dateObject.getFullYear());
+			  case "z":
+				var timezoneOffset = dateObject.getTimezoneOffset();
+				return (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60)) + ":" + _(Math.abs(timezoneOffset) % 60);
+			  case "Z":
+				return dojo.date.getTimezoneName(dateObject);
+			  case "%":
+				return "%";
+			}
+		}
+		var string = "";
+		var i = 0;
+		var index = 0;
+		var switchCase = null;
+		while ((index = format.indexOf("%", i)) != -1) {
+			string += format.substring(i, index++);
+			switch (format.charAt(index++)) {
+			  case "_":
+				padChar = " ";
+				break;
+			  case "-":
+				padChar = "";
+				break;
+			  case "0":
+				padChar = "0";
+				break;
+			  case "^":
+				switchCase = "upper";
+				break;
+			  case "*":
+				switchCase = "lower";
+				break;
+			  case "#":
+				switchCase = "swap";
+				break;
+			  default:
+				padChar = null;
+				index--;
+				break;
+			}
+			var property = $(format.charAt(index++));
+			switch (switchCase) {
+			  case "upper":
+				property = property.toUpperCase();
+				break;
+			  case "lower":
+				property = property.toLowerCase();
+				break;
+			  case "swap":
+				var compareString = property.toLowerCase();
+				var swapString = "";
+				var j = 0;
+				var ch = "";
+				while (j < property.length) {
+					ch = property.charAt(j);
+					swapString += (ch == compareString.charAt(j)) ? ch.toUpperCase() : ch.toLowerCase();
+					j++;
+				}
+				property = swapString;
+				break;
+			  default:
+				break;
+			}
+			switchCase = null;
+			string += property;
+			i = index;
+		}
+		string += format.substring(i);
+		return string;
+	};
+	(function () {
+		var _customFormats = [];
+		dojo.date.addCustomFormats = function (packageName, bundleName) {
+			_customFormats.push({pkg:packageName, name:bundleName});
+		};
+		dojo.date._getGregorianBundle = function (locale) {
+			var gregorian = {};
+			dojo.lang.forEach(_customFormats, function (desc) {
+				var bundle = dojo.i18n.getLocalization(desc.pkg, desc.name, locale);
+				gregorian = dojo.lang.mixin(gregorian, bundle);
+			}, this);
+			return gregorian;
+		};
+	})();
+	dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorian");
+	dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorianExtras");
+	dojo.date.getNames = function (item, type, use, locale) {
+		var label;
+		var lookup = dojo.date._getGregorianBundle(locale);
+		var props = [item, use, type];
+		if (use == "standAlone") {
+			label = lookup[props.join("-")];
+		}
+		props[1] = "format";
+		return (label || lookup[props.join("-")]).concat();
+	};
+	dojo.date.getDayName = function (dateObject, locale) {
+		return dojo.date.getNames("days", "wide", "format", locale)[dateObject.getDay()];
+	};
+	dojo.date.getDayShortName = function (dateObject, locale) {
+		return dojo.date.getNames("days", "abbr", "format", locale)[dateObject.getDay()];
+	};
+	dojo.date.getMonthName = function (dateObject, locale) {
+		return dojo.date.getNames("months", "wide", "format", locale)[dateObject.getMonth()];
+	};
+	dojo.date.getMonthShortName = function (dateObject, locale) {
+		return dojo.date.getNames("months", "abbr", "format", locale)[dateObject.getMonth()];
+	};
+	dojo.date.toRelativeString = function (dateObject) {
+		var now = new Date();
+		var diff = (now - dateObject) / 1000;
+		var end = " ago";
+		var future = false;
+		if (diff < 0) {
+			future = true;
+			end = " from now";
+			diff = -diff;
+		}
+		if (diff < 60) {
+			diff = Math.round(diff);
+			return diff + " second" + (diff == 1 ? "" : "s") + end;
+		}
+		if (diff < 60 * 60) {
+			diff = Math.round(diff / 60);
+			return diff + " minute" + (diff == 1 ? "" : "s") + end;
+		}
+		if (diff < 60 * 60 * 24) {
+			diff = Math.round(diff / 3600);
+			return diff + " hour" + (diff == 1 ? "" : "s") + end;
+		}
+		if (diff < 60 * 60 * 24 * 7) {
+			diff = Math.round(diff / (3600 * 24));
+			if (diff == 1) {
+				return future ? "Tomorrow" : "Yesterday";
+			} else {
+				return diff + " days" + end;
+			}
+		}
+		return dojo.date.format(dateObject);
+	};
+	dojo.date.toSql = function (dateObject, noTime) {
+		return dojo.date.strftime(dateObject, "%F" + !noTime ? " %T" : "");
+	};
+	dojo.date.fromSql = function (sqlDate) {
+		var parts = sqlDate.split(/[\- :]/g);
+		while (parts.length < 6) {
+			parts.push(0);
+		}
+		return new Date(parts[0], (parseInt(parts[1], 10) - 1), parts[2], parts[3], parts[4], parts[5]);
+	};
+}});
+
+
+__CPAN_FILE__ src/date/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.date.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.date.common");
+	dojo.date.setDayOfYear = function (dateObject, dayOfYear) {
+		dateObject.setMonth(0);
+		dateObject.setDate(dayOfYear);
+		return dateObject;
+	};
+	dojo.date.getDayOfYear = function (dateObject) {
+		var fullYear = dateObject.getFullYear();
+		var lastDayOfPrevYear = new Date(fullYear - 1, 11, 31);
+		return Math.floor((dateObject.getTime() - lastDayOfPrevYear.getTime()) / 86400000);
+	};
+	dojo.date.setWeekOfYear = function (dateObject, week, firstDay) {
+		if (arguments.length == 1) {
+			firstDay = 0;
+		}
+		dojo.unimplemented("dojo.date.setWeekOfYear");
+	};
+	dojo.date.getWeekOfYear = function (dateObject, firstDay) {
+		if (arguments.length == 1) {
+			firstDay = 0;
+		}
+		var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1);
+		var day = firstDayOfYear.getDay();
+		firstDayOfYear.setDate(firstDayOfYear.getDate() - day + firstDay - (day > firstDay ? 7 : 0));
+		return Math.floor((dateObject.getTime() - firstDayOfYear.getTime()) / 604800000);
+	};
+	dojo.date.setIsoWeekOfYear = function (dateObject, week, firstDay) {
+		if (arguments.length == 1) {
+			firstDay = 1;
+		}
+		dojo.unimplemented("dojo.date.setIsoWeekOfYear");
+	};
+	dojo.date.getIsoWeekOfYear = function (dateObject, firstDay) {
+		if (arguments.length == 1) {
+			firstDay = 1;
+		}
+		dojo.unimplemented("dojo.date.getIsoWeekOfYear");
+	};
+	dojo.date.shortTimezones = ["IDLW", "BET", "HST", "MART", "AKST", "PST", "MST", "CST", "EST", "AST", "NFT", "BST", "FST", "AT", "GMT", "CET", "EET", "MSK", "IRT", "GST", "AFT", "AGTT", "IST", "NPT", "ALMT", "MMT", "JT", "AWST", "JST", "ACST", "AEST", "LHST", "VUT", "NFT", "NZT", "CHAST", "PHOT", "LINT"];
+	dojo.date.timezoneOffsets = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -240, -210, -180, -120, -60, 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840];
+	dojo.date.getDaysInMonth = function (dateObject) {
+		var month = dateObject.getMonth();
+		var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+		if (month == 1 && dojo.date.isLeapYear(dateObject)) {
+			return 29;
+		} else {
+			return days[month];
+		}
+	};
+	dojo.date.isLeapYear = function (dateObject) {
+		var year = dateObject.getFullYear();
+		return (year % 400 == 0) ? true : (year % 100 == 0) ? false : (year % 4 == 0) ? true : false;
+	};
+	dojo.date.getTimezoneName = function (dateObject) {
+		var str = dateObject.toString();
+		var tz = "";
+		var match;
+		var pos = str.indexOf("(");
+		if (pos > -1) {
+			pos++;
+			tz = str.substring(pos, str.indexOf(")"));
+		} else {
+			var pat = /([A-Z\/]+) \d{4}$/;
+			if ((match = str.match(pat))) {
+				tz = match[1];
+			} else {
+				str = dateObject.toLocaleString();
+				pat = / ([A-Z\/]+)$/;
+				if ((match = str.match(pat))) {
+					tz = match[1];
+				}
+			}
+		}
+		return tz == "AM" || tz == "PM" ? "" : tz;
+	};
+	dojo.date.getOrdinal = function (dateObject) {
+		var date = dateObject.getDate();
+		if (date % 100 != 11 && date % 10 == 1) {
+			return "st";
+		} else {
+			if (date % 100 != 12 && date % 10 == 2) {
+				return "nd";
+			} else {
+				if (date % 100 != 13 && date % 10 == 3) {
+					return "rd";
+				} else {
+					return "th";
+				}
+			}
+		}
+	};
+	dojo.date.compareTypes = {DATE:1, TIME:2};
+	dojo.date.compare = function (dateA, dateB, options) {
+		var dA = dateA;
+		var dB = dateB || new Date();
+		var now = new Date();
+		with (dojo.date.compareTypes) {
+			var opt = options || (DATE | TIME);
+			var d1 = new Date((opt & DATE) ? dA.getFullYear() : now.getFullYear(), (opt & DATE) ? dA.getMonth() : now.getMonth(), (opt & DATE) ? dA.getDate() : now.getDate(), (opt & TIME) ? dA.getHours() : 0, (opt & TIME) ? dA.getMinutes() : 0, (opt & TIME) ? dA.getSeconds() : 0);
+			var d2 = new Date((opt & DATE) ? dB.getFullYear() : now.getFullYear(), (opt & DATE) ? dB.getMonth() : now.getMonth(), (opt & DATE) ? dB.getDate() : now.getDate(), (opt & TIME) ? dB.getHours() : 0, (opt & TIME) ? dB.getMinutes() : 0, (opt & TIME) ? dB.getSeconds() : 0);
+		}
+		if (d1.valueOf() > d2.valueOf()) {
+			return 1;
+		}
+		if (d1.valueOf() < d2.valueOf()) {
+			return -1;
+		}
+		return 0;
+	};
+	dojo.date.dateParts = {YEAR:0, MONTH:1, DAY:2, HOUR:3, MINUTE:4, SECOND:5, MILLISECOND:6, QUARTER:7, WEEK:8, WEEKDAY:9};
+	dojo.date.add = function (dt, interv, incr) {
+		if (typeof dt == "number") {
+			dt = new Date(dt);
+		}
+		function fixOvershoot() {
+			if (sum.getDate() < dt.getDate()) {
+				sum.setDate(0);
+			}
+		}
+		var sum = new Date(dt);
+		with (dojo.date.dateParts) {
+			switch (interv) {
+			  case YEAR:
+				sum.setFullYear(dt.getFullYear() + incr);
+				fixOvershoot();
+				break;
+			  case QUARTER:
+				incr *= 3;
+			  case MONTH:
+				sum.setMonth(dt.getMonth() + incr);
+				fixOvershoot();
+				break;
+			  case WEEK:
+				incr *= 7;
+			  case DAY:
+				sum.setDate(dt.getDate() + incr);
+				break;
+			  case WEEKDAY:
+				var dat = dt.getDate();
+				var weeks = 0;
+				var days = 0;
+				var strt = 0;
+				var trgt = 0;
+				var adj = 0;
+				var mod = incr % 5;
+				if (mod == 0) {
+					days = (incr > 0) ? 5 : -5;
+					weeks = (incr > 0) ? ((incr - 5) / 5) : ((incr + 5) / 5);
+				} else {
+					days = mod;
+					weeks = parseInt(incr / 5);
+				}
+				strt = dt.getDay();
+				if (strt == 6 && incr > 0) {
+					adj = 1;
+				} else {
+					if (strt == 0 && incr < 0) {
+						adj = -1;
+					}
+				}
+				trgt = (strt + days);
+				if (trgt == 0 || trgt == 6) {
+					adj = (incr > 0) ? 2 : -2;
+				}
+				sum.setDate(dat + (7 * weeks) + days + adj);
+				break;
+			  case HOUR:
+				sum.setHours(sum.getHours() + incr);
+				break;
+			  case MINUTE:
+				sum.setMinutes(sum.getMinutes() + incr);
+				break;
+			  case SECOND:
+				sum.setSeconds(sum.getSeconds() + incr);
+				break;
+			  case MILLISECOND:
+				sum.setMilliseconds(sum.getMilliseconds() + incr);
+				break;
+			  default:
+				break;
+			}
+		}
+		return sum;
+	};
+	dojo.date.diff = function (dtA, dtB, interv) {
+		if (typeof dtA == "number") {
+			dtA = new Date(dtA);
+		}
+		if (typeof dtB == "number") {
+			dtB = new Date(dtB);
+		}
+		var yeaDiff = dtB.getFullYear() - dtA.getFullYear();
+		var monDiff = (dtB.getMonth() - dtA.getMonth()) + (yeaDiff * 12);
+		var msDiff = dtB.getTime() - dtA.getTime();
+		var secDiff = msDiff / 1000;
+		var minDiff = secDiff / 60;
+		var houDiff = minDiff / 60;
+		var dayDiff = houDiff / 24;
+		var weeDiff = dayDiff / 7;
+		var delta = 0;
+		with (dojo.date.dateParts) {
+			switch (interv) {
+			  case YEAR:
+				delta = yeaDiff;
+				break;
+			  case QUARTER:
+				var mA = dtA.getMonth();
+				var mB = dtB.getMonth();
+				var qA = Math.floor(mA / 3) + 1;
+				var qB = Math.floor(mB / 3) + 1;
+				qB += (yeaDiff * 4);
+				delta = qB - qA;
+				break;
+			  case MONTH:
+				delta = monDiff;
+				break;
+			  case WEEK:
+				delta = parseInt(weeDiff);
+				break;
+			  case DAY:
+				delta = dayDiff;
+				break;
+			  case WEEKDAY:
+				var days = Math.round(dayDiff);
+				var weeks = parseInt(days / 7);
+				var mod = days % 7;
+				if (mod == 0) {
+					days = weeks * 5;
+				} else {
+					var adj = 0;
+					var aDay = dtA.getDay();
+					var bDay = dtB.getDay();
+					weeks = parseInt(days / 7);
+					mod = days % 7;
+					var dtMark = new Date(dtA);
+					dtMark.setDate(dtMark.getDate() + (weeks * 7));
+					var dayMark = dtMark.getDay();
+					if (dayDiff > 0) {
+						switch (true) {
+						  case aDay == 6:
+							adj = -1;
+							break;
+						  case aDay == 0:
+							adj = 0;
+							break;
+						  case bDay == 6:
+							adj = -1;
+							break;
+						  case bDay == 0:
+							adj = -2;
+							break;
+						  case (dayMark + mod) > 5:
+							adj = -2;
+							break;
+						  default:
+							break;
+						}
+					} else {
+						if (dayDiff < 0) {
+							switch (true) {
+							  case aDay == 6:
+								adj = 0;
+								break;
+							  case aDay == 0:
+								adj = 1;
+								break;
+							  case bDay == 6:
+								adj = 2;
+								break;
+							  case bDay == 0:
+								adj = 1;
+								break;
+							  case (dayMark + mod) < 0:
+								adj = 2;
+								break;
+							  default:
+								break;
+							}
+						}
+					}
+					days += adj;
+					days -= (weeks * 2);
+				}
+				delta = days;
+				break;
+			  case HOUR:
+				delta = houDiff;
+				break;
+			  case MINUTE:
+				delta = minDiff;
+				break;
+			  case SECOND:
+				delta = secDiff;
+				break;
+			  case MILLISECOND:
+				delta = msDiff;
+				break;
+			  default:
+				break;
+			}
+		}
+		return Math.round(delta);
+	};
+}});
+
+
 __CPAN_DIR__ src/undo
 __CPAN_FILE__ src/undo/browser.js
 /*
@@ -47149,6 +91355,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.undo.browser");
 dojo.require("dojo.io.common");
 try {
@@ -47341,6 +91549,367 @@
 }};
 
 
+__CPAN_FILE__ src/undo/Manager.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.undo.Manager"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.undo.Manager");
+	dojo.require("dojo.lang.common");
+	dojo.undo.Manager = function (parent) {
+		this.clear();
+		this._parent = parent;
+	};
+	dojo.extend(dojo.undo.Manager, {_parent:null, _undoStack:null, _redoStack:null, _currentManager:null, canUndo:false, canRedo:false, isUndoing:false, isRedoing:false, onUndo:function (manager, item) {
+	}, onRedo:function (manager, item) {
+	}, onUndoAny:function (manager, item) {
+	}, onRedoAny:function (manager, item) {
+	}, _updateStatus:function () {
+		this.canUndo = this._undoStack.length > 0;
+		this.canRedo = this._redoStack.length > 0;
+	}, clear:function () {
+		this._undoStack = [];
+		this._redoStack = [];
+		this._currentManager = this;
+		this.isUndoing = false;
+		this.isRedoing = false;
+		this._updateStatus();
+	}, undo:function () {
+		if (!this.canUndo) {
+			return false;
+		}
+		this.endAllTransactions();
+		this.isUndoing = true;
+		var top = this._undoStack.pop();
+		if (top instanceof dojo.undo.Manager) {
+			top.undoAll();
+		} else {
+			top.undo();
+		}
+		if (top.redo) {
+			this._redoStack.push(top);
+		}
+		this.isUndoing = false;
+		this._updateStatus();
+		this.onUndo(this, top);
+		if (!(top instanceof dojo.undo.Manager)) {
+			this.getTop().onUndoAny(this, top);
+		}
+		return true;
+	}, redo:function () {
+		if (!this.canRedo) {
+			return false;
+		}
+		this.isRedoing = true;
+		var top = this._redoStack.pop();
+		if (top instanceof dojo.undo.Manager) {
+			top.redoAll();
+		} else {
+			top.redo();
+		}
+		this._undoStack.push(top);
+		this.isRedoing = false;
+		this._updateStatus();
+		this.onRedo(this, top);
+		if (!(top instanceof dojo.undo.Manager)) {
+			this.getTop().onRedoAny(this, top);
+		}
+		return true;
+	}, undoAll:function () {
+		while (this._undoStack.length > 0) {
+			this.undo();
+		}
+	}, redoAll:function () {
+		while (this._redoStack.length > 0) {
+			this.redo();
+		}
+	}, push:function (undo, redo, description) {
+		if (!undo) {
+			return;
+		}
+		if (this._currentManager == this) {
+			this._undoStack.push({undo:undo, redo:redo, description:description});
+		} else {
+			this._currentManager.push.apply(this._currentManager, arguments);
+		}
+		this._redoStack = [];
+		this._updateStatus();
+	}, concat:function (manager) {
+		if (!manager) {
+			return;
+		}
+		if (this._currentManager == this) {
+			for (var x = 0; x < manager._undoStack.length; x++) {
+				this._undoStack.push(manager._undoStack[x]);
+			}
+			if (manager._undoStack.length > 0) {
+				this._redoStack = [];
+			}
+			this._updateStatus();
+		} else {
+			this._currentManager.concat.apply(this._currentManager, arguments);
+		}
+	}, beginTransaction:function (description) {
+		if (this._currentManager == this) {
+			var mgr = new dojo.undo.Manager(this);
+			mgr.description = description ? description : "";
+			this._undoStack.push(mgr);
+			this._currentManager = mgr;
+			return mgr;
+		} else {
+			this._currentManager = this._currentManager.beginTransaction.apply(this._currentManager, arguments);
+		}
+	}, endTransaction:function (flatten) {
+		if (this._currentManager == this) {
+			if (this._parent) {
+				this._parent._currentManager = this._parent;
+				if (this._undoStack.length == 0 || flatten) {
+					var idx = dojo.lang.find(this._parent._undoStack, this);
+					if (idx >= 0) {
+						this._parent._undoStack.splice(idx, 1);
+						if (flatten) {
+							for (var x = 0; x < this._undoStack.length; x++) {
+								this._parent._undoStack.splice(idx++, 0, this._undoStack[x]);
+							}
+							this._updateStatus();
+						}
+					}
+				}
+				return this._parent;
+			}
+		} else {
+			this._currentManager = this._currentManager.endTransaction.apply(this._currentManager, arguments);
+		}
+	}, endAllTransactions:function () {
+		while (this._currentManager != this) {
+			this.endTransaction();
+		}
+	}, getTop:function () {
+		if (this._parent) {
+			return this._parent.getTop();
+		} else {
+			return this;
+		}
+	}});
+}});
+
+
+__CPAN_FILE__ src/undo/browser.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.undo.browser"], ["require", "dojo.io.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.undo.browser");
+	dojo.require("dojo.io.common");
+	try {
+		if ((!djConfig["preventBackButtonFix"]) && (!dojo.hostenv.post_load_)) {
+			document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='" + (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "'></iframe>");
+		}
+	}
+	catch (e) {
+	}
+	if (dojo.render.html.opera) {
+		dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work.");
+	}
+	dojo.undo.browser = {initialHref:(!dj_undef("window")) ? window.location.href : "", initialHash:(!dj_undef("window")) ? window.location.hash : "", moveForward:false, historyStack:[], forwardStack:[], historyIframe:null, bookmarkAnchor:null, locationTimer:null, setInitialState:function (args) {
+		this.initialState = this._createState(this.initialHref, args, this.initialHash);
+	}, addToHistory:function (args) {
+		this.forwardStack = [];
+		var hash = null;
+		var url = null;
+		if (!this.historyIframe) {
+			if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) {
+				dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html");
+			}
+			this.historyIframe = window.frames["djhistory"];
+		}
+		if (!this.bookmarkAnchor) {
+			this.bookmarkAnchor = document.createElement("a");
+			dojo.body().appendChild(this.bookmarkAnchor);
+			this.bookmarkAnchor.style.display = "none";
+		}
+		if (args["changeUrl"]) {
+			hash = "#" + ((args["changeUrl"] !== true) ? args["changeUrl"] : (new Date()).getTime());
+			if (this.historyStack.length == 0 && this.initialState.urlHash == hash) {
+				this.initialState = this._createState(url, args, hash);
+				return;
+			} else {
+				if (this.historyStack.length > 0 && this.historyStack[this.historyStack.length - 1].urlHash == hash) {
+					this.historyStack[this.historyStack.length - 1] = this._createState(url, args, hash);
+					return;
+				}
+			}
+			this.changingUrl = true;
+			setTimeout("window.location.href = '" + hash + "'; dojo.undo.browser.changingUrl = false;", 1);
+			this.bookmarkAnchor.href = hash;
+			if (dojo.render.html.ie) {
+				url = this._loadIframeHistory();
+				var oldCB = args["back"] || args["backButton"] || args["handle"];
+				var tcb = function (handleName) {
+					if (window.location.hash != "") {
+						setTimeout("window.location.href = '" + hash + "';", 1);
+					}
+					oldCB.apply(this, [handleName]);
+				};
+				if (args["back"]) {
+					args.back = tcb;
+				} else {
+					if (args["backButton"]) {
+						args.backButton = tcb;
+					} else {
+						if (args["handle"]) {
+							args.handle = tcb;
+						}
+					}
+				}
+				var oldFW = args["forward"] || args["forwardButton"] || args["handle"];
+				var tfw = function (handleName) {
+					if (window.location.hash != "") {
+						window.location.href = hash;
+					}
+					if (oldFW) {
+						oldFW.apply(this, [handleName]);
+					}
+				};
+				if (args["forward"]) {
+					args.forward = tfw;
+				} else {
+					if (args["forwardButton"]) {
+						args.forwardButton = tfw;
+					} else {
+						if (args["handle"]) {
+							args.handle = tfw;
+						}
+					}
+				}
+			} else {
+				if (dojo.render.html.moz) {
+					if (!this.locationTimer) {
+						this.locationTimer = setInterval("dojo.undo.browser.checkLocation();", 200);
+					}
+				}
+			}
+		} else {
+			url = this._loadIframeHistory();
+		}
+		this.historyStack.push(this._createState(url, args, hash));
+	}, checkLocation:function () {
+		if (!this.changingUrl) {
+			var hsl = this.historyStack.length;
+			if ((window.location.hash == this.initialHash || window.location.href == this.initialHref) && (hsl == 1)) {
+				this.handleBackButton();
+				return;
+			}
+			if (this.forwardStack.length > 0) {
+				if (this.forwardStack[this.forwardStack.length - 1].urlHash == window.location.hash) {
+					this.handleForwardButton();
+					return;
+				}
+			}
+			if ((hsl >= 2) && (this.historyStack[hsl - 2])) {
+				if (this.historyStack[hsl - 2].urlHash == window.location.hash) {
+					this.handleBackButton();
+					return;
+				}
+			}
+		}
+	}, iframeLoaded:function (evt, ifrLoc) {
+		if (!dojo.render.html.opera) {
+			var query = this._getUrlQuery(ifrLoc.href);
+			if (query == null) {
+				if (this.historyStack.length == 1) {
+					this.handleBackButton();
+				}
+				return;
+			}
+			if (this.moveForward) {
+				this.moveForward = false;
+				return;
+			}
+			if (this.historyStack.length >= 2 && query == this._getUrlQuery(this.historyStack[this.historyStack.length - 2].url)) {
+				this.handleBackButton();
+			} else {
+				if (this.forwardStack.length > 0 && query == this._getUrlQuery(this.forwardStack[this.forwardStack.length - 1].url)) {
+					this.handleForwardButton();
+				}
+			}
+		}
+	}, handleBackButton:function () {
+		var current = this.historyStack.pop();
+		if (!current) {
+			return;
+		}
+		var last = this.historyStack[this.historyStack.length - 1];
+		if (!last && this.historyStack.length == 0) {
+			last = this.initialState;
+		}
+		if (last) {
+			if (last.kwArgs["back"]) {
+				last.kwArgs["back"]();
+			} else {
+				if (last.kwArgs["backButton"]) {
+					last.kwArgs["backButton"]();
+				} else {
+					if (last.kwArgs["handle"]) {
+						last.kwArgs.handle("back");
+					}
+				}
+			}
+		}
+		this.forwardStack.push(current);
+	}, handleForwardButton:function () {
+		var last = this.forwardStack.pop();
+		if (!last) {
+			return;
+		}
+		if (last.kwArgs["forward"]) {
+			last.kwArgs.forward();
+		} else {
+			if (last.kwArgs["forwardButton"]) {
+				last.kwArgs.forwardButton();
+			} else {
+				if (last.kwArgs["handle"]) {
+					last.kwArgs.handle("forward");
+				}
+			}
+		}
+		this.historyStack.push(last);
+	}, _createState:function (url, args, hash) {
+		return {"url":url, "kwArgs":args, "urlHash":hash};
+	}, _getUrlQuery:function (url) {
+		var segments = url.split("?");
+		if (segments.length < 2) {
+			return null;
+		} else {
+			return segments[1];
+		}
+	}, _loadIframeHistory:function () {
+		var url = (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "?" + (new Date()).getTime();
+		this.moveForward = true;
+		dojo.io.setIFrameSrc(this.historyIframe, url, false);
+		return url;
+	}};
+}});
+
+
 __CPAN_FILE__ src/undo/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -47352,6 +91921,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.undo.Manager");
 dojo.provide("dojo.undo.*");
 
@@ -47367,6 +91938,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.undo.Manager");
 dojo.require("dojo.lang.common");
 dojo.undo.Manager = function (parent) {
@@ -47506,6 +92079,25 @@
 }});
 
 
+__CPAN_FILE__ src/undo/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.undo.Manager"], ["provide", "dojo.undo.*"]], definePackage:function (dojo) {
+	dojo.require("dojo.undo.Manager");
+	dojo.provide("dojo.undo.*");
+}});
+
+
 __CPAN_DIR__ src/flash
 __CPAN_DIR__ src/flash/flash8
 __CPAN_FILE__ src/flash/flash8/ExpressInstall.as
@@ -48095,6 +92687,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.array");
 dojo.require("dojo.lang.common");
 dojo.lang.mixin(dojo.lang, {has:function (obj, name) {
@@ -48271,6 +92865,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.assert");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.array");
@@ -48330,6 +92926,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.common");
 dojo.lang.inherits = function (subclass, superclass) {
 	if (!dojo.lang.isFunction(superclass)) {
@@ -48486,13 +93084,23 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.func");
 dojo.require("dojo.lang.common");
 dojo.lang.hitch = function (thisObject, method) {
+	var args = [];
+	for (var x = 2; x < arguments.length; x++) {
+		args.push(arguments[x]);
+	}
 	var fcn = (dojo.lang.isString(method) ? thisObject[method] : method) || function () {
 	};
 	return function () {
-		return fcn.apply(thisObject, arguments);
+		var ta = args.concat([]);
+		for (var x = 0; x < arguments.length; x++) {
+			ta.push(arguments[x]);
+		}
+		return fcn.apply(thisObject, ta);
 	};
 };
 dojo.lang.anonCtr = 0;
@@ -48602,6 +93210,186 @@
 };
 
 
+__CPAN_FILE__ src/lang/array.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.array"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.array");
+	dojo.require("dojo.lang.common");
+	dojo.lang.mixin(dojo.lang, {has:function (obj, name) {
+		try {
+			return typeof obj[name] != "undefined";
+		}
+		catch (e) {
+			return false;
+		}
+	}, isEmpty:function (obj) {
+		if (dojo.lang.isObject(obj)) {
+			var tmp = {};
+			var count = 0;
+			for (var x in obj) {
+				if (obj[x] && (!tmp[x])) {
+					count++;
+					break;
+				}
+			}
+			return count == 0;
+		} else {
+			if (dojo.lang.isArrayLike(obj) || dojo.lang.isString(obj)) {
+				return obj.length == 0;
+			}
+		}
+	}, map:function (arr, obj, unary_func) {
+		var isString = dojo.lang.isString(arr);
+		if (isString) {
+			arr = arr.split("");
+		}
+		if (dojo.lang.isFunction(obj) && (!unary_func)) {
+			unary_func = obj;
+			obj = dj_global;
+		} else {
+			if (dojo.lang.isFunction(obj) && unary_func) {
+				var tmpObj = obj;
+				obj = unary_func;
+				unary_func = tmpObj;
+			}
+		}
+		if (Array.map) {
+			var outArr = Array.map(arr, unary_func, obj);
+		} else {
+			var outArr = [];
+			for (var i = 0; i < arr.length; ++i) {
+				outArr.push(unary_func.call(obj, arr[i]));
+			}
+		}
+		if (isString) {
+			return outArr.join("");
+		} else {
+			return outArr;
+		}
+	}, reduce:function (arr, initialValue, obj, binary_func) {
+		var reducedValue = initialValue;
+		if (arguments.length == 2) {
+			binary_func = initialValue;
+			reducedValue = arr[0];
+			arr = arr.slice(1);
+		} else {
+			if (arguments.length == 3) {
+				if (dojo.lang.isFunction(obj)) {
+					binary_func = obj;
+					obj = null;
+				}
+			} else {
+				if (dojo.lang.isFunction(obj)) {
+					var tmp = binary_func;
+					binary_func = obj;
+					obj = tmp;
+				}
+			}
+		}
+		var ob = obj || dj_global;
+		dojo.lang.map(arr, function (val) {
+			reducedValue = binary_func.call(ob, reducedValue, val);
+		});
+		return reducedValue;
+	}, forEach:function (anArray, callback, thisObject) {
+		if (dojo.lang.isString(anArray)) {
+			anArray = anArray.split("");
+		}
+		if (Array.forEach) {
+			Array.forEach(anArray, callback, thisObject);
+		} else {
+			if (!thisObject) {
+				thisObject = dj_global;
+			}
+			for (var i = 0, l = anArray.length; i < l; i++) {
+				callback.call(thisObject, anArray[i], i, anArray);
+			}
+		}
+	}, _everyOrSome:function (every, arr, callback, thisObject) {
+		if (dojo.lang.isString(arr)) {
+			arr = arr.split("");
+		}
+		if (Array.every) {
+			return Array[every ? "every" : "some"](arr, callback, thisObject);
+		} else {
+			if (!thisObject) {
+				thisObject = dj_global;
+			}
+			for (var i = 0, l = arr.length; i < l; i++) {
+				var result = callback.call(thisObject, arr[i], i, arr);
+				if (every && !result) {
+					return false;
+				} else {
+					if ((!every) && (result)) {
+						return true;
+					}
+				}
+			}
+			return Boolean(every);
+		}
+	}, every:function (arr, callback, thisObject) {
+		return this._everyOrSome(true, arr, callback, thisObject);
+	}, some:function (arr, callback, thisObject) {
+		return this._everyOrSome(false, arr, callback, thisObject);
+	}, filter:function (arr, callback, thisObject) {
+		var isString = dojo.lang.isString(arr);
+		if (isString) {
+			arr = arr.split("");
+		}
+		var outArr;
+		if (Array.filter) {
+			outArr = Array.filter(arr, callback, thisObject);
+		} else {
+			if (!thisObject) {
+				if (arguments.length >= 3) {
+					dojo.raise("thisObject doesn't exist!");
+				}
+				thisObject = dj_global;
+			}
+			outArr = [];
+			for (var i = 0; i < arr.length; i++) {
+				if (callback.call(thisObject, arr[i], i, arr)) {
+					outArr.push(arr[i]);
+				}
+			}
+		}
+		if (isString) {
+			return outArr.join("");
+		} else {
+			return outArr;
+		}
+	}, unnest:function () {
+		var out = [];
+		for (var i = 0; i < arguments.length; i++) {
+			if (dojo.lang.isArrayLike(arguments[i])) {
+				var add = dojo.lang.unnest.apply(this, arguments[i]);
+				out = out.concat(add);
+			} else {
+				out.push(arguments[i]);
+			}
+		}
+		return out;
+	}, toArray:function (arrayLike, startOffset) {
+		var array = [];
+		for (var i = startOffset || 0; i < arrayLike.length; i++) {
+			array.push(arrayLike[i]);
+		}
+		return array;
+	}});
+}});
+
+
 __CPAN_FILE__ src/lang/type.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -48613,6 +93401,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.type");
 dojo.require("dojo.lang.common");
 dojo.lang.whatAmI = function (value) {
@@ -48758,6 +93548,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]});
 dojo.provide("dojo.lang.*");
 
@@ -48773,6 +93565,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.repr");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.AdapterRegistry");
@@ -48830,6 +93624,610 @@
 })();
 
 
+__CPAN_FILE__ src/lang/declare.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.declare"], ["require", "dojo.lang.common"], ["require", "dojo.lang.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.declare");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.extras");
+	dojo.lang.declare = function (className, superclass, init, props) {
+		if ((dojo.lang.isFunction(props)) || ((!props) && (!dojo.lang.isFunction(init)))) {
+			var temp = props;
+			props = init;
+			init = temp;
+		}
+		var mixins = [];
+		if (dojo.lang.isArray(superclass)) {
+			mixins = superclass;
+			superclass = mixins.shift();
+		}
+		if (!init) {
+			init = dojo.evalObjPath(className, false);
+			if ((init) && (!dojo.lang.isFunction(init))) {
+				init = null;
+			}
+		}
+		var ctor = dojo.lang.declare._makeConstructor();
+		var scp = (superclass ? superclass.prototype : null);
+		if (scp) {
+			scp.prototyping = true;
+			ctor.prototype = new superclass();
+			scp.prototyping = false;
+		}
+		ctor.superclass = scp;
+		ctor.mixins = mixins;
+		for (var i = 0, l = mixins.length; i < l; i++) {
+			dojo.lang.extend(ctor, mixins[i].prototype);
+		}
+		ctor.prototype.initializer = null;
+		ctor.prototype.declaredClass = className;
+		if (dojo.lang.isArray(props)) {
+			dojo.lang.extend.apply(dojo.lang, [ctor].concat(props));
+		} else {
+			dojo.lang.extend(ctor, (props) || {});
+		}
+		dojo.lang.extend(ctor, dojo.lang.declare._common);
+		ctor.prototype.constructor = ctor;
+		ctor.prototype.initializer = (ctor.prototype.initializer) || (init) || (function () {
+		});
+		var created = dojo.parseObjPath(className, null, true);
+		created.obj[created.prop] = ctor;
+		return ctor;
+	};
+	dojo.lang.declare._makeConstructor = function () {
+		return function () {
+			var self = this._getPropContext();
+			var s = self.constructor.superclass;
+			if ((s) && (s.constructor)) {
+				if (s.constructor == arguments.callee) {
+					this._inherited("constructor", arguments);
+				} else {
+					this._contextMethod(s, "constructor", arguments);
+				}
+			}
+			var ms = (self.constructor.mixins) || ([]);
+			for (var i = 0, m; (m = ms[i]); i++) {
+				(((m.prototype) && (m.prototype.initializer)) || (m)).apply(this, arguments);
+			}
+			if ((!this.prototyping) && (self.initializer)) {
+				self.initializer.apply(this, arguments);
+			}
+		};
+	};
+	dojo.lang.declare._common = {_getPropContext:function () {
+		return (this.___proto || this);
+	}, _contextMethod:function (ptype, method, args) {
+		var result, stack = this.___proto;
+		this.___proto = ptype;
+		try {
+			result = ptype[method].apply(this, (args || []));
+		}
+		catch (e) {
+			throw e;
+		}
+		finally {
+			this.___proto = stack;
+		}
+		return result;
+	}, _inherited:function (prop, args) {
+		var p = this._getPropContext();
+		do {
+			if ((!p.constructor) || (!p.constructor.superclass)) {
+				return;
+			}
+			p = p.constructor.superclass;
+		} while (!(prop in p));
+		return (dojo.lang.isFunction(p[prop]) ? this._contextMethod(p, prop, args) : p[prop]);
+	}, inherited:function (prop, args) {
+		dojo.deprecated("'inherited' method is dangerous, do not up-call! 'inherited' is slated for removal in 0.5; name your super class (or use superclass property) instead.", "0.5");
+		this._inherited(prop, args);
+	}};
+	dojo.declare = dojo.lang.declare;
+}});
+
+
+__CPAN_FILE__ src/lang/extras.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.extras"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.extras");
+	dojo.require("dojo.lang.common");
+	dojo.lang.setTimeout = function (func, delay) {
+		var context = window, argsStart = 2;
+		if (!dojo.lang.isFunction(func)) {
+			context = func;
+			func = delay;
+			delay = arguments[2];
+			argsStart++;
+		}
+		if (dojo.lang.isString(func)) {
+			func = context[func];
+		}
+		var args = [];
+		for (var i = argsStart; i < arguments.length; i++) {
+			args.push(arguments[i]);
+		}
+		return dojo.global().setTimeout(function () {
+			func.apply(context, args);
+		}, delay);
+	};
+	dojo.lang.clearTimeout = function (timer) {
+		dojo.global().clearTimeout(timer);
+	};
+	dojo.lang.getNameInObj = function (ns, item) {
+		if (!ns) {
+			ns = dj_global;
+		}
+		for (var x in ns) {
+			if (ns[x] === item) {
+				return new String(x);
+			}
+		}
+		return null;
+	};
+	dojo.lang.shallowCopy = function (obj, deep) {
+		var i, ret;
+		if (obj === null) {
+			return null;
+		}
+		if (dojo.lang.isObject(obj)) {
+			ret = new obj.constructor();
+			for (i in obj) {
+				if (dojo.lang.isUndefined(ret[i])) {
+					ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i];
+				}
+			}
+		} else {
+			if (dojo.lang.isArray(obj)) {
+				ret = [];
+				for (i = 0; i < obj.length; i++) {
+					ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i];
+				}
+			} else {
+				ret = obj;
+			}
+		}
+		return ret;
+	};
+	dojo.lang.firstValued = function () {
+		for (var i = 0; i < arguments.length; i++) {
+			if (typeof arguments[i] != "undefined") {
+				return arguments[i];
+			}
+		}
+		return undefined;
+	};
+	dojo.lang.getObjPathValue = function (objpath, context, create) {
+		with (dojo.parseObjPath(objpath, context, create)) {
+			return dojo.evalProp(prop, obj, create);
+		}
+	};
+	dojo.lang.setObjPathValue = function (objpath, value, context, create) {
+		dojo.deprecated("dojo.lang.setObjPathValue", "use dojo.parseObjPath and the '=' operator", "0.6");
+		if (arguments.length < 4) {
+			create = true;
+		}
+		with (dojo.parseObjPath(objpath, context, create)) {
+			if (obj && (create || (prop in obj))) {
+				obj[prop] = value;
+			}
+		}
+	};
+}});
+
+
+__CPAN_FILE__ src/lang/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]}], ["provide", "dojo.lang.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]});
+	dojo.provide("dojo.lang.*");
+}});
+
+
+__CPAN_FILE__ src/lang/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.common");
+	dojo.lang.inherits = function (subclass, superclass) {
+		if (!dojo.lang.isFunction(superclass)) {
+			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;
+		subclass["super"] = superclass.prototype;
+	};
+	dojo.lang._mixin = function (obj, props) {
+		var tobj = {};
+		for (var x in props) {
+			if ((typeof tobj[x] == "undefined") || (tobj[x] != props[x])) {
+				obj[x] = props[x];
+			}
+		}
+		if (dojo.render.html.ie && (typeof (props["toString"]) == "function") && (props["toString"] != obj["toString"]) && (props["toString"] != tobj["toString"])) {
+			obj.toString = props.toString;
+		}
+		return obj;
+	};
+	dojo.lang.mixin = function (obj, props) {
+		for (var i = 1, l = arguments.length; i < l; i++) {
+			dojo.lang._mixin(obj, arguments[i]);
+		}
+		return obj;
+	};
+	dojo.lang.extend = function (constructor, props) {
+		for (var i = 1, l = arguments.length; i < l; i++) {
+			dojo.lang._mixin(constructor.prototype, arguments[i]);
+		}
+		return constructor;
+	};
+	dojo.inherits = dojo.lang.inherits;
+	dojo.mixin = dojo.lang.mixin;
+	dojo.extend = dojo.lang.extend;
+	dojo.lang.find = function (array, value, identity, findLast) {
+		if (!dojo.lang.isArrayLike(array) && dojo.lang.isArrayLike(value)) {
+			dojo.deprecated("dojo.lang.find(value, array)", "use dojo.lang.find(array, value) instead", "0.5");
+			var temp = array;
+			array = value;
+			value = temp;
+		}
+		var isString = dojo.lang.isString(array);
+		if (isString) {
+			array = array.split("");
+		}
+		if (findLast) {
+			var step = -1;
+			var i = array.length - 1;
+			var end = -1;
+		} else {
+			var step = 1;
+			var i = 0;
+			var end = array.length;
+		}
+		if (identity) {
+			while (i != end) {
+				if (array[i] === value) {
+					return i;
+				}
+				i += step;
+			}
+		} else {
+			while (i != end) {
+				if (array[i] == value) {
+					return i;
+				}
+				i += step;
+			}
+		}
+		return -1;
+	};
+	dojo.lang.indexOf = dojo.lang.find;
+	dojo.lang.findLast = function (array, value, identity) {
+		return dojo.lang.find(array, value, identity, true);
+	};
+	dojo.lang.lastIndexOf = dojo.lang.findLast;
+	dojo.lang.inArray = function (array, value) {
+		return dojo.lang.find(array, value) > -1;
+	};
+	dojo.lang.isObject = function (it) {
+		if (typeof it == "undefined") {
+			return false;
+		}
+		return (typeof it == "object" || it === null || dojo.lang.isArray(it) || dojo.lang.isFunction(it));
+	};
+	dojo.lang.isArray = function (it) {
+		return (it && it instanceof Array || typeof it == "array");
+	};
+	dojo.lang.isArrayLike = function (it) {
+		if ((!it) || (dojo.lang.isUndefined(it))) {
+			return false;
+		}
+		if (dojo.lang.isString(it)) {
+			return false;
+		}
+		if (dojo.lang.isFunction(it)) {
+			return false;
+		}
+		if (dojo.lang.isArray(it)) {
+			return true;
+		}
+		if ((it.tagName) && (it.tagName.toLowerCase() == "form")) {
+			return false;
+		}
+		if (dojo.lang.isNumber(it.length) && isFinite(it.length)) {
+			return true;
+		}
+		return false;
+	};
+	dojo.lang.isFunction = function (it) {
+		return (it instanceof Function || typeof it == "function");
+	};
+	(function () {
+		if ((dojo.render.html.capable) && (dojo.render.html["safari"])) {
+			dojo.lang.isFunction = function (it) {
+				if ((typeof (it) == "function") && (it == "[object NodeList]")) {
+					return false;
+				}
+				return (it instanceof Function || typeof it == "function");
+			};
+		}
+	})();
+	dojo.lang.isString = function (it) {
+		return (typeof it == "string" || it instanceof String);
+	};
+	dojo.lang.isAlien = function (it) {
+		if (!it) {
+			return false;
+		}
+		return !dojo.lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it));
+	};
+	dojo.lang.isBoolean = function (it) {
+		return (it instanceof Boolean || typeof it == "boolean");
+	};
+	dojo.lang.isNumber = function (it) {
+		return (it instanceof Number || typeof it == "number");
+	};
+	dojo.lang.isUndefined = function (it) {
+		return ((typeof (it) == "undefined") && (it == undefined));
+	};
+}});
+
+
+__CPAN_FILE__ src/lang/type.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.type"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.type");
+	dojo.require("dojo.lang.common");
+	dojo.lang.whatAmI = function (value) {
+		dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5");
+		return dojo.lang.getType(value);
+	};
+	dojo.lang.whatAmI.custom = {};
+	dojo.lang.getType = function (value) {
+		try {
+			if (dojo.lang.isArray(value)) {
+				return "array";
+			}
+			if (dojo.lang.isFunction(value)) {
+				return "function";
+			}
+			if (dojo.lang.isString(value)) {
+				return "string";
+			}
+			if (dojo.lang.isNumber(value)) {
+				return "number";
+			}
+			if (dojo.lang.isBoolean(value)) {
+				return "boolean";
+			}
+			if (dojo.lang.isAlien(value)) {
+				return "alien";
+			}
+			if (dojo.lang.isUndefined(value)) {
+				return "undefined";
+			}
+			for (var name in dojo.lang.whatAmI.custom) {
+				if (dojo.lang.whatAmI.custom[name](value)) {
+					return name;
+				}
+			}
+			if (dojo.lang.isObject(value)) {
+				return "object";
+			}
+		}
+		catch (e) {
+		}
+		return "unknown";
+	};
+	dojo.lang.isNumeric = function (value) {
+		return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value));
+	};
+	dojo.lang.isBuiltIn = function (value) {
+		return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error"));
+	};
+	dojo.lang.isPureObject = function (value) {
+		return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object);
+	};
+	dojo.lang.isOfType = function (value, type, keywordParameters) {
+		var optional = false;
+		if (keywordParameters) {
+			optional = keywordParameters["optional"];
+		}
+		if (optional && ((value === null) || dojo.lang.isUndefined(value))) {
+			return true;
+		}
+		if (dojo.lang.isArray(type)) {
+			var arrayOfTypes = type;
+			for (var i in arrayOfTypes) {
+				var aType = arrayOfTypes[i];
+				if (dojo.lang.isOfType(value, aType)) {
+					return true;
+				}
+			}
+			return false;
+		} else {
+			if (dojo.lang.isString(type)) {
+				type = type.toLowerCase();
+			}
+			switch (type) {
+			  case Array:
+			  case "array":
+				return dojo.lang.isArray(value);
+			  case Function:
+			  case "function":
+				return dojo.lang.isFunction(value);
+			  case String:
+			  case "string":
+				return dojo.lang.isString(value);
+			  case Number:
+			  case "number":
+				return dojo.lang.isNumber(value);
+			  case "numeric":
+				return dojo.lang.isNumeric(value);
+			  case Boolean:
+			  case "boolean":
+				return dojo.lang.isBoolean(value);
+			  case Object:
+			  case "object":
+				return dojo.lang.isObject(value);
+			  case "pureobject":
+				return dojo.lang.isPureObject(value);
+			  case "builtin":
+				return dojo.lang.isBuiltIn(value);
+			  case "alien":
+				return dojo.lang.isAlien(value);
+			  case "undefined":
+				return dojo.lang.isUndefined(value);
+			  case null:
+			  case "null":
+				return (value === null);
+			  case "optional":
+				dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5");
+				return ((value === null) || dojo.lang.isUndefined(value));
+			  default:
+				if (dojo.lang.isFunction(type)) {
+					return (value instanceof type);
+				} else {
+					dojo.raise("dojo.lang.isOfType() was passed an invalid type");
+				}
+			}
+		}
+		dojo.raise("If we get here, it means a bug was introduced above.");
+	};
+	dojo.lang.getObject = function (str) {
+		var parts = str.split("."), i = 0, obj = dj_global;
+		do {
+			obj = obj[parts[i++]];
+		} while (i < parts.length && obj);
+		return (obj != dj_global) ? obj : null;
+	};
+	dojo.lang.doesObjectExist = function (str) {
+		var parts = str.split("."), i = 0, obj = dj_global;
+		do {
+			obj = obj[parts[i++]];
+		} while (i < parts.length && obj);
+		return (obj && obj != dj_global);
+	};
+}});
+
+
+__CPAN_FILE__ src/lang/assert.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.assert"], ["require", "dojo.lang.common"], ["require", "dojo.lang.array"], ["require", "dojo.lang.type"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.assert");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.type");
+	dojo.lang.assert = function (booleanValue, message) {
+		if (!booleanValue) {
+			var errorMessage = "An assert statement failed.\n" + "The method dojo.lang.assert() was called with a 'false' value.\n";
+			if (message) {
+				errorMessage += "Here's the assert message:\n" + message + "\n";
+			}
+			throw new Error(errorMessage);
+		}
+	};
+	dojo.lang.assertType = function (value, type, keywordParameters) {
+		if (dojo.lang.isString(keywordParameters)) {
+			dojo.deprecated("dojo.lang.assertType(value, type, \"message\")", "use dojo.lang.assertType(value, type) instead", "0.5");
+		}
+		if (!dojo.lang.isOfType(value, type, keywordParameters)) {
+			if (!dojo.lang.assertType._errorMessage) {
+				dojo.lang.assertType._errorMessage = "Type mismatch: dojo.lang.assertType() failed.";
+			}
+			dojo.lang.assert(false, dojo.lang.assertType._errorMessage);
+		}
+	};
+	dojo.lang.assertValidKeywords = function (object, expectedProperties, message) {
+		var key;
+		if (!message) {
+			if (!dojo.lang.assertValidKeywords._errorMessage) {
+				dojo.lang.assertValidKeywords._errorMessage = "In dojo.lang.assertValidKeywords(), found invalid keyword:";
+			}
+			message = dojo.lang.assertValidKeywords._errorMessage;
+		}
+		if (dojo.lang.isArray(expectedProperties)) {
+			for (key in object) {
+				if (!dojo.lang.inArray(expectedProperties, key)) {
+					dojo.lang.assert(false, message + " " + key);
+				}
+			}
+		} else {
+			for (key in object) {
+				if (!(key in expectedProperties)) {
+					dojo.lang.assert(false, message + " " + key);
+				}
+			}
+		}
+	};
+}});
+
+
 __CPAN_FILE__ src/lang/extras.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -48841,6 +94239,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.extras");
 dojo.require("dojo.lang.common");
 dojo.lang.setTimeout = function (func, delay) {
@@ -48926,6 +94326,78 @@
 };
 
 
+__CPAN_FILE__ src/lang/repr.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.repr"], ["require", "dojo.lang.common"], ["require", "dojo.AdapterRegistry"], ["require", "dojo.string.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.repr");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.AdapterRegistry");
+	dojo.require("dojo.string.extras");
+	dojo.lang.reprRegistry = new dojo.AdapterRegistry();
+	dojo.lang.registerRepr = function (name, check, wrap, override) {
+		dojo.lang.reprRegistry.register(name, check, wrap, override);
+	};
+	dojo.lang.repr = function (obj) {
+		if (typeof (obj) == "undefined") {
+			return "undefined";
+		} else {
+			if (obj === null) {
+				return "null";
+			}
+		}
+		try {
+			if (typeof (obj["__repr__"]) == "function") {
+				return obj["__repr__"]();
+			} else {
+				if ((typeof (obj["repr"]) == "function") && (obj.repr != arguments.callee)) {
+					return obj["repr"]();
+				}
+			}
+			return dojo.lang.reprRegistry.match(obj);
+		}
+		catch (e) {
+			if (typeof (obj.NAME) == "string" && (obj.toString == Function.prototype.toString || obj.toString == Object.prototype.toString)) {
+				return obj.NAME;
+			}
+		}
+		if (typeof (obj) == "function") {
+			obj = (obj + "").replace(/^\s+/, "");
+			var idx = obj.indexOf("{");
+			if (idx != -1) {
+				obj = obj.substr(0, idx) + "{...}";
+			}
+		}
+		return obj + "";
+	};
+	dojo.lang.reprArrayLike = function (arr) {
+		try {
+			var na = dojo.lang.map(arr, dojo.lang.repr);
+			return "[" + na.join(", ") + "]";
+		}
+		catch (e) {
+		}
+	};
+	(function () {
+		var m = dojo.lang;
+		m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike);
+		m.registerRepr("string", m.isString, m.reprString);
+		m.registerRepr("numbers", m.isNumber, m.reprNumber);
+		m.registerRepr("boolean", m.isBoolean, m.reprNumber);
+	})();
+}});
+
+
 __CPAN_FILE__ src/lang/declare.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -48937,6 +94409,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.declare");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.extras");
@@ -49035,7 +94509,194 @@
 dojo.declare = dojo.lang.declare;
 
 
+__CPAN_FILE__ src/lang/func.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.func"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.func");
+	dojo.require("dojo.lang.common");
+	dojo.lang.hitch = function (thisObject, method) {
+		var args = [];
+		for (var x = 2; x < arguments.length; x++) {
+			args.push(arguments[x]);
+		}
+		var fcn = (dojo.lang.isString(method) ? thisObject[method] : method) || function () {
+		};
+		return function () {
+			var ta = args.concat([]);
+			for (var x = 0; x < arguments.length; x++) {
+				ta.push(arguments[x]);
+			}
+			return fcn.apply(thisObject, ta);
+		};
+	};
+	dojo.lang.anonCtr = 0;
+	dojo.lang.anon = {};
+	dojo.lang.nameAnonFunc = function (anonFuncPtr, thisObj, searchForNames) {
+		var nso = (thisObj || dojo.lang.anon);
+		if ((searchForNames) || ((dj_global["djConfig"]) && (djConfig["slowAnonFuncLookups"] == true))) {
+			for (var x in nso) {
+				try {
+					if (nso[x] === anonFuncPtr) {
+						return x;
+					}
+				}
+				catch (e) {
+				}
+			}
+		}
+		var ret = "__" + dojo.lang.anonCtr++;
+		while (typeof nso[ret] != "undefined") {
+			ret = "__" + dojo.lang.anonCtr++;
+		}
+		nso[ret] = anonFuncPtr;
+		return ret;
+	};
+	dojo.lang.forward = function (funcName) {
+		return function () {
+			return this[funcName].apply(this, arguments);
+		};
+	};
+	dojo.lang.curry = function (thisObj, func) {
+		var outerArgs = [];
+		thisObj = thisObj || dj_global;
+		if (dojo.lang.isString(func)) {
+			func = thisObj[func];
+		}
+		for (var x = 2; x < arguments.length; x++) {
+			outerArgs.push(arguments[x]);
+		}
+		var ecount = (func["__preJoinArity"] || func.length) - outerArgs.length;
+		function gather(nextArgs, innerArgs, expected) {
+			var texpected = expected;
+			var totalArgs = innerArgs.slice(0);
+			for (var x = 0; x < nextArgs.length; x++) {
+				totalArgs.push(nextArgs[x]);
+			}
+			expected = expected - nextArgs.length;
+			if (expected <= 0) {
+				var res = func.apply(thisObj, totalArgs);
+				expected = texpected;
+				return res;
+			} else {
+				return function () {
+					return gather(arguments, totalArgs, expected);
+				};
+			}
+		}
+		return gather([], outerArgs, ecount);
+	};
+	dojo.lang.curryArguments = function (thisObj, func, args, offset) {
+		var targs = [];
+		var x = offset || 0;
+		for (x = offset; x < args.length; x++) {
+			targs.push(args[x]);
+		}
+		return dojo.lang.curry.apply(dojo.lang, [thisObj, func].concat(targs));
+	};
+	dojo.lang.tryThese = function () {
+		for (var x = 0; x < arguments.length; x++) {
+			try {
+				if (typeof arguments[x] == "function") {
+					var ret = (arguments[x]());
+					if (ret) {
+						return ret;
+					}
+				}
+			}
+			catch (e) {
+				dojo.debug(e);
+			}
+		}
+	};
+	dojo.lang.delayThese = function (farr, cb, delay, onend) {
+		if (!farr.length) {
+			if (typeof onend == "function") {
+				onend();
+			}
+			return;
+		}
+		if ((typeof delay == "undefined") && (typeof cb == "number")) {
+			delay = cb;
+			cb = function () {
+			};
+		} else {
+			if (!cb) {
+				cb = function () {
+				};
+				if (!delay) {
+					delay = 0;
+				}
+			}
+		}
+		setTimeout(function () {
+			(farr.shift())();
+			cb();
+			dojo.lang.delayThese(farr, cb, delay, onend);
+		}, delay);
+	};
+}});
+
+
 __CPAN_DIR__ src/lang/timing
+__CPAN_FILE__ src/lang/timing/Timer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.timing.Timer"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.timing.Timer");
+	dojo.require("dojo.lang.func");
+	dojo.lang.timing.Timer = function (interval) {
+		this.timer = null;
+		this.isRunning = false;
+		this.interval = interval;
+		this.onStart = null;
+		this.onStop = null;
+	};
+	dojo.extend(dojo.lang.timing.Timer, {onTick:function () {
+	}, setInterval:function (interval) {
+		if (this.isRunning) {
+			dj_global.clearInterval(this.timer);
+		}
+		this.interval = interval;
+		if (this.isRunning) {
+			this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval);
+		}
+	}, start:function () {
+		if (typeof this.onStart == "function") {
+			this.onStart();
+		}
+		this.isRunning = true;
+		this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval);
+	}, stop:function () {
+		if (typeof this.onStop == "function") {
+			this.onStop();
+		}
+		this.isRunning = false;
+		dj_global.clearInterval(this.timer);
+	}});
+}});
+
+
 __CPAN_FILE__ src/lang/timing/Timer.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -49047,6 +94708,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.timing.Timer");
 dojo.require("dojo.lang.func");
 dojo.lang.timing.Timer = function (interval) {
@@ -49091,6 +94754,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.timing.Streamer");
 dojo.require("dojo.lang.timing.Timer");
 dojo.lang.timing.Streamer = function (input, output, interval, minimum, initialData) {
@@ -49158,9 +94823,100 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.lang.timing.*");
 
 
+__CPAN_FILE__ src/lang/timing/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.timing.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.timing.*");
+}});
+
+
+__CPAN_FILE__ src/lang/timing/Streamer.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.lang.timing.Streamer"], ["require", "dojo.lang.timing.Timer"]], definePackage:function (dojo) {
+	dojo.provide("dojo.lang.timing.Streamer");
+	dojo.require("dojo.lang.timing.Timer");
+	dojo.lang.timing.Streamer = function (input, output, interval, minimum, initialData) {
+		var self = this;
+		var queue = [];
+		this.interval = interval || 1000;
+		this.minimumSize = minimum || 10;
+		this.inputFunction = input || function (q) {
+		};
+		this.outputFunction = output || function (point) {
+		};
+		var timer = new dojo.lang.timing.Timer(this.interval);
+		var tick = function () {
+			self.onTick(self);
+			if (queue.length < self.minimumSize) {
+				self.inputFunction(queue);
+			}
+			var obj = queue.shift();
+			while (typeof (obj) == "undefined" && queue.length > 0) {
+				obj = queue.shift();
+			}
+			if (typeof (obj) == "undefined") {
+				self.stop();
+				return;
+			}
+			self.outputFunction(obj);
+		};
+		this.setInterval = function (ms) {
+			this.interval = ms;
+			timer.setInterval(ms);
+		};
+		this.onTick = function (obj) {
+		};
+		this.start = function () {
+			if (typeof (this.inputFunction) == "function" && typeof (this.outputFunction) == "function") {
+				timer.start();
+				return;
+			}
+			dojo.raise("You cannot start a Streamer without an input and an output function.");
+		};
+		this.onStart = function () {
+		};
+		this.stop = function () {
+			timer.stop();
+		};
+		this.onStop = function () {
+		};
+		timer.onTick = this.tick;
+		timer.onStart = this.onStart;
+		timer.onStop = this.onStop;
+		if (initialData) {
+			queue.concat(initialData);
+		}
+	};
+}});
+
+
 __CPAN_DIR__ src/data
 __CPAN_FILE__ src/data/OpmlStore.js
 /*
@@ -49173,6 +94929,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.OpmlStore");
 dojo.require("dojo.data.core.Read");
 dojo.require("dojo.data.core.Result");
@@ -49339,6 +95097,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.YahooStore");
 dojo.require("dojo.data.core.RemoteStore");
 dojo.require("dojo.lang.declare");
@@ -49372,6 +95132,176 @@
 }});
 
 
+__CPAN_FILE__ src/data/OpmlStore.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.OpmlStore"], ["require", "dojo.data.core.Read"], ["require", "dojo.data.core.Result"], ["require", "dojo.lang.assert"], ["require", "dojo.json"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.OpmlStore");
+	dojo.require("dojo.data.core.Read");
+	dojo.require("dojo.data.core.Result");
+	dojo.require("dojo.lang.assert");
+	dojo.require("dojo.json");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.data.OpmlStore");
+	dojo.declare("dojo.data.OpmlStore", dojo.data.core.Read, {initializer:function (keywordParameters) {
+		this._arrayOfTopLevelItems = [];
+		this._metadataNodes = null;
+		this._loadFinished = false;
+		this._opmlFileUrl = keywordParameters["url"];
+	}, _assertIsItem:function (item) {
+		if (!this.isItem(item)) {
+			throw new Error("dojo.data.OpmlStore: a function was passed an item argument that was not an item");
+		}
+	}, _removeChildNodesThatAreNotElementNodes:function (node, recursive) {
+		var childNodes = node.childNodes;
+		if (childNodes.length == 0) {
+			return;
+		}
+		var nodesToRemove = [];
+		var i, childNode;
+		for (i = 0; i < childNodes.length; ++i) {
+			childNode = childNodes[i];
+			if (childNode.nodeType != Node.ELEMENT_NODE) {
+				nodesToRemove.push(childNode);
+			}
+		}
+		for (i = 0; i < nodesToRemove.length; ++i) {
+			childNode = nodesToRemove[i];
+			node.removeChild(childNode);
+		}
+		if (recursive) {
+			for (i = 0; i < childNodes.length; ++i) {
+				childNode = childNodes[i];
+				this._removeChildNodesThatAreNotElementNodes(childNode, recursive);
+			}
+		}
+	}, _processRawXmlTree:function (rawXmlTree) {
+		var headNodes = rawXmlTree.getElementsByTagName("head");
+		var headNode = headNodes[0];
+		this._removeChildNodesThatAreNotElementNodes(headNode);
+		this._metadataNodes = headNode.childNodes;
+		var bodyNodes = rawXmlTree.getElementsByTagName("body");
+		var bodyNode = bodyNodes[0];
+		this._removeChildNodesThatAreNotElementNodes(bodyNode, true);
+		var bodyChildNodes = bodyNodes[0].childNodes;
+		for (var i = 0; i < bodyChildNodes.length; ++i) {
+			var node = bodyChildNodes[i];
+			if (node.tagName == "outline") {
+				this._arrayOfTopLevelItems.push(node);
+			}
+		}
+	}, get:function (item, attribute, defaultValue) {
+		this._assertIsItem(item);
+		if (attribute == "children") {
+			return (item.firstChild || defaultValue);
+		} else {
+			var value = item.getAttribute(attribute);
+			value = (value != undefined) ? value : defaultValue;
+			return value;
+		}
+	}, getValues:function (item, attribute) {
+		this._assertIsItem(item);
+		if (attribute == "children") {
+			var array = [];
+			for (var i = 0; i < item.childNodes.length; ++i) {
+				array.push(item.childNodes[i]);
+			}
+			return array;
+		} else {
+			return [item.getAttribute(attribute)];
+		}
+	}, getAttributes:function (item) {
+		this._assertIsItem(item);
+		var attributes = [];
+		var xmlNode = item;
+		var xmlAttributes = xmlNode.attributes;
+		for (var i = 0; i < xmlAttributes.length; ++i) {
+			var xmlAttribute = xmlAttributes.item(i);
+			attributes.push(xmlAttribute.nodeName);
+		}
+		if (xmlNode.childNodes.length > 0) {
+			attributes.push("children");
+		}
+		return attributes;
+	}, hasAttribute:function (item, attribute) {
+		return (this.getValues(item, attribute).length > 0);
+	}, containsValue:function (item, attribute, value) {
+		var values = this.getValues(item, attribute);
+		for (var i = 0; i < values.length; ++i) {
+			var possibleValue = values[i];
+			if (value == possibleValue) {
+				return true;
+			}
+		}
+		return false;
+	}, isItem:function (something) {
+		return (something && something.nodeType == Node.ELEMENT_NODE && something.tagName == "outline");
+	}, isItemAvailable:function (something) {
+		return this.isItem(something);
+	}, find:function (keywordArgs) {
+		var result = null;
+		if (keywordArgs instanceof dojo.data.core.Result) {
+			result = keywordArgs;
+			result.store = this;
+		} else {
+			result = new dojo.data.core.Result(keywordArgs, this);
+		}
+		var self = this;
+		var bindHandler = function (type, data, evt) {
+			var scope = result.scope || dj_global;
+			if (type == "load") {
+				self._processRawXmlTree(data);
+				if (result.saveResult) {
+					result.items = self._arrayOfTopLevelItems;
+				}
+				if (result.onbegin) {
+					result.onbegin.call(scope, result);
+				}
+				for (var i = 0; i < self._arrayOfTopLevelItems.length; i++) {
+					var item = self._arrayOfTopLevelItems[i];
+					if (result.onnext && !result._aborted) {
+						result.onnext.call(scope, item, result);
+					}
+				}
+				if (result.oncompleted && !result._aborted) {
+					result.oncompleted.call(scope, result);
+				}
+			} else {
+				if (type == "error" || type == "timeout") {
+					var errorObject = data;
+					if (result.onerror) {
+						result.onerror.call(scope, data);
+					}
+				}
+			}
+		};
+		if (!this._loadFinished) {
+			if (this._opmlFileUrl) {
+				var bindRequest = dojo.io.bind({url:this._opmlFileUrl, handle:bindHandler, mimetype:"text/xml", sync:(result.sync || false)});
+				result._abortFunc = bindRequest.abort;
+			}
+		}
+		return result;
+	}, getIdentity:function (item) {
+		dojo.unimplemented("dojo.data.OpmlStore.getIdentity()");
+		return null;
+	}, findByIdentity:function (identity) {
+		dojo.unimplemented("dojo.data.OpmlStore.findByIdentity()");
+		return null;
+	}});
+}});
+
+
 __CPAN_FILE__ src/data/RdfStore.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -49383,6 +95313,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.RdfStore");
 dojo.provide("dojo.data.RhizomeStore");
 dojo.require("dojo.lang.declare");
@@ -49557,6 +95489,173 @@
 }});
 
 
+__CPAN_FILE__ src/data/YahooStore.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.YahooStore"], ["require", "dojo.data.core.RemoteStore"], ["require", "dojo.lang.declare"], ["require", "dojo.io.ScriptSrcIO"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.YahooStore");
+	dojo.require("dojo.data.core.RemoteStore");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.io.ScriptSrcIO");
+	dojo.declare("dojo.data.YahooStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) {
+		var start = 1;
+		var count = 1;
+		if (result) {
+			start = result.start || start;
+			count = result.count || count;
+		}
+		var sourceUrl = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=dojo&language=en&query=" + result.query + "&start=" + start + "&results=" + count + "&output=json";
+		requestKw.url = sourceUrl;
+		requestKw.transport = "ScriptSrcTransport";
+		requestKw.mimetype = "text/json";
+		requestKw.jsonParamName = "callback";
+	}, _resultToQueryMetadata:function (json) {
+		return json.ResultSet;
+	}, _resultToQueryData:function (json) {
+		var data = {};
+		for (var i = 0; i < json.ResultSet.totalResultsReturned; ++i) {
+			var record = json.ResultSet.Result[i];
+			var item = {};
+			item["Url"] = [record.Url];
+			item["Title"] = [record.Title];
+			item["Summary"] = [record.Summary];
+			var arrayIndex = (json.ResultSet.firstResultPosition - 1) + i;
+			data[arrayIndex.toString()] = item;
+		}
+		return data;
+	}});
+}});
+
+
+__CPAN_FILE__ src/data/CsvStore.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.CsvStore"], ["require", "dojo.data.core.RemoteStore"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.CsvStore");
+	dojo.require("dojo.data.core.RemoteStore");
+	dojo.require("dojo.lang.assert");
+	dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) {
+		var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : "";
+		var queryUrl = result.query ? result.query : "";
+		requestKw.url = serverQueryUrl + queryUrl;
+		requestKw.method = "get";
+	}, _resultToQueryData:function (serverResponseData) {
+		var csvFileContentString = serverResponseData;
+		var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString);
+		var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays);
+		var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects);
+		return remoteStoreData;
+	}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
+	}, _getArrayOfArraysFromCsvFileContents:function (csvFileContents) {
+		dojo.lang.assertType(csvFileContents, String);
+		var lineEndingCharacters = new RegExp("\r\n|\n|\r");
+		var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g");
+		var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g");
+		var doubleQuotes = new RegExp("\"\"", "g");
+		var arrayOfOutputRecords = [];
+		var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);
+		for (var i in arrayOfInputLines) {
+			var singleLine = arrayOfInputLines[i];
+			if (singleLine.length > 0) {
+				var listOfFields = singleLine.split(",");
+				var j = 0;
+				while (j < listOfFields.length) {
+					var space_field_space = listOfFields[j];
+					var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, "");
+					var field = field_space.replace(trailingWhiteSpaceCharacters, "");
+					var firstChar = field.charAt(0);
+					var lastChar = field.charAt(field.length - 1);
+					var secondToLastChar = field.charAt(field.length - 2);
+					var thirdToLastChar = field.charAt(field.length - 3);
+					if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) {
+						if (j + 1 === listOfFields.length) {
+							return null;
+						}
+						var nextField = listOfFields[j + 1];
+						listOfFields[j] = field_space + "," + nextField;
+						listOfFields.splice(j + 1, 1);
+					} else {
+						if ((firstChar == "\"") && (lastChar == "\"")) {
+							field = field.slice(1, (field.length - 1));
+							field = field.replace(doubleQuotes, "\"");
+						}
+						listOfFields[j] = field;
+						j += 1;
+					}
+				}
+				arrayOfOutputRecords.push(listOfFields);
+			}
+		}
+		return arrayOfOutputRecords;
+	}, _getArrayOfObjectsFromArrayOfArrays:function (arrayOfArrays) {
+		dojo.lang.assertType(arrayOfArrays, Array);
+		var arrayOfItems = [];
+		if (arrayOfArrays.length > 1) {
+			var arrayOfKeys = arrayOfArrays[0];
+			for (var i = 1; i < arrayOfArrays.length; ++i) {
+				var row = arrayOfArrays[i];
+				var item = {};
+				for (var j in row) {
+					var value = row[j];
+					var key = arrayOfKeys[j];
+					item[key] = value;
+				}
+				arrayOfItems.push(item);
+			}
+		}
+		return arrayOfItems;
+	}, _getRemoteStoreDataFromArrayOfObjects:function (arrayOfObjects) {
+		dojo.lang.assertType(arrayOfObjects, Array);
+		var output = {};
+		for (var i = 0; i < arrayOfObjects.length; ++i) {
+			var object = arrayOfObjects[i];
+			for (var key in object) {
+				var value = object[key];
+				object[key] = [value];
+			}
+			output[i] = object;
+		}
+		return output;
+	}, newItem:function (attributes, keywordArgs) {
+		dojo.unimplemented("dojo.data.CsvStore.newItem");
+	}, deleteItem:function (item) {
+		dojo.unimplemented("dojo.data.CsvStore.deleteItem");
+	}, setValues:function (item, attribute, values) {
+		dojo.unimplemented("dojo.data.CsvStore.setValues");
+	}, set:function (item, attribute, value) {
+		dojo.unimplemented("dojo.data.CsvStore.set");
+	}, unsetAttribute:function (item, attribute) {
+		dojo.unimplemented("dojo.data.CsvStore.unsetAttribute");
+	}, save:function (keywordArgs) {
+		dojo.unimplemented("dojo.data.CsvStore.save");
+	}, revert:function () {
+		dojo.unimplemented("dojo.data.CsvStore.revert");
+	}, isDirty:function (item) {
+		dojo.unimplemented("dojo.data.CsvStore.isDirty");
+	}});
+}});
+
+
 __CPAN_FILE__ src/data/CsvStore.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -49568,6 +95667,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.CsvStore");
 dojo.require("dojo.data.core.RemoteStore");
 dojo.require("dojo.lang.assert");
@@ -49672,6 +95773,195 @@
 }});
 
 
+__CPAN_FILE__ src/data/RdfStore.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.RdfStore"], ["provide", "dojo.data.RhizomeStore"], ["require", "dojo.lang.declare"], ["require", "dojo.data.core.RemoteStore"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.RdfStore");
+	dojo.provide("dojo.data.RhizomeStore");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.data.core.RemoteStore");
+	dojo.require("dojo.experimental");
+	dojo.data.RdfDatatypeSerializer = function (type, convertFunc, uri) {
+		this.type = type;
+		this._converter = convertFunc;
+		this.uri = uri;
+		this.serialize = function (value) {
+			return this._converter.call(value, value);
+		};
+	};
+	dojo.declare("dojo.data.RdfStore", dojo.data.core.RemoteStore, {_datatypeMap:{literal:function (value) {
+		var literal = value.value;
+		if (value["xml:lang"]) {
+			literal.lang = value["xml:lang"];
+		}
+		return literal;
+	}, uri:function (value) {
+		return {id:value.value};
+	}, bnode:function (value) {
+		return {id:"_:" + value.value};
+	}, "http://www.w3.org/2001/XMLSchema#int":function (value) {
+		return parseInt(value.value);
+	}, "http://www.w3.org/2001/XMLSchema#integer":function (value) {
+		return parseInt(value.value);
+	}, "http://www.w3.org/2001/XMLSchema#long":function (value) {
+		return parseInt(value.value);
+	}, "http://www.w3.org/2001/XMLSchema#float":function (value) {
+		return parseFloat(value.value);
+	}, "http://www.w3.org/2001/XMLSchema#double":function (value) {
+		return parseFloat(value.value);
+	}, "http://www.w3.org/2001/XMLSchema#boolean":function (value) {
+		return !value || value == "false" || value == "0" ? false : true;
+	}}, _datatypeSerializers:[new dojo.data.RdfDatatypeSerializer(Number, Number.toString, "http://www.w3.org/2001/XMLSchema#float"), new dojo.data.RdfDatatypeSerializer(Boolean, Boolean.toString, "http://www.w3.org/2001/XMLSchema#boolean")], _findDatatypeSerializer:function (value) {
+		var length = this._datatypeSerializers.length;
+		for (var i = 0; i < length; i++) {
+			var datatype = this._datatypeSerializers[i];
+			if (value instanceof datatype.type) {
+				return datatype;
+			}
+		}
+	}, _toRDFValue:function (value) {
+		var rdfvalue = {};
+		if (value.id) {
+			if (value.id.slice(0, 2) == "_:") {
+				rdfvalue.type = "bnode";
+				rdfvalue.value = value.id.substring(2);
+			} else {
+				rdfvalue.type = "uri";
+				rdfvalue.value = value.id;
+			}
+		} else {
+			if (typeof value == "string" || value instanceof String) {
+				rdfvalue.type = "literal";
+				rdfvalue.value = value;
+				if (value.lang) {
+					rdfvalue["xml:lang"] = value.lang;
+				}
+			} else {
+				if (typeof value == "number") {
+					value = new Number(value);
+				} else {
+					if (typeof value == "boolean") {
+						value = new Boolean(value);
+					}
+				}
+				var datatype = this._findDatatypeSerializer(value);
+				if (datatype) {
+					rdfvalue = {"type":"typed-literal", "datatype":datatype.uri, "value":value.toString()};
+				} else {
+					rdfvalue = {"type":"literal", "value":value.toString()};
+				}
+			}
+		}
+		return rdfvalue;
+	}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
+		var rdfResult = {"head":{"vars":["s", "p", "o"]}, "results":{"bindings":[]}};
+		var resources = [];
+		for (var key in this._deleted) {
+			resources.push(key);
+		}
+		rdfResult.results.deleted = resources;
+		for (key in this._changed) {
+			var subject = this._toRDFValue(this.getIdentity(key));
+			var attributes = this._changed[key];
+			for (var attr in attributes) {
+				var predicate = {type:"uri", value:attr};
+				var values = attributes[attr];
+				if (!values.length) {
+					continue;
+				}
+				var rdfvalues = [];
+				for (var i = 0; i < values.length; i++) {
+					var rdfvalue = this._toRDFValue(values[i]);
+					rdfResult.results.bindings.push({s:subject, p:predicate, o:rdfvalue});
+				}
+			}
+		}
+		var oldRegistry = dojo.json.jsonRegistry;
+		dojo.json.jsonRegistry = this._jsonRegistry;
+		var jsonString = dojo.json.serialize(rdfResult);
+		dojo.json.jsonRegistry = oldRegistry;
+		requestKw.postContent = jsonString;
+	}, _resultToQueryMetadata:function (json) {
+		return json.head;
+	}, _resultToQueryData:function (json) {
+		var items = {};
+		var stmts = json.results.bindings;
+		for (var i = 0; i < stmts.length; i++) {
+			var stmt = stmts[i];
+			var subject = stmt.s.value;
+			if (stmt.s.type == "bnode") {
+				subject = "_:" + subject;
+			}
+			var attributes = data[subject];
+			if (!attributes) {
+				attributes = {};
+				data[stmt.s] = attributes;
+			}
+			var attr = attributes[stmt.p.value];
+			if (!attr) {
+				attributes[stmt.p.value] = [stmt.o];
+			} else {
+				attr.push(stmt.o);
+			}
+		}
+		return items;
+	}});
+	dojo.declare("dojo.data.RhizomeStore", dojo.data.RdfStore, {initializer:function (kwArgs) {
+		this._serverQueryUrl = kwArgs.baseUrl + "search?view=json&searchType=RxPath&search=";
+		this._serverSaveUrl = kwArgs.baseUrl + "save-metadata";
+	}, _resultToQueryMetadata:function (json) {
+		return json;
+	}, _resultToQueryData:function (json) {
+		return json;
+	}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
+		requestKw.url = this._serverSaveUrl;
+		requestKw.method = "post";
+		requestKw.mimetype = "text/plain";
+		var resources = [];
+		for (var key in this._deleted) {
+			resources.push(key);
+		}
+		var changes = {};
+		for (key in this._changed) {
+			if (!this._added[key]) {
+				resources.push(key);
+			}
+			var attributes = this._changed[key];
+			var rdfattributes = {};
+			for (var attr in attributes) {
+				var values = attributes[attr];
+				if (!values.length) {
+					continue;
+				}
+				var rdfvalues = [];
+				for (var i = 0; i < values.length; i++) {
+					var rdfvalue = this._toRDFValue(values[i]);
+					rdfvalues.push(rdfvalue);
+				}
+				rdfattributes[attr] = rdfvalues;
+			}
+			changes[key] = rdfattributes;
+		}
+		var oldRegistry = dojo.json.jsonRegistry;
+		dojo.json.jsonRegistry = this._jsonRegistry;
+		var jsonString = dojo.json.serialize(changes);
+		dojo.json.jsonRegistry = oldRegistry;
+		requestKw.content = {rdfFormat:"json", resource:resources, metadata:jsonString};
+	}});
+}});
+
+
 __CPAN_DIR__ src/data/core
 __CPAN_FILE__ src/data/core/Read.js
 /*
@@ -49684,6 +95974,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.core.Read");
 dojo.require("dojo.data.core.Result");
 dojo.require("dojo.lang.declare");
@@ -49728,6 +96020,65 @@
 }});
 
 
+__CPAN_FILE__ src/data/core/Read.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.Read"], ["require", "dojo.data.core.Result"], ["require", "dojo.lang.declare"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.core.Read");
+	dojo.require("dojo.data.core.Result");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.data.core.Read");
+	dojo.declare("dojo.data.core.Read", null, {get:function (item, attribute, defaultValue) {
+		dojo.unimplemented("dojo.data.core.Read.get");
+		var attributeValue = null;
+		return attributeValue;
+	}, getValues:function (item, attribute) {
+		dojo.unimplemented("dojo.data.core.Read.getValues");
+		var array = null;
+		return array;
+	}, getAttributes:function (item) {
+		dojo.unimplemented("dojo.data.core.Read.getAttributes");
+		var array = null;
+		return array;
+	}, hasAttribute:function (item, attribute) {
+		dojo.unimplemented("dojo.data.core.Read.hasAttribute");
+		return false;
+	}, containsValue:function (item, attribute, value) {
+		dojo.unimplemented("dojo.data.core.Read.containsValue");
+		return false;
+	}, isItem:function (something) {
+		dojo.unimplemented("dojo.data.core.Read.isItem");
+		return false;
+	}, isItemAvailable:function (something) {
+		dojo.unimplemented("dojo.data.core.Read.isItemAvailable");
+		return false;
+	}, find:function (keywordArgs) {
+		dojo.unimplemented("dojo.data.core.Read.find");
+		var result = null;
+		return result;
+	}, getIdentity:function (item) {
+		dojo.unimplemented("dojo.data.core.Read.getIdentity");
+		var itemIdentifyString = null;
+		return itemIdentifyString;
+	}, findByIdentity:function (identity) {
+		dojo.unimplemented("dojo.data.core.Read.getByIdentity");
+		var item = null;
+		return item;
+	}});
+}});
+
+
 __CPAN_FILE__ src/data/core/RemoteStore.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -49739,6 +96090,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.core.RemoteStore");
 dojo.require("dojo.data.core.Read");
 dojo.require("dojo.data.core.Write");
@@ -50082,6 +96435,46 @@
 }});
 
 
+__CPAN_FILE__ src/data/core/Result.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.Result"], ["require", "dojo.lang.declare"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.core.Result");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.data.core.Result");
+	dojo.declare("dojo.data.core.Result", null, {initializer:function (keywordArgs, store) {
+		this.fromKwArgs(keywordArgs || {});
+		this.items = null;
+		this.resultMetadata = null;
+		this.length = -1;
+		this.store = store;
+		this._aborted = false;
+		this._abortFunc = null;
+	}, sync:true, abort:function () {
+		this._aborted = true;
+		if (this._abortFunc) {
+			this._abortFunc();
+		}
+	}, fromKwArgs:function (kwArgs) {
+		if (typeof kwArgs.saveResult == "undefined") {
+			this.saveResult = kwArgs.onnext ? false : true;
+		}
+		dojo.lang.mixin(this, kwArgs);
+	}});
+}});
+
+
 __CPAN_FILE__ src/data/core/Write.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50093,6 +96486,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.core.Write");
 dojo.require("dojo.data.core.Read");
 dojo.require("dojo.lang.declare");
@@ -50126,6 +96521,54 @@
 }});
 
 
+__CPAN_FILE__ src/data/core/Write.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.Write"], ["require", "dojo.data.core.Read"], ["require", "dojo.lang.declare"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.core.Write");
+	dojo.require("dojo.data.core.Read");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.data.core.Write");
+	dojo.declare("dojo.data.core.Write", dojo.data.core.Read, {newItem:function (keywordArgs) {
+		var newItem;
+		dojo.unimplemented("dojo.data.core.Write.newItem");
+		return newItem;
+	}, deleteItem:function (item) {
+		dojo.unimplemented("dojo.data.core.Write.deleteItem");
+		return false;
+	}, set:function (item, attribute, value) {
+		dojo.unimplemented("dojo.data.core.Write.set");
+		return false;
+	}, setValues:function (item, attribute, values) {
+		dojo.unimplemented("dojo.data.core.Write.setValues");
+		return false;
+	}, unsetAttribute:function (item, attribute) {
+		dojo.unimplemented("dojo.data.core.Write.clear");
+		return false;
+	}, save:function () {
+		dojo.unimplemented("dojo.data.core.Write.save");
+		return false;
+	}, revert:function () {
+		dojo.unimplemented("dojo.data.core.Write.revert");
+		return false;
+	}, isDirty:function (item) {
+		dojo.unimplemented("dojo.data.core.Write.isDirty");
+		return false;
+	}});
+}});
+
+
 __CPAN_FILE__ src/data/core/Result.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50137,6 +96580,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.core.Result");
 dojo.require("dojo.lang.declare");
 dojo.require("dojo.experimental");
@@ -50162,6 +96607,364 @@
 }});
 
 
+__CPAN_FILE__ src/data/core/RemoteStore.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.RemoteStore"], ["require", "dojo.data.core.Read"], ["require", "dojo.data.core.Write"], ["require", "dojo.data.core.Result"], ["require", "dojo.experimental"], ["require", "dojo.Deferred"], ["require", "dojo.lang.declare"], ["require", "dojo.json"], ["require", "dojo.io.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.core.RemoteStore");
+	dojo.require("dojo.data.core.Read");
+	dojo.require("dojo.data.core.Write");
+	dojo.require("dojo.data.core.Result");
+	dojo.require("dojo.experimental");
+	dojo.require("dojo.Deferred");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.*");
+	dojo.experimental("dojo.data.core.RemoteStore");
+	dojo.lang.declare("dojo.data.core.RemoteStore", [dojo.data.core.Read, dojo.data.core.Write], {_datatypeMap:{}, _jsonRegistry:dojo.json.jsonRegistry, initializer:function (kwArgs) {
+		if (!kwArgs) {
+			kwArgs = {};
+		}
+		this._serverQueryUrl = kwArgs.queryUrl || "";
+		this._serverSaveUrl = kwArgs.saveUrl || "";
+		this._deleted = {};
+		this._changed = {};
+		this._added = {};
+		this._results = {};
+		this._data = {};
+		this._numItems = 0;
+	}, _setupQueryRequest:function (result, requestKw) {
+		result.query = result.query || "";
+		requestKw.url = this._serverQueryUrl + encodeURIComponent(result.query);
+		requestKw.method = "get";
+		requestKw.mimetype = "text/json";
+	}, _resultToQueryMetadata:function (serverResponseData) {
+		return serverResponseData;
+	}, _resultToQueryData:function (serverResponseData) {
+		return serverResponseData.data;
+	}, _remoteToLocalValues:function (attributes) {
+		for (var key in attributes) {
+			var values = attributes[key];
+			for (var i = 0; i < values.length; i++) {
+				var value = values[i];
+				var type = value.datatype || value.type;
+				if (type) {
+					var localValue = value.value;
+					if (this._datatypeMap[type]) {
+						localValue = this._datatypeMap[type](value);
+					}
+					values[i] = localValue;
+				}
+			}
+		}
+		return attributes;
+	}, _queryToQueryKey:function (query) {
+		if (typeof query == "string") {
+			return query;
+		} else {
+			return dojo.json.serialize(query);
+		}
+	}, _assertIsItem:function (item) {
+		if (!this.isItem(item)) {
+			throw new Error("dojo.data.RemoteStore: a function was passed an item argument that was not an item");
+		}
+	}, get:function (item, attribute, defaultValue) {
+		var valueArray = this.getValues(item, attribute);
+		if (valueArray.length == 0) {
+			return defaultValue;
+		}
+		return valueArray[0];
+	}, getValues:function (item, attribute) {
+		var itemIdentity = this.getIdentity(item);
+		this._assertIsItem(itemIdentity);
+		var changes = this._changed[itemIdentity];
+		if (changes) {
+			var newvalues = changes[attribute];
+			if (newvalues !== undefined) {
+				return newvalues;
+			} else {
+				return [];
+			}
+		}
+		return this._data[itemIdentity][0][attribute];
+	}, getAttributes:function (item) {
+		var itemIdentity = this.getIdentity(item);
+		if (!itemIdentity) {
+			return undefined;
+		}
+		var atts = [];
+		var attrDict = this._data[itemIdentity][0];
+		for (var att in attrDict) {
+			atts.push(att);
+		}
+		return atts;
+	}, hasAttribute:function (item, attribute) {
+		var valueArray = this.getValues(item, attribute);
+		return valueArray.length ? true : false;
+	}, containsValue:function (item, attribute, value) {
+		var valueArray = this.getValues(item, attribute);
+		for (var i = 0; i < valueArray.length; i++) {
+			if (valueArray[i] == value) {
+				return true;
+			}
+		}
+		return false;
+	}, isItem:function (something) {
+		if (!something) {
+			return false;
+		}
+		var itemIdentity = something;
+		if (this._deleted[itemIdentity]) {
+			return false;
+		}
+		if (this._data[itemIdentity]) {
+			return true;
+		}
+		if (this._added[itemIdentity]) {
+			return true;
+		}
+		return false;
+	}, find:function (keywordArgs) {
+		var result = null;
+		if (keywordArgs instanceof dojo.data.core.Result) {
+			result = keywordArgs;
+			result.store = this;
+		} else {
+			result = new dojo.data.core.Result(keywordArgs, this);
+		}
+		var query = result.query;
+		var self = this;
+		var bindfunc = function (type, data, evt) {
+			var scope = result.scope || dj_global;
+			if (type == "load") {
+				result.resultMetadata = self._resultToQueryMetadata(data);
+				var dataDict = self._resultToQueryData(data);
+				if (result.onbegin) {
+					result.onbegin.call(scope, result);
+				}
+				var count = 0;
+				var resultData = [];
+				var newItemCount = 0;
+				for (var key in dataDict) {
+					if (result._aborted) {
+						break;
+					}
+					if (!self._deleted[key]) {
+						var values = dataDict[key];
+						var attributeDict = self._remoteToLocalValues(values);
+						var existingValue = self._data[key];
+						var refCount = 1;
+						if (existingValue) {
+							refCount = ++existingValue[1];
+						} else {
+							newItemCount++;
+						}
+						self._data[key] = [attributeDict, refCount];
+						resultData.push(key);
+						count++;
+						if (result.onnext) {
+							result.onnext.call(scope, key, result);
+						}
+					}
+				}
+				self._results[self._queryToQueryKey(query)] = resultData;
+				self._numItems += newItemCount;
+				result.length = count;
+				if (result.saveResult) {
+					result.items = resultData;
+				}
+				if (!result._aborted && result.oncompleted) {
+					result.oncompleted.call(scope, result);
+				}
+			} else {
+				if (type == "error" || type == "timeout") {
+					dojo.debug("find error: " + dojo.json.serialize(data));
+					if (result.onerror) {
+						result.onerror.call(scope, data);
+					}
+				}
+			}
+		};
+		var bindKw = keywordArgs.bindArgs || {};
+		bindKw.sync = result.sync;
+		bindKw.handle = bindfunc;
+		this._setupQueryRequest(result, bindKw);
+		var request = dojo.io.bind(bindKw);
+		result._abortFunc = request.abort;
+		return result;
+	}, getIdentity:function (item) {
+		if (!this.isItem(item)) {
+			return null;
+		}
+		return (item.id ? item.id : item);
+	}, newItem:function (attributes, keywordArgs) {
+		var itemIdentity = keywordArgs["identity"];
+		if (this._deleted[itemIdentity]) {
+			delete this._deleted[itemIdentity];
+		} else {
+			this._added[itemIdentity] = 1;
+		}
+		if (attributes) {
+			for (var attribute in attributes) {
+				var valueOrArrayOfValues = attributes[attribute];
+				if (dojo.lang.isArray(valueOrArrayOfValues)) {
+					this.setValues(itemIdentity, attribute, valueOrArrayOfValues);
+				} else {
+					this.set(itemIdentity, attribute, valueOrArrayOfValues);
+				}
+			}
+		}
+		return {id:itemIdentity};
+	}, deleteItem:function (item) {
+		var identity = this.getIdentity(item);
+		if (!identity) {
+			return false;
+		}
+		if (this._added[identity]) {
+			delete this._added[identity];
+		} else {
+			this._deleted[identity] = 1;
+		}
+		if (this._changed[identity]) {
+			delete this._changed[identity];
+		}
+		return true;
+	}, setValues:function (item, attribute, values) {
+		var identity = this.getIdentity(item);
+		if (!identity) {
+			return undefined;
+		}
+		var changes = this._changed[identity];
+		if (!changes) {
+			changes = {};
+			this._changed[identity] = changes;
+		}
+		changes[attribute] = values;
+		return true;
+	}, set:function (item, attribute, value) {
+		return this.setValues(item, attribute, [value]);
+	}, unsetAttribute:function (item, attribute) {
+		return this.setValues(item, attribute, []);
+	}, _initChanges:function () {
+		this._deleted = {};
+		this._changed = {};
+		this._added = {};
+	}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {
+		requestKw.url = this._serverSaveUrl;
+		requestKw.method = "post";
+		requestKw.mimetype = "text/plain";
+		var deleted = [];
+		for (var key in this._deleted) {
+			deleted.push(key);
+		}
+		var saveStruct = {"changed":this._changed, "deleted":deleted};
+		var oldRegistry = dojo.json.jsonRegistry;
+		dojo.json.jsonRegistry = this._jsonRegistry;
+		var jsonString = dojo.json.serialize(saveStruct);
+		dojo.json.jsonRegistry = oldRegistry;
+		requestKw.postContent = jsonString;
+	}, save:function (keywordArgs) {
+		keywordArgs = keywordArgs || {};
+		var result = new dojo.Deferred();
+		var self = this;
+		var bindfunc = function (type, data, evt) {
+			if (type == "load") {
+				if (result.fired == 1) {
+					return;
+				}
+				var key = null;
+				for (key in self._added) {
+					if (!self._data[key]) {
+						self._data[key] = [{}, 1];
+					}
+				}
+				for (key in self._changed) {
+					var existing = self._data[key];
+					var changes = self._changed[key];
+					if (existing) {
+						existing[0] = changes;
+					} else {
+						self._data[key] = [changes, 1];
+					}
+				}
+				for (key in self._deleted) {
+					if (self._data[key]) {
+						delete self._data[key];
+					}
+				}
+				self._initChanges();
+				result.callback(true);
+			} else {
+				if (type == "error" || type == "timeout") {
+					result.errback(data);
+				}
+			}
+		};
+		var bindKw = {sync:keywordArgs["sync"], handle:bindfunc};
+		this._setupSaveRequest(keywordArgs, bindKw);
+		var request = dojo.io.bind(bindKw);
+		result.canceller = function (deferred) {
+			request.abort();
+		};
+		return result;
+	}, revert:function () {
+		this._initChanges();
+		return true;
+	}, isDirty:function (item) {
+		if (item) {
+			var identity = item.id || item;
+			return this._deleted[identity] || this._changed[identity];
+		} else {
+			var key = null;
+			for (key in this._changed) {
+				return true;
+			}
+			for (key in this._deleted) {
+				return true;
+			}
+			for (key in this._added) {
+				return true;
+			}
+			return false;
+		}
+	}, createReference:function (idstring) {
+		return {id:idstring};
+	}, getSize:function () {
+		return this._numItems;
+	}, forgetResults:function (query) {
+		var queryKey = this._queryToQueryKey(query);
+		var results = this._results[queryKey];
+		if (!results) {
+			return false;
+		}
+		var removed = 0;
+		for (var i = 0; i < results.length; i++) {
+			var key = results[i];
+			var existingValue = this._data[key];
+			if (existingValue[1] <= 1) {
+				delete this._data[key];
+				removed++;
+			} else {
+				existingValue[1] = --existingValue[1];
+			}
+		}
+		delete this._results[queryKey];
+		this._numItems -= removed;
+		return true;
+	}});
+}});
+
+
 __CPAN_DIR__ src/data/old
 __CPAN_FILE__ src/data/old/to_do.txt
 Existing Features
@@ -50221,6 +97024,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.Item");
 dojo.require("dojo.data.old.Observable");
 dojo.require("dojo.data.old.Value");
@@ -50444,6 +97249,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.Type");
 dojo.require("dojo.data.old.Item");
 dojo.data.old.Type = function (dataProvider) {
@@ -50452,6 +97259,45 @@
 dojo.inherits(dojo.data.old.Type, dojo.data.old.Item);
 
 
+__CPAN_FILE__ src/data/old/Attribute.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Attribute"], ["require", "dojo.data.old.Item"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.Attribute");
+	dojo.require("dojo.data.old.Item");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.Attribute = function (dataProvider, attributeId) {
+		dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true});
+		dojo.lang.assertType(attributeId, String);
+		dojo.data.old.Item.call(this, dataProvider);
+		this._attributeId = attributeId;
+	};
+	dojo.inherits(dojo.data.old.Attribute, dojo.data.old.Item);
+	dojo.data.old.Attribute.prototype.toString = function () {
+		return this._attributeId;
+	};
+	dojo.data.old.Attribute.prototype.getAttributeId = function () {
+		return this._attributeId;
+	};
+	dojo.data.old.Attribute.prototype.getType = function () {
+		return this.get("type");
+	};
+	dojo.data.old.Attribute.prototype.setType = function (type) {
+		this.set("type", type);
+	};
+}});
+
+
 __CPAN_FILE__ src/data/old/ResultSet.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50463,6 +97309,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.ResultSet");
 dojo.require("dojo.lang.assert");
 dojo.require("dojo.collections.Collections");
@@ -50504,6 +97352,101 @@
 };
 
 
+__CPAN_FILE__ src/data/old/ResultSet.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.ResultSet"], ["require", "dojo.lang.assert"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.ResultSet");
+	dojo.require("dojo.lang.assert");
+	dojo.require("dojo.collections.Collections");
+	dojo.data.old.ResultSet = function (dataProvider, arrayOfItems) {
+		dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true});
+		dojo.lang.assertType(arrayOfItems, Array, {optional:true});
+		dojo.data.old.Observable.call(this);
+		this._dataProvider = dataProvider;
+		this._arrayOfItems = [];
+		if (arrayOfItems) {
+			this._arrayOfItems = arrayOfItems;
+		}
+	};
+	dojo.inherits(dojo.data.old.ResultSet, dojo.data.old.Observable);
+	dojo.data.old.ResultSet.prototype.toString = function () {
+		var returnString = this._arrayOfItems.join(", ");
+		return returnString;
+	};
+	dojo.data.old.ResultSet.prototype.toArray = function () {
+		return this._arrayOfItems;
+	};
+	dojo.data.old.ResultSet.prototype.getIterator = function () {
+		return new dojo.collections.Iterator(this._arrayOfItems);
+	};
+	dojo.data.old.ResultSet.prototype.getLength = function () {
+		return this._arrayOfItems.length;
+	};
+	dojo.data.old.ResultSet.prototype.getItemAt = function (index) {
+		return this._arrayOfItems[index];
+	};
+	dojo.data.old.ResultSet.prototype.indexOf = function (item) {
+		return dojo.lang.indexOf(this._arrayOfItems, item);
+	};
+	dojo.data.old.ResultSet.prototype.contains = function (item) {
+		return dojo.lang.inArray(this._arrayOfItems, item);
+	};
+	dojo.data.old.ResultSet.prototype.getDataProvider = function () {
+		return this._dataProvider;
+	};
+}});
+
+
+__CPAN_FILE__ src/data/old/Value.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Value"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.Value");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.Value = function (value) {
+		this._value = value;
+		this._type = null;
+	};
+	dojo.data.old.Value.prototype.toString = function () {
+		return this._value.toString();
+	};
+	dojo.data.old.Value.prototype.getValue = function () {
+		return this._value;
+	};
+	dojo.data.old.Value.prototype.getType = function () {
+		dojo.unimplemented("dojo.data.old.Value.prototype.getType");
+		return this._type;
+	};
+	dojo.data.old.Value.prototype.compare = function () {
+		dojo.unimplemented("dojo.data.old.Value.prototype.compare");
+	};
+	dojo.data.old.Value.prototype.isEqual = function () {
+		dojo.unimplemented("dojo.data.old.Value.prototype.isEqual");
+	};
+}});
+
+
 __CPAN_FILE__ src/data/old/Attribute.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50515,6 +97458,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.Attribute");
 dojo.require("dojo.data.old.Item");
 dojo.require("dojo.lang.assert");
@@ -50550,6 +97495,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.Kind");
 dojo.require("dojo.data.old.Item");
 dojo.data.old.Kind = function (dataProvider) {
@@ -50558,6 +97505,73 @@
 dojo.inherits(dojo.data.old.Kind, dojo.data.old.Item);
 
 
+__CPAN_FILE__ src/data/old/Observable.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Observable"], ["require", "dojo.lang.common"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.Observable");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.Observable = function () {
+	};
+	dojo.data.old.Observable.prototype.addObserver = function (observer) {
+		dojo.lang.assertType(observer, Object);
+		dojo.lang.assertType(observer.observedObjectHasChanged, Function);
+		if (!this._arrayOfObservers) {
+			this._arrayOfObservers = [];
+		}
+		if (!dojo.lang.inArray(this._arrayOfObservers, observer)) {
+			this._arrayOfObservers.push(observer);
+		}
+	};
+	dojo.data.old.Observable.prototype.removeObserver = function (observer) {
+		if (!this._arrayOfObservers) {
+			return;
+		}
+		var index = dojo.lang.indexOf(this._arrayOfObservers, observer);
+		if (index != -1) {
+			this._arrayOfObservers.splice(index, 1);
+		}
+	};
+	dojo.data.old.Observable.prototype.getObservers = function () {
+		return this._arrayOfObservers;
+	};
+}});
+
+
+__CPAN_FILE__ src/data/old/Type.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Type"], ["require", "dojo.data.old.Item"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.Type");
+	dojo.require("dojo.data.old.Item");
+	dojo.data.old.Type = function (dataProvider) {
+		dojo.data.old.Item.call(this, dataProvider);
+	};
+	dojo.inherits(dojo.data.old.Type, dojo.data.old.Item);
+}});
+
+
 __CPAN_FILE__ src/data/old/Observable.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50569,6 +97583,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.Observable");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.assert");
@@ -50609,6 +97625,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.Value");
 dojo.require("dojo.lang.assert");
 dojo.data.old.Value = function (value) {
@@ -50644,12 +97662,285 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.data.old.*");
 dojo.kwCompoundRequire({common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]});
 dojo.provide("dojo.data.old.*");
 
 
+__CPAN_FILE__ src/data/old/Item.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Item"], ["require", "dojo.data.old.Observable"], ["require", "dojo.data.old.Value"], ["require", "dojo.lang.common"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.Item");
+	dojo.require("dojo.data.old.Observable");
+	dojo.require("dojo.data.old.Value");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.Item = function (dataProvider) {
+		dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true});
+		dojo.data.old.Observable.call(this);
+		this._dataProvider = dataProvider;
+		this._dictionaryOfAttributeValues = {};
+	};
+	dojo.inherits(dojo.data.old.Item, dojo.data.old.Observable);
+	dojo.data.old.Item.compare = function (itemOne, itemTwo) {
+		dojo.lang.assertType(itemOne, dojo.data.old.Item);
+		if (!dojo.lang.isOfType(itemTwo, dojo.data.old.Item)) {
+			return -1;
+		}
+		var nameOne = itemOne.getName();
+		var nameTwo = itemTwo.getName();
+		if (nameOne == nameTwo) {
+			var attributeArrayOne = itemOne.getAttributes();
+			var attributeArrayTwo = itemTwo.getAttributes();
+			if (attributeArrayOne.length != attributeArrayTwo.length) {
+				if (attributeArrayOne.length > attributeArrayTwo.length) {
+					return 1;
+				} else {
+					return -1;
+				}
+			}
+			for (var i in attributeArrayOne) {
+				var attribute = attributeArrayOne[i];
+				var arrayOfValuesOne = itemOne.getValues(attribute);
+				var arrayOfValuesTwo = itemTwo.getValues(attribute);
+				dojo.lang.assert(arrayOfValuesOne && (arrayOfValuesOne.length > 0));
+				if (!arrayOfValuesTwo) {
+					return 1;
+				}
+				if (arrayOfValuesOne.length != arrayOfValuesTwo.length) {
+					if (arrayOfValuesOne.length > arrayOfValuesTwo.length) {
+						return 1;
+					} else {
+						return -1;
+					}
+				}
+				for (var j in arrayOfValuesOne) {
+					var value = arrayOfValuesOne[j];
+					if (!itemTwo.hasAttributeValue(value)) {
+						return 1;
+					}
+				}
+				return 0;
+			}
+		} else {
+			if (nameOne > nameTwo) {
+				return 1;
+			} else {
+				return -1;
+			}
+		}
+	};
+	dojo.data.old.Item.prototype.toString = function () {
+		var arrayOfStrings = [];
+		var attributes = this.getAttributes();
+		for (var i in attributes) {
+			var attribute = attributes[i];
+			var arrayOfValues = this.getValues(attribute);
+			var valueString;
+			if (arrayOfValues.length == 1) {
+				valueString = arrayOfValues[0];
+			} else {
+				valueString = "[";
+				valueString += arrayOfValues.join(", ");
+				valueString += "]";
+			}
+			arrayOfStrings.push("  " + attribute + ": " + valueString);
+		}
+		var returnString = "{ ";
+		returnString += arrayOfStrings.join(",\n");
+		returnString += " }";
+		return returnString;
+	};
+	dojo.data.old.Item.prototype.compare = function (otherItem) {
+		return dojo.data.old.Item.compare(this, otherItem);
+	};
+	dojo.data.old.Item.prototype.isEqual = function (otherItem) {
+		return (this.compare(otherItem) == 0);
+	};
+	dojo.data.old.Item.prototype.getName = function () {
+		return this.get("name");
+	};
+	dojo.data.old.Item.prototype.get = function (attributeId) {
+		var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
+		if (dojo.lang.isUndefined(literalOrValueOrArray)) {
+			return null;
+		}
+		if (literalOrValueOrArray instanceof dojo.data.old.Value) {
+			return literalOrValueOrArray.getValue();
+		}
+		if (dojo.lang.isArray(literalOrValueOrArray)) {
+			var dojoDataValue = literalOrValueOrArray[0];
+			return dojoDataValue.getValue();
+		}
+		return literalOrValueOrArray;
+	};
+	dojo.data.old.Item.prototype.getValue = function (attributeId) {
+		var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
+		if (dojo.lang.isUndefined(literalOrValueOrArray)) {
+			return null;
+		}
+		if (literalOrValueOrArray instanceof dojo.data.old.Value) {
+			return literalOrValueOrArray;
+		}
+		if (dojo.lang.isArray(literalOrValueOrArray)) {
+			var dojoDataValue = literalOrValueOrArray[0];
+			return dojoDataValue;
+		}
+		var literal = literalOrValueOrArray;
+		dojoDataValue = new dojo.data.old.Value(literal);
+		this._dictionaryOfAttributeValues[attributeId] = dojoDataValue;
+		return dojoDataValue;
+	};
+	dojo.data.old.Item.prototype.getValues = function (attributeId) {
+		var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
+		if (dojo.lang.isUndefined(literalOrValueOrArray)) {
+			return null;
+		}
+		if (literalOrValueOrArray instanceof dojo.data.old.Value) {
+			var array = [literalOrValueOrArray];
+			this._dictionaryOfAttributeValues[attributeId] = array;
+			return array;
+		}
+		if (dojo.lang.isArray(literalOrValueOrArray)) {
+			return literalOrValueOrArray;
+		}
+		var literal = literalOrValueOrArray;
+		var dojoDataValue = new dojo.data.old.Value(literal);
+		array = [dojoDataValue];
+		this._dictionaryOfAttributeValues[attributeId] = array;
+		return array;
+	};
+	dojo.data.old.Item.prototype.load = function (attributeId, value) {
+		this._dataProvider.registerAttribute(attributeId);
+		var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId];
+		if (dojo.lang.isUndefined(literalOrValueOrArray)) {
+			this._dictionaryOfAttributeValues[attributeId] = value;
+			return;
+		}
+		if (!(value instanceof dojo.data.old.Value)) {
+			value = new dojo.data.old.Value(value);
+		}
+		if (literalOrValueOrArray instanceof dojo.data.old.Value) {
+			var array = [literalOrValueOrArray, value];
+			this._dictionaryOfAttributeValues[attributeId] = array;
+			return;
+		}
+		if (dojo.lang.isArray(literalOrValueOrArray)) {
+			literalOrValueOrArray.push(value);
+			return;
+		}
+		var literal = literalOrValueOrArray;
+		var dojoDataValue = new dojo.data.old.Value(literal);
+		array = [dojoDataValue, value];
+		this._dictionaryOfAttributeValues[attributeId] = array;
+	};
+	dojo.data.old.Item.prototype.set = function (attributeId, value) {
+		this._dataProvider.registerAttribute(attributeId);
+		this._dictionaryOfAttributeValues[attributeId] = value;
+		this._dataProvider.noteChange(this, attributeId, value);
+	};
+	dojo.data.old.Item.prototype.setValue = function (attributeId, value) {
+		this.set(attributeId, value);
+	};
+	dojo.data.old.Item.prototype.addValue = function (attributeId, value) {
+		this.load(attributeId, value);
+		this._dataProvider.noteChange(this, attributeId, value);
+	};
+	dojo.data.old.Item.prototype.setValues = function (attributeId, arrayOfValues) {
+		dojo.lang.assertType(arrayOfValues, Array);
+		this._dataProvider.registerAttribute(attributeId);
+		var finalArray = [];
+		this._dictionaryOfAttributeValues[attributeId] = finalArray;
+		for (var i in arrayOfValues) {
+			var value = arrayOfValues[i];
+			if (!(value instanceof dojo.data.old.Value)) {
+				value = new dojo.data.old.Value(value);
+			}
+			finalArray.push(value);
+			this._dataProvider.noteChange(this, attributeId, value);
+		}
+	};
+	dojo.data.old.Item.prototype.getAttributes = function () {
+		var arrayOfAttributes = [];
+		for (var key in this._dictionaryOfAttributeValues) {
+			arrayOfAttributes.push(this._dataProvider.getAttribute(key));
+		}
+		return arrayOfAttributes;
+	};
+	dojo.data.old.Item.prototype.hasAttribute = function (attributeId) {
+		return (attributeId in this._dictionaryOfAttributeValues);
+	};
+	dojo.data.old.Item.prototype.hasAttributeValue = function (attributeId, value) {
+		var arrayOfValues = this.getValues(attributeId);
+		for (var i in arrayOfValues) {
+			var candidateValue = arrayOfValues[i];
+			if (candidateValue.isEqual(value)) {
+				return true;
+			}
+		}
+		return false;
+	};
+}});
+
+
+__CPAN_FILE__ src/data/old/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.experimental"], ["kwCompoundRequire", {common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]}], ["provide", "dojo.data.old.*"]], definePackage:function (dojo) {
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.data.old.*");
+	dojo.kwCompoundRequire({common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]});
+	dojo.provide("dojo.data.old.*");
+}});
+
+
+__CPAN_FILE__ src/data/old/Kind.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Kind"], ["require", "dojo.data.old.Item"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.Kind");
+	dojo.require("dojo.data.old.Item");
+	dojo.data.old.Kind = function (dataProvider) {
+		dojo.data.old.Item.call(this, dataProvider);
+	};
+	dojo.inherits(dojo.data.old.Kind, dojo.data.old.Item);
+}});
+
+
 __CPAN_DIR__ src/data/old/provider
 __CPAN_FILE__ src/data/old/provider/MySql.js
 /*
@@ -50662,6 +97953,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.provider.MySql");
 dojo.require("dojo.data.old.provider.Base");
 dojo.data.old.provider.MySql = function () {
@@ -50670,6 +97963,134 @@
 dojo.inherits(dojo.data.old.provider.MySql, dojo.data.old.provider.Base);
 
 
+__CPAN_FILE__ src/data/old/provider/Base.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.Base"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.provider.Base");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.provider.Base = function () {
+		this._countOfNestedTransactions = 0;
+		this._changesInCurrentTransaction = null;
+	};
+	dojo.data.old.provider.Base.prototype.beginTransaction = function () {
+		if (this._countOfNestedTransactions === 0) {
+			this._changesInCurrentTransaction = [];
+		}
+		this._countOfNestedTransactions += 1;
+	};
+	dojo.data.old.provider.Base.prototype.endTransaction = function () {
+		this._countOfNestedTransactions -= 1;
+		dojo.lang.assert(this._countOfNestedTransactions >= 0);
+		if (this._countOfNestedTransactions === 0) {
+			var listOfChangesMade = this._saveChanges();
+			this._changesInCurrentTransaction = null;
+			if (listOfChangesMade.length > 0) {
+				this._notifyObserversOfChanges(listOfChangesMade);
+			}
+		}
+	};
+	dojo.data.old.provider.Base.prototype.getNewItemToLoad = function () {
+		return this._newItem();
+	};
+	dojo.data.old.provider.Base.prototype.newItem = function (itemName) {
+		dojo.lang.assertType(itemName, String, {optional:true});
+		var item = this._newItem();
+		if (itemName) {
+			item.set("name", itemName);
+		}
+		return item;
+	};
+	dojo.data.old.provider.Base.prototype.newAttribute = function (attributeId) {
+		dojo.lang.assertType(attributeId, String, {optional:true});
+		var attribute = this._newAttribute(attributeId);
+		return attribute;
+	};
+	dojo.data.old.provider.Base.prototype.getAttribute = function (attributeId) {
+		dojo.unimplemented("dojo.data.old.provider.Base");
+		var attribute;
+		return attribute;
+	};
+	dojo.data.old.provider.Base.prototype.getAttributes = function () {
+		dojo.unimplemented("dojo.data.old.provider.Base");
+		return this._arrayOfAttributes;
+	};
+	dojo.data.old.provider.Base.prototype.fetchArray = function () {
+		dojo.unimplemented("dojo.data.old.provider.Base");
+		return [];
+	};
+	dojo.data.old.provider.Base.prototype.fetchResultSet = function () {
+		dojo.unimplemented("dojo.data.old.provider.Base");
+		var resultSet;
+		return resultSet;
+	};
+	dojo.data.old.provider.Base.prototype.noteChange = function (item, attribute, value) {
+		var change = {item:item, attribute:attribute, value:value};
+		if (this._countOfNestedTransactions === 0) {
+			this.beginTransaction();
+			this._changesInCurrentTransaction.push(change);
+			this.endTransaction();
+		} else {
+			this._changesInCurrentTransaction.push(change);
+		}
+	};
+	dojo.data.old.provider.Base.prototype.addItemObserver = function (item, observer) {
+		dojo.lang.assertType(item, dojo.data.old.Item);
+		item.addObserver(observer);
+	};
+	dojo.data.old.provider.Base.prototype.removeItemObserver = function (item, observer) {
+		dojo.lang.assertType(item, dojo.data.old.Item);
+		item.removeObserver(observer);
+	};
+	dojo.data.old.provider.Base.prototype._newItem = function () {
+		var item = new dojo.data.old.Item(this);
+		return item;
+	};
+	dojo.data.old.provider.Base.prototype._newAttribute = function (attributeId) {
+		var attribute = new dojo.data.old.Attribute(this);
+		return attribute;
+	};
+	dojo.data.old.provider.Base.prototype._saveChanges = function () {
+		var arrayOfChangesMade = this._changesInCurrentTransaction;
+		return arrayOfChangesMade;
+	};
+	dojo.data.old.provider.Base.prototype._notifyObserversOfChanges = function (arrayOfChanges) {
+		var arrayOfResultSets = this._getResultSets();
+		for (var i in arrayOfChanges) {
+			var change = arrayOfChanges[i];
+			var changedItem = change.item;
+			var arrayOfItemObservers = changedItem.getObservers();
+			for (var j in arrayOfItemObservers) {
+				var observer = arrayOfItemObservers[j];
+				observer.observedObjectHasChanged(changedItem, change);
+			}
+			for (var k in arrayOfResultSets) {
+				var resultSet = arrayOfResultSets[k];
+				var arrayOfResultSetObservers = resultSet.getObservers();
+				for (var m in arrayOfResultSetObservers) {
+					observer = arrayOfResultSetObservers[m];
+					observer.observedObjectHasChanged(resultSet, change);
+				}
+			}
+		}
+	};
+	dojo.data.old.provider.Base.prototype._getResultSets = function () {
+		dojo.unimplemented("dojo.data.old.provider.Base");
+		return [];
+	};
+}});
+
+
 __CPAN_FILE__ src/data/old/provider/Delicious.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50681,6 +98102,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.provider.Delicious");
 dojo.require("dojo.data.old.provider.FlatFile");
 dojo.require("dojo.data.old.format.Json");
@@ -50703,6 +98126,29 @@
 dojo.inherits(dojo.data.old.provider.Delicious, dojo.data.old.provider.FlatFile);
 
 
+__CPAN_FILE__ src/data/old/provider/JotSpot.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.JotSpot"], ["require", "dojo.data.old.provider.Base"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.provider.JotSpot");
+	dojo.require("dojo.data.old.provider.Base");
+	dojo.data.old.provider.JotSpot = function () {
+		dojo.unimplemented("dojo.data.old.provider.JotSpot");
+	};
+	dojo.inherits(dojo.data.old.provider.JotSpot, dojo.data.old.provider.Base);
+}});
+
+
 __CPAN_FILE__ src/data/old/provider/FlatFile.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50714,6 +98160,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.provider.FlatFile");
 dojo.require("dojo.data.old.provider.Base");
 dojo.require("dojo.data.old.Item");
@@ -50827,6 +98275,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.provider.JotSpot");
 dojo.require("dojo.data.old.provider.Base");
 dojo.data.old.provider.JotSpot = function () {
@@ -50835,6 +98285,183 @@
 dojo.inherits(dojo.data.old.provider.JotSpot, dojo.data.old.provider.Base);
 
 
+__CPAN_FILE__ src/data/old/provider/MySql.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.MySql"], ["require", "dojo.data.old.provider.Base"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.provider.MySql");
+	dojo.require("dojo.data.old.provider.Base");
+	dojo.data.old.provider.MySql = function () {
+		dojo.unimplemented("dojo.data.old.provider.MySql");
+	};
+	dojo.inherits(dojo.data.old.provider.MySql, dojo.data.old.provider.Base);
+}});
+
+
+__CPAN_FILE__ src/data/old/provider/FlatFile.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.FlatFile"], ["require", "dojo.data.old.provider.Base"], ["require", "dojo.data.old.Item"], ["require", "dojo.data.old.Attribute"], ["require", "dojo.data.old.ResultSet"], ["require", "dojo.data.old.format.Json"], ["require", "dojo.data.old.format.Csv"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.provider.FlatFile");
+	dojo.require("dojo.data.old.provider.Base");
+	dojo.require("dojo.data.old.Item");
+	dojo.require("dojo.data.old.Attribute");
+	dojo.require("dojo.data.old.ResultSet");
+	dojo.require("dojo.data.old.format.Json");
+	dojo.require("dojo.data.old.format.Csv");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.provider.FlatFile = function (keywordParameters) {
+		dojo.lang.assertType(keywordParameters, "pureobject", {optional:true});
+		dojo.data.old.provider.Base.call(this);
+		this._arrayOfItems = [];
+		this._resultSet = null;
+		this._dictionaryOfAttributes = {};
+		if (keywordParameters) {
+			var jsonObjects = keywordParameters["jsonObjects"];
+			var jsonString = keywordParameters["jsonString"];
+			var fileUrl = keywordParameters["url"];
+			if (jsonObjects) {
+				dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, jsonObjects);
+			}
+			if (jsonString) {
+				dojo.data.old.format.Json.loadDataProviderFromFileContents(this, jsonString);
+			}
+			if (fileUrl) {
+				var arrayOfParts = fileUrl.split(".");
+				var lastPart = arrayOfParts[(arrayOfParts.length - 1)];
+				var formatParser = null;
+				if (lastPart == "json") {
+					formatParser = dojo.data.old.format.Json;
+				}
+				if (lastPart == "csv") {
+					formatParser = dojo.data.old.format.Csv;
+				}
+				if (formatParser) {
+					var fileContents = dojo.hostenv.getText(fileUrl);
+					formatParser.loadDataProviderFromFileContents(this, fileContents);
+				} else {
+					dojo.lang.assert(false, "new dojo.data.old.provider.FlatFile({url: }) was passed a file without a .csv or .json suffix");
+				}
+			}
+		}
+	};
+	dojo.inherits(dojo.data.old.provider.FlatFile, dojo.data.old.provider.Base);
+	dojo.data.old.provider.FlatFile.prototype.getProviderCapabilities = function (keyword) {
+		dojo.lang.assertType(keyword, String, {optional:true});
+		if (!this._ourCapabilities) {
+			this._ourCapabilities = {transactions:false, undo:false, login:false, versioning:false, anonymousRead:true, anonymousWrite:false, permissions:false, queries:false, strongTyping:false, datatypes:[String, Date, Number]};
+		}
+		if (keyword) {
+			return this._ourCapabilities[keyword];
+		} else {
+			return this._ourCapabilities;
+		}
+	};
+	dojo.data.old.provider.FlatFile.prototype.registerAttribute = function (attributeId) {
+		var registeredAttribute = this.getAttribute(attributeId);
+		if (!registeredAttribute) {
+			var newAttribute = new dojo.data.old.Attribute(this, attributeId);
+			this._dictionaryOfAttributes[attributeId] = newAttribute;
+			registeredAttribute = newAttribute;
+		}
+		return registeredAttribute;
+	};
+	dojo.data.old.provider.FlatFile.prototype.getAttribute = function (attributeId) {
+		var attribute = (this._dictionaryOfAttributes[attributeId] || null);
+		return attribute;
+	};
+	dojo.data.old.provider.FlatFile.prototype.getAttributes = function () {
+		var arrayOfAttributes = [];
+		for (var key in this._dictionaryOfAttributes) {
+			var attribute = this._dictionaryOfAttributes[key];
+			arrayOfAttributes.push(attribute);
+		}
+		return arrayOfAttributes;
+	};
+	dojo.data.old.provider.FlatFile.prototype.fetchArray = function (query) {
+		return this._arrayOfItems;
+	};
+	dojo.data.old.provider.FlatFile.prototype.fetchResultSet = function (query) {
+		if (!this._resultSet) {
+			this._resultSet = new dojo.data.old.ResultSet(this, this.fetchArray(query));
+		}
+		return this._resultSet;
+	};
+	dojo.data.old.provider.FlatFile.prototype._newItem = function () {
+		var item = new dojo.data.old.Item(this);
+		this._arrayOfItems.push(item);
+		return item;
+	};
+	dojo.data.old.provider.FlatFile.prototype._newAttribute = function (attributeId) {
+		dojo.lang.assertType(attributeId, String);
+		dojo.lang.assert(this.getAttribute(attributeId) === null);
+		var attribute = new dojo.data.old.Attribute(this, attributeId);
+		this._dictionaryOfAttributes[attributeId] = attribute;
+		return attribute;
+	};
+	dojo.data.old.provider.Base.prototype._getResultSets = function () {
+		return [this._resultSet];
+	};
+}});
+
+
+__CPAN_FILE__ src/data/old/provider/Delicious.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.Delicious"], ["require", "dojo.data.old.provider.FlatFile"], ["require", "dojo.data.old.format.Json"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.provider.Delicious");
+	dojo.require("dojo.data.old.provider.FlatFile");
+	dojo.require("dojo.data.old.format.Json");
+	dojo.data.old.provider.Delicious = function () {
+		dojo.data.old.provider.FlatFile.call(this);
+		if (Delicious && Delicious.posts) {
+			dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, Delicious.posts);
+		} else {
+		}
+		var u = this.registerAttribute("u");
+		var d = this.registerAttribute("d");
+		var t = this.registerAttribute("t");
+		u.load("name", "Bookmark");
+		d.load("name", "Description");
+		t.load("name", "Tags");
+		u.load("type", "String");
+		d.load("type", "String");
+		t.load("type", "String");
+	};
+	dojo.inherits(dojo.data.old.provider.Delicious, dojo.data.old.provider.FlatFile);
+}});
+
+
 __CPAN_FILE__ src/data/old/provider/Base.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50846,6 +98473,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.provider.Base");
 dojo.require("dojo.lang.assert");
 dojo.data.old.provider.Base = function () {
@@ -50960,6 +98589,91 @@
 
 
 __CPAN_DIR__ src/data/old/format
+__CPAN_FILE__ src/data/old/format/Csv.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.format.Csv"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.format.Csv");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.format.Csv = new function () {
+		this.getArrayStructureFromCsvFileContents = function (csvFileContents) {
+			dojo.lang.assertType(csvFileContents, String);
+			var lineEndingCharacters = new RegExp("\r\n|\n|\r");
+			var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g");
+			var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g");
+			var doubleQuotes = new RegExp("\"\"", "g");
+			var arrayOfOutputRecords = [];
+			var arrayOfInputLines = csvFileContents.split(lineEndingCharacters);
+			for (var i in arrayOfInputLines) {
+				var singleLine = arrayOfInputLines[i];
+				if (singleLine.length > 0) {
+					var listOfFields = singleLine.split(",");
+					var j = 0;
+					while (j < listOfFields.length) {
+						var space_field_space = listOfFields[j];
+						var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, "");
+						var field = field_space.replace(trailingWhiteSpaceCharacters, "");
+						var firstChar = field.charAt(0);
+						var lastChar = field.charAt(field.length - 1);
+						var secondToLastChar = field.charAt(field.length - 2);
+						var thirdToLastChar = field.charAt(field.length - 3);
+						if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) {
+							if (j + 1 === listOfFields.length) {
+								return null;
+							}
+							var nextField = listOfFields[j + 1];
+							listOfFields[j] = field_space + "," + nextField;
+							listOfFields.splice(j + 1, 1);
+						} else {
+							if ((firstChar == "\"") && (lastChar == "\"")) {
+								field = field.slice(1, (field.length - 1));
+								field = field.replace(doubleQuotes, "\"");
+							}
+							listOfFields[j] = field;
+							j += 1;
+						}
+					}
+					arrayOfOutputRecords.push(listOfFields);
+				}
+			}
+			return arrayOfOutputRecords;
+		};
+		this.loadDataProviderFromFileContents = function (dataProvider, csvFileContents) {
+			dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base);
+			dojo.lang.assertType(csvFileContents, String);
+			var arrayOfArrays = this.getArrayStructureFromCsvFileContents(csvFileContents);
+			if (arrayOfArrays) {
+				var arrayOfKeys = arrayOfArrays[0];
+				for (var i = 1; i < arrayOfArrays.length; ++i) {
+					var row = arrayOfArrays[i];
+					var item = dataProvider.getNewItemToLoad();
+					for (var j in row) {
+						var value = row[j];
+						var key = arrayOfKeys[j];
+						item.load(key, value);
+					}
+				}
+			}
+		};
+		this.getCsvStringFromResultSet = function (resultSet) {
+			dojo.unimplemented("dojo.data.old.format.Csv.getCsvStringFromResultSet");
+			var csvString = null;
+			return csvString;
+		};
+	}();
+}});
+
+
 __CPAN_FILE__ src/data/old/format/Json.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -50971,6 +98685,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.format.Json");
 dojo.require("dojo.lang.assert");
 dojo.data.old.format.Json = new function () {
@@ -51042,6 +98758,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.data.old.format.Csv");
 dojo.require("dojo.lang.assert");
 dojo.data.old.format.Csv = new function () {
@@ -51112,6 +98830,81 @@
 }();
 
 
+__CPAN_FILE__ src/data/old/format/Json.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.format.Json"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.data.old.format.Json");
+	dojo.require("dojo.lang.assert");
+	dojo.data.old.format.Json = new function () {
+		this.loadDataProviderFromFileContents = function (dataProvider, jsonFileContents) {
+			dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base);
+			dojo.lang.assertType(jsonFileContents, String);
+			var arrayOfJsonData = eval("(" + jsonFileContents + ")");
+			this.loadDataProviderFromArrayOfJsonData(dataProvider, arrayOfJsonData);
+		};
+		this.loadDataProviderFromArrayOfJsonData = function (dataProvider, arrayOfJsonData) {
+			dojo.lang.assertType(arrayOfJsonData, Array, {optional:true});
+			if (arrayOfJsonData && (arrayOfJsonData.length > 0)) {
+				var firstRow = arrayOfJsonData[0];
+				dojo.lang.assertType(firstRow, [Array, "pureobject"]);
+				if (dojo.lang.isArray(firstRow)) {
+					_loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData);
+				} else {
+					dojo.lang.assertType(firstRow, "pureobject");
+					_loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData);
+				}
+			}
+		};
+		this.getJsonStringFromResultSet = function (resultSet) {
+			dojo.unimplemented("dojo.data.old.format.Json.getJsonStringFromResultSet");
+			var jsonString = null;
+			return jsonString;
+		};
+		function _loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData) {
+			var arrayOfKeys = arrayOfJsonData[0];
+			for (var i = 1; i < arrayOfJsonData.length; ++i) {
+				var row = arrayOfJsonData[i];
+				var item = dataProvider.getNewItemToLoad();
+				for (var j in row) {
+					var value = row[j];
+					var key = arrayOfKeys[j];
+					item.load(key, value);
+				}
+			}
+		}
+		function _loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData) {
+			for (var i in arrayOfJsonData) {
+				var row = arrayOfJsonData[i];
+				var item = dataProvider.getNewItemToLoad();
+				for (var key in row) {
+					var value = row[key];
+					if (dojo.lang.isArray(value)) {
+						var arrayOfValues = value;
+						for (var j in arrayOfValues) {
+							value = arrayOfValues[j];
+							item.load(key, value);
+						}
+					} else {
+						item.load(key, value);
+					}
+				}
+			}
+		}
+	}();
+}});
+
+
 __CPAN_DIR__ src/storage
 __CPAN_FILE__ src/storage/browser.js
 /*
@@ -51124,6 +98917,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.storage.browser");
 dojo.require("dojo.storage");
 dojo.require("dojo.flash");
@@ -51663,6 +99458,560 @@
 dojo.storage.manager.initialize();
 
 
+__CPAN_FILE__ src/storage/browser.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.storage.browser"], ["require", "dojo.storage"], ["require", "dojo.flash"], ["require", "dojo.json"], ["require", "dojo.uri.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.storage.browser");
+	dojo.require("dojo.storage");
+	dojo.require("dojo.flash");
+	dojo.require("dojo.json");
+	dojo.require("dojo.uri.*");
+	dojo.storage.browser.FileStorageProvider = function () {
+	};
+	dojo.inherits(dojo.storage.browser.FileStorageProvider, dojo.storage);
+	dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME = "__dojoAllKeys";
+	dojo.storage.browser.FileStorageProvider._APPLET_ID = "__dojoFileJavaObj";
+	dojo.lang.extend(dojo.storage.browser.FileStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, _keyIndex:new Array(), initialize:function () {
+		if (djConfig["disableFileStorage"] == true) {
+			return;
+		}
+		this._loadKeyIndex();
+		this.initialized = true;
+		dojo.storage.manager.loaded();
+	}, isAvailable:function () {
+		this._available = false;
+		var protocol = window.location.protocol;
+		if (protocol.indexOf("file") != -1 || protocol.indexOf("chrome") != -1) {
+			this._available = this._isAvailableXPCOM();
+			if (this._available == false) {
+				this._available = this._isAvailableActiveX();
+			}
+		}
+		return this._available;
+	}, put:function (key, value, resultsHandler) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		this._statusHandler = resultsHandler;
+		try {
+			this._save(key, value);
+			resultsHandler.call(null, dojo.storage.SUCCESS, key);
+		}
+		catch (e) {
+			this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString());
+		}
+	}, get:function (key) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		var results = this._load(key);
+		return results;
+	}, getKeys:function () {
+		return this._keyIndex;
+	}, hasKey:function (key) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		this._loadKeyIndex();
+		var exists = false;
+		for (var i = 0; i < this._keyIndex.length; i++) {
+			if (this._keyIndex[i] == key) {
+				exists = true;
+			}
+		}
+		return exists;
+	}, clear:function () {
+		this._loadKeyIndex();
+		var keyIndex = new Array();
+		for (var i = 0; i < this._keyIndex.length; i++) {
+			keyIndex[keyIndex.length] = new String(this._keyIndex[i]);
+		}
+		for (var i = 0; i < keyIndex.length; i++) {
+			this.remove(keyIndex[i]);
+		}
+	}, remove:function (key) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		this._loadKeyIndex();
+		for (var i = 0; i < this._keyIndex.length; i++) {
+			if (this._keyIndex[i] == key) {
+				this._keyIndex.splice(i, 1);
+				break;
+			}
+		}
+		this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);
+		var fullPath = this._getPagePath() + key + ".txt";
+		if (this._isAvailableXPCOM()) {
+			this._removeXPCOM(fullPath);
+		} else {
+			if (this._isAvailableActiveX()) {
+				this._removeActiveX(fullPath);
+			}
+		}
+	}, isPermanent:function () {
+		return true;
+	}, getMaximumSize:function () {
+		return dojo.storage.SIZE_NO_LIMIT;
+	}, hasSettingsUI:function () {
+		return false;
+	}, showSettingsUI:function () {
+		dojo.raise(this.getType() + " does not support a storage settings user-interface");
+	}, hideSettingsUI:function () {
+		dojo.raise(this.getType() + " does not support a storage settings user-interface");
+	}, getType:function () {
+		return "dojo.storage.browser.FileStorageProvider";
+	}, _save:function (key, value, updateKeyIndex) {
+		if (typeof updateKeyIndex == "undefined") {
+			updateKeyIndex = true;
+		}
+		if (dojo.lang.isString(value) == false) {
+			value = dojo.json.serialize(value);
+			value = "/* JavaScript */\n" + value + "\n\n";
+		}
+		var fullPath = this._getPagePath() + key + ".txt";
+		if (this._isAvailableXPCOM()) {
+			this._saveFileXPCOM(fullPath, value);
+		} else {
+			if (this._isAvailableActiveX()) {
+				this._saveFileActiveX(fullPath, value);
+			}
+		}
+		if (updateKeyIndex) {
+			this._updateKeyIndex(key);
+		}
+	}, _load:function (key) {
+		var fullPath = this._getPagePath() + key + ".txt";
+		var results = null;
+		if (this._isAvailableXPCOM()) {
+			results = this._loadFileXPCOM(fullPath);
+		} else {
+			if (this._isAvailableActiveX()) {
+				results = this._loadFileActiveX(fullPath);
+			} else {
+				if (this._isAvailableJava()) {
+					results = this._loadFileJava(fullPath);
+				}
+			}
+		}
+		if (results == null) {
+			return null;
+		}
+		if (!dojo.lang.isUndefined(results) && results != null && /^\/\* JavaScript \*\//.test(results)) {
+			results = dojo.json.evalJson(results);
+		}
+		return results;
+	}, _updateKeyIndex:function (key) {
+		this._loadKeyIndex();
+		var alreadyAdded = false;
+		for (var i = 0; i < this._keyIndex.length; i++) {
+			if (this._keyIndex[i] == key) {
+				alreadyAdded = true;
+				break;
+			}
+		}
+		if (alreadyAdded == false) {
+			this._keyIndex[this._keyIndex.length] = key;
+		}
+		this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);
+	}, _loadKeyIndex:function () {
+		var indexContents = this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME);
+		if (indexContents == null) {
+			this._keyIndex = new Array();
+		} else {
+			this._keyIndex = indexContents;
+		}
+	}, _saveFileXPCOM:function (filename, value) {
+		try {
+			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+			var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+			f.initWithPath(filename);
+			var ouputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
+			ouputStream.init(f, 32 | 4 | 8, 256 + 128, null);
+			ouputStream.write(value, value.length);
+			ouputStream.close();
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): " + msg);
+		}
+	}, _loadFileXPCOM:function (filename) {
+		try {
+			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+			var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+			f.initWithPath(filename);
+			if (f.exists() == false) {
+				return null;
+			}
+			var inp = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
+			inp.init(f, 1, 4, null);
+			var inputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
+			inputStream.init(inp);
+			var results = inputStream.read(inputStream.available());
+			return results;
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): " + msg);
+		}
+		return null;
+	}, _saveFileActiveX:function (filename, value) {
+		try {
+			var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
+			var f = fileSystem.OpenTextFile(filename, 2, true);
+			f.Write(value);
+			f.Close();
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): " + msg);
+		}
+	}, _loadFileActiveX:function (filename) {
+		try {
+			var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
+			if (fileSystem.FileExists(filename) == false) {
+				return null;
+			}
+			var f = fileSystem.OpenTextFile(filename, 1);
+			var results = f.ReadAll();
+			f.Close();
+			return results;
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): " + msg);
+		}
+	}, _saveFileJava:function (filename, value) {
+		try {
+			var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
+			applet.save(filename, value);
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): " + msg);
+		}
+	}, _loadFileJava:function (filename) {
+		try {
+			var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
+			var results = applet.load(filename);
+			return results;
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileJava(): " + msg);
+		}
+	}, _isAvailableActiveX:function () {
+		try {
+			if (window.ActiveXObject) {
+				var fileSystem = new window.ActiveXObject("Scripting.FileSystemObject");
+				return true;
+			}
+		}
+		catch (e) {
+			dojo.debug(e);
+		}
+		return false;
+	}, _isAvailableXPCOM:function () {
+		try {
+			if (window.Components) {
+				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+				Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+				return true;
+			}
+		}
+		catch (e) {
+			dojo.debug(e);
+		}
+		return false;
+	}, _isAvailableJava:function () {
+		try {
+			if (dojo.render.html.safari == true || dojo.render.html.opera == true()) {
+				if (navigator.javaEnabled() == true) {
+					return true;
+				}
+			}
+		}
+		catch (e) {
+			dojo.debug(e);
+		}
+		return false;
+	}, _getPagePath:function () {
+		var path = window.location.pathname;
+		if (/\.html?$/i.test(path)) {
+			path = path.replace(/(?:\/|\\)?[^\.\/\\]*\.html?$/, "");
+		}
+		if (/^\/?[a-z]+\:/i.test(path)) {
+			path = path.replace(/^\/?/, "");
+			path = path.replace(/\//g, "\\");
+		} else {
+			if (/^[\/\\]{2,3}[^\/]/.test(path)) {
+				path = path.replace(/^[\/\\]{2,3}/, "");
+				path = path.replace(/\//g, "\\");
+				path = "\\\\" + path;
+			}
+		}
+		if (/\/$/.test(path) == false && /\\$/.test(path) == false) {
+			if (/\//.test(path)) {
+				path += "/";
+			} else {
+				path += "\\";
+			}
+		}
+		path = unescape(path);
+		return path;
+	}, _removeXPCOM:function (filename) {
+		try {
+			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+			var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+			f.initWithPath(filename);
+			if (f.exists() == false || f.isDirectory()) {
+				return;
+			}
+			if (f.isFile()) {
+				f.remove(false);
+			}
+		}
+		catch (e) {
+			dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString());
+		}
+	}, _removeActiveX:function (filename) {
+		try {
+			var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
+			fileSystem.DeleteFile(filename);
+		}
+		catch (e) {
+			dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString());
+		}
+	}, _removeJava:function (filename) {
+		try {
+			var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID);
+			applet.remove(filename);
+		}
+		catch (e) {
+			var msg = e.toString();
+			if (e.name && e.message) {
+				msg = e.name + ": " + e.message;
+			}
+			dojo.raise("dojo.storage.browser.FileStorageProvider._removeJava(): " + msg);
+		}
+	}, _writeApplet:function () {
+		var archive = dojo.uri.moduleUri("dojo", "../DojoFileStorageProvider.jar").toString();
+		var tag = "<applet " + "id='" + dojo.storage.browser.FileStorageProvider._APPLET_ID + "' " + "style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' " + "code='DojoFileStorageProvider.class' " + "archive='" + archive + "' " + "width='1' " + "height='1' " + ">" + "</applet>";
+		document.writeln(tag);
+	}});
+	dojo.storage.browser.WhatWGStorageProvider = function () {
+	};
+	dojo.inherits(dojo.storage.browser.WhatWGStorageProvider, dojo.storage);
+	dojo.lang.extend(dojo.storage.browser.WhatWGStorageProvider, {namespace:"default", initialized:false, _domain:null, _available:null, _statusHandler:null, initialize:function () {
+		if (djConfig["disableWhatWGStorage"] == true) {
+			return;
+		}
+		this._domain = location.hostname;
+		this.initialized = true;
+		dojo.storage.manager.loaded();
+	}, isAvailable:function () {
+		try {
+			var myStorage = globalStorage[location.hostname];
+		}
+		catch (e) {
+			this._available = false;
+			return this._available;
+		}
+		this._available = true;
+		return this._available;
+	}, put:function (key, value, resultsHandler) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		this._statusHandler = resultsHandler;
+		if (dojo.lang.isString(value)) {
+			value = "string:" + value;
+		} else {
+			value = dojo.json.serialize(value);
+		}
+		window.addEventListener("storage", function (evt) {
+			resultsHandler.call(null, dojo.storage.SUCCESS, key);
+		}, false);
+		try {
+			var myStorage = globalStorage[this._domain];
+			myStorage.setItem(key, value);
+		}
+		catch (e) {
+			this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString());
+		}
+	}, get:function (key) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		var myStorage = globalStorage[this._domain];
+		var results = myStorage.getItem(key);
+		if (results == null) {
+			return null;
+		}
+		results = results.value;
+		if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) {
+			results = results.substring("string:".length);
+		} else {
+			results = dojo.json.evalJson(results);
+		}
+		return results;
+	}, getKeys:function () {
+		var myStorage = globalStorage[this._domain];
+		var keysArray = new Array();
+		for (i = 0; i < myStorage.length; i++) {
+			keysArray[i] = myStorage.key(i);
+		}
+		return keysArray;
+	}, clear:function () {
+		var myStorage = globalStorage[this._domain];
+		var keys = new Array();
+		for (var i = 0; i < myStorage.length; i++) {
+			keys[keys.length] = myStorage.key(i);
+		}
+		for (var i = 0; i < keys.length; i++) {
+			myStorage.removeItem(keys[i]);
+		}
+	}, remove:function (key) {
+		var myStorage = globalStorage[this._domain];
+		myStorage.removeItem(key);
+	}, isPermanent:function () {
+		return true;
+	}, getMaximumSize:function () {
+		return dojo.storage.SIZE_NO_LIMIT;
+	}, hasSettingsUI:function () {
+		return false;
+	}, showSettingsUI:function () {
+		dojo.raise(this.getType() + " does not support a storage settings user-interface");
+	}, hideSettingsUI:function () {
+		dojo.raise(this.getType() + " does not support a storage settings user-interface");
+	}, getType:function () {
+		return "dojo.storage.browser.WhatWGProvider";
+	}});
+	dojo.storage.browser.FlashStorageProvider = function () {
+	};
+	dojo.inherits(dojo.storage.browser.FlashStorageProvider, dojo.storage);
+	dojo.lang.extend(dojo.storage.browser.FlashStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, initialize:function () {
+		if (djConfig["disableFlashStorage"] == true) {
+			return;
+		}
+		var loadedListener = function () {
+			dojo.storage._flashLoaded();
+		};
+		dojo.flash.addLoadedListener(loadedListener);
+		var swfloc6 = dojo.uri.moduleUri("dojo", "../Storage_version6.swf").toString();
+		var swfloc8 = dojo.uri.moduleUri("dojo", "../Storage_version8.swf").toString();
+		dojo.flash.setSwf({flash6:swfloc6, flash8:swfloc8, visible:false});
+	}, isAvailable:function () {
+		if (djConfig["disableFlashStorage"] == true) {
+			this._available = false;
+		} else {
+			this._available = true;
+		}
+		return this._available;
+	}, put:function (key, value, resultsHandler) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		this._statusHandler = resultsHandler;
+		if (dojo.lang.isString(value)) {
+			value = "string:" + value;
+		} else {
+			value = dojo.json.serialize(value);
+		}
+		dojo.flash.comm.put(key, value, this.namespace);
+	}, get:function (key) {
+		if (this.isValidKey(key) == false) {
+			dojo.raise("Invalid key given: " + key);
+		}
+		var results = dojo.flash.comm.get(key, this.namespace);
+		if (results == "") {
+			return null;
+		}
+		if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) {
+			results = results.substring("string:".length);
+		} else {
+			results = dojo.json.evalJson(results);
+		}
+		return results;
+	}, getKeys:function () {
+		var results = dojo.flash.comm.getKeys(this.namespace);
+		if (results == "") {
+			return [];
+		}
+		return results.split(",");
+	}, clear:function () {
+		dojo.flash.comm.clear(this.namespace);
+	}, remove:function (key) {
+		dojo.unimplemented("dojo.storage.browser.FlashStorageProvider.remove");
+	}, isPermanent:function () {
+		return true;
+	}, getMaximumSize:function () {
+		return dojo.storage.SIZE_NO_LIMIT;
+	}, hasSettingsUI:function () {
+		return true;
+	}, showSettingsUI:function () {
+		dojo.flash.comm.showSettings();
+		dojo.flash.obj.setVisible(true);
+		dojo.flash.obj.center();
+	}, hideSettingsUI:function () {
+		dojo.flash.obj.setVisible(false);
+		if (dojo.storage.onHideSettingsUI != null && !dojo.lang.isUndefined(dojo.storage.onHideSettingsUI)) {
+			dojo.storage.onHideSettingsUI.call(null);
+		}
+	}, getType:function () {
+		return "dojo.storage.browser.FlashStorageProvider";
+	}, _flashLoaded:function () {
+		this._initialized = true;
+		dojo.storage.manager.loaded();
+	}, _onStatus:function (statusResult, key) {
+		var ds = dojo.storage;
+		var dfo = dojo.flash.obj;
+		if (statusResult == ds.PENDING) {
+			dfo.center();
+			dfo.setVisible(true);
+		} else {
+			dfo.setVisible(false);
+		}
+		if ((!dj_undef("_statusHandler", ds)) && (ds._statusHandler != null)) {
+			ds._statusHandler.call(null, statusResult, key);
+		}
+	}});
+	dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider", new dojo.storage.browser.FileStorageProvider());
+	dojo.storage.manager.register("dojo.storage.browser.WhatWGStorageProvider", new dojo.storage.browser.WhatWGStorageProvider());
+	dojo.storage.manager.register("dojo.storage.browser.FlashStorageProvider", new dojo.storage.browser.FlashStorageProvider());
+	dojo.storage.manager.initialize();
+}});
+
+
 __CPAN_FILE__ src/storage/storage_dialog.fla
 ÐÏࡱá                >  þÿ	                                þÿÿÿ       	   
           ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR o o t   E n t r y                                               ÿÿÿÿÿÿÿÿ   pª|YªrσRASH              °™ !eÆ   À      C o n t e n t s                                                   ÿÿÿÿÿÿÿÿÿÿÿÿ                                       {j     P a g e   1                                                       ÿÿÿÿÿÿÿÿÿÿÿÿ                                        ¿      M e d i a   1                                                          ÿÿÿÿ                                    þÿÿÿ        þÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿýÿÿÿýÿÿÿ
            B                       þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR o o t   E n t r y                                               ÿÿÿÿÿÿÿÿ   pª|YªrσRASH              °:73ºdÆ   À      C o n t e n t s                                                   ÿÿÿÿÿÿÿÿÿÿÿÿ                                       {j     P a g e   1                                                       ÿÿÿÿÿÿÿÿÿÿÿÿ                                        ¿      M e d i a   1                                                          ÿÿÿÿ                                    þÿÿÿ        ÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿýÿÿÿýÿÿÿýÿÿÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                     þÿÿÿ                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~      €                   	  
@@ -54510,10 +102859,31 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.storage"], browser:["dojo.storage.browser"]});
 dojo.provide("dojo.storage.*");
 
 
+__CPAN_FILE__ src/storage/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.storage"], browser:["dojo.storage.browser"]}], ["provide", "dojo.storage.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.storage"], browser:["dojo.storage.browser"]});
+	dojo.provide("dojo.storage.*");
+}});
+
+
 __CPAN_FILE__ src/storage/Storage.as
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -54767,7 +103137,8 @@
 	BY DEFAULT THIS FILE DOES NOT WORK SO THAT YOU DON'T ACCIDENTALLY EXPOSE
 	ALL OF YOUR XHR-ENABLED SERVICES ON YOUR SITE. 
 	
-	In order for this file to work, you should define a function with the following signature:
+	In order for this file to work, you need to uncomment the script element,
+	and you should define a function with the following signature:
 	
 	function isAllowedRequest(request){
 		return false;	
@@ -54793,16 +103164,10 @@
 	        
 	See xip_client.html for more info on the xip fragment identifier protocol.	
 	-->
-	<script type="text/javascript">
+	
+	<!-- Security protection: uncomment the script tag to enable. -->
+	<!-- script type="text/javascript" -->
 	// <!--
-	djConfig = {
-		parseWidgets: false,
-		baseScriptUri: "./"
-	}
-	// -->
-	</script>
-	<script type="text/javascript">
-	// <!--
 		//Core XHR handling taken from Dojo IO code.
 		dojo = {};
 		dojo.hostenv = {};
@@ -55094,15 +103459,28 @@
 
 		xipStateId = config.id;
 		xipClientUrl = config.client;
+		
+		//Make sure we don't have a javascript: url, just for good measure.
+		if(xipClientUrl.split(":")[0].match(/javascript/i)){
+			throw "Invalid client URL";
+		}
+		if(!xipStateId.match(/^XhrIframeProxy[0-9]+$/)){
+			throw "Invalid state ID";
+		}
+
 		xipUseFrameRecursion = config["fr"];
 
 		setInterval(pollHash, 10);
 		
 		if(xipUseFrameRecursion == "true"){
 			var serverUrl = window.location.href.split("#")[0];
-			document.getElementById("iframeHolder").innerHTML = '<iframe src="'
-				+ makeClientUrl("init", 'id=' + xipStateId + '&server=' + encodeURIComponent(serverUrl)
-				+ '&fr=endpoint') + '" name="' + xipStateId + '_clientEndPoint"></iframe>';
+			document.getElementById("iframeHolder").innerHTML = '<iframe name="'
+				+ xipStateId + '_clientEndPoint'
+				+ '" src="javascript:false">'
+				+ '</iframe>';
+			var iframeNode = document.getElementsByTagName("iframe")[0];
+			iframeNode.src = makeClientUrl("init", 'id=' + xipStateId + '&server='
+				+ encodeURIComponent(serverUrl) + '&fr=endpoint');
 		}else{
 			setClientUrl("loaded");
 		}
@@ -55125,6 +103503,540 @@
 </body>
 </html>
 
+__CPAN_FILE__ src/io/cometd.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.io.common"], ["provide", "dojo.io.cometd"], ["require", "dojo.AdapterRegistry"], ["require", "dojo.json"], ["require", "dojo.io.BrowserIO"], ["require", "dojo.io.IframeIO"], ["require", "dojo.io.ScriptSrcIO"], ["require", "dojo.io.cookie"], ["require", "dojo.event.*"], ["require", "dojo.lang.common"], ["require", "dojo.lang.func"]], definePackage:function (dojo) {
+	dojo.require("dojo.io.common");
+	dojo.provide("dojo.io.cometd");
+	dojo.require("dojo.AdapterRegistry");
+	dojo.require("dojo.json");
+	dojo.require("dojo.io.BrowserIO");
+	dojo.require("dojo.io.IframeIO");
+	dojo.require("dojo.io.ScriptSrcIO");
+	dojo.require("dojo.io.cookie");
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.func");
+	cometd = new function () {
+		this.initialized = false;
+		this.connected = false;
+		this.connectionTypes = new dojo.AdapterRegistry(true);
+		this.version = 0.1;
+		this.minimumVersion = 0.1;
+		this.clientId = null;
+		this._isXD = false;
+		this.handshakeReturn = null;
+		this.currentTransport = null;
+		this.url = null;
+		this.lastMessage = null;
+		this.globalTopicChannels = {};
+		this.backlog = [];
+		this.tunnelInit = function (childLocation, childDomain) {
+		};
+		this.tunnelCollapse = function () {
+			dojo.debug("tunnel collapsed!");
+		};
+		this.init = function (props, root, bargs) {
+			props = props || {};
+			props.version = this.version;
+			props.minimumVersion = this.minimumVersion;
+			props.channel = "/meta/handshake";
+			this.url = root || djConfig["cometdRoot"];
+			if (!this.url) {
+				dojo.debug("no cometd root specified in djConfig and no root passed");
+				return;
+			}
+			var bindArgs = {url:this.url, method:"POST", mimetype:"text/json", load:dojo.lang.hitch(this, "finishInit"), content:{"message":dojo.json.serialize([props])}};
+			var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+			var r = ("" + window.location).match(new RegExp(regexp));
+			if (r[4]) {
+				var tmp = r[4].split(":");
+				var thisHost = tmp[0];
+				var thisPort = tmp[1] || "80";
+				r = this.url.match(new RegExp(regexp));
+				if (r[4]) {
+					tmp = r[4].split(":");
+					var urlHost = tmp[0];
+					var urlPort = tmp[1] || "80";
+					if ((urlHost != thisHost) || (urlPort != thisPort)) {
+						dojo.debug(thisHost, urlHost);
+						dojo.debug(thisPort, urlPort);
+						this._isXD = true;
+						bindArgs.transport = "ScriptSrcTransport";
+						bindArgs.jsonParamName = "jsonp";
+						bindArgs.method = "GET";
+					}
+				}
+			}
+			if (bargs) {
+				dojo.lang.mixin(bindArgs, bargs);
+			}
+			return dojo.io.bind(bindArgs);
+		};
+		this.finishInit = function (type, data, evt, request) {
+			data = data[0];
+			this.handshakeReturn = data;
+			if (data["authSuccessful"] == false) {
+				dojo.debug("cometd authentication failed");
+				return;
+			}
+			if (data.version < this.minimumVersion) {
+				dojo.debug("cometd protocol version mismatch. We wanted", this.minimumVersion, "but got", data.version);
+				return;
+			}
+			this.currentTransport = this.connectionTypes.match(data.supportedConnectionTypes, data.version, this._isXD);
+			this.currentTransport.version = data.version;
+			this.clientId = data.clientId;
+			this.tunnelInit = dojo.lang.hitch(this.currentTransport, "tunnelInit");
+			this.tunnelCollapse = dojo.lang.hitch(this.currentTransport, "tunnelCollapse");
+			this.initialized = true;
+			this.currentTransport.startup(data);
+			while (this.backlog.length != 0) {
+				var cur = this.backlog.shift();
+				var fn = cur.shift();
+				this[fn].apply(this, cur);
+			}
+		};
+		this._getRandStr = function () {
+			return Math.random().toString().substring(2, 10);
+		};
+		this.deliver = function (messages) {
+			dojo.lang.forEach(messages, this._deliver, this);
+		};
+		this._deliver = function (message) {
+			if (!message["channel"]) {
+				dojo.debug("cometd error: no channel for message!");
+				return;
+			}
+			if (!this.currentTransport) {
+				this.backlog.push(["deliver", message]);
+				return;
+			}
+			this.lastMessage = message;
+			if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) {
+				switch (message.channel) {
+				  case "/meta/subscribe":
+					if (!message.successful) {
+						dojo.debug("cometd subscription error for channel", message.channel, ":", message.error);
+						return;
+					}
+					this.subscribed(message.subscription, message);
+					break;
+				  case "/meta/unsubscribe":
+					if (!message.successful) {
+						dojo.debug("cometd unsubscription error for channel", message.channel, ":", message.error);
+						return;
+					}
+					this.unsubscribed(message.subscription, message);
+					break;
+				}
+			}
+			this.currentTransport.deliver(message);
+			if (message.data) {
+				var tname = (this.globalTopicChannels[message.channel]) ? message.channel : "/cometd" + message.channel;
+				dojo.event.topic.publish(tname, message);
+			}
+		};
+		this.disconnect = function () {
+			if (!this.currentTransport) {
+				dojo.debug("no current transport to disconnect from");
+				return;
+			}
+			this.currentTransport.disconnect();
+		};
+		this.publish = function (channel, data, properties) {
+			if (!this.currentTransport) {
+				this.backlog.push(["publish", channel, data, properties]);
+				return;
+			}
+			var message = {data:data, channel:channel};
+			if (properties) {
+				dojo.lang.mixin(message, properties);
+			}
+			return this.currentTransport.sendMessage(message);
+		};
+		this.subscribe = function (channel, useLocalTopics, objOrFunc, funcName) {
+			if (!this.currentTransport) {
+				this.backlog.push(["subscribe", channel, useLocalTopics, objOrFunc, funcName]);
+				return;
+			}
+			if (objOrFunc) {
+				var tname = (useLocalTopics) ? channel : "/cometd" + channel;
+				if (useLocalTopics) {
+					this.globalTopicChannels[channel] = true;
+				}
+				dojo.event.topic.subscribe(tname, objOrFunc, funcName);
+			}
+			return this.currentTransport.sendMessage({channel:"/meta/subscribe", subscription:channel});
+		};
+		this.subscribed = function (channel, message) {
+			dojo.debug(channel);
+			dojo.debugShallow(message);
+		};
+		this.unsubscribe = function (channel, useLocalTopics, objOrFunc, funcName) {
+			if (!this.currentTransport) {
+				this.backlog.push(["unsubscribe", channel, useLocalTopics, objOrFunc, funcName]);
+				return;
+			}
+			if (objOrFunc) {
+				var tname = (useLocalTopics) ? channel : "/cometd" + channel;
+				dojo.event.topic.unsubscribe(tname, objOrFunc, funcName);
+			}
+			return this.currentTransport.sendMessage({channel:"/meta/unsubscribe", subscription:channel});
+		};
+		this.unsubscribed = function (channel, message) {
+			dojo.debug(channel);
+			dojo.debugShallow(message);
+		};
+	};
+	cometd.iframeTransport = new function () {
+		this.connected = false;
+		this.connectionId = null;
+		this.rcvNode = null;
+		this.rcvNodeName = "";
+		this.phonyForm = null;
+		this.authToken = null;
+		this.lastTimestamp = null;
+		this.lastId = null;
+		this.backlog = [];
+		this.check = function (types, version, xdomain) {
+			return ((!xdomain) && (!dojo.render.html.safari) && (dojo.lang.inArray(types, "iframe")));
+		};
+		this.tunnelInit = function () {
+			this.postToIframe({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"iframe"}])});
+		};
+		this.tunnelCollapse = function () {
+			if (this.connected) {
+				this.connected = false;
+				this.postToIframe({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
+			}
+		};
+		this.deliver = function (message) {
+			if (message["timestamp"]) {
+				this.lastTimestamp = message.timestamp;
+			}
+			if (message["id"]) {
+				this.lastId = message.id;
+			}
+			if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) {
+				switch (message.channel) {
+				  case "/meta/connect":
+					if (!message.successful) {
+						dojo.debug("cometd connection error:", message.error);
+						return;
+					}
+					this.connectionId = message.connectionId;
+					this.connected = true;
+					this.processBacklog();
+					break;
+				  case "/meta/reconnect":
+					if (!message.successful) {
+						dojo.debug("cometd reconnection error:", message.error);
+						return;
+					}
+					this.connected = true;
+					break;
+				  case "/meta/subscribe":
+					if (!message.successful) {
+						dojo.debug("cometd subscription error for channel", message.channel, ":", message.error);
+						return;
+					}
+					dojo.debug(message.channel);
+					break;
+				}
+			}
+		};
+		this.widenDomain = function (domainStr) {
+			var cd = domainStr || document.domain;
+			if (cd.indexOf(".") == -1) {
+				return;
+			}
+			var dps = cd.split(".");
+			if (dps.length <= 2) {
+				return;
+			}
+			dps = dps.slice(dps.length - 2);
+			document.domain = dps.join(".");
+			return document.domain;
+		};
+		this.postToIframe = function (content, url) {
+			if (!this.phonyForm) {
+				if (dojo.render.html.ie) {
+					this.phonyForm = document.createElement("<form enctype='application/x-www-form-urlencoded' method='POST' style='display: none;'>");
+					dojo.body().appendChild(this.phonyForm);
+				} else {
+					this.phonyForm = document.createElement("form");
+					this.phonyForm.style.display = "none";
+					dojo.body().appendChild(this.phonyForm);
+					this.phonyForm.enctype = "application/x-www-form-urlencoded";
+					this.phonyForm.method = "POST";
+				}
+			}
+			this.phonyForm.action = url || cometd.url;
+			this.phonyForm.target = this.rcvNodeName;
+			this.phonyForm.setAttribute("target", this.rcvNodeName);
+			while (this.phonyForm.firstChild) {
+				this.phonyForm.removeChild(this.phonyForm.firstChild);
+			}
+			for (var x in content) {
+				var tn;
+				if (dojo.render.html.ie) {
+					tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>");
+					this.phonyForm.appendChild(tn);
+				} else {
+					tn = document.createElement("input");
+					this.phonyForm.appendChild(tn);
+					tn.type = "hidden";
+					tn.name = x;
+					tn.value = content[x];
+				}
+			}
+			this.phonyForm.submit();
+		};
+		this.processBacklog = function () {
+			while (this.backlog.length > 0) {
+				this.sendMessage(this.backlog.shift(), true);
+			}
+		};
+		this.sendMessage = function (message, bypassBacklog) {
+			if ((bypassBacklog) || (this.connected)) {
+				message.connectionId = this.connectionId;
+				message.clientId = cometd.clientId;
+				var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}};
+				return dojo.io.bind(bindArgs);
+			} else {
+				this.backlog.push(message);
+			}
+		};
+		this.startup = function (handshakeData) {
+			dojo.debug("startup!");
+			dojo.debug(dojo.json.serialize(handshakeData));
+			if (this.connected) {
+				return;
+			}
+			this.rcvNodeName = "cometdRcv_" + cometd._getRandStr();
+			var initUrl = cometd.url + "/?tunnelInit=iframe";
+			if (false && dojo.render.html.ie) {
+				this.rcvNode = new ActiveXObject("htmlfile");
+				this.rcvNode.open();
+				this.rcvNode.write("<html>");
+				this.rcvNode.write("<script>document.domain = '" + document.domain + "'");
+				this.rcvNode.write("</html>");
+				this.rcvNode.close();
+				var ifrDiv = this.rcvNode.createElement("div");
+				this.rcvNode.appendChild(ifrDiv);
+				this.rcvNode.parentWindow.dojo = dojo;
+				ifrDiv.innerHTML = "<iframe src='" + initUrl + "'></iframe>";
+			} else {
+				this.rcvNode = dojo.io.createIFrame(this.rcvNodeName, "", initUrl);
+			}
+		};
+	};
+	cometd.mimeReplaceTransport = new function () {
+		this.connected = false;
+		this.connectionId = null;
+		this.xhr = null;
+		this.authToken = null;
+		this.lastTimestamp = null;
+		this.lastId = null;
+		this.backlog = [];
+		this.check = function (types, version, xdomain) {
+			return ((!xdomain) && (dojo.render.html.mozilla) && (dojo.lang.inArray(types, "mime-message-block")));
+		};
+		this.tunnelInit = function () {
+			if (this.connected) {
+				return;
+			}
+			this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"mime-message-block"}])});
+			this.connected = true;
+		};
+		this.tunnelCollapse = function () {
+			if (this.connected) {
+				this.connected = false;
+				this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
+			}
+		};
+		this.deliver = cometd.iframeTransport.deliver;
+		this.handleOnLoad = function (resp) {
+			cometd.deliver(dojo.json.evalJson(this.xhr.responseText));
+		};
+		this.openTunnelWith = function (content, url) {
+			this.xhr = dojo.hostenv.getXmlhttpObject();
+			this.xhr.multipart = true;
+			if (dojo.render.html.mozilla) {
+				this.xhr.addEventListener("load", dojo.lang.hitch(this, "handleOnLoad"), false);
+			} else {
+				if (dojo.render.html.safari) {
+					dojo.debug("Webkit is broken with multipart responses over XHR = (");
+					this.xhr.onreadystatechange = dojo.lang.hitch(this, "handleOnLoad");
+				} else {
+					this.xhr.onload = dojo.lang.hitch(this, "handleOnLoad");
+				}
+			}
+			this.xhr.open("POST", (url || cometd.url), true);
+			this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+			dojo.debug(dojo.json.serialize(content));
+			this.xhr.send(dojo.io.argsFromMap(content, "utf8"));
+		};
+		this.processBacklog = function () {
+			while (this.backlog.length > 0) {
+				this.sendMessage(this.backlog.shift(), true);
+			}
+		};
+		this.sendMessage = function (message, bypassBacklog) {
+			if ((bypassBacklog) || (this.connected)) {
+				message.connectionId = this.connectionId;
+				message.clientId = cometd.clientId;
+				var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}};
+				return dojo.io.bind(bindArgs);
+			} else {
+				this.backlog.push(message);
+			}
+		};
+		this.startup = function (handshakeData) {
+			dojo.debugShallow(handshakeData);
+			if (this.connected) {
+				return;
+			}
+			this.tunnelInit();
+		};
+	};
+	cometd.longPollTransport = new function () {
+		this.connected = false;
+		this.connectionId = null;
+		this.authToken = null;
+		this.lastTimestamp = null;
+		this.lastId = null;
+		this.backlog = [];
+		this.check = function (types, version, xdomain) {
+			return ((!xdomain) && (dojo.lang.inArray(types, "long-polling")));
+		};
+		this.tunnelInit = function () {
+			if (this.connected) {
+				return;
+			}
+			this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"long-polling"}])});
+			this.connected = true;
+		};
+		this.tunnelCollapse = function () {
+			if (!this.connected) {
+				this.connected = false;
+				dojo.debug("clientId:", cometd.clientId);
+				this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
+			}
+		};
+		this.deliver = cometd.iframeTransport.deliver;
+		this.openTunnelWith = function (content, url) {
+			dojo.io.bind({url:(url || cometd.url), method:"post", content:content, mimetype:"text/json", load:dojo.lang.hitch(this, function (type, data, evt, args) {
+				cometd.deliver(data);
+				this.connected = false;
+				this.tunnelCollapse();
+			}), error:function () {
+				dojo.debug("tunnel opening failed");
+			}});
+			this.connected = true;
+		};
+		this.processBacklog = function () {
+			while (this.backlog.length > 0) {
+				this.sendMessage(this.backlog.shift(), true);
+			}
+		};
+		this.sendMessage = function (message, bypassBacklog) {
+			if ((bypassBacklog) || (this.connected)) {
+				message.connectionId = this.connectionId;
+				message.clientId = cometd.clientId;
+				var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"post", mimetype:"text/json", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) {
+					cometd.deliver(data);
+				})};
+				return dojo.io.bind(bindArgs);
+			} else {
+				this.backlog.push(message);
+			}
+		};
+		this.startup = function (handshakeData) {
+			if (this.connected) {
+				return;
+			}
+			this.tunnelInit();
+		};
+	};
+	cometd.callbackPollTransport = new function () {
+		this.connected = false;
+		this.connectionId = null;
+		this.authToken = null;
+		this.lastTimestamp = null;
+		this.lastId = null;
+		this.backlog = [];
+		this.check = function (types, version, xdomain) {
+			return dojo.lang.inArray(types, "callback-polling");
+		};
+		this.tunnelInit = function () {
+			if (this.connected) {
+				return;
+			}
+			this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"callback-polling"}])});
+			this.connected = true;
+		};
+		this.tunnelCollapse = function () {
+			if (!this.connected) {
+				this.connected = false;
+				this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])});
+			}
+		};
+		this.deliver = cometd.iframeTransport.deliver;
+		this.openTunnelWith = function (content, url) {
+			var req = dojo.io.bind({url:(url || cometd.url), content:content, mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", load:dojo.lang.hitch(this, function (type, data, evt, args) {
+				cometd.deliver(data);
+				this.connected = false;
+				this.tunnelCollapse();
+			}), error:function () {
+				dojo.debug("tunnel opening failed");
+			}});
+			this.connected = true;
+		};
+		this.processBacklog = function () {
+			while (this.backlog.length > 0) {
+				this.sendMessage(this.backlog.shift(), true);
+			}
+		};
+		this.sendMessage = function (message, bypassBacklog) {
+			if ((bypassBacklog) || (this.connected)) {
+				message.connectionId = this.connectionId;
+				message.clientId = cometd.clientId;
+				var bindArgs = {url:cometd.url || djConfig["cometdRoot"], mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) {
+					cometd.deliver(data);
+				})};
+				return dojo.io.bind(bindArgs);
+			} else {
+				this.backlog.push(message);
+			}
+		};
+		this.startup = function (handshakeData) {
+			if (this.connected) {
+				return;
+			}
+			this.tunnelInit();
+		};
+	};
+	cometd.connectionTypes.register("mime-message-block", cometd.mimeReplaceTransport.check, cometd.mimeReplaceTransport);
+	cometd.connectionTypes.register("long-polling", cometd.longPollTransport.check, cometd.longPollTransport);
+	cometd.connectionTypes.register("callback-polling", cometd.callbackPollTransport.check, cometd.callbackPollTransport);
+	cometd.connectionTypes.register("iframe", cometd.iframeTransport.check, cometd.iframeTransport);
+	dojo.io.cometd = cometd;
+}});
+
+
 __CPAN_FILE__ src/io/BrowserIO.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -55136,6 +104048,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.BrowserIO");
 dojo.require("dojo.io.common");
 dojo.require("dojo.lang.array");
@@ -55330,7 +104244,7 @@
 			_cache = {};
 		};
 		function doLoad(kwArgs, http, url, query, useCache) {
-			if (((http.status >= 200) && (http.status < 300)) || (http.status == 304) || (location.protocol == "file:" && (http.status == 0 || http.status == undefined)) || (location.protocol == "chrome:" && (http.status == 0 || http.status == undefined))) {
+			if (((http.status >= 200) && (http.status < 300)) || (http.status == 304) || (http.status == 1223) || (location.protocol == "file:" && (http.status == 0 || http.status == undefined)) || (location.protocol == "chrome:" && (http.status == 0 || http.status == undefined))) {
 				var ret;
 				if (kwArgs.method.toLowerCase() == "head") {
 					var headers = http.getAllResponseHeaders();
@@ -55356,9 +104270,9 @@
 							ret = null;
 						}
 					} else {
-						if (kwArgs.mimetype == "text/json" || kwArgs.mimetype == "application/json") {
+						if (kwArgs.mimetype.substr(0, 9) == "text/json" || kwArgs.mimetype.substr(0, 16) == "application/json") {
 							try {
-								ret = dj_eval("(" + http.responseText + ")");
+								ret = dj_eval("(" + kwArgs.jsonFilter(http.responseText) + ")");
 							}
 							catch (e) {
 								dojo.debug(e);
@@ -55452,7 +104366,8 @@
 		};
 		var hasXmlHttp = dojo.hostenv.getXmlhttpObject() ? true : false;
 		this.canHandle = function (kwArgs) {
-			return hasXmlHttp && dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase() || "")) && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"]));
+			var mlc = kwArgs["mimetype"].toLowerCase() || "";
+			return hasXmlHttp && ((dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript"], mlc)) || (mlc.substr(0, 9) == "text/json" || mlc.substr(0, 16) == "application/json")) && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"]));
 		};
 		this.multipartBoundary = "45309FFF-BD65-4d50-99C9-36986896A96F";
 		this.bind = function (kwArgs) {
@@ -55619,6 +104534,162 @@
 }
 
 
+__CPAN_FILE__ src/io/XhrIframeProxy.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.XhrIframeProxy"], ["require", "dojo.experimental"], ["require", "dojo.io.IframeIO"], ["require", "dojo.dom"], ["require", "dojo.uri.Uri"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.XhrIframeProxy");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.io.XhrIframeProxy");
+	dojo.require("dojo.io.IframeIO");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.uri.Uri");
+	dojo.io.XhrIframeProxy = {xipClientUrl:djConfig["xipClientUrl"] || dojo.uri.moduleUri("dojo.io", "xip_client.html"), _state:{}, _stateIdCounter:0, needFrameRecursion:function () {
+		return (true == dojo.render.html.ie70);
+	}, send:function (facade) {
+		var stateId = "XhrIframeProxy" + (this._stateIdCounter++);
+		facade._stateId = stateId;
+		var frameUrl = this.xipClientUrl + "#0:init:id=" + stateId + "&server=" + encodeURIComponent(facade._ifpServerUrl) + "&fr=false";
+		if (this.needFrameRecursion()) {
+			var fullClientUrl = window.location.href;
+			if ((this.xipClientUrl + "").charAt(0) == "/") {
+				var endIndex = fullClientUrl.indexOf("://");
+				endIndex = fullClientUrl.indexOf("/", endIndex + 1);
+				fullClientUrl = fullClientUrl.substring(0, endIndex);
+			} else {
+				fullClientUrl = fullClientUrl.substring(0, fullClientUrl.lastIndexOf("/") + 1);
+			}
+			fullClientUrl += this.xipClientUrl;
+			var serverUrl = facade._ifpServerUrl + (facade._ifpServerUrl.indexOf("?") == -1 ? "?" : "&") + "dojo.fr=1";
+			frameUrl = serverUrl + "#0:init:id=" + stateId + "&client=" + encodeURIComponent(fullClientUrl) + "&fr=" + this.needFrameRecursion();
+		}
+		this._state[stateId] = {facade:facade, stateId:stateId, clientFrame:dojo.io.createIFrame(stateId, "", frameUrl)};
+		return stateId;
+	}, receive:function (stateId, urlEncodedData) {
+		var response = {};
+		var nvPairs = urlEncodedData.split("&");
+		for (var i = 0; i < nvPairs.length; i++) {
+			if (nvPairs[i]) {
+				var nameValue = nvPairs[i].split("=");
+				response[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
+			}
+		}
+		var state = this._state[stateId];
+		var facade = state.facade;
+		facade._setResponseHeaders(response.responseHeaders);
+		if (response.status == 0 || response.status) {
+			facade.status = parseInt(response.status, 10);
+		}
+		if (response.statusText) {
+			facade.statusText = response.statusText;
+		}
+		if (response.responseText) {
+			facade.responseText = response.responseText;
+			var contentType = facade.getResponseHeader("Content-Type");
+			if (contentType && (contentType == "application/xml" || contentType == "text/xml")) {
+				facade.responseXML = dojo.dom.createDocumentFromText(response.responseText, contentType);
+			}
+		}
+		facade.readyState = 4;
+		this.destroyState(stateId);
+	}, clientFrameLoaded:function (stateId) {
+		var state = this._state[stateId];
+		var facade = state.facade;
+		if (this.needFrameRecursion()) {
+			var clientWindow = window.open("", state.stateId + "_clientEndPoint");
+		} else {
+			var clientWindow = state.clientFrame.contentWindow;
+		}
+		var reqHeaders = [];
+		for (var param in facade._requestHeaders) {
+			reqHeaders.push(param + ": " + facade._requestHeaders[param]);
+		}
+		var requestData = {uri:facade._uri};
+		if (reqHeaders.length > 0) {
+			requestData.requestHeaders = reqHeaders.join("\r\n");
+		}
+		if (facade._method) {
+			requestData.method = facade._method;
+		}
+		if (facade._bodyData) {
+			requestData.data = facade._bodyData;
+		}
+		clientWindow.send(dojo.io.argsFromMap(requestData, "utf8"));
+	}, destroyState:function (stateId) {
+		var state = this._state[stateId];
+		if (state) {
+			delete this._state[stateId];
+			var parentNode = state.clientFrame.parentNode;
+			parentNode.removeChild(state.clientFrame);
+			state.clientFrame = null;
+			state = null;
+		}
+	}, createFacade:function () {
+		if (arguments && arguments[0] && arguments[0]["iframeProxyUrl"]) {
+			return new dojo.io.XhrIframeFacade(arguments[0]["iframeProxyUrl"]);
+		} else {
+			return dojo.io.XhrIframeProxy.oldGetXmlhttpObject.apply(dojo.hostenv, arguments);
+		}
+	}};
+	dojo.io.XhrIframeProxy.oldGetXmlhttpObject = dojo.hostenv.getXmlhttpObject;
+	dojo.hostenv.getXmlhttpObject = dojo.io.XhrIframeProxy.createFacade;
+	dojo.io.XhrIframeFacade = function (ifpServerUrl) {
+		this._requestHeaders = {};
+		this._allResponseHeaders = null;
+		this._responseHeaders = {};
+		this._method = null;
+		this._uri = null;
+		this._bodyData = null;
+		this.responseText = null;
+		this.responseXML = null;
+		this.status = null;
+		this.statusText = null;
+		this.readyState = 0;
+		this._ifpServerUrl = ifpServerUrl;
+		this._stateId = null;
+	};
+	dojo.lang.extend(dojo.io.XhrIframeFacade, {open:function (method, uri) {
+		this._method = method;
+		this._uri = uri;
+		this.readyState = 1;
+	}, setRequestHeader:function (header, value) {
+		this._requestHeaders[header] = value;
+	}, send:function (stringData) {
+		this._bodyData = stringData;
+		this._stateId = dojo.io.XhrIframeProxy.send(this);
+		this.readyState = 2;
+	}, abort:function () {
+		dojo.io.XhrIframeProxy.destroyState(this._stateId);
+	}, getAllResponseHeaders:function () {
+		return this._allResponseHeaders;
+	}, getResponseHeader:function (header) {
+		return this._responseHeaders[header];
+	}, _setResponseHeaders:function (allHeaders) {
+		if (allHeaders) {
+			this._allResponseHeaders = allHeaders;
+			allHeaders = allHeaders.replace(/\r/g, "");
+			var nvPairs = allHeaders.split("\n");
+			for (var i = 0; i < nvPairs.length; i++) {
+				if (nvPairs[i]) {
+					var nameValue = nvPairs[i].split(": ");
+					this._responseHeaders[nameValue[0]] = nameValue[1];
+				}
+			}
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/io/common.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -55630,6 +104701,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.common");
 dojo.require("dojo.string");
 dojo.require("dojo.lang.extras");
@@ -55651,7 +104724,19 @@
 		}
 	}
 };
-dojo.lang.extend(dojo.io.Request, {url:"", mimetype:"text/plain", method:"GET", content:undefined, transport:undefined, changeUrl:undefined, formNode:undefined, sync:false, bindSuccess:false, useCache:false, preventCache:false, load:function (type, data, transportImplementation, kwArgs) {
+dojo.lang.extend(dojo.io.Request, {url:"", mimetype:"text/plain", method:"GET", content:undefined, transport:undefined, changeUrl:undefined, formNode:undefined, sync:false, bindSuccess:false, useCache:false, preventCache:false, jsonFilter:function (value) {
+	if ((this.mimetype == "text/json-comment-filtered") || (this.mimetype == "application/json-comment-filtered")) {
+		var cStartIdx = value.indexOf("/*");
+		var cEndIdx = value.lastIndexOf("*/");
+		if ((cStartIdx == -1) || (cEndIdx == -1)) {
+			dojo.debug("your JSON wasn't comment filtered!");
+			return "";
+		}
+		return value.substring(cStartIdx + 2, cEndIdx);
+	}
+	dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+	return value;
+}, load:function (type, data, transportImplementation, kwArgs) {
 }, error:function (type, error, transportImplementation, kwArgs) {
 }, timeout:function (type, empty, transportImplementation, kwArgs) {
 }, handle:function (type, data, transportImplementation, kwArgs) {
@@ -55850,6 +104935,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.io.common");
 dojo.provide("dojo.io.cometd");
 dojo.require("dojo.AdapterRegistry");
@@ -56349,7 +105436,7 @@
 			message.clientId = cometd.clientId;
 			var bindArgs = {url:cometd.url || djConfig["cometdRoot"], mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) {
 				cometd.deliver(data);
-			}), };
+			})};
 			return dojo.io.bind(bindArgs);
 		} else {
 			this.backlog.push(message);
@@ -56369,6 +105456,668 @@
 dojo.io.cometd = cometd;
 
 
+__CPAN_FILE__ src/io/RepubsubIO.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.event.*"], ["require", "dojo.io.BrowserIO"], ["provide", "dojo.io.RepubsubIO"]], definePackage:function (dojo) {
+	dojo.require("dojo.event.*");
+	dojo.require("dojo.io.BrowserIO");
+	dojo.provide("dojo.io.RepubsubIO");
+	dojo.io.repubsubTranport = new function () {
+		var rps = dojo.io.repubsub;
+		this.canHandle = function (kwArgs) {
+			if ((kwArgs["mimetype"] == "text/javascript") && (kwArgs["method"] == "repubsub")) {
+				return true;
+			}
+			return false;
+		};
+		this.bind = function (kwArgs) {
+			if (!rps.isInitialized) {
+				rps.init();
+			}
+			if (!rps.topics[kwArgs.url]) {
+				kwArgs.rpsLoad = function (evt) {
+					kwArgs.load("load", evt);
+				};
+				rps.subscribe(kwArgs.url, kwArgs, "rpsLoad");
+			}
+			if (kwArgs["content"]) {
+				var cEvt = dojo.io.repubsubEvent.initFromProperties(kwArgs.content);
+				rps.publish(kwArgs.url, cEvt);
+			}
+		};
+		dojo.io.transports.addTransport("repubsubTranport");
+	};
+	dojo.io.repubsub = new function () {
+		this.initDoc = "init.html";
+		this.isInitialized = false;
+		this.subscriptionBacklog = [];
+		this.debug = true;
+		this.rcvNodeName = null;
+		this.sndNodeName = null;
+		this.rcvNode = null;
+		this.sndNode = null;
+		this.canRcv = false;
+		this.canSnd = false;
+		this.canLog = false;
+		this.sndTimer = null;
+		this.windowRef = window;
+		this.backlog = [];
+		this.tunnelInitCount = 0;
+		this.tunnelFrameKey = "tunnel_frame";
+		this.serverBaseURL = location.protocol + "//" + location.host + location.pathname;
+		this.logBacklog = [];
+		this.getRandStr = function () {
+			return Math.random().toString().substring(2, 10);
+		};
+		this.userid = "guest";
+		this.tunnelID = this.getRandStr();
+		this.attachPathList = [];
+		this.topics = [];
+		this.parseGetStr = function () {
+			var baseUrl = document.location.toString();
+			var params = baseUrl.split("?", 2);
+			if (params.length > 1) {
+				var paramStr = params[1];
+				var pairs = paramStr.split("&");
+				var opts = [];
+				for (var x in pairs) {
+					var sp = pairs[x].split("=");
+					try {
+						opts[sp[0]] = eval(sp[1]);
+					}
+					catch (e) {
+						opts[sp[0]] = sp[1];
+					}
+				}
+				return opts;
+			} else {
+				return [];
+			}
+		};
+		var getOpts = this.parseGetStr();
+		for (var x in getOpts) {
+			this[x] = getOpts[x];
+		}
+		if (!this["tunnelURI"]) {
+			this.tunnelURI = ["/who/", escape(this.userid), "/s/", this.getRandStr(), "/kn_journal"].join("");
+		}
+		if (window["repubsubOpts"] || window["rpsOpts"]) {
+			var optObj = window["repubsubOpts"] || window["rpsOpts"];
+			for (var x in optObj) {
+				this[x] = optObj[x];
+			}
+		}
+		this.tunnelCloseCallback = function () {
+			dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain);
+		};
+		this.receiveEventFromTunnel = function (evt, srcWindow) {
+			if (!evt["elements"]) {
+				this.log("bailing! event received without elements!", "error");
+				return;
+			}
+			var e = {};
+			for (var i = 0; i < evt.elements.length; i++) {
+				var ee = evt.elements[i];
+				e[ee.name || ee.nameU] = (ee.value || ee.valueU);
+				this.log("[event]: " + (ee.name || ee.nameU) + ": " + e[ee.name || ee.nameU]);
+			}
+			this.dispatch(e);
+		};
+		this.widenDomain = function (domainStr) {
+			var cd = domainStr || document.domain;
+			if (cd.indexOf(".") == -1) {
+				return;
+			}
+			var dps = cd.split(".");
+			if (dps.length <= 2) {
+				return;
+			}
+			dps = dps.slice(dps.length - 2);
+			document.domain = dps.join(".");
+		};
+		this.parseCookie = function () {
+			var cs = document.cookie;
+			var keypairs = cs.split(";");
+			for (var x = 0; x < keypairs.length; x++) {
+				keypairs[x] = keypairs[x].split("=");
+				if (x != keypairs.length - 1) {
+					cs += ";";
+				}
+			}
+			return keypairs;
+		};
+		this.setCookie = function (keypairs, clobber) {
+			if ((clobber) && (clobber == true)) {
+				document.cookie = "";
+			}
+			var cs = "";
+			for (var x = 0; x < keypairs.length; x++) {
+				cs += keypairs[x][0] + "=" + keypairs[x][1];
+				if (x != keypairs.length - 1) {
+					cs += ";";
+				}
+			}
+			document.cookie = cs;
+		};
+		this.log = function (str, lvl) {
+			if (!this.debug) {
+				return;
+			}
+			while (this.logBacklog.length > 0) {
+				if (!this.canLog) {
+					break;
+				}
+				var blo = this.logBacklog.shift();
+				this.writeLog("[" + blo[0] + "]: " + blo[1], blo[2]);
+			}
+			this.writeLog(str, lvl);
+		};
+		this.writeLog = function (str, lvl) {
+			dojo.debug(((new Date()).toLocaleTimeString()) + ": " + str);
+		};
+		this.init = function () {
+			this.widenDomain();
+			this.openTunnel();
+			this.isInitialized = true;
+			while (this.subscriptionBacklog.length) {
+				this.subscribe.apply(this, this.subscriptionBacklog.shift());
+			}
+		};
+		this.clobber = function () {
+			if (this.rcvNode) {
+				this.setCookie([[this.tunnelFrameKey, "closed"], ["path", "/"]], false);
+			}
+		};
+		this.openTunnel = function () {
+			this.rcvNodeName = "rcvIFrame_" + this.getRandStr();
+			this.setCookie([[this.tunnelFrameKey, this.rcvNodeName], ["path", "/"]], false);
+			this.rcvNode = dojo.io.createIFrame(this.rcvNodeName);
+			dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain);
+			this.sndNodeName = "sndIFrame_" + this.getRandStr();
+			this.sndNode = dojo.io.createIFrame(this.sndNodeName);
+			dojo.io.setIFrameSrc(this.sndNode, this.initDoc + "?callback=repubsub.sndNodeReady&domain=" + document.domain);
+		};
+		this.rcvNodeReady = function () {
+			var statusURI = [this.tunnelURI, "/kn_status/", this.getRandStr(), "_", String(this.tunnelInitCount++)].join("");
+			this.log("rcvNodeReady");
+			var initURIArr = [this.serverBaseURL, "/kn?kn_from=", escape(this.tunnelURI), "&kn_id=", escape(this.tunnelID), "&kn_status_from=", escape(statusURI)];
+			dojo.io.setIFrameSrc(this.rcvNode, initURIArr.join(""));
+			this.subscribe(statusURI, this, "statusListener", true);
+			this.log(initURIArr.join(""));
+		};
+		this.sndNodeReady = function () {
+			this.canSnd = true;
+			this.log("sndNodeReady");
+			this.log(this.backlog.length);
+			if (this.backlog.length > 0) {
+				this.dequeueEvent();
+			}
+		};
+		this.statusListener = function (evt) {
+			this.log("status listener called");
+			this.log(evt.status, "info");
+		};
+		this.dispatch = function (evt) {
+			if (evt["to"] || evt["kn_routed_from"]) {
+				var rf = evt["to"] || evt["kn_routed_from"];
+				var topic = rf.split(this.serverBaseURL, 2)[1];
+				if (!topic) {
+					topic = rf;
+				}
+				this.log("[topic] " + topic);
+				if (topic.length > 3) {
+					if (topic.slice(0, 3) == "/kn") {
+						topic = topic.slice(3);
+					}
+				}
+				if (this.attachPathList[topic]) {
+					this.attachPathList[topic](evt);
+				}
+			}
+		};
+		this.subscribe = function (topic, toObj, toFunc, dontTellServer) {
+			if (!this.isInitialized) {
+				this.subscriptionBacklog.push([topic, toObj, toFunc, dontTellServer]);
+				return;
+			}
+			if (!this.attachPathList[topic]) {
+				this.attachPathList[topic] = function () {
+					return true;
+				};
+				this.log("subscribing to: " + topic);
+				this.topics.push(topic);
+			}
+			var revt = new dojo.io.repubsubEvent(this.tunnelURI, topic, "route");
+			var rstr = [this.serverBaseURL + "/kn", revt.toGetString()].join("");
+			dojo.event.kwConnect({once:true, srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc});
+			if (!this.rcvNode) {
+			}
+			if (dontTellServer) {
+				return;
+			}
+			this.log("sending subscription to: " + topic);
+			this.sendTopicSubToServer(topic, rstr);
+		};
+		this.sendTopicSubToServer = function (topic, str) {
+			if (!this.attachPathList[topic]["subscriptions"]) {
+				this.enqueueEventStr(str);
+				this.attachPathList[topic].subscriptions = 0;
+			}
+			this.attachPathList[topic].subscriptions++;
+		};
+		this.unSubscribe = function (topic, toObj, toFunc) {
+			dojo.event.kwDisconnect({srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc});
+		};
+		this.publish = function (topic, event) {
+			var evt = dojo.io.repubsubEvent.initFromProperties(event);
+			evt.to = topic;
+			var evtURLParts = [];
+			evtURLParts.push(this.serverBaseURL + "/kn");
+			evtURLParts.push(evt.toGetString());
+			this.enqueueEventStr(evtURLParts.join(""));
+		};
+		this.enqueueEventStr = function (evtStr) {
+			this.log("enqueueEventStr");
+			this.backlog.push(evtStr);
+			this.dequeueEvent();
+		};
+		this.dequeueEvent = function (force) {
+			this.log("dequeueEvent");
+			if (this.backlog.length <= 0) {
+				return;
+			}
+			if ((this.canSnd) || (force)) {
+				dojo.io.setIFrameSrc(this.sndNode, this.backlog.shift() + "&callback=repubsub.sndNodeReady");
+				this.canSnd = false;
+			} else {
+				this.log("sndNode not available yet!", "debug");
+			}
+		};
+	};
+	dojo.io.repubsubEvent = function (to, from, method, id, routeURI, payload, dispname, uid) {
+		this.to = to;
+		this.from = from;
+		this.method = method || "route";
+		this.id = id || repubsub.getRandStr();
+		this.uri = routeURI;
+		this.displayname = dispname || repubsub.displayname;
+		this.userid = uid || repubsub.userid;
+		this.payload = payload || "";
+		this.flushChars = 4096;
+		this.initFromProperties = function (evt) {
+			if (evt.constructor = dojo.io.repubsubEvent) {
+				for (var x in evt) {
+					this[x] = evt[x];
+				}
+			} else {
+				for (var x in evt) {
+					if (typeof this.forwardPropertiesMap[x] == "string") {
+						this[this.forwardPropertiesMap[x]] = evt[x];
+					} else {
+						this[x] = evt[x];
+					}
+				}
+			}
+		};
+		this.toGetString = function (noQmark) {
+			var qs = [((noQmark) ? "" : "?")];
+			for (var x = 0; x < this.properties.length; x++) {
+				var tp = this.properties[x];
+				if (this[tp[0]]) {
+					qs.push(tp[1] + "=" + encodeURIComponent(String(this[tp[0]])));
+				}
+			}
+			return qs.join("&");
+		};
+	};
+	dojo.io.repubsubEvent.prototype.properties = [["from", "kn_from"], ["to", "kn_to"], ["method", "do_method"], ["id", "kn_id"], ["uri", "kn_uri"], ["displayname", "kn_displayname"], ["userid", "kn_userid"], ["payload", "kn_payload"], ["flushChars", "kn_response_flush"], ["responseFormat", "kn_response_format"]];
+	dojo.io.repubsubEvent.prototype.forwardPropertiesMap = {};
+	dojo.io.repubsubEvent.prototype.reversePropertiesMap = {};
+	for (var x = 0; x < dojo.io.repubsubEvent.prototype.properties.length; x++) {
+		var tp = dojo.io.repubsubEvent.prototype.properties[x];
+		dojo.io.repubsubEvent.prototype.reversePropertiesMap[tp[0]] = tp[1];
+		dojo.io.repubsubEvent.prototype.forwardPropertiesMap[tp[1]] = tp[0];
+	}
+	dojo.io.repubsubEvent.initFromProperties = function (evt) {
+		var eventObj = new dojo.io.repubsubEvent();
+		eventObj.initFromProperties(evt);
+		return eventObj;
+	};
+}});
+
+
+__CPAN_FILE__ src/io/ScriptSrcIO.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.ScriptSrcIO"], ["require", "dojo.io.BrowserIO"], ["require", "dojo.undo.browser"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.ScriptSrcIO");
+	dojo.require("dojo.io.BrowserIO");
+	dojo.require("dojo.undo.browser");
+	dojo.io.ScriptSrcTransport = new function () {
+		this.preventCache = false;
+		this.maxUrlLength = 1000;
+		this.inFlightTimer = null;
+		this.DsrStatusCodes = {Continue:100, Ok:200, Error:500};
+		this.startWatchingInFlight = function () {
+			if (!this.inFlightTimer) {
+				this.inFlightTimer = setInterval("dojo.io.ScriptSrcTransport.watchInFlight();", 100);
+			}
+		};
+		this.watchInFlight = function () {
+			var totalCount = 0;
+			var doneCount = 0;
+			for (var param in this._state) {
+				totalCount++;
+				var currentState = this._state[param];
+				if (currentState.isDone) {
+					doneCount++;
+					delete this._state[param];
+				} else {
+					if (!currentState.isFinishing) {
+						var listener = currentState.kwArgs;
+						try {
+							if (currentState.checkString && eval("typeof(" + currentState.checkString + ") != 'undefined'")) {
+								currentState.isFinishing = true;
+								this._finish(currentState, "load");
+								doneCount++;
+								delete this._state[param];
+							} else {
+								if (listener.timeoutSeconds && listener.timeout) {
+									if (currentState.startTime + (listener.timeoutSeconds * 1000) < (new Date()).getTime()) {
+										currentState.isFinishing = true;
+										this._finish(currentState, "timeout");
+										doneCount++;
+										delete this._state[param];
+									}
+								} else {
+									if (!listener.timeoutSeconds) {
+										doneCount++;
+									}
+								}
+							}
+						}
+						catch (e) {
+							currentState.isFinishing = true;
+							this._finish(currentState, "error", {status:this.DsrStatusCodes.Error, response:e});
+						}
+					}
+				}
+			}
+			if (doneCount >= totalCount) {
+				clearInterval(this.inFlightTimer);
+				this.inFlightTimer = null;
+			}
+		};
+		this.canHandle = function (kwArgs) {
+			return dojo.lang.inArray(["text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase())) && (kwArgs["method"].toLowerCase() == "get") && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"])) && (!kwArgs["sync"] || kwArgs["sync"] == false) && !kwArgs["file"] && !kwArgs["multipart"];
+		};
+		this.removeScripts = function () {
+			var scripts = document.getElementsByTagName("script");
+			for (var i = 0; scripts && i < scripts.length; i++) {
+				var scriptTag = scripts[i];
+				if (scriptTag.className == "ScriptSrcTransport") {
+					var parent = scriptTag.parentNode;
+					parent.removeChild(scriptTag);
+					i--;
+				}
+			}
+		};
+		this.bind = function (kwArgs) {
+			var url = kwArgs.url;
+			var query = "";
+			if (kwArgs["formNode"]) {
+				var ta = kwArgs.formNode.getAttribute("action");
+				if ((ta) && (!kwArgs["url"])) {
+					url = ta;
+				}
+				var tp = kwArgs.formNode.getAttribute("method");
+				if ((tp) && (!kwArgs["method"])) {
+					kwArgs.method = tp;
+				}
+				query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);
+			}
+			if (url.indexOf("#") > -1) {
+				dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);
+				url = url.split("#")[0];
+			}
+			var urlParts = url.split("?");
+			if (urlParts && urlParts.length == 2) {
+				url = urlParts[0];
+				query += (query ? "&" : "") + urlParts[1];
+			}
+			if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) {
+				dojo.undo.browser.addToHistory(kwArgs);
+			}
+			var id = kwArgs["apiId"] ? kwArgs["apiId"] : "id" + this._counter++;
+			var content = kwArgs["content"];
+			var jsonpName = kwArgs.jsonParamName;
+			if (kwArgs.sendTransport || jsonpName) {
+				if (!content) {
+					content = {};
+				}
+				if (kwArgs.sendTransport) {
+					content["dojo.transport"] = "scriptsrc";
+				}
+				if (jsonpName) {
+					content[jsonpName] = "dojo.io.ScriptSrcTransport._state." + id + ".jsonpCall";
+				}
+			}
+			if (kwArgs.postContent) {
+				query = kwArgs.postContent;
+			} else {
+				if (content) {
+					query += ((query) ? "&" : "") + dojo.io.argsFromMap(content, kwArgs.encoding, jsonpName);
+				}
+			}
+			if (kwArgs["apiId"]) {
+				kwArgs["useRequestId"] = true;
+			}
+			var state = {"id":id, "idParam":"_dsrid=" + id, "url":url, "query":query, "kwArgs":kwArgs, "startTime":(new Date()).getTime(), "isFinishing":false};
+			if (!url) {
+				this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.none"});
+				return;
+			}
+			if (content && content[jsonpName]) {
+				state.jsonp = content[jsonpName];
+				state.jsonpCall = function (data) {
+					if (data["Error"] || data["error"]) {
+						if (dojo["json"] && dojo["json"]["serialize"]) {
+							dojo.debug(dojo.json.serialize(data));
+						}
+						dojo.io.ScriptSrcTransport._finish(this, "error", data);
+					} else {
+						dojo.io.ScriptSrcTransport._finish(this, "load", data);
+					}
+				};
+			}
+			if (kwArgs["useRequestId"] || kwArgs["checkString"] || state["jsonp"]) {
+				this._state[id] = state;
+			}
+			if (kwArgs["checkString"]) {
+				state.checkString = kwArgs["checkString"];
+			}
+			state.constantParams = (kwArgs["constantParams"] == null ? "" : kwArgs["constantParams"]);
+			if (kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false)) {
+				state.nocacheParam = "dojo.preventCache=" + new Date().valueOf();
+			} else {
+				state.nocacheParam = "";
+			}
+			var urlLength = state.url.length + state.query.length + state.constantParams.length + state.nocacheParam.length + this._extraPaddingLength;
+			if (kwArgs["useRequestId"]) {
+				urlLength += state.idParam.length;
+			}
+			if (!kwArgs["checkString"] && kwArgs["useRequestId"] && !state["jsonp"] && !kwArgs["forceSingleRequest"] && urlLength > this.maxUrlLength) {
+				if (url > this.maxUrlLength) {
+					this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.tooBig"});
+					return;
+				} else {
+					this._multiAttach(state, 1);
+				}
+			} else {
+				var queryParams = [state.constantParams, state.nocacheParam, state.query];
+				if (kwArgs["useRequestId"] && !state["jsonp"]) {
+					queryParams.unshift(state.idParam);
+				}
+				var finalUrl = this._buildUrl(state.url, queryParams);
+				state.finalUrl = finalUrl;
+				this._attach(state.id, finalUrl);
+			}
+			this.startWatchingInFlight();
+		};
+		this._counter = 1;
+		this._state = {};
+		this._extraPaddingLength = 16;
+		this._buildUrl = function (url, nameValueArray) {
+			var finalUrl = url;
+			var joiner = "?";
+			for (var i = 0; i < nameValueArray.length; i++) {
+				if (nameValueArray[i]) {
+					finalUrl += joiner + nameValueArray[i];
+					joiner = "&";
+				}
+			}
+			return finalUrl;
+		};
+		this._attach = function (id, url) {
+			var element = document.createElement("script");
+			element.type = "text/javascript";
+			element.src = url;
+			element.id = id;
+			element.className = "ScriptSrcTransport";
+			document.getElementsByTagName("head")[0].appendChild(element);
+		};
+		this._multiAttach = function (state, part) {
+			if (state.query == null) {
+				this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"query.null"});
+				return;
+			}
+			if (!state.constantParams) {
+				state.constantParams = "";
+			}
+			var queryMax = this.maxUrlLength - state.idParam.length - state.constantParams.length - state.url.length - state.nocacheParam.length - this._extraPaddingLength;
+			var isDone = state.query.length < queryMax;
+			var currentQuery;
+			if (isDone) {
+				currentQuery = state.query;
+				state.query = null;
+			} else {
+				var ampEnd = state.query.lastIndexOf("&", queryMax - 1);
+				var eqEnd = state.query.lastIndexOf("=", queryMax - 1);
+				if (ampEnd > eqEnd || eqEnd == queryMax - 1) {
+					currentQuery = state.query.substring(0, ampEnd);
+					state.query = state.query.substring(ampEnd + 1, state.query.length);
+				} else {
+					currentQuery = state.query.substring(0, queryMax);
+					var queryName = currentQuery.substring((ampEnd == -1 ? 0 : ampEnd + 1), eqEnd);
+					state.query = queryName + "=" + state.query.substring(queryMax, state.query.length);
+				}
+			}
+			var queryParams = [currentQuery, state.idParam, state.constantParams, state.nocacheParam];
+			if (!isDone) {
+				queryParams.push("_part=" + part);
+			}
+			var url = this._buildUrl(state.url, queryParams);
+			this._attach(state.id + "_" + part, url);
+		};
+		this._finish = function (state, callback, event) {
+			if (callback != "partOk" && !state.kwArgs[callback] && !state.kwArgs["handle"]) {
+				if (callback == "error") {
+					state.isDone = true;
+					throw event;
+				}
+			} else {
+				switch (callback) {
+				  case "load":
+					var response = event ? event.response : null;
+					if (!response) {
+						response = event;
+					}
+					state.kwArgs[(typeof state.kwArgs.load == "function") ? "load" : "handle"]("load", response, event, state.kwArgs);
+					state.isDone = true;
+					break;
+				  case "partOk":
+					var part = parseInt(event.response.part, 10) + 1;
+					if (event.response.constantParams) {
+						state.constantParams = event.response.constantParams;
+					}
+					this._multiAttach(state, part);
+					state.isDone = false;
+					break;
+				  case "error":
+					state.kwArgs[(typeof state.kwArgs.error == "function") ? "error" : "handle"]("error", event.response, event, state.kwArgs);
+					state.isDone = true;
+					break;
+				  default:
+					state.kwArgs[(typeof state.kwArgs[callback] == "function") ? callback : "handle"](callback, event, event, state.kwArgs);
+					state.isDone = true;
+				}
+			}
+		};
+		dojo.io.transports.addTransport("ScriptSrcTransport");
+	};
+	window.onscriptload = function (event) {
+		var state = null;
+		var transport = dojo.io.ScriptSrcTransport;
+		if (transport._state[event.id]) {
+			state = transport._state[event.id];
+		} else {
+			var tempState;
+			for (var param in transport._state) {
+				tempState = transport._state[param];
+				if (tempState.finalUrl && tempState.finalUrl == event.id) {
+					state = tempState;
+					break;
+				}
+			}
+			if (state == null) {
+				var scripts = document.getElementsByTagName("script");
+				for (var i = 0; scripts && i < scripts.length; i++) {
+					var scriptTag = scripts[i];
+					if (scriptTag.getAttribute("class") == "ScriptSrcTransport" && scriptTag.src == event.id) {
+						state = transport._state[scriptTag.id];
+						break;
+					}
+				}
+			}
+			if (state == null) {
+				throw "No matching state for onscriptload event.id: " + event.id;
+			}
+		}
+		var callbackName = "error";
+		switch (event.status) {
+		  case dojo.io.ScriptSrcTransport.DsrStatusCodes.Continue:
+			callbackName = "partOk";
+			break;
+		  case dojo.io.ScriptSrcTransport.DsrStatusCodes.Ok:
+			callbackName = "load";
+			break;
+		}
+		transport._finish(state, callbackName, event);
+	};
+}});
+
+
 __CPAN_FILE__ src/io/XhrIframeProxy.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -56380,6 +106129,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.XhrIframeProxy");
 dojo.require("dojo.experimental");
 dojo.experimental("dojo.io.XhrIframeProxy");
@@ -56532,6 +106283,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.RhinoIO");
 dojo.require("dojo.io.common");
 dojo.require("dojo.lang.func");
@@ -56648,6 +106401,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]});
 dojo.provide("dojo.io.*");
 
@@ -56663,6 +106418,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.ScriptSrcIO");
 dojo.require("dojo.io.BrowserIO");
 dojo.require("dojo.undo.browser");
@@ -56980,6 +106737,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.cookie");
 dojo.io.cookie.setCookie = function (name, value, days, path, domain, secure) {
 	var expires = -1;
@@ -57073,6 +106832,479 @@
 }
 
 
+__CPAN_FILE__ src/io/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]}], ["provide", "dojo.io.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]});
+	dojo.provide("dojo.io.*");
+}});
+
+
+__CPAN_FILE__ src/io/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.common"], ["require", "dojo.string"], ["require", "dojo.lang.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.common");
+	dojo.require("dojo.string");
+	dojo.require("dojo.lang.extras");
+	dojo.io.transports = [];
+	dojo.io.hdlrFuncNames = ["load", "error", "timeout"];
+	dojo.io.Request = function (url, mimetype, transport, changeUrl) {
+		if ((arguments.length == 1) && (arguments[0].constructor == Object)) {
+			this.fromKwArgs(arguments[0]);
+		} else {
+			this.url = url;
+			if (mimetype) {
+				this.mimetype = mimetype;
+			}
+			if (transport) {
+				this.transport = transport;
+			}
+			if (arguments.length >= 4) {
+				this.changeUrl = changeUrl;
+			}
+		}
+	};
+	dojo.lang.extend(dojo.io.Request, {url:"", mimetype:"text/plain", method:"GET", content:undefined, transport:undefined, changeUrl:undefined, formNode:undefined, sync:false, bindSuccess:false, useCache:false, preventCache:false, jsonFilter:function (value) {
+		if ((this.mimetype == "text/json-comment-filtered") || (this.mimetype == "application/json-comment-filtered")) {
+			var cStartIdx = value.indexOf("/*");
+			var cEndIdx = value.lastIndexOf("*/");
+			if ((cStartIdx == -1) || (cEndIdx == -1)) {
+				dojo.debug("your JSON wasn't comment filtered!");
+				return "";
+			}
+			return value.substring(cStartIdx + 2, cEndIdx);
+		}
+		dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints");
+		return value;
+	}, load:function (type, data, transportImplementation, kwArgs) {
+	}, error:function (type, error, transportImplementation, kwArgs) {
+	}, timeout:function (type, empty, transportImplementation, kwArgs) {
+	}, handle:function (type, data, transportImplementation, kwArgs) {
+	}, timeoutSeconds:0, abort:function () {
+	}, fromKwArgs:function (kwArgs) {
+		if (kwArgs["url"]) {
+			kwArgs.url = kwArgs.url.toString();
+		}
+		if (kwArgs["formNode"]) {
+			kwArgs.formNode = dojo.byId(kwArgs.formNode);
+		}
+		if (!kwArgs["method"] && kwArgs["formNode"] && kwArgs["formNode"].method) {
+			kwArgs.method = kwArgs["formNode"].method;
+		}
+		if (!kwArgs["handle"] && kwArgs["handler"]) {
+			kwArgs.handle = kwArgs.handler;
+		}
+		if (!kwArgs["load"] && kwArgs["loaded"]) {
+			kwArgs.load = kwArgs.loaded;
+		}
+		if (!kwArgs["changeUrl"] && kwArgs["changeURL"]) {
+			kwArgs.changeUrl = kwArgs.changeURL;
+		}
+		kwArgs.encoding = dojo.lang.firstValued(kwArgs["encoding"], djConfig["bindEncoding"], "");
+		kwArgs.sendTransport = dojo.lang.firstValued(kwArgs["sendTransport"], djConfig["ioSendTransport"], false);
+		var isFunction = dojo.lang.isFunction;
+		for (var x = 0; x < dojo.io.hdlrFuncNames.length; x++) {
+			var fn = dojo.io.hdlrFuncNames[x];
+			if (kwArgs[fn] && isFunction(kwArgs[fn])) {
+				continue;
+			}
+			if (kwArgs["handle"] && isFunction(kwArgs["handle"])) {
+				kwArgs[fn] = kwArgs.handle;
+			}
+		}
+		dojo.lang.mixin(this, kwArgs);
+	}});
+	dojo.io.Error = function (msg, type, num) {
+		this.message = msg;
+		this.type = type || "unknown";
+		this.number = num || 0;
+	};
+	dojo.io.transports.addTransport = function (name) {
+		this.push(name);
+		this[name] = dojo.io[name];
+	};
+	dojo.io.bind = function (request) {
+		if (!(request instanceof dojo.io.Request)) {
+			try {
+				request = new dojo.io.Request(request);
+			}
+			catch (e) {
+				dojo.debug(e);
+			}
+		}
+		var tsName = "";
+		if (request["transport"]) {
+			tsName = request["transport"];
+			if (!this[tsName]) {
+				dojo.io.sendBindError(request, "No dojo.io.bind() transport with name '" + request["transport"] + "'.");
+				return request;
+			}
+			if (!this[tsName].canHandle(request)) {
+				dojo.io.sendBindError(request, "dojo.io.bind() transport with name '" + request["transport"] + "' cannot handle this type of request.");
+				return request;
+			}
+		} else {
+			for (var x = 0; x < dojo.io.transports.length; x++) {
+				var tmp = dojo.io.transports[x];
+				if ((this[tmp]) && (this[tmp].canHandle(request))) {
+					tsName = tmp;
+					break;
+				}
+			}
+			if (tsName == "") {
+				dojo.io.sendBindError(request, "None of the loaded transports for dojo.io.bind()" + " can handle the request.");
+				return request;
+			}
+		}
+		this[tsName].bind(request);
+		request.bindSuccess = true;
+		return request;
+	};
+	dojo.io.sendBindError = function (request, message) {
+		if ((typeof request.error == "function" || typeof request.handle == "function") && (typeof setTimeout == "function" || typeof setTimeout == "object")) {
+			var errorObject = new dojo.io.Error(message);
+			setTimeout(function () {
+				request[(typeof request.error == "function") ? "error" : "handle"]("error", errorObject, null, request);
+			}, 50);
+		} else {
+			dojo.raise(message);
+		}
+	};
+	dojo.io.queueBind = function (request) {
+		if (!(request instanceof dojo.io.Request)) {
+			try {
+				request = new dojo.io.Request(request);
+			}
+			catch (e) {
+				dojo.debug(e);
+			}
+		}
+		var oldLoad = request.load;
+		request.load = function () {
+			dojo.io._queueBindInFlight = false;
+			var ret = oldLoad.apply(this, arguments);
+			dojo.io._dispatchNextQueueBind();
+			return ret;
+		};
+		var oldErr = request.error;
+		request.error = function () {
+			dojo.io._queueBindInFlight = false;
+			var ret = oldErr.apply(this, arguments);
+			dojo.io._dispatchNextQueueBind();
+			return ret;
+		};
+		dojo.io._bindQueue.push(request);
+		dojo.io._dispatchNextQueueBind();
+		return request;
+	};
+	dojo.io._dispatchNextQueueBind = function () {
+		if (!dojo.io._queueBindInFlight) {
+			dojo.io._queueBindInFlight = true;
+			if (dojo.io._bindQueue.length > 0) {
+				dojo.io.bind(dojo.io._bindQueue.shift());
+			} else {
+				dojo.io._queueBindInFlight = false;
+			}
+		}
+	};
+	dojo.io._bindQueue = [];
+	dojo.io._queueBindInFlight = false;
+	dojo.io.argsFromMap = function (map, encoding, last) {
+		var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii;
+		var mapped = [];
+		var control = new Object();
+		for (var name in map) {
+			var domap = function (elt) {
+				var val = enc(name) + "=" + enc(elt);
+				mapped[(last == name) ? "push" : "unshift"](val);
+			};
+			if (!control[name]) {
+				var value = map[name];
+				if (dojo.lang.isArray(value)) {
+					dojo.lang.forEach(value, domap);
+				} else {
+					domap(value);
+				}
+			}
+		}
+		return mapped.join("&");
+	};
+	dojo.io.setIFrameSrc = function (iframe, src, replace) {
+		try {
+			var r = dojo.render.html;
+			if (!replace) {
+				if (r.safari) {
+					iframe.location = src;
+				} else {
+					frames[iframe.name].location = src;
+				}
+			} else {
+				var idoc;
+				if (r.ie) {
+					idoc = iframe.contentWindow.document;
+				} else {
+					if (r.safari) {
+						idoc = iframe.document;
+					} else {
+						idoc = iframe.contentWindow;
+					}
+				}
+				if (!idoc) {
+					iframe.location = src;
+					return;
+				} else {
+					idoc.location.replace(src);
+				}
+			}
+		}
+		catch (e) {
+			dojo.debug(e);
+			dojo.debug("setIFrameSrc: " + e);
+		}
+	};
+}});
+
+
+__CPAN_FILE__ src/io/IframeIO.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.IframeIO"], ["require", "dojo.io.BrowserIO"], ["require", "dojo.uri.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.IframeIO");
+	dojo.require("dojo.io.BrowserIO");
+	dojo.require("dojo.uri.*");
+	dojo.io.createIFrame = function (fname, onloadstr, uri) {
+		if (window[fname]) {
+			return window[fname];
+		}
+		if (window.frames[fname]) {
+			return window.frames[fname];
+		}
+		var r = dojo.render.html;
+		var cframe = null;
+		var turi = uri;
+		if (!turi) {
+			if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) {
+				dojo.debug("dojo.io.createIFrame: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html");
+			}
+			turi = (djConfig["dojoIframeHistoryUrl"] || dojo.uri.moduleUri("dojo", "../iframe_history.html")) + "#noInit=true";
+		}
+		var ifrstr = ((r.ie) && (dojo.render.os.win)) ? "<iframe name=\"" + fname + "\" src=\"" + turi + "\" onload=\"" + onloadstr + "\">" : "iframe";
+		cframe = document.createElement(ifrstr);
+		with (cframe) {
+			name = fname;
+			setAttribute("name", fname);
+			id = fname;
+		}
+		dojo.body().appendChild(cframe);
+		window[fname] = cframe;
+		with (cframe.style) {
+			if (!r.safari) {
+				position = "absolute";
+			}
+			left = top = "0px";
+			height = width = "1px";
+			visibility = "hidden";
+		}
+		if (!r.ie) {
+			dojo.io.setIFrameSrc(cframe, turi, true);
+			cframe.onload = new Function(onloadstr);
+		}
+		return cframe;
+	};
+	dojo.io.IframeTransport = new function () {
+		var _this = this;
+		this.currentRequest = null;
+		this.requestQueue = [];
+		this.iframeName = "dojoIoIframe";
+		this.fireNextRequest = function () {
+			try {
+				if ((this.currentRequest) || (this.requestQueue.length == 0)) {
+					return;
+				}
+				var cr = this.currentRequest = this.requestQueue.shift();
+				cr._contentToClean = [];
+				var fn = cr["formNode"];
+				var content = cr["content"] || {};
+				if (cr.sendTransport) {
+					content["dojo.transport"] = "iframe";
+				}
+				if (fn) {
+					if (content) {
+						for (var x in content) {
+							if (!fn[x]) {
+								var tn;
+								if (dojo.render.html.ie) {
+									tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>");
+									fn.appendChild(tn);
+								} else {
+									tn = document.createElement("input");
+									fn.appendChild(tn);
+									tn.type = "hidden";
+									tn.name = x;
+									tn.value = content[x];
+								}
+								cr._contentToClean.push(x);
+							} else {
+								fn[x].value = content[x];
+							}
+						}
+					}
+					if (cr["url"]) {
+						cr._originalAction = fn.getAttribute("action");
+						fn.setAttribute("action", cr.url);
+					}
+					if (!fn.getAttribute("method")) {
+						fn.setAttribute("method", (cr["method"]) ? cr["method"] : "post");
+					}
+					cr._originalTarget = fn.getAttribute("target");
+					fn.setAttribute("target", this.iframeName);
+					fn.target = this.iframeName;
+					fn.submit();
+				} else {
+					var query = dojo.io.argsFromMap(this.currentRequest.content);
+					var tmpUrl = cr.url + (cr.url.indexOf("?") > -1 ? "&" : "?") + query;
+					dojo.io.setIFrameSrc(this.iframe, tmpUrl, true);
+				}
+			}
+			catch (e) {
+				this.iframeOnload(e);
+			}
+		};
+		this.canHandle = function (kwArgs) {
+			return ((dojo.lang.inArray(["text/plain", "text/html", "text/javascript", "text/json", "application/json"], kwArgs["mimetype"])) && (dojo.lang.inArray(["post", "get"], kwArgs["method"].toLowerCase())) && (!((kwArgs["sync"]) && (kwArgs["sync"] == true))));
+		};
+		this.bind = function (kwArgs) {
+			if (!this["iframe"]) {
+				this.setUpIframe();
+			}
+			this.requestQueue.push(kwArgs);
+			this.fireNextRequest();
+			return;
+		};
+		this.setUpIframe = function () {
+			this.iframe = dojo.io.createIFrame(this.iframeName, "dojo.io.IframeTransport.iframeOnload();");
+		};
+		this.iframeOnload = function (errorObject) {
+			if (!_this.currentRequest) {
+				_this.fireNextRequest();
+				return;
+			}
+			var req = _this.currentRequest;
+			if (req.formNode) {
+				var toClean = req._contentToClean;
+				for (var i = 0; i < toClean.length; i++) {
+					var key = toClean[i];
+					if (dojo.render.html.safari) {
+						var fNode = req.formNode;
+						for (var j = 0; j < fNode.childNodes.length; j++) {
+							var chNode = fNode.childNodes[j];
+							if (chNode.name == key) {
+								var pNode = chNode.parentNode;
+								pNode.removeChild(chNode);
+								break;
+							}
+						}
+					} else {
+						var input = req.formNode[key];
+						req.formNode.removeChild(input);
+						req.formNode[key] = null;
+					}
+				}
+				if (req["_originalAction"]) {
+					req.formNode.setAttribute("action", req._originalAction);
+				}
+				if (req["_originalTarget"]) {
+					req.formNode.setAttribute("target", req._originalTarget);
+					req.formNode.target = req._originalTarget;
+				}
+			}
+			var contentDoc = function (iframe_el) {
+				var doc = iframe_el.contentDocument || ((iframe_el.contentWindow) && (iframe_el.contentWindow.document)) || ((iframe_el.name) && (document.frames[iframe_el.name]) && (document.frames[iframe_el.name].document)) || null;
+				return doc;
+			};
+			var value;
+			var success = false;
+			if (errorObject) {
+				this._callError(req, "IframeTransport Request Error: " + errorObject);
+			} else {
+				var ifd = contentDoc(_this.iframe);
+				try {
+					var cmt = req.mimetype;
+					if ((cmt == "text/javascript") || (cmt == "text/json") || (cmt == "application/json")) {
+						var js = ifd.getElementsByTagName("textarea")[0].value;
+						if (cmt == "text/json" || cmt == "application/json") {
+							js = "(" + js + ")";
+						}
+						value = dj_eval(js);
+					} else {
+						if (cmt == "text/html") {
+							value = ifd;
+						} else {
+							value = ifd.getElementsByTagName("textarea")[0].value;
+						}
+					}
+					success = true;
+				}
+				catch (e) {
+					this._callError(req, "IframeTransport Error: " + e);
+				}
+			}
+			try {
+				if (success && dojo.lang.isFunction(req["load"])) {
+					req.load("load", value, req);
+				}
+			}
+			catch (e) {
+				throw e;
+			}
+			finally {
+				_this.currentRequest = null;
+				_this.fireNextRequest();
+			}
+		};
+		this._callError = function (req, message) {
+			var errObj = new dojo.io.Error(message);
+			if (dojo.lang.isFunction(req["error"])) {
+				req.error("error", errObj, req);
+			}
+		};
+		dojo.io.transports.addTransport("IframeTransport");
+	};
+}});
+
+
 __CPAN_FILE__ src/io/RepubsubIO.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -57412,6 +107644,625 @@
 };
 
 
+__CPAN_FILE__ src/io/BrowserIO.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.BrowserIO"], ["require", "dojo.io.common"], ["require", "dojo.lang.array"], ["require", "dojo.lang.func"], ["require", "dojo.string.extras"], ["require", "dojo.dom"], ["require", "dojo.undo.browser"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.BrowserIO");
+	dojo.require("dojo.io.common");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.string.extras");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.undo.browser");
+	if (!dj_undef("window")) {
+		dojo.io.checkChildrenForFile = function (node) {
+			var hasFile = false;
+			var inputs = node.getElementsByTagName("input");
+			dojo.lang.forEach(inputs, function (input) {
+				if (hasFile) {
+					return;
+				}
+				if (input.getAttribute("type") == "file") {
+					hasFile = true;
+				}
+			});
+			return hasFile;
+		};
+		dojo.io.formHasFile = function (formNode) {
+			return dojo.io.checkChildrenForFile(formNode);
+		};
+		dojo.io.updateNode = function (node, urlOrArgs) {
+			node = dojo.byId(node);
+			var args = urlOrArgs;
+			if (dojo.lang.isString(urlOrArgs)) {
+				args = {url:urlOrArgs};
+			}
+			args.mimetype = "text/html";
+			args.load = function (t, d, e) {
+				while (node.firstChild) {
+					dojo.dom.destroyNode(node.firstChild);
+				}
+				node.innerHTML = d;
+			};
+			dojo.io.bind(args);
+		};
+		dojo.io.formFilter = function (node) {
+			var type = (node.type || "").toLowerCase();
+			return !node.disabled && node.name && !dojo.lang.inArray(["file", "submit", "image", "reset", "button"], type);
+		};
+		dojo.io.encodeForm = function (formNode, encoding, formFilter) {
+			if ((!formNode) || (!formNode.tagName) || (!formNode.tagName.toLowerCase() == "form")) {
+				dojo.raise("Attempted to encode a non-form element.");
+			}
+			if (!formFilter) {
+				formFilter = dojo.io.formFilter;
+			}
+			var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii;
+			var values = [];
+			for (var i = 0; i < formNode.elements.length; i++) {
+				var elm = formNode.elements[i];
+				if (!elm || elm.tagName.toLowerCase() == "fieldset" || !formFilter(elm)) {
+					continue;
+				}
+				var name = enc(elm.name);
+				var type = elm.type.toLowerCase();
+				if (type == "select-multiple") {
+					for (var j = 0; j < elm.options.length; j++) {
+						if (elm.options[j].selected) {
+							values.push(name + "=" + enc(elm.options[j].value));
+						}
+					}
+				} else {
+					if (dojo.lang.inArray(["radio", "checkbox"], type)) {
+						if (elm.checked) {
+							values.push(name + "=" + enc(elm.value));
+						}
+					} else {
+						values.push(name + "=" + enc(elm.value));
+					}
+				}
+			}
+			var inputs = formNode.getElementsByTagName("input");
+			for (var i = 0; i < inputs.length; i++) {
+				var input = inputs[i];
+				if (input.type.toLowerCase() == "image" && input.form == formNode && formFilter(input)) {
+					var name = enc(input.name);
+					values.push(name + "=" + enc(input.value));
+					values.push(name + ".x=0");
+					values.push(name + ".y=0");
+				}
+			}
+			return values.join("&") + "&";
+		};
+		dojo.io.FormBind = function (args) {
+			this.bindArgs = {};
+			if (args && args.formNode) {
+				this.init(args);
+			} else {
+				if (args) {
+					this.init({formNode:args});
+				}
+			}
+		};
+		dojo.lang.extend(dojo.io.FormBind, {form:null, bindArgs:null, clickedButton:null, init:function (args) {
+			var form = dojo.byId(args.formNode);
+			if (!form || !form.tagName || form.tagName.toLowerCase() != "form") {
+				throw new Error("FormBind: Couldn't apply, invalid form");
+			} else {
+				if (this.form == form) {
+					return;
+				} else {
+					if (this.form) {
+						throw new Error("FormBind: Already applied to a form");
+					}
+				}
+			}
+			dojo.lang.mixin(this.bindArgs, args);
+			this.form = form;
+			this.connect(form, "onsubmit", "submit");
+			for (var i = 0; i < form.elements.length; i++) {
+				var node = form.elements[i];
+				if (node && node.type && dojo.lang.inArray(["submit", "button"], node.type.toLowerCase())) {
+					this.connect(node, "onclick", "click");
+				}
+			}
+			var inputs = form.getElementsByTagName("input");
+			for (var i = 0; i < inputs.length; i++) {
+				var input = inputs[i];
+				if (input.type.toLowerCase() == "image" && input.form == form) {
+					this.connect(input, "onclick", "click");
+				}
+			}
+		}, onSubmit:function (form) {
+			return true;
+		}, submit:function (e) {
+			e.preventDefault();
+			if (this.onSubmit(this.form)) {
+				dojo.io.bind(dojo.lang.mixin(this.bindArgs, {formFilter:dojo.lang.hitch(this, "formFilter")}));
+			}
+		}, click:function (e) {
+			var node = e.currentTarget;
+			if (node.disabled) {
+				return;
+			}
+			this.clickedButton = node;
+		}, formFilter:function (node) {
+			var type = (node.type || "").toLowerCase();
+			var accept = false;
+			if (node.disabled || !node.name) {
+				accept = false;
+			} else {
+				if (dojo.lang.inArray(["submit", "button", "image"], type)) {
+					if (!this.clickedButton) {
+						this.clickedButton = node;
+					}
+					accept = node == this.clickedButton;
+				} else {
+					accept = !dojo.lang.inArray(["file", "submit", "reset", "button"], type);
+				}
+			}
+			return accept;
+		}, connect:function (srcObj, srcFcn, targetFcn) {
+			if (dojo.evalObjPath("dojo.event.connect")) {
+				dojo.event.connect(srcObj, srcFcn, this, targetFcn);
+			} else {
+				var fcn = dojo.lang.hitch(this, targetFcn);
+				srcObj[srcFcn] = function (e) {
+					if (!e) {
+						e = window.event;
+					}
+					if (!e.currentTarget) {
+						e.currentTarget = e.srcElement;
+					}
+					if (!e.preventDefault) {
+						e.preventDefault = function () {
+							window.event.returnValue = false;
+						};
+					}
+					fcn(e);
+				};
+			}
+		}});
+		dojo.io.XMLHTTPTransport = new function () {
+			var _this = this;
+			var _cache = {};
+			this.useCache = false;
+			this.preventCache = false;
+			function getCacheKey(url, query, method) {
+				return url + "|" + query + "|" + method.toLowerCase();
+			}
+			function addToCache(url, query, method, http) {
+				_cache[getCacheKey(url, query, method)] = http;
+			}
+			function getFromCache(url, query, method) {
+				return _cache[getCacheKey(url, query, method)];
+			}
+			this.clearCache = function () {
+				_cache = {};
+			};
+			function doLoad(kwArgs, http, url, query, useCache) {
+				if (((http.status >= 200) && (http.status < 300)) || (http.status == 304) || (http.status == 1223) || (location.protocol == "file:" && (http.status == 0 || http.status == undefined)) || (location.protocol == "chrome:" && (http.status == 0 || http.status == undefined))) {
+					var ret;
+					if (kwArgs.method.toLowerCase() == "head") {
+						var headers = http.getAllResponseHeaders();
+						ret = {};
+						ret.toString = function () {
+							return headers;
+						};
+						var values = headers.split(/[\r\n]+/g);
+						for (var i = 0; i < values.length; i++) {
+							var pair = values[i].match(/^([^:]+)\s*:\s*(.+)$/i);
+							if (pair) {
+								ret[pair[1]] = pair[2];
+							}
+						}
+					} else {
+						if (kwArgs.mimetype == "text/javascript") {
+							try {
+								ret = dj_eval(http.responseText);
+							}
+							catch (e) {
+								dojo.debug(e);
+								dojo.debug(http.responseText);
+								ret = null;
+							}
+						} else {
+							if (kwArgs.mimetype.substr(0, 9) == "text/json" || kwArgs.mimetype.substr(0, 16) == "application/json") {
+								try {
+									ret = dj_eval("(" + kwArgs.jsonFilter(http.responseText) + ")");
+								}
+								catch (e) {
+									dojo.debug(e);
+									dojo.debug(http.responseText);
+									ret = false;
+								}
+							} else {
+								if ((kwArgs.mimetype == "application/xml") || (kwArgs.mimetype == "text/xml")) {
+									ret = http.responseXML;
+									if (!ret || typeof ret == "string" || !http.getResponseHeader("Content-Type")) {
+										ret = dojo.dom.createDocumentFromText(http.responseText);
+									}
+								} else {
+									ret = http.responseText;
+								}
+							}
+						}
+					}
+					if (useCache) {
+						addToCache(url, query, kwArgs.method, http);
+					}
+					kwArgs[(typeof kwArgs.load == "function") ? "load" : "handle"]("load", ret, http, kwArgs);
+				} else {
+					var errObj = new dojo.io.Error("XMLHttpTransport Error: " + http.status + " " + http.statusText);
+					kwArgs[(typeof kwArgs.error == "function") ? "error" : "handle"]("error", errObj, http, kwArgs);
+				}
+			}
+			function setHeaders(http, kwArgs) {
+				if (kwArgs["headers"]) {
+					for (var header in kwArgs["headers"]) {
+						if (header.toLowerCase() == "content-type" && !kwArgs["contentType"]) {
+							kwArgs["contentType"] = kwArgs["headers"][header];
+						} else {
+							http.setRequestHeader(header, kwArgs["headers"][header]);
+						}
+					}
+				}
+			}
+			this.inFlight = [];
+			this.inFlightTimer = null;
+			this.startWatchingInFlight = function () {
+				if (!this.inFlightTimer) {
+					this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10);
+				}
+			};
+			this.watchInFlight = function () {
+				var now = null;
+				if (!dojo.hostenv._blockAsync && !_this._blockAsync) {
+					for (var x = this.inFlight.length - 1; x >= 0; x--) {
+						try {
+							var tif = this.inFlight[x];
+							if (!tif || tif.http._aborted || !tif.http.readyState) {
+								this.inFlight.splice(x, 1);
+								continue;
+							}
+							if (4 == tif.http.readyState) {
+								this.inFlight.splice(x, 1);
+								doLoad(tif.req, tif.http, tif.url, tif.query, tif.useCache);
+							} else {
+								if (tif.startTime) {
+									if (!now) {
+										now = (new Date()).getTime();
+									}
+									if (tif.startTime + (tif.req.timeoutSeconds * 1000) < now) {
+										if (typeof tif.http.abort == "function") {
+											tif.http.abort();
+										}
+										this.inFlight.splice(x, 1);
+										tif.req[(typeof tif.req.timeout == "function") ? "timeout" : "handle"]("timeout", null, tif.http, tif.req);
+									}
+								}
+							}
+						}
+						catch (e) {
+							try {
+								var errObj = new dojo.io.Error("XMLHttpTransport.watchInFlight Error: " + e);
+								tif.req[(typeof tif.req.error == "function") ? "error" : "handle"]("error", errObj, tif.http, tif.req);
+							}
+							catch (e2) {
+								dojo.debug("XMLHttpTransport error callback failed: " + e2);
+							}
+						}
+					}
+				}
+				clearTimeout(this.inFlightTimer);
+				if (this.inFlight.length == 0) {
+					this.inFlightTimer = null;
+					return;
+				}
+				this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10);
+			};
+			var hasXmlHttp = dojo.hostenv.getXmlhttpObject() ? true : false;
+			this.canHandle = function (kwArgs) {
+				var mlc = kwArgs["mimetype"].toLowerCase() || "";
+				return hasXmlHttp && ((dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript"], mlc)) || (mlc.substr(0, 9) == "text/json" || mlc.substr(0, 16) == "application/json")) && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"]));
+			};
+			this.multipartBoundary = "45309FFF-BD65-4d50-99C9-36986896A96F";
+			this.bind = function (kwArgs) {
+				if (!kwArgs["url"]) {
+					if (!kwArgs["formNode"] && (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"] || kwArgs["watchForURL"]) && (!djConfig.preventBackButtonFix)) {
+						dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request", "Use dojo.undo.browser.addToHistory() instead.", "0.4");
+						dojo.undo.browser.addToHistory(kwArgs);
+						return true;
+					}
+				}
+				var url = kwArgs.url;
+				var query = "";
+				if (kwArgs["formNode"]) {
+					var ta = kwArgs.formNode.getAttribute("action");
+					if ((ta) && (!kwArgs["url"])) {
+						url = ta;
+					}
+					var tp = kwArgs.formNode.getAttribute("method");
+					if ((tp) && (!kwArgs["method"])) {
+						kwArgs.method = tp;
+					}
+					query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);
+				}
+				if (url.indexOf("#") > -1) {
+					dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);
+					url = url.split("#")[0];
+				}
+				if (kwArgs["file"]) {
+					kwArgs.method = "post";
+				}
+				if (!kwArgs["method"]) {
+					kwArgs.method = "get";
+				}
+				if (kwArgs.method.toLowerCase() == "get") {
+					kwArgs.multipart = false;
+				} else {
+					if (kwArgs["file"]) {
+						kwArgs.multipart = true;
+					} else {
+						if (!kwArgs["multipart"]) {
+							kwArgs.multipart = false;
+						}
+					}
+				}
+				if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) {
+					dojo.undo.browser.addToHistory(kwArgs);
+				}
+				var content = kwArgs["content"] || {};
+				if (kwArgs.sendTransport) {
+					content["dojo.transport"] = "xmlhttp";
+				}
+				do {
+					if (kwArgs.postContent) {
+						query = kwArgs.postContent;
+						break;
+					}
+					if (content) {
+						query += dojo.io.argsFromMap(content, kwArgs.encoding);
+					}
+					if (kwArgs.method.toLowerCase() == "get" || !kwArgs.multipart) {
+						break;
+					}
+					var t = [];
+					if (query.length) {
+						var q = query.split("&");
+						for (var i = 0; i < q.length; ++i) {
+							if (q[i].length) {
+								var p = q[i].split("=");
+								t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + p[0] + "\"", "", p[1]);
+							}
+						}
+					}
+					if (kwArgs.file) {
+						if (dojo.lang.isArray(kwArgs.file)) {
+							for (var i = 0; i < kwArgs.file.length; ++i) {
+								var o = kwArgs.file[i];
+								t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content);
+							}
+						} else {
+							var o = kwArgs.file;
+							t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content);
+						}
+					}
+					if (t.length) {
+						t.push("--" + this.multipartBoundary + "--", "");
+						query = t.join("\r\n");
+					}
+				} while (false);
+				var async = kwArgs["sync"] ? false : true;
+				var preventCache = kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false);
+				var useCache = kwArgs["useCache"] == true || (this.useCache == true && kwArgs["useCache"] != false);
+				if (!preventCache && useCache) {
+					var cachedHttp = getFromCache(url, query, kwArgs.method);
+					if (cachedHttp) {
+						doLoad(kwArgs, cachedHttp, url, query, false);
+						return;
+					}
+				}
+				var http = dojo.hostenv.getXmlhttpObject(kwArgs);
+				var received = false;
+				if (async) {
+					var startTime = this.inFlight.push({"req":kwArgs, "http":http, "url":url, "query":query, "useCache":useCache, "startTime":kwArgs.timeoutSeconds ? (new Date()).getTime() : 0});
+					this.startWatchingInFlight();
+				} else {
+					_this._blockAsync = true;
+				}
+				if (kwArgs.method.toLowerCase() == "post") {
+					if (!kwArgs.user) {
+						http.open("POST", url, async);
+					} else {
+						http.open("POST", url, async, kwArgs.user, kwArgs.password);
+					}
+					setHeaders(http, kwArgs);
+					http.setRequestHeader("Content-Type", kwArgs.multipart ? ("multipart/form-data; boundary=" + this.multipartBoundary) : (kwArgs.contentType || "application/x-www-form-urlencoded"));
+					try {
+						http.send(query);
+					}
+					catch (e) {
+						if (typeof http.abort == "function") {
+							http.abort();
+						}
+						doLoad(kwArgs, {status:404}, url, query, useCache);
+					}
+				} else {
+					var tmpUrl = url;
+					if (query != "") {
+						tmpUrl += (tmpUrl.indexOf("?") > -1 ? "&" : "?") + query;
+					}
+					if (preventCache) {
+						tmpUrl += (dojo.string.endsWithAny(tmpUrl, "?", "&") ? "" : (tmpUrl.indexOf("?") > -1 ? "&" : "?")) + "dojo.preventCache=" + new Date().valueOf();
+					}
+					if (!kwArgs.user) {
+						http.open(kwArgs.method.toUpperCase(), tmpUrl, async);
+					} else {
+						http.open(kwArgs.method.toUpperCase(), tmpUrl, async, kwArgs.user, kwArgs.password);
+					}
+					setHeaders(http, kwArgs);
+					try {
+						http.send(null);
+					}
+					catch (e) {
+						if (typeof http.abort == "function") {
+							http.abort();
+						}
+						doLoad(kwArgs, {status:404}, url, query, useCache);
+					}
+				}
+				if (!async) {
+					doLoad(kwArgs, http, url, query, useCache);
+					_this._blockAsync = false;
+				}
+				kwArgs.abort = function () {
+					try {
+						http._aborted = true;
+					}
+					catch (e) {
+					}
+					return http.abort();
+				};
+				return;
+			};
+			dojo.io.transports.addTransport("XMLHTTPTransport");
+		};
+	}
+}});
+
+
+__CPAN_FILE__ src/io/RhinoIO.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.RhinoIO"], ["require", "dojo.io.common"], ["require", "dojo.lang.func"], ["require", "dojo.lang.array"], ["require", "dojo.string.extras"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.RhinoIO");
+	dojo.require("dojo.io.common");
+	dojo.require("dojo.lang.func");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.string.extras");
+	dojo.io.RhinoHTTPTransport = new function () {
+		this.canHandle = function (req) {
+			if (dojo.lang.find(["text/plain", "text/html", "text/xml", "text/javascript", "text/json", "application/json"], (req.mimetype.toLowerCase() || "")) < 0) {
+				return false;
+			}
+			if (req.url.substr(0, 7) != "http://") {
+				return false;
+			}
+			return true;
+		};
+		function doLoad(req, conn) {
+			var ret;
+			if (req.method.toLowerCase() == "head") {
+			} else {
+				var stream = conn.getContent();
+				var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream));
+				var text = "";
+				var line = null;
+				while ((line = reader.readLine()) != null) {
+					text += line;
+				}
+				if (req.mimetype == "text/javascript") {
+					try {
+						ret = dj_eval(text);
+					}
+					catch (e) {
+						dojo.debug(e);
+						dojo.debug(text);
+						ret = null;
+					}
+				} else {
+					if (req.mimetype == "text/json" || req.mimetype == "application/json") {
+						try {
+							ret = dj_eval("(" + text + ")");
+						}
+						catch (e) {
+							dojo.debug(e);
+							dojo.debug(text);
+							ret = false;
+						}
+					} else {
+						ret = text;
+					}
+				}
+			}
+			req.load("load", ret, req);
+		}
+		function connect(req) {
+			var content = req.content || {};
+			var query;
+			if (req.sendTransport) {
+				content["dojo.transport"] = "rhinohttp";
+			}
+			if (req.postContent) {
+				query = req.postContent;
+			} else {
+				query = dojo.io.argsFromMap(content, req.encoding);
+			}
+			var url_text = req.url;
+			if (req.method.toLowerCase() == "get" && query != "") {
+				url_text = url_text + "?" + query;
+			}
+			var url = new java.net.URL(url_text);
+			var conn = url.openConnection();
+			conn.setRequestMethod(req.method.toUpperCase());
+			if (req.headers) {
+				for (var header in req.headers) {
+					if (header.toLowerCase() == "content-type" && !req.contentType) {
+						req.contentType = req.headers[header];
+					} else {
+						conn.setRequestProperty(header, req.headers[header]);
+					}
+				}
+			}
+			if (req.contentType) {
+				conn.setRequestProperty("Content-Type", req.contentType);
+			}
+			if (req.method.toLowerCase() == "post") {
+				conn.setDoOutput(true);
+				var output_stream = conn.getOutputStream();
+				var byte_array = (new java.lang.String(query)).getBytes();
+				output_stream.write(byte_array, 0, byte_array.length);
+			}
+			conn.connect();
+			doLoad(req, conn);
+		}
+		this.bind = function (req) {
+			var async = req["sync"] ? false : true;
+			if (async) {
+				setTimeout(dojo.lang.hitch(this, function () {
+					connect(req);
+				}), 1);
+			} else {
+				connect(req);
+			}
+		};
+		dojo.io.transports.addTransport("RhinoHTTPTransport");
+	};
+}});
+
+
 __CPAN_FILE__ src/io/IframeIO.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -57423,6 +108274,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.io.IframeIO");
 dojo.require("dojo.io.BrowserIO");
 dojo.require("dojo.uri.*");
@@ -57626,6 +108479,114 @@
 };
 
 
+__CPAN_FILE__ src/io/cookie.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.io.cookie"]], definePackage:function (dojo) {
+	dojo.provide("dojo.io.cookie");
+	dojo.io.cookie.setCookie = function (name, value, days, path, domain, secure) {
+		var expires = -1;
+		if ((typeof days == "number") && (days >= 0)) {
+			var d = new Date();
+			d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
+			expires = d.toGMTString();
+		}
+		value = escape(value);
+		document.cookie = name + "=" + value + ";" + (expires != -1 ? " expires=" + expires + ";" : "") + (path ? "path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "; secure" : "");
+	};
+	dojo.io.cookie.set = dojo.io.cookie.setCookie;
+	dojo.io.cookie.getCookie = function (name) {
+		var idx = document.cookie.lastIndexOf(name + "=");
+		if (idx == -1) {
+			return null;
+		}
+		var value = document.cookie.substring(idx + name.length + 1);
+		var end = value.indexOf(";");
+		if (end == -1) {
+			end = value.length;
+		}
+		value = value.substring(0, end);
+		value = unescape(value);
+		return value;
+	};
+	dojo.io.cookie.get = dojo.io.cookie.getCookie;
+	dojo.io.cookie.deleteCookie = function (name) {
+		dojo.io.cookie.setCookie(name, "-", 0);
+	};
+	dojo.io.cookie.setObjectCookie = function (name, obj, days, path, domain, secure, clearCurrent) {
+		if (arguments.length == 5) {
+			clearCurrent = domain;
+			domain = null;
+			secure = null;
+		}
+		var pairs = [], cookie, value = "";
+		if (!clearCurrent) {
+			cookie = dojo.io.cookie.getObjectCookie(name);
+		}
+		if (days >= 0) {
+			if (!cookie) {
+				cookie = {};
+			}
+			for (var prop in obj) {
+				if (obj[prop] == null) {
+					delete cookie[prop];
+				} else {
+					if ((typeof obj[prop] == "string") || (typeof obj[prop] == "number")) {
+						cookie[prop] = obj[prop];
+					}
+				}
+			}
+			prop = null;
+			for (var prop in cookie) {
+				pairs.push(escape(prop) + "=" + escape(cookie[prop]));
+			}
+			value = pairs.join("&");
+		}
+		dojo.io.cookie.setCookie(name, value, days, path, domain, secure);
+	};
+	dojo.io.cookie.getObjectCookie = function (name) {
+		var values = null, cookie = dojo.io.cookie.getCookie(name);
+		if (cookie) {
+			values = {};
+			var pairs = cookie.split("&");
+			for (var i = 0; i < pairs.length; i++) {
+				var pair = pairs[i].split("=");
+				var value = pair[1];
+				if (isNaN(value)) {
+					value = unescape(pair[1]);
+				}
+				values[unescape(pair[0])] = value;
+			}
+		}
+		return values;
+	};
+	dojo.io.cookie.isSupported = function () {
+		if (typeof navigator.cookieEnabled != "boolean") {
+			dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__", "CookiesAllowed", 90, null);
+			var cookieVal = dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__");
+			navigator.cookieEnabled = (cookieVal == "CookiesAllowed");
+			if (navigator.cookieEnabled) {
+				this.deleteCookie("__TestingYourBrowserForCookieSupport__");
+			}
+		}
+		return navigator.cookieEnabled;
+	};
+	if (!dojo.io.cookies) {
+		dojo.io.cookies = dojo.io.cookie;
+	}
+}});
+
+
 __CPAN_FILE__ src/io/xip_client.html
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -57634,7 +108595,8 @@
 <head>
 	<title></title>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-	<script type="text/javascript">
+	<!-- Security protection: uncomment the script tag to enable. -->
+	<!-- script type="text/javascript" -->
 	// <!--
 	/*
 	This file is really focused on just sending one message to the server, and
@@ -57851,6 +108813,12 @@
 
 		//Remove the query param for the IE7 recursive case.
 		xipServerUrl = fixServerUrl(config.server).replace(/(\?|\&)dojo\.fr\=1/, "");
+		
+		//Make sure we don't have a javascript: url, just for good measure.
+		if(xipServerUrl.split(":")[0].match(/javascript/i)){
+			throw "Invalid server URL";
+		}
+
 		xipUseFrameRecursion = config["fr"];
 		
 		if(xipUseFrameRecursion == "endpoint"){
@@ -57863,11 +108831,10 @@
 		setInterval(pollHash, 10);
 
 		var clientUrl = window.location.href.split("#")[0];
-		document.getElementById("iframeHolder").innerHTML = '<iframe src="'
-			+ makeServerUrl("init", 'id=' + xipStateId + '&client=' + encodeURIComponent(clientUrl)
-			+ '&fr=' + xipUseFrameRecursion) + '" id="' + xipStateId + '_frame"></iframe>';
-			
-		
+		var iframeNode = document.getElementsByTagName("iframe")[0];
+		iframeNode.id = xipStateId + "_frame";
+		iframeNode.src = makeServerUrl("init", 'id=' + xipStateId + '&client='
+			+ encodeURIComponent(clientUrl) + '&fr=' + xipUseFrameRecursion);
 	}
 
 	if(typeof(window.addEventListener) == "undefined"){
@@ -57885,7 +108852,7 @@
 	<p>This file is used for Dojo's XMLHttpRequest Iframe Proxy. This is the "client" file used
 	internally by dojo.io.XhrIframeProxy.</p>
 	
-	<span id="iframeHolder"></span>
+	<iframe src="javascript:false"></iframe>
 </body>
 </html>
 
@@ -57901,6 +108868,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.Plot");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.charting.Axis");
@@ -58019,6 +108988,74 @@
 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.
+__CPAN_FILE__ src/charting/Chart.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Chart"], ["require", "dojo.lang.common"], ["require", "dojo.charting.PlotArea"]], definePackage:function (dojo) {
+	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]);
+		}
+	}});
+}});
+
+
 __CPAN_FILE__ src/charting/PlotArea.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -58030,6 +109067,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.PlotArea");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.gfx.color");
@@ -58167,6 +109206,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.Series");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.charting.Plotters");
@@ -58350,6 +109391,224 @@
 }}});
 
 
+__CPAN_FILE__ src/charting/Plotters.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Plotters"], ["requireIf", dojo.render.svg.capable, "dojo.charting.svg.Plotters"], ["requireIf", dojo.render.vml.capable, "dojo.charting.vml.Plotters"]], definePackage:function (dojo) {
+	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");
+}});
+
+
+__CPAN_FILE__ src/charting/Series.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Series"], ["require", "dojo.lang.common"], ["require", "dojo.charting.Plotters"]], definePackage:function (dojo) {
+	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;
+	}}});
+}});
+
+
 __CPAN_FILE__ src/charting/Chart.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -58361,6 +109620,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.Chart");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.charting.PlotArea");
@@ -58414,6 +109675,283 @@
 }});
 
 
+__CPAN_FILE__ src/charting/Axis.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Axis"], ["require", "dojo.lang.common"], ["requireIf", dojo.render.svg.capable, "dojo.charting.svg.Axis"], ["requireIf", dojo.render.vml.capable, "dojo.charting.vml.Axis"]], definePackage:function (dojo) {
+	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");
+}});
+
+
+__CPAN_FILE__ src/charting/PlotArea.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.PlotArea"], ["require", "dojo.lang.common"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.color.hsl"], ["require", "dojo.charting.Plot"], ["requireIf", dojo.render.svg.capable, "dojo.charting.svg.PlotArea"], ["requireIf", dojo.render.vml.capable, "dojo.charting.vml.PlotArea"]], definePackage:function (dojo) {
+	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");
+}});
+
+
 __CPAN_FILE__ src/charting/Plotters.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -58425,6 +109963,8 @@
 		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");
@@ -58441,6 +109981,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.*");
 
 
@@ -58455,6 +109997,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.Axis");
 dojo.require("dojo.lang.common");
 dojo.charting.Axis = function (label, scale, labels) {
@@ -58576,6 +110120,110 @@
 dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Axis");
 
 
+__CPAN_FILE__ src/charting/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.charting.*");
+}});
+
+
+__CPAN_FILE__ src/charting/Plot.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Plot"], ["require", "dojo.lang.common"], ["require", "dojo.charting.Axis"], ["require", "dojo.charting.Series"]], definePackage:function (dojo) {
+	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;
+	}});
+}});
+
+
 __CPAN_DIR__ src/charting/svg
 __CPAN_FILE__ src/charting/svg/PlotArea.js
 /*
@@ -58588,6 +110236,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.svg.PlotArea");
 dojo.require("dojo.lang.common");
 if (dojo.render.svg.capable) {
@@ -58654,6 +110304,985 @@
 }
 
 
+__CPAN_FILE__ src/charting/svg/Plotters.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.svg.Plotters"], ["require", "dojo.lang.common"], ["require", "dojo.svg"]], definePackage:function (dojo) {
+	dojo.provide("dojo.charting.svg.Plotters");
+	dojo.require("dojo.lang.common");
+	if (dojo.render.svg.capable) {
+		dojo.require("dojo.svg");
+		dojo.mixin(dojo.charting.Plotters, {Bar:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = plot.series.length;
+			var data = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				data.push(tmp);
+			}
+			var space = 8;
+			var nPoints = data[0].length;
+			if (nPoints == 0) {
+				return group;
+			}
+			var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;
+			var barWidth = width / n;
+			var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+			for (var i = 0; i < nPoints; i++) {
+				var xStart = area.left + (width * i) + (space * i);
+				for (var j = 0; j < n; j++) {
+					var value = data[j][i].y;
+					var yA = yOrigin;
+					var x = xStart + (barWidth * j);
+					var y = plot.axisY.getCoord(value, plotarea, plot);
+					var h = Math.abs(yA - y);
+					if (value < plot.axisX.origin) {
+						yA = y;
+						y = yOrigin;
+					}
+					var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+					bar.setAttribute("fill", data[j][i].series.color);
+					bar.setAttribute("stroke-width", "0");
+					bar.setAttribute("x", x);
+					bar.setAttribute("y", y);
+					bar.setAttribute("width", barWidth);
+					bar.setAttribute("height", h);
+					bar.setAttribute("fill-opacity", "0.6");
+					if (applyTo) {
+						applyTo(bar, data[j][i].src);
+					}
+					group.appendChild(bar);
+				}
+			}
+			return group;
+		}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = plot.series.length;
+			var data = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				data.push(tmp);
+			}
+			var space = 6;
+			var nPoints = data[0].length;
+			if (nPoints == 0) {
+				return group;
+			}
+			var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
+			var barH = h / n;
+			var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
+			for (var i = 0; i < nPoints; i++) {
+				var yStart = area.top + (h * i) + (space * i);
+				for (var j = 0; j < n; j++) {
+					var value = data[j][i].y;
+					var y = yStart + (barH * j);
+					var xA = xOrigin;
+					var x = plot.axisX.getCoord(value, plotarea, plot);
+					var w = Math.abs(x - xA);
+					if (value > 0) {
+						x = xOrigin;
+					}
+					var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+					bar.setAttribute("fill", data[j][i].series.color);
+					bar.setAttribute("stroke-width", "0");
+					bar.setAttribute("x", xA);
+					bar.setAttribute("y", y);
+					bar.setAttribute("width", w);
+					bar.setAttribute("height", barH);
+					bar.setAttribute("fill-opacity", "0.6");
+					if (applyTo) {
+						applyTo(bar, data[j][i].src);
+					}
+					group.appendChild(bar);
+				}
+			}
+			return group;
+		}, Gantt:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = plot.series.length;
+			var data = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				data.push(tmp);
+			}
+			var space = 2;
+			var nPoints = data[0].length;
+			if (nPoints == 0) {
+				return group;
+			}
+			var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
+			var barH = h / n;
+			for (var i = 0; i < nPoints; i++) {
+				var yStart = area.top + (h * i) + (space * i);
+				for (var j = 0; j < n; j++) {
+					var high = data[j][i].high;
+					var low = data[j][i].low;
+					if (low > high) {
+						var t = high;
+						high = low;
+						low = t;
+					}
+					var x = plot.axisX.getCoord(low, plotarea, plot);
+					var w = plot.axisX.getCoord(high, plotarea, plot) - x;
+					var y = yStart + (barH * j);
+					var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+					bar.setAttribute("fill", data[j][i].series.color);
+					bar.setAttribute("stroke-width", "0");
+					bar.setAttribute("x", x);
+					bar.setAttribute("y", y);
+					bar.setAttribute("width", w);
+					bar.setAttribute("height", barH);
+					bar.setAttribute("fill-opacity", "0.6");
+					if (applyTo) {
+						applyTo(bar, data[j][i].src);
+					}
+					group.appendChild(bar);
+				}
+			}
+			return group;
+		}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = plot.series.length;
+			var data = [];
+			var totals = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				for (var j = 0; j < tmp.length; j++) {
+					if (i == 0) {
+						totals.push(tmp[j].y);
+					} else {
+						totals[j] += tmp[j].y;
+					}
+					tmp[j].y = totals[j];
+				}
+				data.push(tmp);
+			}
+			for (var i = n - 1; i >= 0; i--) {
+				var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+				path.setAttribute("fill", data[i][0].series.color);
+				path.setAttribute("fill-opacity", "0.4");
+				path.setAttribute("stroke", data[i][0].series.color);
+				path.setAttribute("stroke-width", "1");
+				path.setAttribute("stroke-opacity", "0.85");
+				var cmd = [];
+				var r = 3;
+				for (var j = 0; j < data[i].length; j++) {
+					var values = data[i];
+					var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+					var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+					if (j == 0) {
+						cmd.push("M");
+					} else {
+						cmd.push("L");
+					}
+					cmd.push(x + "," + y);
+					var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+					c.setAttribute("cx", x);
+					c.setAttribute("cy", y);
+					c.setAttribute("r", "3");
+					c.setAttribute("fill", values[j].series.color);
+					c.setAttribute("fill-opacity", "0.6");
+					c.setAttribute("stroke-width", "1");
+					c.setAttribute("stroke-opacity", "0.85");
+					group.appendChild(c);
+					if (applyTo) {
+						applyTo(c, data[i].src);
+					}
+				}
+				if (i == 0) {
+					cmd.push("L");
+					cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+					cmd.push("L");
+					cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+					cmd.push("Z");
+				} else {
+					var values = data[i - 1];
+					cmd.push("L");
+					cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
+					for (var j = values.length - 2; j >= 0; j--) {
+						var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+						var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+						cmd.push("L");
+						cmd.push(x + "," + y);
+					}
+				}
+				path.setAttribute("d", cmd.join(" ") + " Z");
+				group.appendChild(path);
+			}
+			return group;
+		}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {
+			var tension = 3;
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = plot.series.length;
+			var data = [];
+			var totals = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				for (var j = 0; j < tmp.length; j++) {
+					if (i == 0) {
+						totals.push(tmp[j].y);
+					} else {
+						totals[j] += tmp[j].y;
+					}
+					tmp[j].y = totals[j];
+				}
+				data.push(tmp);
+			}
+			for (var i = n - 1; i >= 0; i--) {
+				var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+				path.setAttribute("fill", data[i][0].series.color);
+				path.setAttribute("fill-opacity", "0.4");
+				path.setAttribute("stroke", data[i][0].series.color);
+				path.setAttribute("stroke-width", "1");
+				path.setAttribute("stroke-opacity", "0.85");
+				var cmd = [];
+				var r = 3;
+				for (var j = 0; j < data[i].length; j++) {
+					var values = data[i];
+					var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+					var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+					var dx = area.left + 1;
+					var dy = area.bottom;
+					if (j > 0) {
+						dx = x - plot.axisX.getCoord(values[j - 1].x, plotarea, plot);
+						dy = plot.axisY.getCoord(values[j - 1].y, plotarea, plot);
+					}
+					if (j == 0) {
+						cmd.push("M");
+					} else {
+						cmd.push("C");
+						var cx = x - (tension - 1) * (dx / tension);
+						cmd.push(cx + "," + dy);
+						cx = x - (dx / tension);
+						cmd.push(cx + "," + y);
+					}
+					cmd.push(x + "," + y);
+					var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+					c.setAttribute("cx", x);
+					c.setAttribute("cy", y);
+					c.setAttribute("r", "3");
+					c.setAttribute("fill", values[j].series.color);
+					c.setAttribute("fill-opacity", "0.6");
+					c.setAttribute("stroke-width", "1");
+					c.setAttribute("stroke-opacity", "0.85");
+					group.appendChild(c);
+					if (applyTo) {
+						applyTo(c, data[i].src);
+					}
+				}
+				if (i == 0) {
+					cmd.push("L");
+					cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+					cmd.push("L");
+					cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+					cmd.push("Z");
+				} else {
+					var values = data[i - 1];
+					cmd.push("L");
+					cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
+					for (var j = values.length - 2; j >= 0; j--) {
+						var x = plot.axisX.getCoord(values[j].x, plotarea, plot);
+						var y = plot.axisY.getCoord(values[j].y, plotarea, plot);
+						var dx = x - plot.axisX.getCoord(values[j + 1].x, plotarea, plot);
+						var dy = plot.axisY.getCoord(values[j + 1].y, plotarea, plot);
+						cmd.push("C");
+						var cx = x - (tension - 1) * (dx / tension);
+						cmd.push(cx + "," + dy);
+						cx = x - (dx / tension);
+						cmd.push(cx + "," + y);
+						cmd.push(x + "," + y);
+					}
+				}
+				path.setAttribute("d", cmd.join(" ") + " Z");
+				group.appendChild(path);
+			}
+			return group;
+		}, DataBar:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = data.length;
+			var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);
+			var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+			for (var i = 0; i < n; i++) {
+				var value = data[i].y;
+				var yA = yOrigin;
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(value, plotarea, plot);
+				var h = Math.abs(yA - y);
+				if (value < plot.axisX.origin) {
+					yA = y;
+					y = yOrigin;
+				}
+				var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+				bar.setAttribute("fill", data[i].series.color);
+				bar.setAttribute("stroke-width", "0");
+				bar.setAttribute("x", x);
+				bar.setAttribute("y", y);
+				bar.setAttribute("width", w);
+				bar.setAttribute("height", h);
+				bar.setAttribute("fill-opacity", "0.6");
+				if (applyTo) {
+					applyTo(bar, data[i].src);
+				}
+				group.appendChild(bar);
+			}
+			return group;
+		}, Line:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			if (data.length == 0) {
+				return line;
+			}
+			var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+			line.appendChild(path);
+			path.setAttribute("fill", "none");
+			path.setAttribute("stroke", data[0].series.color);
+			path.setAttribute("stroke-width", "2");
+			path.setAttribute("stroke-opacity", "0.85");
+			if (data[0].series.label != null) {
+				path.setAttribute("title", data[0].series.label);
+			}
+			var cmd = [];
+			for (var i = 0; i < data.length; i++) {
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+				var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+				if (i == 0) {
+					cmd.push("M");
+				} else {
+					cmd.push("L");
+				}
+				cmd.push(x + "," + y);
+				var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+				c.setAttribute("cx", x);
+				c.setAttribute("cy", y);
+				c.setAttribute("r", "3");
+				c.setAttribute("fill", data[i].series.color);
+				c.setAttribute("fill-opacity", "0.6");
+				c.setAttribute("stroke-width", "1");
+				c.setAttribute("stroke-opacity", "0.85");
+				line.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			path.setAttribute("d", cmd.join(" "));
+			return line;
+		}, CurvedLine:function (data, plotarea, plot, applyTo) {
+			var tension = 3;
+			var area = plotarea.getArea();
+			var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			if (data.length == 0) {
+				return line;
+			}
+			var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+			line.appendChild(path);
+			path.setAttribute("fill", "none");
+			path.setAttribute("stroke", data[0].series.color);
+			path.setAttribute("stroke-width", "2");
+			path.setAttribute("stroke-opacity", "0.85");
+			if (data[0].series.label != null) {
+				path.setAttribute("title", data[0].series.label);
+			}
+			var cmd = [];
+			for (var i = 0; i < data.length; i++) {
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+				var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+				var dx = area.left + 1;
+				var dy = area.bottom;
+				if (i > 0) {
+					dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot);
+					dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot);
+				}
+				if (i == 0) {
+					cmd.push("M");
+				} else {
+					cmd.push("C");
+					var cx = x - (tension - 1) * (dx / tension);
+					cmd.push(cx + "," + dy);
+					cx = x - (dx / tension);
+					cmd.push(cx + "," + y);
+				}
+				cmd.push(x + "," + y);
+				var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+				c.setAttribute("cx", x);
+				c.setAttribute("cy", y);
+				c.setAttribute("r", "3");
+				c.setAttribute("fill", data[i].series.color);
+				c.setAttribute("fill-opacity", "0.6");
+				c.setAttribute("stroke-width", "1");
+				c.setAttribute("stroke-opacity", "0.85");
+				line.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			path.setAttribute("d", cmd.join(" "));
+			return line;
+		}, Area:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			if (data.length == 0) {
+				return line;
+			}
+			var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+			line.appendChild(path);
+			path.setAttribute("fill", data[0].series.color);
+			path.setAttribute("fill-opacity", "0.4");
+			path.setAttribute("stroke", data[0].series.color);
+			path.setAttribute("stroke-width", "1");
+			path.setAttribute("stroke-opacity", "0.85");
+			if (data[0].series.label != null) {
+				path.setAttribute("title", data[0].series.label);
+			}
+			var cmd = [];
+			for (var i = 0; i < data.length; i++) {
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+				var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+				if (i == 0) {
+					cmd.push("M");
+				} else {
+					cmd.push("L");
+				}
+				cmd.push(x + "," + y);
+				var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+				c.setAttribute("cx", x);
+				c.setAttribute("cy", y);
+				c.setAttribute("r", "3");
+				c.setAttribute("fill", data[i].series.color);
+				c.setAttribute("fill-opacity", "0.6");
+				c.setAttribute("stroke-width", "1");
+				c.setAttribute("stroke-opacity", "0.85");
+				line.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			cmd.push("L");
+			cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+			cmd.push("L");
+			cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+			cmd.push("Z");
+			path.setAttribute("d", cmd.join(" "));
+			return line;
+		}, CurvedArea:function (data, plotarea, plot, applyTo) {
+			var tension = 3;
+			var area = plotarea.getArea();
+			var line = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			if (data.length == 0) {
+				return line;
+			}
+			var path = document.createElementNS(dojo.svg.xmlns.svg, "path");
+			line.appendChild(path);
+			path.setAttribute("fill", data[0].series.color);
+			path.setAttribute("fill-opacity", "0.4");
+			path.setAttribute("stroke", data[0].series.color);
+			path.setAttribute("stroke-width", "1");
+			path.setAttribute("stroke-opacity", "0.85");
+			if (data[0].series.label != null) {
+				path.setAttribute("title", data[0].series.label);
+			}
+			var cmd = [];
+			for (var i = 0; i < data.length; i++) {
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+				var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+				var dx = area.left + 1;
+				var dy = area.bottom;
+				if (i > 0) {
+					dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot);
+					dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot);
+				}
+				if (i == 0) {
+					cmd.push("M");
+				} else {
+					cmd.push("C");
+					var cx = x - (tension - 1) * (dx / tension);
+					cmd.push(cx + "," + dy);
+					cx = x - (dx / tension);
+					cmd.push(cx + "," + y);
+				}
+				cmd.push(x + "," + y);
+				var c = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+				c.setAttribute("cx", x);
+				c.setAttribute("cy", y);
+				c.setAttribute("r", "3");
+				c.setAttribute("fill", data[i].series.color);
+				c.setAttribute("fill-opacity", "0.6");
+				c.setAttribute("stroke-width", "1");
+				c.setAttribute("stroke-opacity", "0.85");
+				line.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			cmd.push("L");
+			cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+			cmd.push("L");
+			cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot));
+			cmd.push("Z");
+			path.setAttribute("d", cmd.join(" "));
+			return line;
+		}, HighLow:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = data.length;
+			var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
+			var w = part * 2;
+			for (var i = 0; i < n; i++) {
+				var high = data[i].high;
+				var low = data[i].low;
+				if (low > high) {
+					var t = low;
+					low = high;
+					high = t;
+				}
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(high, plotarea, plot);
+				var h = plot.axisY.getCoord(low, plotarea, plot) - y;
+				var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+				bar.setAttribute("fill", data[i].series.color);
+				bar.setAttribute("stroke-width", "0");
+				bar.setAttribute("x", x);
+				bar.setAttribute("y", y);
+				bar.setAttribute("width", w);
+				bar.setAttribute("height", h);
+				bar.setAttribute("fill-opacity", "0.6");
+				if (applyTo) {
+					applyTo(bar, data[i].src);
+				}
+				group.appendChild(bar);
+			}
+			return group;
+		}, HighLowClose:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = data.length;
+			var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
+			var w = part * 2;
+			for (var i = 0; i < n; i++) {
+				var high = data[i].high;
+				var low = data[i].low;
+				if (low > high) {
+					var t = low;
+					low = high;
+					high = t;
+				}
+				var c = data[i].close;
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(high, plotarea, plot);
+				var h = plot.axisY.getCoord(low, plotarea, plot) - y;
+				var close = plot.axisY.getCoord(c, plotarea, plot);
+				var g = document.createElementNS(dojo.svg.xmlns.svg, "g");
+				var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+				bar.setAttribute("fill", data[i].series.color);
+				bar.setAttribute("stroke-width", "0");
+				bar.setAttribute("x", x);
+				bar.setAttribute("y", y);
+				bar.setAttribute("width", w);
+				bar.setAttribute("height", h);
+				bar.setAttribute("fill-opacity", "0.6");
+				g.appendChild(bar);
+				var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
+				line.setAttribute("x1", x);
+				line.setAttribute("x2", x + w + (part * 2));
+				line.setAttribute("y1", close);
+				line.setAttribute("y2", close);
+				line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");
+				g.appendChild(line);
+				if (applyTo) {
+					applyTo(g, data[i].src);
+				}
+				group.appendChild(g);
+			}
+			return group;
+		}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var n = data.length;
+			var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
+			var w = part * 2;
+			for (var i = 0; i < n; i++) {
+				var high = data[i].high;
+				var low = data[i].low;
+				if (low > high) {
+					var t = low;
+					low = high;
+					high = t;
+				}
+				var o = data[i].open;
+				var c = data[i].close;
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(high, plotarea, plot);
+				var h = plot.axisY.getCoord(low, plotarea, plot) - y;
+				var open = plot.axisY.getCoord(o, plotarea, plot);
+				var close = plot.axisY.getCoord(c, plotarea, plot);
+				var g = document.createElementNS(dojo.svg.xmlns.svg, "g");
+				var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+				bar.setAttribute("fill", data[i].series.color);
+				bar.setAttribute("stroke-width", "0");
+				bar.setAttribute("x", x);
+				bar.setAttribute("y", y);
+				bar.setAttribute("width", w);
+				bar.setAttribute("height", h);
+				bar.setAttribute("fill-opacity", "0.6");
+				g.appendChild(bar);
+				var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
+				line.setAttribute("x1", x - (part * 2));
+				line.setAttribute("x2", x + w);
+				line.setAttribute("y1", open);
+				line.setAttribute("y2", open);
+				line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");
+				g.appendChild(line);
+				var line = document.createElementNS(dojo.svg.xmlns.svg, "line");
+				line.setAttribute("x1", x);
+				line.setAttribute("x2", x + w + (part * 2));
+				line.setAttribute("y1", close);
+				line.setAttribute("y2", close);
+				line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;");
+				g.appendChild(line);
+				if (applyTo) {
+					applyTo(g, data[i].src);
+				}
+				group.appendChild(g);
+			}
+			return group;
+		}, Scatter:function (data, plotarea, plot, applyTo) {
+			var r = 7;
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			for (var i = 0; i < data.length; i++) {
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+				var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+				var point = document.createElementNS(dojo.svg.xmlns.svg, "path");
+				point.setAttribute("fill", data[i].series.color);
+				point.setAttribute("stroke-width", "0");
+				point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z");
+				if (applyTo) {
+					applyTo(point, data[i].src);
+				}
+				group.appendChild(point);
+			}
+			return group;
+		}, Bubble:function (data, plotarea, plot, applyTo) {
+			var group = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			var sizeFactor = 1;
+			for (var i = 0; i < data.length; i++) {
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot);
+				var y = plot.axisY.getCoord(data[i].y, plotarea, plot);
+				if (i == 0) {
+					var raw = data[i].size;
+					var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;
+					sizeFactor = dy / raw;
+				}
+				if (sizeFactor < 1) {
+					sizeFactor = 1;
+				}
+				var point = document.createElementNS(dojo.svg.xmlns.svg, "circle");
+				point.setAttribute("fill", data[i].series.color);
+				point.setAttribute("fill-opacity", "0.8");
+				point.setAttribute("stroke", data[i].series.color);
+				point.setAttribute("stroke-width", "1");
+				point.setAttribute("cx", x);
+				point.setAttribute("cy", y);
+				point.setAttribute("r", (data[i].size / 2) * sizeFactor);
+				if (applyTo) {
+					applyTo(point, data[i].src);
+				}
+				group.appendChild(point);
+			}
+			return group;
+		}});
+		dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
+	}
+}});
+
+
+__CPAN_FILE__ src/charting/svg/Axis.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.svg.Axis"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	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;
+		}});
+	}
+}});
+
+
+__CPAN_FILE__ src/charting/svg/PlotArea.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.svg.PlotArea"], ["require", "dojo.lang.common"], ["require", "dojo.svg"]], definePackage:function (dojo) {
+	dojo.provide("dojo.charting.svg.PlotArea");
+	dojo.require("dojo.lang.common");
+	if (dojo.render.svg.capable) {
+		dojo.require("dojo.svg");
+		dojo.extend(dojo.charting.PlotArea, {resize:function () {
+			var area = this.getArea();
+			this.nodes.area.setAttribute("width", this.size.width);
+			this.nodes.area.setAttribute("height", this.size.height);
+			var rect = this.nodes.area.getElementsByTagName("rect")[0];
+			rect.setAttribute("x", area.left);
+			rect.setAttribute("y", area.top);
+			rect.setAttribute("width", area.right - area.left);
+			rect.setAttribute("height", area.bottom - area.top);
+			this.nodes.background.setAttribute("width", this.size.width);
+			this.nodes.background.setAttribute("height", this.size.height);
+			if (this.nodes.plots) {
+				this.nodes.area.removeChild(this.nodes.plots);
+				this.nodes.plots = null;
+			}
+			this.nodes.plots = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			this.nodes.plots.setAttribute("id", this.getId() + "-plots");
+			this.nodes.plots.setAttribute("style", "clip-path:url(#" + this.getId() + "-clip);");
+			this.nodes.area.appendChild(this.nodes.plots);
+			for (var i = 0; i < this.plots.length; i++) {
+				this.nodes.plots.appendChild(this.initializePlot(this.plots[i]));
+			}
+			if (this.nodes.axes) {
+				this.nodes.area.removeChild(this.nodes.axes);
+				this.nodes.axes = null;
+			}
+			this.nodes.axes = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			this.nodes.axes.setAttribute("id", this.getId() + "-axes");
+			this.nodes.area.appendChild(this.nodes.axes);
+			var axes = this.getAxes();
+			for (var p in axes) {
+				var obj = axes[p];
+				this.nodes.axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane));
+			}
+		}, initializePlot:function (plot) {
+			plot.destroy();
+			plot.dataNode = document.createElementNS(dojo.svg.xmlns.svg, "g");
+			plot.dataNode.setAttribute("id", plot.getId());
+			return plot.dataNode;
+		}, initialize:function () {
+			this.destroy();
+			this.nodes.main = document.createElement("div");
+			this.nodes.area = document.createElementNS(dojo.svg.xmlns.svg, "svg");
+			this.nodes.area.setAttribute("id", this.getId());
+			this.nodes.main.appendChild(this.nodes.area);
+			var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs");
+			var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath");
+			clip.setAttribute("id", this.getId() + "-clip");
+			var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+			clip.appendChild(rect);
+			defs.appendChild(clip);
+			this.nodes.area.appendChild(defs);
+			this.nodes.background = document.createElementNS(dojo.svg.xmlns.svg, "rect");
+			this.nodes.background.setAttribute("id", this.getId() + "-background");
+			this.nodes.background.setAttribute("fill", "#fff");
+			this.nodes.area.appendChild(this.nodes.background);
+			this.resize();
+			return this.nodes.main;
+		}});
+	}
+}});
+
+
 __CPAN_FILE__ src/charting/svg/Plotters.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -58665,6 +111294,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.svg.Plotters");
 dojo.require("dojo.lang.common");
 if (dojo.render.svg.capable) {
@@ -59367,6 +111998,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.svg.Axis");
 dojo.require("dojo.lang.common");
 if (dojo.render.svg.capable) {
@@ -59556,6 +112189,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.vml.PlotArea");
 dojo.require("dojo.lang.common");
 if (dojo.render.vml.capable) {
@@ -59614,6 +112249,1215 @@
 }
 
 
+__CPAN_FILE__ src/charting/vml/Plotters.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.vml.Plotters"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.charting.vml.Plotters");
+	dojo.require("dojo.lang.common");
+	if (dojo.render.vml.capable) {
+		dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) {
+			var group = document.createElement("div");
+			group.style.position = "absolute";
+			group.style.top = "0px";
+			group.style.left = "0px";
+			group.style.width = plotarea.size.width + "px";
+			group.style.height = plotarea.size.height + "px";
+			return group;
+		}, Bar:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = plot.series.length;
+			var data = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				data.push(tmp);
+			}
+			var space = 8;
+			var nPoints = data[0].length;
+			if (nPoints == 0) {
+				return group;
+			}
+			var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints;
+			var barWidth = Math.round(width / n);
+			var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+			for (var i = 0; i < nPoints; i++) {
+				var xStart = area.left + (width * i) + (space * i);
+				for (var j = 0; j < n; j++) {
+					var value = data[j][i].y;
+					var yA = yOrigin;
+					var x = xStart + (barWidth * j);
+					var y = plot.axisY.getCoord(value, plotarea, plot);
+					var h = Math.abs(yA - y);
+					if (value < plot.axisX.origin) {
+						yA = y;
+						y = yOrigin;
+					}
+					var bar = document.createElement("v:rect");
+					bar.style.position = "absolute";
+					bar.style.top = y + 1 + "px";
+					bar.style.left = x + "px";
+					bar.style.width = barWidth + "px";
+					bar.style.height = h + "px";
+					bar.setAttribute("fillColor", data[j][i].series.color);
+					bar.setAttribute("stroked", "false");
+					bar.style.antialias = "false";
+					var fill = document.createElement("v:fill");
+					fill.setAttribute("opacity", "0.6");
+					bar.appendChild(fill);
+					if (applyTo) {
+						applyTo(bar, data[j][i].src);
+					}
+					group.appendChild(bar);
+				}
+			}
+			return group;
+		}, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = plot.series.length;
+			var data = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				data.push(tmp);
+			}
+			var space = 6;
+			var nPoints = data[0].length;
+			if (nPoints == 0) {
+				return group;
+			}
+			var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
+			var barH = h / n;
+			var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
+			for (var i = 0; i < nPoints; i++) {
+				var yStart = area.top + (h * i) + (space * i);
+				for (var j = 0; j < n; j++) {
+					var value = data[j][i].y;
+					var y = yStart + (barH * j);
+					var xA = xOrigin;
+					var x = plot.axisX.getCoord(value, plotarea, plot);
+					var w = Math.abs(x - xA);
+					if (value > 0) {
+						x = xOrigin;
+					}
+					var bar = document.createElement("v:rect");
+					bar.style.position = "absolute";
+					bar.style.top = y + 1 + "px";
+					bar.style.left = xA + "px";
+					bar.style.width = w + "px";
+					bar.style.height = barH + "px";
+					bar.setAttribute("fillColor", data[j][i].series.color);
+					bar.setAttribute("stroked", "false");
+					bar.style.antialias = "false";
+					var fill = document.createElement("v:fill");
+					fill.setAttribute("opacity", "0.6");
+					bar.appendChild(fill);
+					if (applyTo) {
+						applyTo(bar, data[j][i].src);
+					}
+					group.appendChild(bar);
+				}
+			}
+			var space = 4;
+			var n = plot.series.length;
+			var h = ((area.bottom - area.top) - (space * (n - 1))) / n;
+			var xOrigin = plot.axisX.getCoord(0, plotarea, plot);
+			for (var i = 0; i < n; i++) {
+				var series = plot.series[i];
+				var data = series.data.evaluate(kwArgs);
+				var y = area.top + (h * i) + (space * i);
+				var value = data[data.length - 1].y;
+				var xA = xOrigin;
+				var x = plot.axisX.getCoord(value, plotarea, plot);
+				var w = Math.abs(xA - x);
+				if (value > 0) {
+					xA = x;
+					x = xOrigin;
+				}
+			}
+			return group;
+		}, Gantt:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = plot.series.length;
+			var data = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				data.push(tmp);
+			}
+			var space = 2;
+			var nPoints = data[0].length;
+			if (nPoints == 0) {
+				return group;
+			}
+			var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints;
+			var barH = h / n;
+			for (var i = 0; i < nPoints; i++) {
+				var yStart = area.top + (h * i) + (space * i);
+				for (var j = 0; j < n; j++) {
+					var high = data[j][i].high;
+					var low = data[j][i].low;
+					if (low > high) {
+						var t = high;
+						high = low;
+						low = t;
+					}
+					var x = plot.axisX.getCoord(low, plotarea, plot);
+					var w = plot.axisX.getCoord(high, plotarea, plot) - x;
+					var y = yStart + (barH * j);
+					var bar = document.createElement("v:rect");
+					bar.style.position = "absolute";
+					bar.style.top = y + 1 + "px";
+					bar.style.left = x + "px";
+					bar.style.width = w + "px";
+					bar.style.height = barH + "px";
+					bar.setAttribute("fillColor", data[j][i].series.color);
+					bar.setAttribute("stroked", "false");
+					bar.style.antialias = "false";
+					var fill = document.createElement("v:fill");
+					fill.setAttribute("opacity", "0.6");
+					bar.appendChild(fill);
+					if (applyTo) {
+						applyTo(bar, data[j][i].src);
+					}
+					group.appendChild(bar);
+				}
+			}
+			return group;
+		}, StackedArea:function (plotarea, plot, kwArgs, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = plot.series.length;
+			var data = [];
+			var totals = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				for (var j = 0; j < tmp.length; j++) {
+					if (i == 0) {
+						totals.push(tmp[j].y);
+					} else {
+						totals[j] += tmp[j].y;
+					}
+					tmp[j].y = totals[j];
+				}
+				data.push(tmp);
+			}
+			for (var i = n - 1; i >= 0; i--) {
+				var path = document.createElement("v:shape");
+				path.setAttribute("strokeweight", "1px");
+				path.setAttribute("strokecolor", data[i][0].series.color);
+				path.setAttribute("fillcolor", data[i][0].series.color);
+				path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
+				path.style.position = "absolute";
+				path.style.top = "0px";
+				path.style.left = "0px";
+				path.style.width = area.right - area.left + "px";
+				path.style.height = area.bottom - area.top + "px";
+				var stroke = document.createElement("v:stroke");
+				stroke.setAttribute("opacity", "0.8");
+				path.appendChild(stroke);
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.4");
+				path.appendChild(fill);
+				var cmd = [];
+				var r = 3;
+				for (var j = 0; j < data[i].length; j++) {
+					var values = data[i];
+					var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+					var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+					if (j == 0) {
+						cmd.push("m");
+						cmd.push(x + "," + y);
+					} else {
+						cmd.push("l");
+						cmd.push(x + "," + y);
+					}
+					var c = document.createElement("v:oval");
+					c.setAttribute("strokeweight", "1px");
+					c.setAttribute("strokecolor", values[j].series.color);
+					c.setAttribute("fillcolor", values[j].series.color);
+					var str = document.createElement("v:stroke");
+					str.setAttribute("opacity", "0.8");
+					c.appendChild(str);
+					str = document.createElement("v:fill");
+					str.setAttribute("opacity", "0.6");
+					c.appendChild(str);
+					var s = c.style;
+					s.position = "absolute";
+					s.top = (y - r) + "px";
+					s.left = (x - r) + "px";
+					s.width = (r * 2) + "px";
+					s.height = (r * 2) + "px";
+					group.appendChild(c);
+					if (applyTo) {
+						applyTo(c, data[j].src);
+					}
+				}
+				if (i == 0) {
+					cmd.push("l");
+					cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+					cmd.push("l");
+					cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+				} else {
+					var values = data[i - 1];
+					cmd.push("l");
+					cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
+					for (var j = values.length - 2; j >= 0; j--) {
+						var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+						var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+						cmd.push("l");
+						cmd.push(x + "," + y);
+					}
+				}
+				path.setAttribute("path", cmd.join(" ") + " x e");
+				group.appendChild(path);
+			}
+			return group;
+		}, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) {
+			var tension = 3;
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = plot.series.length;
+			var data = [];
+			var totals = [];
+			for (var i = 0; i < n; i++) {
+				var tmp = plot.series[i].data.evaluate(kwArgs);
+				for (var j = 0; j < tmp.length; j++) {
+					if (i == 0) {
+						totals.push(tmp[j].y);
+					} else {
+						totals[j] += tmp[j].y;
+					}
+					tmp[j].y = totals[j];
+				}
+				data.push(tmp);
+			}
+			for (var i = n - 1; i >= 0; i--) {
+				var path = document.createElement("v:shape");
+				path.setAttribute("strokeweight", "1px");
+				path.setAttribute("strokecolor", data[i][0].series.color);
+				path.setAttribute("fillcolor", data[i][0].series.color);
+				path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
+				path.style.position = "absolute";
+				path.style.top = "0px";
+				path.style.left = "0px";
+				path.style.width = area.right - area.left + "px";
+				path.style.height = area.bottom - area.top + "px";
+				var stroke = document.createElement("v:stroke");
+				stroke.setAttribute("opacity", "0.8");
+				path.appendChild(stroke);
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.4");
+				path.appendChild(fill);
+				var cmd = [];
+				var r = 3;
+				for (var j = 0; j < data[i].length; j++) {
+					var values = data[i];
+					var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+					var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+					if (j == 0) {
+						cmd.push("m");
+						cmd.push(x + "," + y);
+					} else {
+						var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot));
+						var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot));
+						var dx = x - lastx;
+						var dy = y - lasty;
+						cmd.push("c");
+						var cx = Math.round((x - (tension - 1) * (dx / tension)));
+						cmd.push(cx + "," + lasty);
+						cx = Math.round((x - (dx / tension)));
+						cmd.push(cx + "," + y);
+						cmd.push(x + "," + y);
+					}
+					var c = document.createElement("v:oval");
+					c.setAttribute("strokeweight", "1px");
+					c.setAttribute("strokecolor", values[j].series.color);
+					c.setAttribute("fillcolor", values[j].series.color);
+					var str = document.createElement("v:stroke");
+					str.setAttribute("opacity", "0.8");
+					c.appendChild(str);
+					str = document.createElement("v:fill");
+					str.setAttribute("opacity", "0.6");
+					c.appendChild(str);
+					var s = c.style;
+					s.position = "absolute";
+					s.top = (y - r) + "px";
+					s.left = (x - r) + "px";
+					s.width = (r * 2) + "px";
+					s.height = (r * 2) + "px";
+					group.appendChild(c);
+					if (applyTo) {
+						applyTo(c, data[j].src);
+					}
+				}
+				if (i == 0) {
+					cmd.push("l");
+					cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+					cmd.push("l");
+					cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+				} else {
+					var values = data[i - 1];
+					cmd.push("l");
+					cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot)));
+					for (var j = values.length - 2; j >= 0; j--) {
+						var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot));
+						var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot));
+						var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot));
+						var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot));
+						var dx = x - lastx;
+						var dy = y - lasty;
+						cmd.push("c");
+						var cx = Math.round((x - (tension - 1) * (dx / tension)));
+						cmd.push(cx + "," + lasty);
+						cx = Math.round((x - (dx / tension)));
+						cmd.push(cx + "," + y);
+						cmd.push(x + "," + y);
+					}
+				}
+				path.setAttribute("path", cmd.join(" ") + " x e");
+				group.appendChild(path);
+			}
+			return group;
+		}, DataBar:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = data.length;
+			var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower);
+			var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot);
+			for (var i = 0; i < n; i++) {
+				var value = data[i].y;
+				var yA = yOrigin;
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1;
+				var y = plot.axisY.getCoord(value, plotarea, plot);
+				var h = Math.abs(yA - y);
+				if (value < plot.axisX.origin) {
+					yA = y;
+					y = yOrigin;
+				}
+				var bar = document.createElement("v:rect");
+				bar.style.position = "absolute";
+				bar.style.top = y + 1 + "px";
+				bar.style.left = x + "px";
+				bar.style.width = w + "px";
+				bar.style.height = h + "px";
+				bar.setAttribute("fillColor", data[i].series.color);
+				bar.setAttribute("stroked", "false");
+				bar.style.antialias = "false";
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				bar.appendChild(fill);
+				if (applyTo) {
+					applyTo(bar, data[i].src);
+				}
+				group.appendChild(bar);
+			}
+			return group;
+		}, Line:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			if (data.length == 0) {
+				return group;
+			}
+			var path = document.createElement("v:shape");
+			path.setAttribute("strokeweight", "2px");
+			path.setAttribute("strokecolor", data[0].series.color);
+			path.setAttribute("fillcolor", "none");
+			path.setAttribute("filled", "false");
+			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
+			path.style.position = "absolute";
+			path.style.top = "0px";
+			path.style.left = "0px";
+			path.style.width = area.right - area.left + "px";
+			path.style.height = area.bottom - area.top + "px";
+			var stroke = document.createElement("v:stroke");
+			stroke.setAttribute("opacity", "0.8");
+			path.appendChild(stroke);
+			var cmd = [];
+			var r = 3;
+			for (var i = 0; i < data.length; i++) {
+				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
+				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
+				if (i == 0) {
+					cmd.push("m");
+					cmd.push(x + "," + y);
+				} else {
+					cmd.push("l");
+					cmd.push(x + "," + y);
+				}
+				var c = document.createElement("v:oval");
+				c.setAttribute("strokeweight", "1px");
+				c.setAttribute("strokecolor", data[i].series.color);
+				c.setAttribute("fillcolor", data[i].series.color);
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.8");
+				c.appendChild(str);
+				str = document.createElement("v:fill");
+				str.setAttribute("opacity", "0.6");
+				c.appendChild(str);
+				var s = c.style;
+				s.position = "absolute";
+				s.top = (y - r) + "px";
+				s.left = (x - r) + "px";
+				s.width = (r * 2) + "px";
+				s.height = (r * 2) + "px";
+				group.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			path.setAttribute("path", cmd.join(" ") + " e");
+			group.appendChild(path);
+			return group;
+		}, CurvedLine:function (data, plotarea, plot, applyTo) {
+			var tension = 3;
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			if (data.length == 0) {
+				return group;
+			}
+			var path = document.createElement("v:shape");
+			path.setAttribute("strokeweight", "2px");
+			path.setAttribute("strokecolor", data[0].series.color);
+			path.setAttribute("fillcolor", "none");
+			path.setAttribute("filled", "false");
+			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
+			path.style.position = "absolute";
+			path.style.top = "0px";
+			path.style.left = "0px";
+			path.style.width = area.right - area.left + "px";
+			path.style.height = area.bottom - area.top + "px";
+			var stroke = document.createElement("v:stroke");
+			stroke.setAttribute("opacity", "0.8");
+			path.appendChild(stroke);
+			var cmd = [];
+			var r = 3;
+			for (var i = 0; i < data.length; i++) {
+				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
+				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
+				if (i == 0) {
+					cmd.push("m");
+					cmd.push(x + "," + y);
+				} else {
+					var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
+					var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
+					var dx = x - lastx;
+					var dy = y - lasty;
+					cmd.push("c");
+					var cx = Math.round((x - (tension - 1) * (dx / tension)));
+					cmd.push(cx + "," + lasty);
+					cx = Math.round((x - (dx / tension)));
+					cmd.push(cx + "," + y);
+					cmd.push(x + "," + y);
+				}
+				var c = document.createElement("v:oval");
+				c.setAttribute("strokeweight", "1px");
+				c.setAttribute("strokecolor", data[i].series.color);
+				c.setAttribute("fillcolor", data[i].series.color);
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.8");
+				c.appendChild(str);
+				str = document.createElement("v:fill");
+				str.setAttribute("opacity", "0.6");
+				c.appendChild(str);
+				var s = c.style;
+				s.position = "absolute";
+				s.top = (y - r) + "px";
+				s.left = (x - r) + "px";
+				s.width = (r * 2) + "px";
+				s.height = (r * 2) + "px";
+				group.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			path.setAttribute("path", cmd.join(" ") + " e");
+			group.appendChild(path);
+			return group;
+		}, Area:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			if (data.length == 0) {
+				return group;
+			}
+			var path = document.createElement("v:shape");
+			path.setAttribute("strokeweight", "1px");
+			path.setAttribute("strokecolor", data[0].series.color);
+			path.setAttribute("fillcolor", data[0].series.color);
+			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
+			path.style.position = "absolute";
+			path.style.top = "0px";
+			path.style.left = "0px";
+			path.style.width = area.right - area.left + "px";
+			path.style.height = area.bottom - area.top + "px";
+			var stroke = document.createElement("v:stroke");
+			stroke.setAttribute("opacity", "0.8");
+			path.appendChild(stroke);
+			var fill = document.createElement("v:fill");
+			fill.setAttribute("opacity", "0.4");
+			path.appendChild(fill);
+			var cmd = [];
+			var r = 3;
+			for (var i = 0; i < data.length; i++) {
+				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
+				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
+				if (i == 0) {
+					cmd.push("m");
+					cmd.push(x + "," + y);
+				} else {
+					cmd.push("l");
+					cmd.push(x + "," + y);
+				}
+				var c = document.createElement("v:oval");
+				c.setAttribute("strokeweight", "1px");
+				c.setAttribute("strokecolor", data[i].series.color);
+				c.setAttribute("fillcolor", data[i].series.color);
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.8");
+				c.appendChild(str);
+				str = document.createElement("v:fill");
+				str.setAttribute("opacity", "0.6");
+				c.appendChild(str);
+				var s = c.style;
+				s.position = "absolute";
+				s.top = (y - r) + "px";
+				s.left = (x - r) + "px";
+				s.width = (r * 2) + "px";
+				s.height = (r * 2) + "px";
+				group.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			cmd.push("l");
+			cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+			cmd.push("l");
+			cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+			path.setAttribute("path", cmd.join(" ") + " x e");
+			group.appendChild(path);
+			return group;
+		}, CurvedArea:function (data, plotarea, plot, applyTo) {
+			var tension = 3;
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			if (data.length == 0) {
+				return group;
+			}
+			var path = document.createElement("v:shape");
+			path.setAttribute("strokeweight", "1px");
+			path.setAttribute("strokecolor", data[0].series.color);
+			path.setAttribute("fillcolor", data[0].series.color);
+			path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top));
+			path.style.position = "absolute";
+			path.style.top = "0px";
+			path.style.left = "0px";
+			path.style.width = area.right - area.left + "px";
+			path.style.height = area.bottom - area.top + "px";
+			var stroke = document.createElement("v:stroke");
+			stroke.setAttribute("opacity", "0.8");
+			path.appendChild(stroke);
+			var fill = document.createElement("v:fill");
+			fill.setAttribute("opacity", "0.4");
+			path.appendChild(fill);
+			var cmd = [];
+			var r = 3;
+			for (var i = 0; i < data.length; i++) {
+				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
+				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
+				if (i == 0) {
+					cmd.push("m");
+					cmd.push(x + "," + y);
+				} else {
+					var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot));
+					var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot));
+					var dx = x - lastx;
+					var dy = y - lasty;
+					cmd.push("c");
+					var cx = Math.round((x - (tension - 1) * (dx / tension)));
+					cmd.push(cx + "," + lasty);
+					cx = Math.round((x - (dx / tension)));
+					cmd.push(cx + "," + y);
+					cmd.push(x + "," + y);
+				}
+				var c = document.createElement("v:oval");
+				c.setAttribute("strokeweight", "1px");
+				c.setAttribute("strokecolor", data[i].series.color);
+				c.setAttribute("fillcolor", data[i].series.color);
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.8");
+				c.appendChild(str);
+				str = document.createElement("v:fill");
+				str.setAttribute("opacity", "0.6");
+				c.appendChild(str);
+				var s = c.style;
+				s.position = "absolute";
+				s.top = (y - r) + "px";
+				s.left = (x - r) + "px";
+				s.width = (r * 2) + "px";
+				s.height = (r * 2) + "px";
+				group.appendChild(c);
+				if (applyTo) {
+					applyTo(c, data[i].src);
+				}
+			}
+			cmd.push("l");
+			cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+			cmd.push("l");
+			cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
+			path.setAttribute("path", cmd.join(" ") + " x e");
+			group.appendChild(path);
+			return group;
+		}, HighLow:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = data.length;
+			var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
+			var w = part * 2;
+			for (var i = 0; i < n; i++) {
+				var high = data[i].high;
+				var low = data[i].low;
+				if (low > high) {
+					var t = low;
+					low = high;
+					high = t;
+				}
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(high, plotarea, plot);
+				var h = plot.axisY.getCoord(low, plotarea, plot) - y;
+				var bar = document.createElement("v:rect");
+				bar.style.position = "absolute";
+				bar.style.top = y + 1 + "px";
+				bar.style.left = x + "px";
+				bar.style.width = w + "px";
+				bar.style.height = h + "px";
+				bar.setAttribute("fillColor", data[i].series.color);
+				bar.setAttribute("stroked", "false");
+				bar.style.antialias = "false";
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				bar.appendChild(fill);
+				if (applyTo) {
+					applyTo(bar, data[i].src);
+				}
+				group.appendChild(bar);
+			}
+			return group;
+		}, HighLowClose:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = data.length;
+			var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
+			var w = part * 2;
+			for (var i = 0; i < n; i++) {
+				var high = data[i].high;
+				var low = data[i].low;
+				if (low > high) {
+					var t = low;
+					low = high;
+					high = t;
+				}
+				var c = data[i].close;
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(high, plotarea, plot);
+				var h = plot.axisY.getCoord(low, plotarea, plot) - y;
+				var close = plot.axisY.getCoord(c, plotarea, plot);
+				var g = document.createElement("div");
+				var bar = document.createElement("v:rect");
+				bar.style.position = "absolute";
+				bar.style.top = y + 1 + "px";
+				bar.style.left = x + "px";
+				bar.style.width = w + "px";
+				bar.style.height = h + "px";
+				bar.setAttribute("fillColor", data[i].series.color);
+				bar.setAttribute("stroked", "false");
+				bar.style.antialias = "false";
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				bar.appendChild(fill);
+				g.appendChild(bar);
+				var line = document.createElement("v:line");
+				line.setAttribute("strokecolor", data[i].series.color);
+				line.setAttribute("strokeweight", "1px");
+				line.setAttribute("from", x + "px," + close + "px");
+				line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
+				var s = line.style;
+				s.position = "absolute";
+				s.top = "0px";
+				s.left = "0px";
+				s.antialias = "false";
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.6");
+				line.appendChild(str);
+				g.appendChild(line);
+				if (applyTo) {
+					applyTo(g, data[i].src);
+				}
+				group.appendChild(g);
+			}
+			return group;
+		}, HighLowOpenClose:function (data, plotarea, plot, applyTo) {
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			var n = data.length;
+			var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4;
+			var w = part * 2;
+			for (var i = 0; i < n; i++) {
+				var high = data[i].high;
+				var low = data[i].low;
+				if (low > high) {
+					var t = low;
+					low = high;
+					high = t;
+				}
+				var o = data[i].open;
+				var c = data[i].close;
+				var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2);
+				var y = plot.axisY.getCoord(high, plotarea, plot);
+				var h = plot.axisY.getCoord(low, plotarea, plot) - y;
+				var open = plot.axisY.getCoord(o, plotarea, plot);
+				var close = plot.axisY.getCoord(c, plotarea, plot);
+				var g = document.createElement("div");
+				var bar = document.createElement("v:rect");
+				bar.style.position = "absolute";
+				bar.style.top = y + 1 + "px";
+				bar.style.left = x + "px";
+				bar.style.width = w + "px";
+				bar.style.height = h + "px";
+				bar.setAttribute("fillColor", data[i].series.color);
+				bar.setAttribute("stroked", "false");
+				bar.style.antialias = "false";
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				bar.appendChild(fill);
+				g.appendChild(bar);
+				var line = document.createElement("v:line");
+				line.setAttribute("strokecolor", data[i].series.color);
+				line.setAttribute("strokeweight", "1px");
+				line.setAttribute("from", (x - (part * 2)) + "px," + open + "px");
+				line.setAttribute("to", (x + w - 2) + "px," + open + "px");
+				var s = line.style;
+				s.position = "absolute";
+				s.top = "0px";
+				s.left = "0px";
+				s.antialias = "false";
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.6");
+				line.appendChild(str);
+				g.appendChild(line);
+				var line = document.createElement("v:line");
+				line.setAttribute("strokecolor", data[i].series.color);
+				line.setAttribute("strokeweight", "1px");
+				line.setAttribute("from", x + "px," + close + "px");
+				line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px");
+				var s = line.style;
+				s.position = "absolute";
+				s.top = "0px";
+				s.left = "0px";
+				s.antialias = "false";
+				var str = document.createElement("v:stroke");
+				str.setAttribute("opacity", "0.6");
+				line.appendChild(str);
+				g.appendChild(line);
+				if (applyTo) {
+					applyTo(g, data[i].src);
+				}
+				group.appendChild(g);
+			}
+			return group;
+		}, Scatter:function (data, plotarea, plot, applyTo) {
+			var r = 6;
+			var mod = r / 2;
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			for (var i = 0; i < data.length; i++) {
+				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
+				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
+				var point = document.createElement("v:rect");
+				point.setAttribute("strokecolor", data[i].series.color);
+				point.setAttribute("fillcolor", data[i].series.color);
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				point.appendChild(fill);
+				var s = point.style;
+				s.position = "absolute";
+				s.rotation = "45";
+				s.top = (y - mod) + "px";
+				s.left = (x - mod) + "px";
+				s.width = r + "px";
+				s.height = r + "px";
+				group.appendChild(point);
+				if (applyTo) {
+					applyTo(point, data[i].src);
+				}
+			}
+			return group;
+		}, Bubble:function (data, plotarea, plot, applyTo) {
+			var sizeFactor = 1;
+			var area = plotarea.getArea();
+			var group = dojo.charting.Plotters._group(plotarea);
+			for (var i = 0; i < data.length; i++) {
+				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
+				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));
+				if (i == 0) {
+					var raw = data[i].size;
+					var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y;
+					sizeFactor = dy / raw;
+				}
+				if (sizeFactor < 1) {
+					sizeFactor = 1;
+				}
+				var r = (data[i].size / 2) * sizeFactor;
+				var point = document.createElement("v:oval");
+				point.setAttribute("strokecolor", data[i].series.color);
+				point.setAttribute("fillcolor", data[i].series.color);
+				var fill = document.createElement("v:fill");
+				fill.setAttribute("opacity", "0.6");
+				point.appendChild(fill);
+				var s = point.style;
+				s.position = "absolute";
+				s.rotation = "45";
+				s.top = (y - r) + "px";
+				s.left = (x - r) + "px";
+				s.width = (r * 2) + "px";
+				s.height = (r * 2) + "px";
+				group.appendChild(point);
+				if (applyTo) {
+					applyTo(point, data[i].src);
+				}
+			}
+			return group;
+		}});
+		dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line;
+	}
+}});
+
+
+__CPAN_FILE__ src/charting/vml/Axis.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.vml.Axis"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.charting.vml.Axis");
+	dojo.require("dojo.lang.common");
+	if (dojo.render.vml.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.createElement("div");
+			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.createElement("v:line");
+				var str = document.createElement("v:stroke");
+				str.dashstyle = "dot";
+				l.appendChild(str);
+				l.setAttribute("strokecolor", "#666");
+				l.setAttribute("strokeweight", "1px");
+				var s = l.style;
+				s.position = "absolute";
+				s.top = "0px";
+				s.left = "0px";
+				s.antialias = "false";
+				if (plane == "x") {
+					l.setAttribute("from", v + "px," + area.top + "px");
+					l.setAttribute("to", v + "px," + area.bottom + "px");
+				} else {
+					if (plane == "y") {
+						l.setAttribute("from", area.left + "px," + v + "px");
+						l.setAttribute("to", area.right + "px," + v + "px");
+					}
+				}
+				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.createElement("div");
+			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.createElement("v:line");
+				l.setAttribute("strokecolor", "#000");
+				l.setAttribute("strokeweight", "1px");
+				var s = l.style;
+				s.position = "absolute";
+				s.top = "0px";
+				s.left = "0px";
+				s.antialias = "false";
+				if (plane == "x") {
+					l.setAttribute("from", v + "px," + coord + "px");
+					l.setAttribute("to", v + "px," + (coord + 3) + "px");
+				} else {
+					if (plane == "y") {
+						l.setAttribute("from", (coord - 2) + "px," + v + "px");
+						l.setAttribute("to", (coord + 2) + "px," + v + "px");
+					}
+				}
+				g.appendChild(l);
+			}
+			return g;
+		}, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) {
+			function createLabel(label, x, y, textSize, anchor) {
+				var text = document.createElement("div");
+				var s = text.style;
+				text.innerHTML = label;
+				s.fontSize = textSize + "px";
+				s.fontFamily = "sans-serif";
+				s.position = "absolute";
+				s.top = y + "px";
+				if (anchor == "center") {
+					s.left = x + "px";
+					s.textAlign = "center";
+				} else {
+					if (anchor == "left") {
+						s.left = x + "px";
+						s.textAlign = "left";
+					} else {
+						if (anchor == "right") {
+							s.right = x + "px";
+							s.textAlign = "right";
+						}
+					}
+				}
+				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.createElement("div");
+			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") {
+					var node = createLabel(this._labels[i].label, v, coord, textSize, anchor);
+					document.body.appendChild(node);
+					node.style.left = v - (node.offsetWidth / 2) + "px";
+					g.appendChild(node);
+				} else {
+					if (plane == "y") {
+						var node = createLabel(this._labels[i].label, coord, v, textSize, anchor);
+						document.body.appendChild(node);
+						node.style.top = v - (node.offsetHeight / 2) + "px";
+						g.appendChild(node);
+					}
+				}
+			}
+			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);
+			var g = this.nodes.main = document.createElement("div");
+			g.setAttribute("id", this.getId());
+			var line = this.nodes.axis = document.createElement("v:line");
+			line.setAttribute("strokecolor", "#000");
+			line.setAttribute("strokeweight", stroke + "px");
+			var s = line.style;
+			s.position = "absolute";
+			s.top = "0px";
+			s.left = "0px";
+			s.antialias = "false";
+			if (plane == "x") {
+				line.setAttribute("from", area.left + "px," + coord + "px");
+				line.setAttribute("to", area.right + "px," + coord + "px");
+				var y = coord + Math.floor(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, "center"));
+				}
+				if (this.showLabel && this.label) {
+					var x = plotArea.size.width / 2;
+					var y = coord + Math.round(textSize * 1.5);
+					var text = document.createElement("div");
+					var s = text.style;
+					text.innerHTML = this.label;
+					s.fontSize = (textSize + 2) + "px";
+					s.fontFamily = "sans-serif";
+					s.fontWeight = "bold";
+					s.position = "absolute";
+					s.top = y + "px";
+					s.left = x + "px";
+					s.textAlign = "center";
+					document.body.appendChild(text);
+					text.style.left = x - (text.offsetWidth / 2) + "px";
+					g.appendChild(text);
+				}
+			} else {
+				line.setAttribute("from", coord + "px," + area.top + "px");
+				line.setAttribute("to", coord + "px," + area.bottom + "px");
+				var isMax = this.origin == drawAgainst.range.upper;
+				var x = coord + 4;
+				var anchor = "left";
+				if (!isMax) {
+					x = area.right - coord + textSize + 4;
+					anchor = "right";
+					if (coord == area.left) {
+						x += (textSize * 2) - (textSize / 2);
+					}
+				}
+				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) {
+					x += (textSize * 2) - 2;
+					var y = plotArea.size.height / 2;
+					var text = document.createElement("div");
+					var s = text.style;
+					text.innerHTML = this.label;
+					s.fontSize = (textSize + 2) + "px";
+					s.fontFamily = "sans-serif";
+					s.fontWeight = "bold";
+					s.position = "absolute";
+					s.height = plotArea.size.height + "px";
+					s.writingMode = "tb-rl";
+					s.textAlign = "center";
+					s[anchor] = x + "px";
+					document.body.appendChild(text);
+					s.top = y - (text.offsetHeight / 2) + "px";
+					g.appendChild(text);
+				}
+			}
+			g.appendChild(line);
+			return g;
+		}});
+	}
+}});
+
+
+__CPAN_FILE__ src/charting/vml/PlotArea.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.charting.vml.PlotArea"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.charting.vml.PlotArea");
+	dojo.require("dojo.lang.common");
+	if (dojo.render.vml.capable) {
+		dojo.extend(dojo.charting.PlotArea, {resize:function () {
+			var a = this.getArea();
+			this.nodes.area.style.width = this.size.width + "px";
+			this.nodes.area.style.height = this.size.height + "px";
+			this.nodes.background.style.width = this.size.width + "px";
+			this.nodes.background.style.height = this.size.height + "px";
+			this.nodes.plots.width = this.size.width + "px";
+			this.nodes.plots.height = this.size.height + "px";
+			this.nodes.plots.style.clip = "rect(" + a.top + " " + a.right + " " + a.bottom + " " + a.left + ")";
+			if (this.nodes.axes) {
+				this.nodes.area.removeChild(this.nodes.axes);
+			}
+			var axes = this.nodes.axes = document.createElement("div");
+			axes.id = this.getId() + "-axes";
+			this.nodes.area.appendChild(axes);
+			var ax = this.getAxes();
+			for (var p in ax) {
+				var obj = ax[p];
+				axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane));
+			}
+		}, initializePlot:function (plot) {
+			plot.destroy();
+			plot.dataNode = document.createElement("div");
+			plot.dataNode.id = plot.getId();
+			return plot.dataNode;
+		}, initialize:function () {
+			this.destroy();
+			var main = this.nodes.main = document.createElement("div");
+			var area = this.nodes.area = document.createElement("div");
+			area.id = this.getId();
+			area.style.position = "absolute";
+			main.appendChild(area);
+			var bg = this.nodes.background = document.createElement("div");
+			bg.id = this.getId() + "-background";
+			bg.style.position = "absolute";
+			bg.style.top = "0px";
+			bg.style.left = "0px";
+			bg.style.backgroundColor = "#fff";
+			area.appendChild(bg);
+			var a = this.getArea();
+			var plots = this.nodes.plots = document.createElement("div");
+			plots.id = this.getId() + "-plots";
+			plots.style.position = "absolute";
+			plots.style.top = "0px";
+			plots.style.left = "0px";
+			area.appendChild(plots);
+			for (var i = 0; i < this.plots.length; i++) {
+				plots.appendChild(this.initializePlot(this.plots[i]));
+			}
+			this.resize();
+			return main;
+		}});
+	}
+}});
+
+
 __CPAN_FILE__ src/charting/vml/Plotters.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -59625,6 +113469,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.vml.Plotters");
 dojo.require("dojo.lang.common");
 if (dojo.render.vml.capable) {
@@ -60514,6 +114360,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.charting.vml.Axis");
 dojo.require("dojo.lang.common");
 if (dojo.render.vml.capable) {
@@ -60743,6 +114591,42 @@
 
 
 __CPAN_DIR__ src/uri
+__CPAN_FILE__ src/uri/cache.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uri.cache"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uri.cache");
+	dojo.uri.cache = {_cache:{}, set:function (uri, content) {
+		this._cache[uri.toString()] = content;
+		return uri;
+	}, remove:function (uri) {
+		delete this._cache[uri.toString()];
+	}, get:function (uri) {
+		var key = uri.toString();
+		var value = this._cache[key];
+		if (!value) {
+			value = dojo.hostenv.getText(key);
+			if (value) {
+				this._cache[key] = value;
+			}
+		}
+		return value;
+	}, allow:function (uri) {
+		return uri;
+	}};
+}});
+
+
 __CPAN_FILE__ src/uri/cache.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -60754,6 +114638,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uri.cache");
 dojo.uri.cache = {_cache:{}, set:function (uri, content) {
 	this._cache[uri.toString()] = content;
@@ -60786,10 +114672,31 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:[["dojo.uri.Uri", false, false]]});
 dojo.provide("dojo.uri.*");
 
 
+__CPAN_FILE__ src/uri/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:[["dojo.uri.Uri", false, false]]}], ["provide", "dojo.uri.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:[["dojo.uri.Uri", false, false]]});
+	dojo.provide("dojo.uri.*");
+}});
+
+
 __CPAN_FILE__ src/uri/Uri.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -60801,6 +114708,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uri.Uri");
 dojo.uri = new function () {
 	this.dojoUri = function (uri) {
@@ -60905,6 +114814,125 @@
 };
 
 
+__CPAN_FILE__ src/uri/Uri.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uri.Uri"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uri.Uri");
+	dojo.uri = new function () {
+		this.dojoUri = function (uri) {
+			return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(), uri);
+		};
+		this.moduleUri = function (module, uri) {
+			var loc = dojo.hostenv.getModuleSymbols(module).join("/");
+			if (!loc) {
+				return null;
+			}
+			if (loc.lastIndexOf("/") != loc.length - 1) {
+				loc += "/";
+			}
+			var colonIndex = loc.indexOf(":");
+			var slashIndex = loc.indexOf("/");
+			if (loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > slashIndex)) {
+				loc = dojo.hostenv.getBaseScriptUri() + loc;
+			}
+			return new dojo.uri.Uri(loc, uri);
+		};
+		this.Uri = function () {
+			var uri = arguments[0];
+			for (var i = 1; i < arguments.length; i++) {
+				if (!arguments[i]) {
+					continue;
+				}
+				var relobj = new dojo.uri.Uri(arguments[i].toString());
+				var uriobj = new dojo.uri.Uri(uri.toString());
+				if ((relobj.path == "") && (relobj.scheme == null) && (relobj.authority == null) && (relobj.query == null)) {
+					if (relobj.fragment != null) {
+						uriobj.fragment = relobj.fragment;
+					}
+					relobj = uriobj;
+				} else {
+					if (relobj.scheme == null) {
+						relobj.scheme = uriobj.scheme;
+						if (relobj.authority == null) {
+							relobj.authority = uriobj.authority;
+							if (relobj.path.charAt(0) != "/") {
+								var path = uriobj.path.substring(0, uriobj.path.lastIndexOf("/") + 1) + relobj.path;
+								var segs = path.split("/");
+								for (var j = 0; j < segs.length; j++) {
+									if (segs[j] == ".") {
+										if (j == segs.length - 1) {
+											segs[j] = "";
+										} else {
+											segs.splice(j, 1);
+											j--;
+										}
+									} else {
+										if (j > 0 && !(j == 1 && segs[0] == "") && segs[j] == ".." && segs[j - 1] != "..") {
+											if (j == segs.length - 1) {
+												segs.splice(j, 1);
+												segs[j - 1] = "";
+											} else {
+												segs.splice(j - 1, 2);
+												j -= 2;
+											}
+										}
+									}
+								}
+								relobj.path = segs.join("/");
+							}
+						}
+					}
+				}
+				uri = "";
+				if (relobj.scheme != null) {
+					uri += relobj.scheme + ":";
+				}
+				if (relobj.authority != null) {
+					uri += "//" + relobj.authority;
+				}
+				uri += relobj.path;
+				if (relobj.query != null) {
+					uri += "?" + relobj.query;
+				}
+				if (relobj.fragment != null) {
+					uri += "#" + relobj.fragment;
+				}
+			}
+			this.uri = uri.toString();
+			var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
+			var r = this.uri.match(new RegExp(regexp));
+			this.scheme = r[2] || (r[1] ? "" : null);
+			this.authority = r[4] || (r[3] ? "" : null);
+			this.path = r[5];
+			this.query = r[7] || (r[6] ? "" : null);
+			this.fragment = r[9] || (r[8] ? "" : null);
+			if (this.authority != null) {
+				regexp = "^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
+				r = this.authority.match(new RegExp(regexp));
+				this.user = r[3] || null;
+				this.password = r[4] || null;
+				this.host = r[5];
+				this.port = r[7] || null;
+			}
+			this.toString = function () {
+				return this.uri;
+			};
+		};
+	};
+}});
+
+
 __CPAN_DIR__ src/math
 __CPAN_FILE__ src/math/points.js
 /*
@@ -60917,6 +114945,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.math.points");
 dojo.require("dojo.math");
 dojo.math.points = {translate:function (a, b) {
@@ -60959,6 +114989,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.math.matrix");
 dojo.math.matrix.iDF = 0;
 dojo.math.matrix.ALMOST_ZERO = 1e-10;
@@ -61251,6 +115283,52 @@
 };
 
 
+__CPAN_FILE__ src/math/points.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.math.points"], ["require", "dojo.math"]], definePackage:function (dojo) {
+	dojo.provide("dojo.math.points");
+	dojo.require("dojo.math");
+	dojo.math.points = {translate:function (a, b) {
+		if (a.length != b.length) {
+			dojo.raise("dojo.math.translate: points not same size (a:[" + a + "], b:[" + b + "])");
+		}
+		var c = new Array(a.length);
+		for (var i = 0; i < a.length; i++) {
+			c[i] = a[i] + b[i];
+		}
+		return c;
+	}, midpoint:function (a, b) {
+		if (a.length != b.length) {
+			dojo.raise("dojo.math.midpoint: points not same size (a:[" + a + "], b:[" + b + "])");
+		}
+		var c = new Array(a.length);
+		for (var i = 0; i < a.length; i++) {
+			c[i] = (a[i] + b[i]) / 2;
+		}
+		return c;
+	}, invert:function (a) {
+		var b = new Array(a.length);
+		for (var i = 0; i < a.length; i++) {
+			b[i] = -a[i];
+		}
+		return b;
+	}, distance:function (a, b) {
+		return Math.sqrt(Math.pow(b[0] - a[0], 2) + Math.pow(b[1] - a[1], 2));
+	}};
+}});
+
+
 __CPAN_FILE__ src/math/curves.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -61262,6 +115340,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.math.curves");
 dojo.require("dojo.math");
 dojo.math.curves = {Line:function (start, end) {
@@ -61446,10 +115526,526 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]});
 dojo.provide("dojo.math.*");
 
 
+__CPAN_FILE__ src/math/curves.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.math.curves"], ["require", "dojo.math"]], definePackage:function (dojo) {
+	dojo.provide("dojo.math.curves");
+	dojo.require("dojo.math");
+	dojo.math.curves = {Line:function (start, end) {
+		this.start = start;
+		this.end = end;
+		this.dimensions = start.length;
+		for (var i = 0; i < start.length; i++) {
+			start[i] = Number(start[i]);
+		}
+		for (var i = 0; i < end.length; i++) {
+			end[i] = Number(end[i]);
+		}
+		this.getValue = function (n) {
+			var retVal = new Array(this.dimensions);
+			for (var i = 0; i < this.dimensions; i++) {
+				retVal[i] = ((this.end[i] - this.start[i]) * n) + this.start[i];
+			}
+			return retVal;
+		};
+		return this;
+	}, Bezier:function (pnts) {
+		this.getValue = function (step) {
+			if (step >= 1) {
+				return this.p[this.p.length - 1];
+			}
+			if (step <= 0) {
+				return this.p[0];
+			}
+			var retVal = new Array(this.p[0].length);
+			for (var k = 0; j < this.p[0].length; k++) {
+				retVal[k] = 0;
+			}
+			for (var j = 0; j < this.p[0].length; j++) {
+				var C = 0;
+				var D = 0;
+				for (var i = 0; i < this.p.length; i++) {
+					C += this.p[i][j] * this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, i);
+				}
+				for (var l = 0; l < this.p.length; l++) {
+					D += this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, l);
+				}
+				retVal[j] = C / D;
+			}
+			return retVal;
+		};
+		this.p = pnts;
+		return this;
+	}, CatmullRom:function (pnts, c) {
+		this.getValue = function (step) {
+			var percent = step * (this.p.length - 1);
+			var node = Math.floor(percent);
+			var progress = percent - node;
+			var i0 = node - 1;
+			if (i0 < 0) {
+				i0 = 0;
+			}
+			var i = node;
+			var i1 = node + 1;
+			if (i1 >= this.p.length) {
+				i1 = this.p.length - 1;
+			}
+			var i2 = node + 2;
+			if (i2 >= this.p.length) {
+				i2 = this.p.length - 1;
+			}
+			var u = progress;
+			var u2 = progress * progress;
+			var u3 = progress * progress * progress;
+			var retVal = new Array(this.p[0].length);
+			for (var k = 0; k < this.p[0].length; k++) {
+				var x1 = (-this.c * this.p[i0][k]) + ((2 - this.c) * this.p[i][k]) + ((this.c - 2) * this.p[i1][k]) + (this.c * this.p[i2][k]);
+				var x2 = (2 * this.c * this.p[i0][k]) + ((this.c - 3) * this.p[i][k]) + ((3 - 2 * this.c) * this.p[i1][k]) + (-this.c * this.p[i2][k]);
+				var x3 = (-this.c * this.p[i0][k]) + (this.c * this.p[i1][k]);
+				var x4 = this.p[i][k];
+				retVal[k] = x1 * u3 + x2 * u2 + x3 * u + x4;
+			}
+			return retVal;
+		};
+		if (!c) {
+			this.c = 0.7;
+		} else {
+			this.c = c;
+		}
+		this.p = pnts;
+		return this;
+	}, Arc:function (start, end, ccw) {
+		var center = dojo.math.points.midpoint(start, end);
+		var sides = dojo.math.points.translate(dojo.math.points.invert(center), start);
+		var rad = Math.sqrt(Math.pow(sides[0], 2) + Math.pow(sides[1], 2));
+		var theta = dojo.math.radToDeg(Math.atan(sides[1] / sides[0]));
+		if (sides[0] < 0) {
+			theta -= 90;
+		} else {
+			theta += 90;
+		}
+		dojo.math.curves.CenteredArc.call(this, center, rad, theta, theta + (ccw ? -180 : 180));
+	}, CenteredArc:function (center, radius, start, end) {
+		this.center = center;
+		this.radius = radius;
+		this.start = start || 0;
+		this.end = end;
+		this.getValue = function (n) {
+			var retVal = new Array(2);
+			var theta = dojo.math.degToRad(this.start + ((this.end - this.start) * n));
+			retVal[0] = this.center[0] + this.radius * Math.sin(theta);
+			retVal[1] = this.center[1] - this.radius * Math.cos(theta);
+			return retVal;
+		};
+		return this;
+	}, Circle:function (center, radius) {
+		dojo.math.curves.CenteredArc.call(this, center, radius, 0, 360);
+		return this;
+	}, Path:function () {
+		var curves = [];
+		var weights = [];
+		var ranges = [];
+		var totalWeight = 0;
+		this.add = function (curve, weight) {
+			if (weight < 0) {
+				dojo.raise("dojo.math.curves.Path.add: weight cannot be less than 0");
+			}
+			curves.push(curve);
+			weights.push(weight);
+			totalWeight += weight;
+			computeRanges();
+		};
+		this.remove = function (curve) {
+			for (var i = 0; i < curves.length; i++) {
+				if (curves[i] == curve) {
+					curves.splice(i, 1);
+					totalWeight -= weights.splice(i, 1)[0];
+					break;
+				}
+			}
+			computeRanges();
+		};
+		this.removeAll = function () {
+			curves = [];
+			weights = [];
+			totalWeight = 0;
+		};
+		this.getValue = function (n) {
+			var found = false, value = 0;
+			for (var i = 0; i < ranges.length; i++) {
+				var r = ranges[i];
+				if (n >= r[0] && n < r[1]) {
+					var subN = (n - r[0]) / r[2];
+					value = curves[i].getValue(subN);
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				value = curves[curves.length - 1].getValue(1);
+			}
+			for (var j = 0; j < i; j++) {
+				value = dojo.math.points.translate(value, curves[j].getValue(1));
+			}
+			return value;
+		};
+		function computeRanges() {
+			var start = 0;
+			for (var i = 0; i < weights.length; i++) {
+				var end = start + weights[i] / totalWeight;
+				var len = end - start;
+				ranges[i] = [start, end, len];
+				start = end;
+			}
+		}
+		return this;
+	}};
+}});
+
+
+__CPAN_FILE__ src/math/matrix.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.math.matrix"]], definePackage:function (dojo) {
+	dojo.provide("dojo.math.matrix");
+	dojo.math.matrix.iDF = 0;
+	dojo.math.matrix.ALMOST_ZERO = 1e-10;
+	dojo.math.matrix.multiply = function (a, b) {
+		var ay = a.length;
+		var ax = a[0].length;
+		var by = b.length;
+		var bx = b[0].length;
+		if (ax != by) {
+			dojo.debug("Can't multiply matricies of sizes " + ax + "," + ay + " and " + bx + "," + by);
+			return [[0]];
+		}
+		var c = [];
+		for (var k = 0; k < ay; k++) {
+			c[k] = [];
+			for (var i = 0; i < bx; i++) {
+				c[k][i] = 0;
+				for (var m = 0; m < ax; m++) {
+					c[k][i] += a[k][m] * b[m][i];
+				}
+			}
+		}
+		return c;
+	};
+	dojo.math.matrix.product = function () {
+		if (arguments.length == 0) {
+			dojo.debug("can't multiply 0 matrices!");
+			return 1;
+		}
+		var result = arguments[0];
+		for (var i = 1; i < arguments.length; i++) {
+			result = dojo.math.matrix.multiply(result, arguments[i]);
+		}
+		return result;
+	};
+	dojo.math.matrix.sum = function () {
+		if (arguments.length == 0) {
+			dojo.debug("can't sum 0 matrices!");
+			return 0;
+		}
+		var result = dojo.math.matrix.copy(arguments[0]);
+		var rows = result.length;
+		if (rows == 0) {
+			dojo.debug("can't deal with matrices of 0 rows!");
+			return 0;
+		}
+		var cols = result[0].length;
+		if (cols == 0) {
+			dojo.debug("can't deal with matrices of 0 cols!");
+			return 0;
+		}
+		for (var i = 1; i < arguments.length; ++i) {
+			var arg = arguments[i];
+			if (arg.length != rows || arg[0].length != cols) {
+				dojo.debug("can't add matrices of different dimensions: first dimensions were " + rows + "x" + cols + ", current dimensions are " + arg.length + "x" + arg[0].length);
+				return 0;
+			}
+			for (var r = 0; r < rows; r++) {
+				for (var c = 0; c < cols; c++) {
+					result[r][c] += arg[r][c];
+				}
+			}
+		}
+		return result;
+	};
+	dojo.math.matrix.inverse = function (a) {
+		if (a.length == 1 && a[0].length == 1) {
+			return [[1 / a[0][0]]];
+		}
+		var tms = a.length;
+		var m = dojo.math.matrix.create(tms, tms);
+		var mm = dojo.math.matrix.adjoint(a);
+		var det = dojo.math.matrix.determinant(a);
+		var dd = 0;
+		if (det == 0) {
+			dojo.debug("Determinant Equals 0, Not Invertible.");
+			return [[0]];
+		} else {
+			dd = 1 / det;
+		}
+		for (var i = 0; i < tms; i++) {
+			for (var j = 0; j < tms; j++) {
+				m[i][j] = dd * mm[i][j];
+			}
+		}
+		return m;
+	};
+	dojo.math.matrix.determinant = function (a) {
+		if (a.length != a[0].length) {
+			dojo.debug("Can't calculate the determiant of a non-squre matrix!");
+			return 0;
+		}
+		var tms = a.length;
+		var det = 1;
+		var b = dojo.math.matrix.upperTriangle(a);
+		for (var i = 0; i < tms; i++) {
+			var bii = b[i][i];
+			if (Math.abs(bii) < dojo.math.matrix.ALMOST_ZERO) {
+				return 0;
+			}
+			det *= bii;
+		}
+		det = det * dojo.math.matrix.iDF;
+		return det;
+	};
+	dojo.math.matrix.upperTriangle = function (m) {
+		m = dojo.math.matrix.copy(m);
+		var f1 = 0;
+		var temp = 0;
+		var tms = m.length;
+		var v = 1;
+		dojo.math.matrix.iDF = 1;
+		for (var col = 0; col < tms - 1; col++) {
+			if (typeof m[col][col] != "number") {
+				dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + col + "]=" + m[col][col]);
+			}
+			v = 1;
+			var stop_loop = 0;
+			while ((m[col][col] == 0) && !stop_loop) {
+				if (col + v >= tms) {
+					dojo.math.matrix.iDF = 0;
+					stop_loop = 1;
+				} else {
+					for (var r = 0; r < tms; r++) {
+						temp = m[col][r];
+						m[col][r] = m[col + v][r];
+						m[col + v][r] = temp;
+					}
+					v++;
+					dojo.math.matrix.iDF *= -1;
+				}
+			}
+			for (var row = col + 1; row < tms; row++) {
+				if (typeof m[row][col] != "number") {
+					dojo.debug("non-numeric entry found in a numeric matrix: m[" + row + "][" + col + "]=" + m[row][col]);
+				}
+				if (typeof m[col][row] != "number") {
+					dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + row + "]=" + m[col][row]);
+				}
+				if (m[col][col] != 0) {
+					var f1 = (-1) * m[row][col] / m[col][col];
+					for (var i = col; i < tms; i++) {
+						m[row][i] = f1 * m[col][i] + m[row][i];
+					}
+				}
+			}
+		}
+		return m;
+	};
+	dojo.math.matrix.create = function (a, b, value) {
+		if (!value) {
+			value = 0;
+		}
+		var m = [];
+		for (var i = 0; i < b; i++) {
+			m[i] = [];
+			for (var j = 0; j < a; j++) {
+				m[i][j] = value;
+			}
+		}
+		return m;
+	};
+	dojo.math.matrix.ones = function (a, b) {
+		return dojo.math.matrix.create(a, b, 1);
+	};
+	dojo.math.matrix.zeros = function (a, b) {
+		return dojo.math.matrix.create(a, b, 0);
+	};
+	dojo.math.matrix.identity = function (size, scale) {
+		if (!scale) {
+			scale = 1;
+		}
+		var m = [];
+		for (var i = 0; i < size; i++) {
+			m[i] = [];
+			for (var j = 0; j < size; j++) {
+				m[i][j] = (i == j ? scale : 0);
+			}
+		}
+		return m;
+	};
+	dojo.math.matrix.adjoint = function (a) {
+		var tms = a.length;
+		if (tms <= 1) {
+			dojo.debug("Can't find the adjoint of a matrix with a dimension less than 2");
+			return [[0]];
+		}
+		if (a.length != a[0].length) {
+			dojo.debug("Can't find the adjoint of a non-square matrix");
+			return [[0]];
+		}
+		var m = dojo.math.matrix.create(tms, tms);
+		var ii = 0;
+		var jj = 0;
+		var ia = 0;
+		var ja = 0;
+		var det = 0;
+		var ap = dojo.math.matrix.create(tms - 1, tms - 1);
+		for (var i = 0; i < tms; i++) {
+			for (var j = 0; j < tms; j++) {
+				ia = 0;
+				for (ii = 0; ii < tms; ii++) {
+					if (ii == i) {
+						continue;
+					}
+					ja = 0;
+					for (jj = 0; jj < tms; jj++) {
+						if (jj == j) {
+							continue;
+						}
+						ap[ia][ja] = a[ii][jj];
+						ja++;
+					}
+					ia++;
+				}
+				det = dojo.math.matrix.determinant(ap);
+				m[i][j] = Math.pow(-1, (i + j)) * det;
+			}
+		}
+		m = dojo.math.matrix.transpose(m);
+		return m;
+	};
+	dojo.math.matrix.transpose = function (a) {
+		var m = dojo.math.matrix.create(a.length, a[0].length);
+		for (var i = 0; i < a.length; i++) {
+			for (var j = 0; j < a[i].length; j++) {
+				m[j][i] = a[i][j];
+			}
+		}
+		return m;
+	};
+	dojo.math.matrix.format = function (a, decimal_points) {
+		if (arguments.length <= 1) {
+			decimal_points = 5;
+		}
+		function format_int(x, dp) {
+			var fac = Math.pow(10, dp);
+			var a = Math.round(x * fac) / fac;
+			var b = a.toString();
+			if (b.charAt(0) != "-") {
+				b = " " + b;
+			}
+			var has_dp = 0;
+			for (var i = 1; i < b.length; i++) {
+				if (b.charAt(i) == ".") {
+					has_dp = 1;
+				}
+			}
+			if (!has_dp) {
+				b += ".";
+			}
+			while (b.length < dp + 3) {
+				b += "0";
+			}
+			return b;
+		}
+		var ya = a.length;
+		var xa = ya > 0 ? a[0].length : 0;
+		var buffer = "";
+		for (var y = 0; y < ya; y++) {
+			buffer += "| ";
+			for (var x = 0; x < xa; x++) {
+				buffer += format_int(a[y][x], decimal_points) + " ";
+			}
+			buffer += "|\n";
+		}
+		return buffer;
+	};
+	dojo.math.matrix.copy = function (a) {
+		var ya = a.length;
+		var xa = a[0].length;
+		var m = dojo.math.matrix.create(xa, ya);
+		for (var y = 0; y < ya; y++) {
+			for (var x = 0; x < xa; x++) {
+				m[y][x] = a[y][x];
+			}
+		}
+		return m;
+	};
+	dojo.math.matrix.scale = function (k, a) {
+		a = dojo.math.matrix.copy(a);
+		var ya = a.length;
+		var xa = a[0].length;
+		for (var y = 0; y < ya; y++) {
+			for (var x = 0; x < xa; x++) {
+				a[y][x] *= k;
+			}
+		}
+		return a;
+	};
+}});
+
+
+__CPAN_FILE__ src/math/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]}], ["provide", "dojo.math.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]});
+	dojo.provide("dojo.math.*");
+}});
+
+
 __CPAN_DIR__ src/collections
 __CPAN_FILE__ src/collections/Set.js
 /*
@@ -61462,6 +116058,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Set");
 dojo.require("dojo.collections.Collections");
 dojo.require("dojo.collections.ArrayList");
@@ -61565,6 +116163,111 @@
 }();
 
 
+__CPAN_FILE__ src/collections/Dictionary.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Dictionary"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Dictionary");
+	dojo.require("dojo.collections.Collections");
+	dojo.collections.Dictionary = function (dictionary) {
+		var items = {};
+		this.count = 0;
+		var testObject = {};
+		this.add = function (k, v) {
+			var b = (k in items);
+			items[k] = new dojo.collections.DictionaryEntry(k, v);
+			if (!b) {
+				this.count++;
+			}
+		};
+		this.clear = function () {
+			items = {};
+			this.count = 0;
+		};
+		this.clone = function () {
+			return new dojo.collections.Dictionary(this);
+		};
+		this.contains = this.containsKey = function (k) {
+			if (testObject[k]) {
+				return false;
+			}
+			return (items[k] != null);
+		};
+		this.containsValue = function (v) {
+			var e = this.getIterator();
+			while (e.get()) {
+				if (e.element.value == v) {
+					return true;
+				}
+			}
+			return false;
+		};
+		this.entry = function (k) {
+			return items[k];
+		};
+		this.forEach = function (fn, scope) {
+			var a = [];
+			for (var p in items) {
+				if (!testObject[p]) {
+					a.push(items[p]);
+				}
+			}
+			var s = scope || dj_global;
+			if (Array.forEach) {
+				Array.forEach(a, fn, s);
+			} else {
+				for (var i = 0; i < a.length; i++) {
+					fn.call(s, a[i], i, a);
+				}
+			}
+		};
+		this.getKeyList = function () {
+			return (this.getIterator()).map(function (entry) {
+				return entry.key;
+			});
+		};
+		this.getValueList = function () {
+			return (this.getIterator()).map(function (entry) {
+				return entry.value;
+			});
+		};
+		this.item = function (k) {
+			if (k in items) {
+				return items[k].valueOf();
+			}
+			return undefined;
+		};
+		this.getIterator = function () {
+			return new dojo.collections.DictionaryIterator(items);
+		};
+		this.remove = function (k) {
+			if (k in items && !testObject[k]) {
+				delete items[k];
+				this.count--;
+				return true;
+			}
+			return false;
+		};
+		if (dictionary) {
+			var e = dictionary.getIterator();
+			while (e.get()) {
+				this.add(e.element.key, e.element.value);
+			}
+		}
+	};
+}});
+
+
 __CPAN_FILE__ src/collections/Collections.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -61576,6 +116279,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Collections");
 dojo.collections.DictionaryEntry = function (k, v) {
 	this.key = k;
@@ -61668,6 +116373,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Store");
 dojo.require("dojo.lang.common");
 dojo.collections.Store = function (jsonArray) {
@@ -61950,6 +116657,338 @@
 }});
 
 
+__CPAN_FILE__ src/collections/Queue.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Queue"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Queue");
+	dojo.require("dojo.collections.Collections");
+	dojo.collections.Queue = function (arr) {
+		var q = [];
+		if (arr) {
+			q = q.concat(arr);
+		}
+		this.count = q.length;
+		this.clear = function () {
+			q = [];
+			this.count = q.length;
+		};
+		this.clone = function () {
+			return new dojo.collections.Queue(q);
+		};
+		this.contains = function (o) {
+			for (var i = 0; i < q.length; i++) {
+				if (q[i] == o) {
+					return true;
+				}
+			}
+			return false;
+		};
+		this.copyTo = function (arr, i) {
+			arr.splice(i, 0, q);
+		};
+		this.dequeue = function () {
+			var r = q.shift();
+			this.count = q.length;
+			return r;
+		};
+		this.enqueue = function (o) {
+			this.count = q.push(o);
+		};
+		this.forEach = function (fn, scope) {
+			var s = scope || dj_global;
+			if (Array.forEach) {
+				Array.forEach(q, fn, s);
+			} else {
+				for (var i = 0; i < q.length; i++) {
+					fn.call(s, q[i], i, q);
+				}
+			}
+		};
+		this.getIterator = function () {
+			return new dojo.collections.Iterator(q);
+		};
+		this.peek = function () {
+			return q[0];
+		};
+		this.toArray = function () {
+			return [].concat(q);
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/collections/BinaryTree.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.BinaryTree"], ["require", "dojo.collections.Collections"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.BinaryTree");
+	dojo.require("dojo.collections.Collections");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.collections.BinaryTree");
+	dojo.collections.BinaryTree = function (data) {
+		function node(data, rnode, lnode) {
+			this.value = data || null;
+			this.right = rnode || null;
+			this.left = lnode || null;
+			this.clone = function () {
+				var c = new node();
+				if (this.value.value) {
+					c.value = this.value.clone();
+				} else {
+					c.value = this.value;
+				}
+				if (this.left) {
+					c.left = this.left.clone();
+				}
+				if (this.right) {
+					c.right = this.right.clone();
+				}
+			};
+			this.compare = function (n) {
+				if (this.value > n.value) {
+					return 1;
+				}
+				if (this.value < n.value) {
+					return -1;
+				}
+				return 0;
+			};
+			this.compareData = function (d) {
+				if (this.value > d) {
+					return 1;
+				}
+				if (this.value < d) {
+					return -1;
+				}
+				return 0;
+			};
+		}
+		function inorderTraversalBuildup(current, a) {
+			if (current) {
+				inorderTraversalBuildup(current.left, a);
+				a.add(current);
+				inorderTraversalBuildup(current.right, a);
+			}
+		}
+		function preorderTraversal(current, sep) {
+			var s = "";
+			if (current) {
+				s = current.value.toString() + sep;
+				s += preorderTraversal(current.left, sep);
+				s += preorderTraversal(current.right, sep);
+			}
+			return s;
+		}
+		function inorderTraversal(current, sep) {
+			var s = "";
+			if (current) {
+				s = inorderTraversal(current.left, sep);
+				s += current.value.toString() + sep;
+				s += inorderTraversal(current.right, sep);
+			}
+			return s;
+		}
+		function postorderTraversal(current, sep) {
+			var s = "";
+			if (current) {
+				s = postorderTraversal(current.left, sep);
+				s += postorderTraversal(current.right, sep);
+				s += current.value.toString() + sep;
+			}
+			return s;
+		}
+		function searchHelper(current, data) {
+			if (!current) {
+				return null;
+			}
+			var i = current.compareData(data);
+			if (i == 0) {
+				return current;
+			}
+			if (i > 0) {
+				return searchHelper(current.left, data);
+			} else {
+				return searchHelper(current.right, data);
+			}
+		}
+		this.add = function (data) {
+			var n = new node(data);
+			var i;
+			var current = root;
+			var parent = null;
+			while (current) {
+				i = current.compare(n);
+				if (i == 0) {
+					return;
+				}
+				parent = current;
+				if (i > 0) {
+					current = current.left;
+				} else {
+					current = current.right;
+				}
+			}
+			this.count++;
+			if (!parent) {
+				root = n;
+			} else {
+				i = parent.compare(n);
+				if (i > 0) {
+					parent.left = n;
+				} else {
+					parent.right = n;
+				}
+			}
+		};
+		this.clear = function () {
+			root = null;
+			this.count = 0;
+		};
+		this.clone = function () {
+			var c = new dojo.collections.BinaryTree();
+			c.root = root.clone();
+			c.count = this.count;
+			return c;
+		};
+		this.contains = function (data) {
+			return this.search(data) != null;
+		};
+		this.deleteData = function (data) {
+			var current = root;
+			var parent = null;
+			var i = current.compareData(data);
+			while (i != 0 && current != null) {
+				if (i > 0) {
+					parent = current;
+					current = current.left;
+				} else {
+					if (i < 0) {
+						parent = current;
+						current = current.right;
+					}
+				}
+				i = current.compareData(data);
+			}
+			if (!current) {
+				return;
+			}
+			this.count--;
+			if (!current.right) {
+				if (!parent) {
+					root = current.left;
+				} else {
+					i = parent.compare(current);
+					if (i > 0) {
+						parent.left = current.left;
+					} else {
+						if (i < 0) {
+							parent.right = current.left;
+						}
+					}
+				}
+			} else {
+				if (!current.right.left) {
+					if (!parent) {
+						root = current.right;
+					} else {
+						i = parent.compare(current);
+						if (i > 0) {
+							parent.left = current.right;
+						} else {
+							if (i < 0) {
+								parent.right = current.right;
+							}
+						}
+					}
+				} else {
+					var leftmost = current.right.left;
+					var lmParent = current.right;
+					while (leftmost.left != null) {
+						lmParent = leftmost;
+						leftmost = leftmost.left;
+					}
+					lmParent.left = leftmost.right;
+					leftmost.left = current.left;
+					leftmost.right = current.right;
+					if (!parent) {
+						root = leftmost;
+					} else {
+						i = parent.compare(current);
+						if (i > 0) {
+							parent.left = leftmost;
+						} else {
+							if (i < 0) {
+								parent.right = leftmost;
+							}
+						}
+					}
+				}
+			}
+		};
+		this.getIterator = function () {
+			var a = [];
+			inorderTraversalBuildup(root, a);
+			return new dojo.collections.Iterator(a);
+		};
+		this.search = function (data) {
+			return searchHelper(root, data);
+		};
+		this.toString = function (order, sep) {
+			if (!order) {
+				var order = dojo.collections.BinaryTree.TraversalMethods.Inorder;
+			}
+			if (!sep) {
+				var sep = " ";
+			}
+			var s = "";
+			switch (order) {
+			  case dojo.collections.BinaryTree.TraversalMethods.Preorder:
+				s = preorderTraversal(root, sep);
+				break;
+			  case dojo.collections.BinaryTree.TraversalMethods.Inorder:
+				s = inorderTraversal(root, sep);
+				break;
+			  case dojo.collections.BinaryTree.TraversalMethods.Postorder:
+				s = postorderTraversal(root, sep);
+				break;
+			}
+			if (s.length == 0) {
+				return "";
+			} else {
+				return s.substring(0, s.length - sep.length);
+			}
+		};
+		this.count = 0;
+		var root = this.root = null;
+		if (data) {
+			this.add(data);
+		}
+	};
+	dojo.collections.BinaryTree.TraversalMethods = {Preorder:1, Inorder:2, Postorder:3};
+}});
+
+
 __CPAN_FILE__ src/collections/Queue.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -61961,6 +117000,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Queue");
 dojo.require("dojo.collections.Collections");
 dojo.collections.Queue = function (arr) {
@@ -62028,6 +117069,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Stack");
 dojo.require("dojo.collections.Collections");
 dojo.collections.Stack = function (arr) {
@@ -62084,6 +117127,529 @@
 };
 
 
+__CPAN_FILE__ src/collections/Store.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Store"], ["require", "dojo.lang.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Store");
+	dojo.require("dojo.lang.common");
+	dojo.collections.Store = function (jsonArray) {
+		var data = [];
+		var items = {};
+		this.keyField = "Id";
+		this.get = function () {
+			return data;
+		};
+		this.getByKey = function (key) {
+			return items[key];
+		};
+		this.getByIndex = function (idx) {
+			return data[idx];
+		};
+		this.getIndexOf = function (key) {
+			for (var i = 0; i < data.length; i++) {
+				if (data[i].key == key) {
+					return i;
+				}
+			}
+			return -1;
+		};
+		this.getData = function () {
+			var arr = [];
+			for (var i = 0; i < data.length; i++) {
+				arr.push(data[i].src);
+			}
+			return arr;
+		};
+		this.getDataByKey = function (key) {
+			if (items[key] != null) {
+				return items[key].src;
+			}
+			return null;
+		};
+		this.getIndexOfData = function (obj) {
+			for (var i = 0; i < data.length; i++) {
+				if (data[i].src == obj) {
+					return i;
+				}
+			}
+			return -1;
+		};
+		this.getDataByIndex = function (idx) {
+			if (data[idx]) {
+				return data[idx].src;
+			}
+			return null;
+		};
+		this.update = function (obj, fieldPath, val, bDontFire) {
+			var parts = fieldPath.split("."), i = 0, o = obj, field;
+			if (parts.length > 1) {
+				field = parts.pop();
+				do {
+					if (parts[i].indexOf("()") > -1) {
+						var temp = parts[i++].split("()")[0];
+						if (!o[temp]) {
+							dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object.");
+						} else {
+							o = o[temp]();
+						}
+					} else {
+						o = o[parts[i++]];
+					}
+				} while (i < parts.length && o != null);
+			} else {
+				field = parts[0];
+			}
+			obj[field] = val;
+			if (!bDontFire) {
+				this.onUpdateField(obj, fieldPath, val);
+			}
+		};
+		this.forEach = function (fn) {
+			if (Array.forEach) {
+				Array.forEach(data, fn, this);
+			} else {
+				for (var i = 0; i < data.length; i++) {
+					fn.call(this, data[i]);
+				}
+			}
+		};
+		this.forEachData = function (fn) {
+			if (Array.forEach) {
+				Array.forEach(this.getData(), fn, this);
+			} else {
+				var a = this.getData();
+				for (var i = 0; i < a.length; i++) {
+					fn.call(this, a[i]);
+				}
+			}
+		};
+		this.setData = function (arr, bDontFire) {
+			data = [];
+			for (var i = 0; i < arr.length; i++) {
+				var o = {key:arr[i][this.keyField], src:arr[i]};
+				data.push(o);
+				items[o.key] = o;
+			}
+			if (!bDontFire) {
+				this.onSetData();
+			}
+		};
+		this.clearData = function (bDontFire) {
+			data = [];
+			items = {};
+			if (!bDontFire) {
+				this.onClearData();
+			}
+		};
+		this.addData = function (obj, key, bDontFire) {
+			var k = key || obj[this.keyField];
+			if (items[k] != null) {
+				var o = items[k];
+				o.src = obj;
+			} else {
+				var o = {key:k, src:obj};
+				data.push(o);
+				items[o.key] = o;
+			}
+			if (!bDontFire) {
+				this.onAddData(o);
+			}
+		};
+		this.addDataRange = function (arr, bDontFire) {
+			var objects = [];
+			for (var i = 0; i < arr.length; i++) {
+				var k = arr[i][this.keyField];
+				if (items[k] != null) {
+					var o = items[k];
+					o.src = arr[i];
+				} else {
+					var o = {key:k, src:arr[i]};
+					data.push(o);
+					items[k] = o;
+				}
+				objects.push(o);
+			}
+			if (!bDontFire) {
+				this.onAddDataRange(objects);
+			}
+		};
+		this.addDataByIndex = function (obj, idx, key, bDontFire) {
+			var k = key || obj[this.keyField];
+			if (items[k] != null) {
+				var i = this.getIndexOf(k);
+				var o = data.splice(i, 1);
+				o.src = obj;
+			} else {
+				var o = {key:k, src:obj};
+				items[k] = o;
+			}
+			data.splice(idx, 0, o);
+			if (!bDontFire) {
+				this.onAddData(o);
+			}
+		};
+		this.addDataRangeByIndex = function (arr, idx, bDontFire) {
+			var objects = [];
+			for (var i = 0; i < arr.length; i++) {
+				var k = arr[i][this.keyField];
+				if (items[k] != null) {
+					var j = this.getIndexOf(k);
+					var o = data.splice(j, 1);
+					o.src = arr[i];
+				} else {
+					var o = {key:k, src:arr[i]};
+					items[k] = o;
+				}
+				objects.push(o);
+			}
+			data.splice(idx, 0, objects);
+			if (!bDontFire) {
+				this.onAddDataRange(objects);
+			}
+		};
+		this.removeData = function (obj, bDontFire) {
+			var idx = -1;
+			var o = null;
+			for (var i = 0; i < data.length; i++) {
+				if (data[i].src == obj) {
+					idx = i;
+					o = data[i];
+					break;
+				}
+			}
+			if (!bDontFire) {
+				this.onRemoveData(o);
+			}
+			if (idx > -1) {
+				data.splice(idx, 1);
+				delete items[o.key];
+			}
+		};
+		this.removeDataRange = function (idx, range, bDontFire) {
+			var ret = data.splice(idx, range);
+			for (var i = 0; i < ret.length; i++) {
+				delete items[ret[i].key];
+			}
+			if (!bDontFire) {
+				this.onRemoveDataRange(ret);
+			}
+			return ret;
+		};
+		this.removeDataByKey = function (key, bDontFire) {
+			this.removeData(this.getDataByKey(key), bDontFire);
+		};
+		this.removeDataByIndex = function (idx, bDontFire) {
+			this.removeData(this.getDataByIndex(idx), bDontFire);
+		};
+		if (jsonArray && jsonArray.length && jsonArray[0]) {
+			this.setData(jsonArray, true);
+		}
+	};
+	dojo.extend(dojo.collections.Store, {getField:function (obj, field) {
+		var parts = field.split("."), i = 0, o = obj;
+		do {
+			if (parts[i].indexOf("()") > -1) {
+				var temp = parts[i++].split("()")[0];
+				if (!o[temp]) {
+					dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object.");
+				} else {
+					o = o[temp]();
+				}
+			} else {
+				o = o[parts[i++]];
+			}
+		} while (i < parts.length && o != null);
+		if (i < parts.length) {
+			dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + field + "' is not a property of the passed object.");
+		}
+		return o;
+	}, getFromHtml:function (meta, body, fnMod) {
+		var rows = body.rows;
+		var ctor = function (row) {
+			var obj = {};
+			for (var i = 0; i < meta.length; i++) {
+				var o = obj;
+				var data = row.cells[i].innerHTML;
+				var p = meta[i].getField();
+				if (p.indexOf(".") > -1) {
+					p = p.split(".");
+					while (p.length > 1) {
+						var pr = p.shift();
+						o[pr] = {};
+						o = o[pr];
+					}
+					p = p[0];
+				}
+				var type = meta[i].getType();
+				if (type == String) {
+					o[p] = data;
+				} else {
+					if (data) {
+						o[p] = new type(data);
+					} else {
+						o[p] = new type();
+					}
+				}
+			}
+			return obj;
+		};
+		var arr = [];
+		for (var i = 0; i < rows.length; i++) {
+			var o = ctor(rows[i]);
+			if (fnMod) {
+				fnMod(o, rows[i]);
+			}
+			arr.push(o);
+		}
+		return arr;
+	}, onSetData:function () {
+	}, onClearData:function () {
+	}, onAddData:function (obj) {
+	}, onAddDataRange:function (arr) {
+	}, onRemoveData:function (obj) {
+	}, onRemoveDataRange:function (arr) {
+	}, onUpdateField:function (obj, field, val) {
+	}});
+}});
+
+
+__CPAN_FILE__ src/collections/Stack.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Stack"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Stack");
+	dojo.require("dojo.collections.Collections");
+	dojo.collections.Stack = function (arr) {
+		var q = [];
+		if (arr) {
+			q = q.concat(arr);
+		}
+		this.count = q.length;
+		this.clear = function () {
+			q = [];
+			this.count = q.length;
+		};
+		this.clone = function () {
+			return new dojo.collections.Stack(q);
+		};
+		this.contains = function (o) {
+			for (var i = 0; i < q.length; i++) {
+				if (q[i] == o) {
+					return true;
+				}
+			}
+			return false;
+		};
+		this.copyTo = function (arr, i) {
+			arr.splice(i, 0, q);
+		};
+		this.forEach = function (fn, scope) {
+			var s = scope || dj_global;
+			if (Array.forEach) {
+				Array.forEach(q, fn, s);
+			} else {
+				for (var i = 0; i < q.length; i++) {
+					fn.call(s, q[i], i, q);
+				}
+			}
+		};
+		this.getIterator = function () {
+			return new dojo.collections.Iterator(q);
+		};
+		this.peek = function () {
+			return q[(q.length - 1)];
+		};
+		this.pop = function () {
+			var r = q.pop();
+			this.count = q.length;
+			return r;
+		};
+		this.push = function (o) {
+			this.count = q.push(o);
+		};
+		this.toArray = function () {
+			return [].concat(q);
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/collections/Graph.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Graph"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Graph");
+	dojo.require("dojo.collections.Collections");
+	dojo.experimental("dojo.collections.Graph");
+	dojo.collections.Graph = function (nodes) {
+		function node(key, data, neighbors) {
+			this.key = key;
+			this.data = data;
+			this.neighbors = neighbors || new adjacencyList();
+			this.addDirected = function () {
+				if (arguments[0].constructor == edgeToNeighbor) {
+					this.neighbors.add(arguments[0]);
+				} else {
+					var n = arguments[0];
+					var cost = arguments[1] || 0;
+					this.neighbors.add(new edgeToNeighbor(n, cost));
+				}
+			};
+		}
+		function nodeList() {
+			var d = new dojo.collections.Dictionary();
+			function nodelistiterator() {
+				var o = [];
+				var e = d.getIterator();
+				while (e.get()) {
+					o[o.length] = e.element;
+				}
+				var position = 0;
+				this.element = o[position] || null;
+				this.atEnd = function () {
+					return (position >= o.length);
+				};
+				this.get = function () {
+					if (this.atEnd()) {
+						return null;
+					}
+					this.element = o[position++];
+					return this.element;
+				};
+				this.map = function (fn, scope) {
+					var s = scope || dj_global;
+					if (Array.map) {
+						return Array.map(o, fn, s);
+					} else {
+						var arr = [];
+						for (var i = 0; i < o.length; i++) {
+							arr.push(fn.call(s, o[i]));
+						}
+						return arr;
+					}
+				};
+				this.reset = function () {
+					position = 0;
+					this.element = o[position];
+				};
+			}
+			this.add = function (node) {
+				d.add(node.key, node);
+			};
+			this.clear = function () {
+				d.clear();
+			};
+			this.containsKey = function (key) {
+				return d.containsKey(key);
+			};
+			this.getIterator = function () {
+				return new nodelistiterator(this);
+			};
+			this.item = function (key) {
+				return d.item(key);
+			};
+			this.remove = function (node) {
+				d.remove(node.key);
+			};
+		}
+		function edgeToNeighbor(node, cost) {
+			this.neighbor = node;
+			this.cost = cost;
+		}
+		function adjacencyList() {
+			var d = [];
+			this.add = function (o) {
+				d.push(o);
+			};
+			this.item = function (i) {
+				return d[i];
+			};
+			this.getIterator = function () {
+				return new dojo.collections.Iterator([].concat(d));
+			};
+		}
+		this.nodes = nodes || new nodeList();
+		this.count = this.nodes.count;
+		this.clear = function () {
+			this.nodes.clear();
+			this.count = 0;
+		};
+		this.addNode = function () {
+			var n = arguments[0];
+			if (arguments.length > 1) {
+				n = new node(arguments[0], arguments[1]);
+			}
+			if (!this.nodes.containsKey(n.key)) {
+				this.nodes.add(n);
+				this.count++;
+			}
+		};
+		this.addDirectedEdge = function (uKey, vKey, cost) {
+			var uNode, vNode;
+			if (uKey.constructor != node) {
+				uNode = this.nodes.item(uKey);
+				vNode = this.nodes.item(vKey);
+			} else {
+				uNode = uKey;
+				vNode = vKey;
+			}
+			var c = cost || 0;
+			uNode.addDirected(vNode, c);
+		};
+		this.addUndirectedEdge = function (uKey, vKey, cost) {
+			var uNode, vNode;
+			if (uKey.constructor != node) {
+				uNode = this.nodes.item(uKey);
+				vNode = this.nodes.item(vKey);
+			} else {
+				uNode = uKey;
+				vNode = vKey;
+			}
+			var c = cost || 0;
+			uNode.addDirected(vNode, c);
+			vNode.addDirected(uNode, c);
+		};
+		this.contains = function (n) {
+			return this.nodes.containsKey(n.key);
+		};
+		this.containsKey = function (k) {
+			return this.nodes.containsKey(k);
+		};
+	};
+}});
+
+
 __CPAN_FILE__ src/collections/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -62095,6 +117661,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]});
 dojo.provide("dojo.collections.*");
 
@@ -62110,6 +117678,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Dictionary");
 dojo.require("dojo.collections.Collections");
 dojo.collections.Dictionary = function (dictionary) {
@@ -62200,6 +117770,143 @@
 };
 
 
+__CPAN_FILE__ src/collections/ArrayList.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.ArrayList"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.ArrayList");
+	dojo.require("dojo.collections.Collections");
+	dojo.collections.ArrayList = function (arr) {
+		var items = [];
+		if (arr) {
+			items = items.concat(arr);
+		}
+		this.count = items.length;
+		this.add = function (obj) {
+			items.push(obj);
+			this.count = items.length;
+		};
+		this.addRange = function (a) {
+			if (a.getIterator) {
+				var e = a.getIterator();
+				while (!e.atEnd()) {
+					this.add(e.get());
+				}
+				this.count = items.length;
+			} else {
+				for (var i = 0; i < a.length; i++) {
+					items.push(a[i]);
+				}
+				this.count = items.length;
+			}
+		};
+		this.clear = function () {
+			items.splice(0, items.length);
+			this.count = 0;
+		};
+		this.clone = function () {
+			return new dojo.collections.ArrayList(items);
+		};
+		this.contains = function (obj) {
+			for (var i = 0; i < items.length; i++) {
+				if (items[i] == obj) {
+					return true;
+				}
+			}
+			return false;
+		};
+		this.forEach = function (fn, scope) {
+			var s = scope || dj_global;
+			if (Array.forEach) {
+				Array.forEach(items, fn, s);
+			} else {
+				for (var i = 0; i < items.length; i++) {
+					fn.call(s, items[i], i, items);
+				}
+			}
+		};
+		this.getIterator = function () {
+			return new dojo.collections.Iterator(items);
+		};
+		this.indexOf = function (obj) {
+			for (var i = 0; i < items.length; i++) {
+				if (items[i] == obj) {
+					return i;
+				}
+			}
+			return -1;
+		};
+		this.insert = function (i, obj) {
+			items.splice(i, 0, obj);
+			this.count = items.length;
+		};
+		this.item = function (i) {
+			return items[i];
+		};
+		this.remove = function (obj) {
+			var i = this.indexOf(obj);
+			if (i >= 0) {
+				items.splice(i, 1);
+			}
+			this.count = items.length;
+		};
+		this.removeAt = function (i) {
+			items.splice(i, 1);
+			this.count = items.length;
+		};
+		this.reverse = function () {
+			items.reverse();
+		};
+		this.sort = function (fn) {
+			if (fn) {
+				items.sort(fn);
+			} else {
+				items.sort();
+			}
+		};
+		this.setByIndex = function (i, obj) {
+			items[i] = obj;
+			this.count = items.length;
+		};
+		this.toArray = function () {
+			return [].concat(items);
+		};
+		this.toString = function (delim) {
+			return items.join((delim || ","));
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/collections/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]}], ["provide", "dojo.collections.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]});
+	dojo.provide("dojo.collections.*");
+}});
+
+
 __CPAN_FILE__ src/collections/SortedList.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -62211,6 +117918,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.SortedList");
 dojo.require("dojo.collections.Collections");
 dojo.collections.SortedList = function (dictionary) {
@@ -62382,6 +118091,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.Graph");
 dojo.require("dojo.collections.Collections");
 dojo.experimental("dojo.collections.Graph");
@@ -62533,6 +118244,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.SkipList");
 dojo.require("dojo.collections.Collections");
 dojo.require("dojo.experimental");
@@ -62691,6 +118404,181 @@
 };
 
 
+__CPAN_FILE__ src/collections/SortedList.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.SortedList"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.SortedList");
+	dojo.require("dojo.collections.Collections");
+	dojo.collections.SortedList = function (dictionary) {
+		var _this = this;
+		var items = {};
+		var q = [];
+		var sorter = function (a, b) {
+			if (a.key > b.key) {
+				return 1;
+			}
+			if (a.key < b.key) {
+				return -1;
+			}
+			return 0;
+		};
+		var build = function () {
+			q = [];
+			var e = _this.getIterator();
+			while (!e.atEnd()) {
+				q.push(e.get());
+			}
+			q.sort(sorter);
+		};
+		var testObject = {};
+		this.count = q.length;
+		this.add = function (k, v) {
+			if (!items[k]) {
+				items[k] = new dojo.collections.DictionaryEntry(k, v);
+				this.count = q.push(items[k]);
+				q.sort(sorter);
+			}
+		};
+		this.clear = function () {
+			items = {};
+			q = [];
+			this.count = q.length;
+		};
+		this.clone = function () {
+			return new dojo.collections.SortedList(this);
+		};
+		this.contains = this.containsKey = function (k) {
+			if (testObject[k]) {
+				return false;
+			}
+			return (items[k] != null);
+		};
+		this.containsValue = function (o) {
+			var e = this.getIterator();
+			while (!e.atEnd()) {
+				var item = e.get();
+				if (item.value == o) {
+					return true;
+				}
+			}
+			return false;
+		};
+		this.copyTo = function (arr, i) {
+			var e = this.getIterator();
+			var idx = i;
+			while (!e.atEnd()) {
+				arr.splice(idx, 0, e.get());
+				idx++;
+			}
+		};
+		this.entry = function (k) {
+			return items[k];
+		};
+		this.forEach = function (fn, scope) {
+			var s = scope || dj_global;
+			if (Array.forEach) {
+				Array.forEach(q, fn, s);
+			} else {
+				for (var i = 0; i < q.length; i++) {
+					fn.call(s, q[i], i, q);
+				}
+			}
+		};
+		this.getByIndex = function (i) {
+			return q[i].valueOf();
+		};
+		this.getIterator = function () {
+			return new dojo.collections.DictionaryIterator(items);
+		};
+		this.getKey = function (i) {
+			return q[i].key;
+		};
+		this.getKeyList = function () {
+			var arr = [];
+			var e = this.getIterator();
+			while (!e.atEnd()) {
+				arr.push(e.get().key);
+			}
+			return arr;
+		};
+		this.getValueList = function () {
+			var arr = [];
+			var e = this.getIterator();
+			while (!e.atEnd()) {
+				arr.push(e.get().value);
+			}
+			return arr;
+		};
+		this.indexOfKey = function (k) {
+			for (var i = 0; i < q.length; i++) {
+				if (q[i].key == k) {
+					return i;
+				}
+			}
+			return -1;
+		};
+		this.indexOfValue = function (o) {
+			for (var i = 0; i < q.length; i++) {
+				if (q[i].value == o) {
+					return i;
+				}
+			}
+			return -1;
+		};
+		this.item = function (k) {
+			if (k in items && !testObject[k]) {
+				return items[k].valueOf();
+			}
+			return undefined;
+		};
+		this.remove = function (k) {
+			delete items[k];
+			build();
+			this.count = q.length;
+		};
+		this.removeAt = function (i) {
+			delete items[q[i].key];
+			build();
+			this.count = q.length;
+		};
+		this.replace = function (k, v) {
+			if (!items[k]) {
+				this.add(k, v);
+				return false;
+			} else {
+				items[k] = new dojo.collections.DictionaryEntry(k, v);
+				q.sort(sorter);
+				return true;
+			}
+		};
+		this.setByIndex = function (i, o) {
+			items[q[i].key].value = o;
+			build();
+			this.count = q.length;
+		};
+		if (dictionary) {
+			var e = dictionary.getIterator();
+			while (!e.atEnd()) {
+				var item = e.get();
+				q[q.length] = items[item.key] = new dojo.collections.DictionaryEntry(item.key, item.value);
+			}
+			q.sort(sorter);
+		}
+	};
+}});
+
+
 __CPAN_FILE__ src/collections/BinaryTree.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -62702,6 +118590,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.BinaryTree");
 dojo.require("dojo.collections.Collections");
 dojo.require("dojo.experimental");
@@ -62948,6 +118838,102 @@
 dojo.collections.BinaryTree.TraversalMethods = {Preorder:1, Inorder:2, Postorder:3};
 
 
+__CPAN_FILE__ src/collections/Collections.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Collections"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Collections");
+	dojo.collections.DictionaryEntry = function (k, v) {
+		this.key = k;
+		this.value = v;
+		this.valueOf = function () {
+			return this.value;
+		};
+		this.toString = function () {
+			return String(this.value);
+		};
+	};
+	dojo.collections.Iterator = function (arr) {
+		var a = arr;
+		var position = 0;
+		this.element = a[position] || null;
+		this.atEnd = function () {
+			return (position >= a.length);
+		};
+		this.get = function () {
+			if (this.atEnd()) {
+				return null;
+			}
+			this.element = a[position++];
+			return this.element;
+		};
+		this.map = function (fn, scope) {
+			var s = scope || dj_global;
+			if (Array.map) {
+				return Array.map(a, fn, s);
+			} else {
+				var arr = [];
+				for (var i = 0; i < a.length; i++) {
+					arr.push(fn.call(s, a[i]));
+				}
+				return arr;
+			}
+		};
+		this.reset = function () {
+			position = 0;
+			this.element = a[position];
+		};
+	};
+	dojo.collections.DictionaryIterator = function (obj) {
+		var a = [];
+		var testObject = {};
+		for (var p in obj) {
+			if (!testObject[p]) {
+				a.push(obj[p]);
+			}
+		}
+		var position = 0;
+		this.element = a[position] || null;
+		this.atEnd = function () {
+			return (position >= a.length);
+		};
+		this.get = function () {
+			if (this.atEnd()) {
+				return null;
+			}
+			this.element = a[position++];
+			return this.element;
+		};
+		this.map = function (fn, scope) {
+			var s = scope || dj_global;
+			if (Array.map) {
+				return Array.map(a, fn, s);
+			} else {
+				var arr = [];
+				for (var i = 0; i < a.length; i++) {
+					arr.push(fn.call(s, a[i]));
+				}
+				return arr;
+			}
+		};
+		this.reset = function () {
+			position = 0;
+			this.element = a[position];
+		};
+	};
+}});
+
+
 __CPAN_FILE__ src/collections/ArrayList.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -62959,6 +118945,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.collections.ArrayList");
 dojo.require("dojo.collections.Collections");
 dojo.collections.ArrayList = function (arr) {
@@ -63062,7 +119050,630 @@
 };
 
 
+__CPAN_FILE__ src/collections/Set.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Set"], ["require", "dojo.collections.Collections"], ["require", "dojo.collections.ArrayList"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.Set");
+	dojo.require("dojo.collections.Collections");
+	dojo.require("dojo.collections.ArrayList");
+	dojo.collections.Set = new function () {
+		this.union = function (setA, setB) {
+			if (setA.constructor == Array) {
+				var setA = new dojo.collections.ArrayList(setA);
+			}
+			if (setB.constructor == Array) {
+				var setB = new dojo.collections.ArrayList(setB);
+			}
+			if (!setA.toArray || !setB.toArray) {
+				dojo.raise("Set operations can only be performed on array-based collections.");
+			}
+			var result = new dojo.collections.ArrayList(setA.toArray());
+			var e = setB.getIterator();
+			while (!e.atEnd()) {
+				var item = e.get();
+				if (!result.contains(item)) {
+					result.add(item);
+				}
+			}
+			return result;
+		};
+		this.intersection = function (setA, setB) {
+			if (setA.constructor == Array) {
+				var setA = new dojo.collections.ArrayList(setA);
+			}
+			if (setB.constructor == Array) {
+				var setB = new dojo.collections.ArrayList(setB);
+			}
+			if (!setA.toArray || !setB.toArray) {
+				dojo.raise("Set operations can only be performed on array-based collections.");
+			}
+			var result = new dojo.collections.ArrayList();
+			var e = setB.getIterator();
+			while (!e.atEnd()) {
+				var item = e.get();
+				if (setA.contains(item)) {
+					result.add(item);
+				}
+			}
+			return result;
+		};
+		this.difference = function (setA, setB) {
+			if (setA.constructor == Array) {
+				var setA = new dojo.collections.ArrayList(setA);
+			}
+			if (setB.constructor == Array) {
+				var setB = new dojo.collections.ArrayList(setB);
+			}
+			if (!setA.toArray || !setB.toArray) {
+				dojo.raise("Set operations can only be performed on array-based collections.");
+			}
+			var result = new dojo.collections.ArrayList();
+			var e = setA.getIterator();
+			while (!e.atEnd()) {
+				var item = e.get();
+				if (!setB.contains(item)) {
+					result.add(item);
+				}
+			}
+			return result;
+		};
+		this.isSubSet = function (setA, setB) {
+			if (setA.constructor == Array) {
+				var setA = new dojo.collections.ArrayList(setA);
+			}
+			if (setB.constructor == Array) {
+				var setB = new dojo.collections.ArrayList(setB);
+			}
+			if (!setA.toArray || !setB.toArray) {
+				dojo.raise("Set operations can only be performed on array-based collections.");
+			}
+			var e = setA.getIterator();
+			while (!e.atEnd()) {
+				if (!setB.contains(e.get())) {
+					return false;
+				}
+			}
+			return true;
+		};
+		this.isSuperSet = function (setA, setB) {
+			if (setA.constructor == Array) {
+				var setA = new dojo.collections.ArrayList(setA);
+			}
+			if (setB.constructor == Array) {
+				var setB = new dojo.collections.ArrayList(setB);
+			}
+			if (!setA.toArray || !setB.toArray) {
+				dojo.raise("Set operations can only be performed on array-based collections.");
+			}
+			var e = setB.getIterator();
+			while (!e.atEnd()) {
+				if (!setA.contains(e.get())) {
+					return false;
+				}
+			}
+			return true;
+		};
+	}();
+}});
+
+
+__CPAN_FILE__ src/collections/SkipList.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.collections.SkipList"], ["require", "dojo.collections.Collections"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.collections.SkipList");
+	dojo.require("dojo.collections.Collections");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.collections.SkipList");
+	dojo.collections.SkipList = function () {
+		function node(height, val) {
+			this.value = val;
+			this.height = height;
+			this.nodes = new nodeList(height);
+			this.compare = function (val) {
+				if (this.value > val) {
+					return 1;
+				}
+				if (this.value < val) {
+					return -1;
+				}
+				return 0;
+			};
+			this.incrementHeight = function () {
+				this.nodes.incrementHeight();
+				this.height++;
+			};
+			this.decrementHeight = function () {
+				this.nodes.decrementHeight();
+				this.height--;
+			};
+		}
+		function nodeList(height) {
+			var arr = [];
+			this.height = height;
+			for (var i = 0; i < height; i++) {
+				arr[i] = null;
+			}
+			this.item = function (i) {
+				return arr[i];
+			};
+			this.incrementHeight = function () {
+				this.height++;
+				arr[this.height] = null;
+			};
+			this.decrementHeight = function () {
+				arr.splice(arr.length - 1, 1);
+				this.height--;
+			};
+		}
+		function iterator(list) {
+			this.element = list.head;
+			this.atEnd = function () {
+				return (this.element == null);
+			};
+			this.get = function () {
+				if (this.atEnd()) {
+					return null;
+				}
+				this.element = this.element.nodes[0];
+				return this.element;
+			};
+			this.reset = function () {
+				this.element = list.head;
+			};
+		}
+		function chooseRandomHeight(max) {
+			var level = 1;
+			while (Math.random() < PROB && level < max) {
+				level++;
+			}
+			return level;
+		}
+		var PROB = 0.5;
+		var comparisons = 0;
+		this.head = new node(1);
+		this.count = 0;
+		this.add = function (val) {
+			var updates = [];
+			var current = this.head;
+			for (var i = this.head.height; i >= 0; i--) {
+				if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) {
+					comparisons++;
+				}
+				while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) {
+					current = current.nodes[i];
+					comparisons++;
+				}
+				updates[i] = current;
+			}
+			if (current.nodes[0] != null && current.nodes[0].compare(val) == 0) {
+				return;
+			}
+			var n = new node(val, chooseRandomHeight(this.head.height + 1));
+			this.count++;
+			if (n.height > this.head.height) {
+				this.head.incrementHeight();
+				this.head.nodes[this.head.height - 1] = n;
+			}
+			for (i = 0; i < n.height; i++) {
+				if (i < updates.length) {
+					n.nodes[i] = updates[i].nodes[i];
+					updates[i].nodes[i] = n;
+				}
+			}
+		};
+		this.contains = function (val) {
+			var current = this.head;
+			var i;
+			for (i = this.head.height - 1; i >= 0; i--) {
+				while (current.item(i) != null) {
+					comparisons++;
+					var result = current.nodes[i].compare(val);
+					if (result == 0) {
+						return true;
+					} else {
+						if (result < 0) {
+							current = current.nodes[i];
+						} else {
+							break;
+						}
+					}
+				}
+			}
+			return false;
+		};
+		this.getIterator = function () {
+			return new iterator(this);
+		};
+		this.remove = function (val) {
+			var updates = [];
+			var current = this.head;
+			for (var i = this.head.height - 1; i >= 0; i--) {
+				if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) {
+					comparisons++;
+				}
+				while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) {
+					current = current.nodes[i];
+					comparisons++;
+				}
+				updates[i] = current;
+			}
+			current = current.nodes[0];
+			if (current != null && current.compare(val) == 0) {
+				this.count--;
+				for (var i = 0; i < this.head.height; i++) {
+					if (updates[i].nodes[i] != current) {
+						break;
+					} else {
+						updates[i].nodes[i] = current.nodes[i];
+					}
+				}
+				if (this.head.nodes[this.head.height - 1] == null) {
+					this.head.decrementHeight();
+				}
+			}
+		};
+		this.resetComparisons = function () {
+			comparisons = 0;
+		};
+	};
+}});
+
+
 __CPAN_DIR__ src/xml
+__CPAN_FILE__ src/xml/XslTransform.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.xml.XslTransform"]], definePackage:function (dojo) {
+	dojo.provide("dojo.xml.XslTransform");
+	dojo.xml.XslTransform = function (xsltUri) {
+		dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support).");
+		var IS_IE = dojo.render.html.ie;
+		var ACTIVEX_DOMS = ["Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"];
+		var ACTIVEX_FT_DOMS = ["Msxml2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.4.0", "MSXML2.FreeThreadedDOMDocument.3.0"];
+		var ACTIVEX_TEMPLATES = ["Msxml2.XSLTemplate.5.0", "Msxml2.XSLTemplate.4.0", "MSXML2.XSLTemplate.3.0"];
+		function getActiveXImpl(activeXArray) {
+			for (var i = 0; i < activeXArray.length; i++) {
+				try {
+					var testObj = new ActiveXObject(activeXArray[i]);
+					if (testObj) {
+						return activeXArray[i];
+					}
+				}
+				catch (e) {
+				}
+			}
+			dojo.raise("Could not find an ActiveX implementation in:\n\n " + activeXArray);
+		}
+		if (xsltUri == null || xsltUri == undefined) {
+			dojo.raise("You must pass the URI String for the XSL file to be used!");
+			return false;
+		}
+		var xsltDocument = null;
+		var xsltProcessor = null;
+		if (IS_IE) {
+			xsltDocument = new ActiveXObject(getActiveXImpl(ACTIVEX_FT_DOMS));
+			xsltDocument.async = false;
+		} else {
+			xsltProcessor = new XSLTProcessor();
+			xsltDocument = document.implementation.createDocument("", "", null);
+			xsltDocument.addEventListener("load", onXslLoad, false);
+		}
+		xsltDocument.load(xsltUri);
+		if (IS_IE) {
+			var xslt = new ActiveXObject(getActiveXImpl(ACTIVEX_TEMPLATES));
+			xslt.stylesheet = xsltDocument;
+			xsltProcessor = xslt.createProcessor();
+		}
+		function onXslLoad() {
+			xsltProcessor.importStylesheet(xsltDocument);
+		}
+		function getResultDom(xmlDoc, params) {
+			if (IS_IE) {
+				addIeParams(params);
+				var result = getIeResultDom(xmlDoc);
+				removeIeParams(params);
+				return result;
+			} else {
+				return getMozillaResultDom(xmlDoc, params);
+			}
+		}
+		function addIeParams(params) {
+			if (!params) {
+				return;
+			}
+			for (var i = 0; i < params.length; i++) {
+				xsltProcessor.addParameter(params[i][0], params[i][1]);
+			}
+		}
+		function removeIeParams(params) {
+			if (!params) {
+				return;
+			}
+			for (var i = 0; i < params.length; i++) {
+				xsltProcessor.addParameter(params[i][0], "");
+			}
+		}
+		function getIeResultDom(xmlDoc) {
+			xsltProcessor.input = xmlDoc;
+			var outDoc = new ActiveXObject(getActiveXImpl(ACTIVEX_DOMS));
+			outDoc.async = false;
+			outDoc.validateOnParse = false;
+			xsltProcessor.output = outDoc;
+			xsltProcessor.transform();
+			if (outDoc.parseError.errorCode != 0) {
+				var err = outDoc.parseError;
+				dojo.raise("err.errorCode: " + err.errorCode + "\n\nerr.reason: " + err.reason + "\n\nerr.url: " + err.url + "\n\nerr.srcText: " + err.srcText);
+			}
+			return outDoc;
+		}
+		function getIeResultStr(xmlDoc, params) {
+			xsltProcessor.input = xmlDoc;
+			xsltProcessor.transform();
+			return xsltProcessor.output;
+		}
+		function addMozillaParams(params) {
+			if (!params) {
+				return;
+			}
+			for (var i = 0; i < params.length; i++) {
+				xsltProcessor.setParameter(null, params[i][0], params[i][1]);
+			}
+		}
+		function getMozillaResultDom(xmlDoc, params) {
+			addMozillaParams(params);
+			var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
+			xsltProcessor.clearParameters();
+			return resultDoc;
+		}
+		function getMozillaResultStr(xmlDoc, params, parentDoc) {
+			addMozillaParams(params);
+			var resultDoc = xsltProcessor.transformToFragment(xmlDoc, parentDoc);
+			var serializer = new XMLSerializer();
+			xsltProcessor.clearParameters();
+			return serializer.serializeToString(resultDoc);
+		}
+		this.getResultString = function (xmlDoc, params, parentDoc) {
+			var content = null;
+			if (IS_IE) {
+				addIeParams(params);
+				content = getIeResultStr(xmlDoc, params);
+				removeIeParams(params);
+			} else {
+				content = getMozillaResultStr(xmlDoc, params, parentDoc);
+			}
+			return content;
+		};
+		this.transformToContentPane = function (xmlDoc, params, contentPane, parentDoc) {
+			var content = this.getResultString(xmlDoc, params, parentDoc);
+			contentPane.setContent(content);
+		};
+		this.transformToRegion = function (xmlDoc, params, region, parentDoc) {
+			try {
+				var content = this.getResultString(xmlDoc, params, parentDoc);
+				region.innerHTML = content;
+			}
+			catch (e) {
+				dojo.raise(e.message + "\n\n xsltUri: " + xsltUri);
+			}
+		};
+		this.transformToDocument = function (xmlDoc, params) {
+			return getResultDom(xmlDoc, params);
+		};
+		this.transformToWindow = function (xmlDoc, params, windowDoc, parentDoc) {
+			try {
+				windowDoc.open();
+				windowDoc.write(this.getResultString(xmlDoc, params, parentDoc));
+				windowDoc.close();
+			}
+			catch (e) {
+				dojo.raise(e.message + "\n\n xsltUri: " + xsltUri);
+			}
+		};
+	};
+}});
+
+
+__CPAN_FILE__ src/xml/Parse.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.xml.Parse"], ["require", "dojo.dom"]], definePackage:function (dojo) {
+	dojo.provide("dojo.xml.Parse");
+	dojo.require("dojo.dom");
+	dojo.xml.Parse = function () {
+		var isIE = ((dojo.render.html.capable) && (dojo.render.html.ie));
+		function getTagName(node) {
+			try {
+				return node.tagName.toLowerCase();
+			}
+			catch (e) {
+				return "";
+			}
+		}
+		function getDojoTagName(node) {
+			var tagName = getTagName(node);
+			if (!tagName) {
+				return "";
+			}
+			if ((dojo.widget) && (dojo.widget.tags[tagName])) {
+				return tagName;
+			}
+			var p = tagName.indexOf(":");
+			if (p >= 0) {
+				return tagName;
+			}
+			if (tagName.substr(0, 5) == "dojo:") {
+				return tagName;
+			}
+			if (dojo.render.html.capable && dojo.render.html.ie && node.scopeName != "HTML") {
+				return node.scopeName.toLowerCase() + ":" + tagName;
+			}
+			if (tagName.substr(0, 4) == "dojo") {
+				return "dojo:" + tagName.substring(4);
+			}
+			var djt = node.getAttribute("dojoType") || node.getAttribute("dojotype");
+			if (djt) {
+				if (djt.indexOf(":") < 0) {
+					djt = "dojo:" + djt;
+				}
+				return djt.toLowerCase();
+			}
+			djt = node.getAttributeNS && node.getAttributeNS(dojo.dom.dojoml, "type");
+			if (djt) {
+				return "dojo:" + djt.toLowerCase();
+			}
+			try {
+				djt = node.getAttribute("dojo:type");
+			}
+			catch (e) {
+			}
+			if (djt) {
+				return "dojo:" + djt.toLowerCase();
+			}
+			if ((dj_global["djConfig"]) && (!djConfig["ignoreClassNames"])) {
+				var classes = node.className || node.getAttribute("class");
+				if ((classes) && (classes.indexOf) && (classes.indexOf("dojo-") != -1)) {
+					var aclasses = classes.split(" ");
+					for (var x = 0, c = aclasses.length; x < c; x++) {
+						if (aclasses[x].slice(0, 5) == "dojo-") {
+							return "dojo:" + aclasses[x].substr(5).toLowerCase();
+						}
+					}
+				}
+			}
+			return "";
+		}
+		this.parseElement = function (node, hasParentNodeSet, optimizeForDojoML, thisIdx) {
+			var tagName = getTagName(node);
+			if (isIE && tagName.indexOf("/") == 0) {
+				return null;
+			}
+			try {
+				var attr = node.getAttribute("parseWidgets");
+				if (attr && attr.toLowerCase() == "false") {
+					return {};
+				}
+			}
+			catch (e) {
+			}
+			var process = true;
+			if (optimizeForDojoML) {
+				var dojoTagName = getDojoTagName(node);
+				tagName = dojoTagName || tagName;
+				process = Boolean(dojoTagName);
+			}
+			var parsedNodeSet = {};
+			parsedNodeSet[tagName] = [];
+			var pos = tagName.indexOf(":");
+			if (pos > 0) {
+				var ns = tagName.substring(0, pos);
+				parsedNodeSet["ns"] = ns;
+				if ((dojo.ns) && (!dojo.ns.allow(ns))) {
+					process = false;
+				}
+			}
+			if (process) {
+				var attributeSet = this.parseAttributes(node);
+				for (var attr in attributeSet) {
+					if ((!parsedNodeSet[tagName][attr]) || (typeof parsedNodeSet[tagName][attr] != "array")) {
+						parsedNodeSet[tagName][attr] = [];
+					}
+					parsedNodeSet[tagName][attr].push(attributeSet[attr]);
+				}
+				parsedNodeSet[tagName].nodeRef = node;
+				parsedNodeSet.tagName = tagName;
+				parsedNodeSet.index = thisIdx || 0;
+			}
+			var count = 0;
+			for (var i = 0; i < node.childNodes.length; i++) {
+				var tcn = node.childNodes.item(i);
+				switch (tcn.nodeType) {
+				  case dojo.dom.ELEMENT_NODE:
+					var ctn = getDojoTagName(tcn) || getTagName(tcn);
+					if (!parsedNodeSet[ctn]) {
+						parsedNodeSet[ctn] = [];
+					}
+					parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count));
+					if ((tcn.childNodes.length == 1) && (tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)) {
+						parsedNodeSet[ctn][parsedNodeSet[ctn].length - 1].value = tcn.childNodes.item(0).nodeValue;
+					}
+					count++;
+					break;
+				  case dojo.dom.TEXT_NODE:
+					if (node.childNodes.length == 1) {
+						parsedNodeSet[tagName].push({value:node.childNodes.item(0).nodeValue});
+					}
+					break;
+				  default:
+					break;
+				}
+			}
+			return parsedNodeSet;
+		};
+		this.parseAttributes = function (node) {
+			var parsedAttributeSet = {};
+			var atts = node.attributes;
+			var attnode, i = 0;
+			while ((attnode = atts[i++])) {
+				if (isIE) {
+					if (!attnode) {
+						continue;
+					}
+					if ((typeof attnode == "object") && (typeof attnode.nodeValue == "undefined") || (attnode.nodeValue == null) || (attnode.nodeValue == "")) {
+						continue;
+					}
+				}
+				var nn = attnode.nodeName.split(":");
+				nn = (nn.length == 2) ? nn[1] : attnode.nodeName;
+				parsedAttributeSet[nn] = {value:attnode.nodeValue};
+			}
+			return parsedAttributeSet;
+		};
+	};
+}});
+
+
 __CPAN_FILE__ src/xml/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -63074,11 +119685,33 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.xml.Parse");
 dojo.kwCompoundRequire({common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]});
 dojo.provide("dojo.xml.*");
 
 
+__CPAN_FILE__ src/xml/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.xml.Parse"], ["kwCompoundRequire", {common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]}], ["provide", "dojo.xml.*"]], definePackage:function (dojo) {
+	dojo.require("dojo.xml.Parse");
+	dojo.kwCompoundRequire({common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]});
+	dojo.provide("dojo.xml.*");
+}});
+
+
 __CPAN_FILE__ src/xml/XslTransform.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -63090,6 +119723,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.xml.XslTransform");
 dojo.xml.XslTransform = function (xsltUri) {
 	dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support).");
@@ -63249,6 +119884,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.xml.Parse");
 dojo.require("dojo.dom");
 dojo.xml.Parse = function () {
@@ -63415,6 +120052,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.matrix");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.math.*");
@@ -63552,6 +120191,1005 @@
 }});
 
 
+__CPAN_FILE__ src/gfx/Colorspace.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.Colorspace"], ["require", "dojo.lang.common"], ["require", "dojo.math.matrix"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.Colorspace");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.math.matrix");
+	dojo.gfx.Colorspace = function () {
+		this.whitePoint = "D65";
+		this.stdObserver = "10";
+		this.chromaticAdaptationAlg = "bradford";
+		this.RGBWorkingSpace = "s_rgb";
+		this.useApproxCIELabMapping = 1;
+		this.chainMaps = {"RGB_to_xyY":["XYZ"], "xyY_to_RGB":["XYZ"], "RGB_to_Lab":["XYZ"], "Lab_to_RGB":["XYZ"], "RGB_to_LCHab":["XYZ", "Lab"], "LCHab_to_RGB":["Lab"], "xyY_to_Lab":["XYZ"], "Lab_to_xyY":["XYZ"], "XYZ_to_LCHab":["Lab"], "LCHab_to_XYZ":["Lab"], "xyY_to_LCHab":["XYZ", "Lab"], "LCHab_to_xyY":["Lab", "XYZ"], "RGB_to_Luv":["XYZ"], "Luv_to_RGB":["XYZ"], "xyY_to_Luv":["XYZ"], "Luv_to_xyY":["XYZ"], "Lab_to_Luv":["XYZ"], "Luv_to_Lab":["XYZ"], "LCHab_to_Luv":["Lab", "XYZ"], "Luv_to_LCHab":["XYZ", "Lab"], "RGB_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_RGB":["Luv", "XYZ"], "XYZ_to_LCHuv":["Luv"], "LCHuv_to_XYZ":["Luv"], "xyY_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_xyY":["Luv", "XYZ"], "Lab_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_Lab":["Luv", "XYZ"], "LCHab_to_LCHuv":["Lab", "XYZ", "Luv"], "LCHuv_to_LCHab":["Luv", "XYZ", "Lab"], "XYZ_to_CMY":["RGB"], "CMY_to_XYZ":["RGB"], "xyY_to_CMY":["RGB"], "CMY_to_xyY":["RGB"], "Lab_to_CMY":["RGB"], "CMY_to_Lab":["RGB"], "LCHab_to_CMY":["RGB"], "CMY_to_LCHab":["RGB"], "Luv_to_CMY":["RGB"], "CMY_to_Luv":["RGB"], "LCHuv_to_CMY":["RGB"], "CMY_to_LCHuv":["RGB"], "XYZ_to_HSL":["RGB"], "HSL_to_XYZ":["RGB"], "xyY_to_HSL":["RGB"], "HSL_to_xyY":["RGB"], "Lab_to_HSL":["RGB"], "HSL_to_Lab":["RGB"], "LCHab_to_HSL":["RGB"], "HSL_to_LCHab":["RGB"], "Luv_to_HSL":["RGB"], "HSL_to_Luv":["RGB"], "LCHuv_to_HSL":["RGB"], "HSL_to_LCHuv":["RGB"], "CMY_to_HSL":["RGB"], "HSL_to_CMY":["RGB"], "CMYK_to_HSL":["RGB"], "HSL_to_CMYK":["RGB"], "XYZ_to_HSV":["RGB"], "HSV_to_XYZ":["RGB"], "xyY_to_HSV":["RGB"], "HSV_to_xyY":["RGB"], "Lab_to_HSV":["RGB"], "HSV_to_Lab":["RGB"], "LCHab_to_HSV":["RGB"], "HSV_to_LCHab":["RGB"], "Luv_to_HSV":["RGB"], "HSV_to_Luv":["RGB"], "LCHuv_to_HSV":["RGB"], "HSV_to_LCHuv":["RGB"], "CMY_to_HSV":["RGB"], "HSV_to_CMY":["RGB"], "CMYK_to_HSV":["RGB"], "HSV_to_CMYK":["RGB"], "HSL_to_HSV":["RGB"], "HSV_to_HSL":["RGB"], "XYZ_to_CMYK":["RGB"], "CMYK_to_XYZ":["RGB"], "xyY_to_CMYK":["RGB"], "CMYK_to_xyY":["RGB"], "Lab_to_CMYK":["RGB"], "CMYK_to_Lab":["RGB"], "LCHab_to_CMYK":["RGB"], "CMYK_to_LCHab":["RGB"], "Luv_to_CMYK":["RGB"], "CMYK_to_Luv":["RGB"], "LCHuv_to_CMYK":["RGB"], "CMYK_to_LCHuv":["RGB"]};
+		return this;
+	};
+	dojo.gfx.Colorspace.prototype.convert = function (col, model_from, model_to) {
+		var k = model_from + "_to_" + model_to;
+		if (this[k]) {
+			return this[k](col);
+		} else {
+			if (this.chainMaps[k]) {
+				var cur = model_from;
+				var models = this.chainMaps[k].concat();
+				models.push(model_to);
+				for (var i = 0; i < models.length; i++) {
+					col = this.convert(col, cur, models[i]);
+					cur = models[i];
+				}
+				return col;
+			} else {
+				dojo.debug("Can't convert from " + model_from + " to " + model_to);
+			}
+		}
+	};
+	dojo.gfx.Colorspace.prototype.munge = function (keys, args) {
+		if (dojo.lang.isArray(args[0])) {
+			args = args[0];
+		}
+		var out = new Array();
+		for (var i = 0; i < keys.length; i++) {
+			out[keys.charAt(i)] = args[i];
+		}
+		return out;
+	};
+	dojo.gfx.Colorspace.prototype.getWhitePoint = function () {
+		var x = 0;
+		var y = 0;
+		var t = 0;
+		switch (this.stdObserver) {
+		  case "2":
+			switch (this.whitePoint) {
+			  case "E":
+				x = 1 / 3;
+				y = 1 / 3;
+				t = 5400;
+				break;
+			  case "D50":
+				x = 0.34567;
+				y = 0.3585;
+				t = 5000;
+				break;
+			  case "D55":
+				x = 0.33242;
+				y = 0.34743;
+				t = 5500;
+				break;
+			  case "D65":
+				x = 0.31271;
+				y = 0.32902;
+				t = 6500;
+				break;
+			  case "D75":
+				x = 0.29902;
+				y = 0.31485;
+				t = 7500;
+				break;
+			  case "A":
+				x = 0.44757;
+				y = 0.40745;
+				t = 2856;
+				break;
+			  case "B":
+				x = 0.34842;
+				y = 0.35161;
+				t = 4874;
+				break;
+			  case "C":
+				x = 0.31006;
+				y = 0.31616;
+				t = 6774;
+				break;
+			  case "9300":
+				x = 0.2848;
+				y = 0.2932;
+				t = 9300;
+				break;
+			  case "F2":
+				x = 0.37207;
+				y = 0.37512;
+				t = 4200;
+				break;
+			  case "F7":
+				x = 0.31285;
+				y = 0.32918;
+				t = 6500;
+				break;
+			  case "F11":
+				x = 0.38054;
+				y = 0.37691;
+				t = 4000;
+				break;
+			  default:
+				dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver);
+			}
+			break;
+		  case "10":
+			switch (this.whitePoint) {
+			  case "E":
+				x = 1 / 3;
+				y = 1 / 3;
+				t = 5400;
+				break;
+			  case "D50":
+				x = 0.34773;
+				y = 0.35952;
+				t = 5000;
+				break;
+			  case "D55":
+				x = 0.33411;
+				y = 0.34877;
+				t = 5500;
+				break;
+			  case "D65":
+				x = 0.31382;
+				y = 0.331;
+				t = 6500;
+				break;
+			  case "D75":
+				x = 0.29968;
+				y = 0.3174;
+				t = 7500;
+				break;
+			  case "A":
+				x = 0.45117;
+				y = 0.40594;
+				t = 2856;
+				break;
+			  case "B":
+				x = 0.3498;
+				y = 0.3527;
+				t = 4874;
+				break;
+			  case "C":
+				x = 0.31039;
+				y = 0.31905;
+				t = 6774;
+				break;
+			  case "F2":
+				x = 0.37928;
+				y = 0.36723;
+				t = 4200;
+				break;
+			  case "F7":
+				x = 0.31565;
+				y = 0.32951;
+				t = 6500;
+				break;
+			  case "F11":
+				x = 0.38543;
+				y = 0.3711;
+				t = 4000;
+				break;
+			  default:
+				dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver);
+			}
+			break;
+		  default:
+			dojo.debug("Std. Observer " + this.strObserver + " isn't defined");
+		}
+		var z = 1 - x - y;
+		var wp = {"x":x, "y":y, "z":z, "t":t};
+		wp.Y = 1;
+		var XYZ = this.xyY_to_XYZ([wp.x, wp.y, wp.Y]);
+		wp.X = XYZ[0];
+		wp.Y = XYZ[1];
+		wp.Z = XYZ[2];
+		return wp;
+	};
+	dojo.gfx.Colorspace.prototype.getPrimaries = function () {
+		var m = [];
+		switch (this.RGBWorkingSpace) {
+		  case "adobe_rgb_1998":
+			m = [2.2, "D65", 0.64, 0.33, 0.297361, 0.21, 0.71, 0.627355, 0.15, 0.06, 0.075285];
+			break;
+		  case "apple_rgb":
+			m = [1.8, "D65", 0.625, 0.34, 0.244634, 0.28, 0.595, 0.672034, 0.155, 0.07, 0.083332];
+			break;
+		  case "best_rgb":
+			m = [2.2, "D50", 0.7347, 0.2653, 0.228457, 0.215, 0.775, 0.737352, 0.13, 0.035, 0.034191];
+			break;
+		  case "beta_rgb":
+			m = [2.2, "D50", 0.6888, 0.3112, 0.303273, 0.1986, 0.7551, 0.663786, 0.1265, 0.0352, 0.032941];
+			break;
+		  case "bruce_rgb":
+			m = [2.2, "D65", 0.64, 0.33, 0.240995, 0.28, 0.65, 0.683554, 0.15, 0.06, 0.075452];
+			break;
+		  case "cie_rgb":
+			m = [2.2, "E", 0.735, 0.265, 0.176204, 0.274, 0.717, 0.812985, 0.167, 0.009, 0.010811];
+			break;
+		  case "color_match_rgb":
+			m = [1.8, "D50", 0.63, 0.34, 0.274884, 0.295, 0.605, 0.658132, 0.15, 0.075, 0.066985];
+			break;
+		  case "don_rgb_4":
+			m = [2.2, "D50", 0.696, 0.3, 0.27835, 0.215, 0.765, 0.68797, 0.13, 0.035, 0.03368];
+			break;
+		  case "eci_rgb":
+			m = [1.8, "D50", 0.67, 0.33, 0.32025, 0.21, 0.71, 0.602071, 0.14, 0.08, 0.077679];
+			break;
+		  case "ekta_space_ps5":
+			m = [2.2, "D50", 0.695, 0.305, 0.260629, 0.26, 0.7, 0.734946, 0.11, 0.005, 0.004425];
+			break;
+		  case "ntsc_rgb":
+			m = [2.2, "C", 0.67, 0.33, 0.298839, 0.21, 0.71, 0.586811, 0.14, 0.08, 0.11435];
+			break;
+		  case "pal_secam_rgb":
+			m = [2.2, "D65", 0.64, 0.33, 0.222021, 0.29, 0.6, 0.706645, 0.15, 0.06, 0.071334];
+			break;
+		  case "pro_photo_rgb":
+			m = [1.8, "D50", 0.7347, 0.2653, 0.28804, 0.1596, 0.8404, 0.711874, 0.0366, 0.0001, 0.000086];
+			break;
+		  case "smpte-c_rgb":
+			m = [2.2, "D65", 0.63, 0.34, 0.212395, 0.31, 0.595, 0.701049, 0.155, 0.07, 0.086556];
+			break;
+		  case "s_rgb":
+			m = [2.2, "D65", 0.64, 0.33, 0.212656, 0.3, 0.6, 0.715158, 0.15, 0.06, 0.072186];
+			break;
+		  case "wide_gamut_rgb":
+			m = [2.2, "D50", 0.735, 0.265, 0.258187, 0.115, 0.826, 0.724938, 0.157, 0.018, 0.016875];
+			break;
+		  default:
+			dojo.debug("RGB working space " + this.RGBWorkingSpace + " isn't defined");
+		}
+		var p = {name:this.RGBWorkingSpace, gamma:m[0], wp:m[1], xr:m[2], yr:m[3], Yr:m[4], xg:m[5], yg:m[6], Yg:m[7], xb:m[8], yb:m[9], Yb:m[10]};
+		if (p.wp != this.whitePoint) {
+			var r = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xr, p.yr, p.Yr]), p.wp, this.whitePoint));
+			var g = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xg, p.yg, p.Yg]), p.wp, this.whitePoint));
+			var b = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xb, p.yb, p.Yb]), p.wp, this.whitePoint));
+			p.xr = r[0];
+			p.yr = r[1];
+			p.Yr = r[2];
+			p.xg = g[0];
+			p.yg = g[1];
+			p.Yg = g[2];
+			p.xb = b[0];
+			p.yb = b[1];
+			p.Yb = b[2];
+			p.wp = this.whitePoint;
+		}
+		p.zr = 1 - p.xr - p.yr;
+		p.zg = 1 - p.xg - p.yg;
+		p.zb = 1 - p.xb - p.yb;
+		return p;
+	};
+	dojo.gfx.Colorspace.prototype.epsilon = function () {
+		return this.useApproxCIELabMapping ? 0.008856 : 216 / 24289;
+	};
+	dojo.gfx.Colorspace.prototype.kappa = function () {
+		return this.useApproxCIELabMapping ? 903.3 : 24389 / 27;
+	};
+	dojo.gfx.Colorspace.prototype.XYZ_to_xyY = function () {
+		var src = this.munge("XYZ", arguments);
+		var sum = src.X + src.Y + src.Z;
+		if (sum == 0) {
+			var wp = this.getWhitePoint();
+			var x = wp.x;
+			var y = wp.y;
+		} else {
+			var x = src.X / sum;
+			var y = src.Y / sum;
+		}
+		var Y = src.Y;
+		return [x, y, Y];
+	};
+	dojo.gfx.Colorspace.prototype.xyY_to_XYZ = function () {
+		var src = this.munge("xyY", arguments);
+		if (src.y == 0) {
+			var X = 0;
+			var Y = 0;
+			var Z = 0;
+		} else {
+			var X = (src.x * src.Y) / src.y;
+			var Y = src.Y;
+			var Z = ((1 - src.x - src.y) * src.Y) / src.y;
+		}
+		return [X, Y, Z];
+	};
+	dojo.gfx.Colorspace.prototype.RGB_to_XYZ = function () {
+		var src = this.munge("RGB", arguments);
+		var m = this.getRGB_XYZ_Matrix();
+		var pr = this.getPrimaries();
+		if (this.RGBWorkingSpace == "s_rgb") {
+			var r = (src.R > 0.04045) ? Math.pow(((src.R + 0.055) / 1.055), 2.4) : src.R / 12.92;
+			var g = (src.G > 0.04045) ? Math.pow(((src.G + 0.055) / 1.055), 2.4) : src.G / 12.92;
+			var b = (src.B > 0.04045) ? Math.pow(((src.B + 0.055) / 1.055), 2.4) : src.B / 12.92;
+		} else {
+			var r = Math.pow(src.R, pr.gamma);
+			var g = Math.pow(src.G, pr.gamma);
+			var b = Math.pow(src.B, pr.gamma);
+		}
+		var XYZ = dojo.math.matrix.multiply([[r, g, b]], m);
+		return [XYZ[0][0], XYZ[0][1], XYZ[0][2]];
+	};
+	dojo.gfx.Colorspace.prototype.XYZ_to_RGB = function () {
+		var src = this.munge("XYZ", arguments);
+		var mi = this.getXYZ_RGB_Matrix();
+		var pr = this.getPrimaries();
+		var rgb = dojo.math.matrix.multiply([[src.X, src.Y, src.Z]], mi);
+		var r = rgb[0][0];
+		var g = rgb[0][1];
+		var b = rgb[0][2];
+		if (this.RGBWorkingSpace == "s_rgb") {
+			var R = (r > 0.0031308) ? (1.055 * Math.pow(r, 1 / 2.4)) - 0.055 : 12.92 * r;
+			var G = (g > 0.0031308) ? (1.055 * Math.pow(g, 1 / 2.4)) - 0.055 : 12.92 * g;
+			var B = (b > 0.0031308) ? (1.055 * Math.pow(b, 1 / 2.4)) - 0.055 : 12.92 * b;
+		} else {
+			var R = Math.pow(r, 1 / pr.gamma);
+			var G = Math.pow(g, 1 / pr.gamma);
+			var B = Math.pow(b, 1 / pr.gamma);
+		}
+		return [R, G, B];
+	};
+	dojo.gfx.Colorspace.prototype.XYZ_to_Lab = function () {
+		var src = this.munge("XYZ", arguments);
+		var wp = this.getWhitePoint();
+		var xr = src.X / wp.X;
+		var yr = src.Y / wp.Y;
+		var zr = src.Z / wp.Z;
+		var fx = (xr > this.epsilon()) ? Math.pow(xr, 1 / 3) : (this.kappa() * xr + 16) / 116;
+		var fy = (yr > this.epsilon()) ? Math.pow(yr, 1 / 3) : (this.kappa() * yr + 16) / 116;
+		var fz = (zr > this.epsilon()) ? Math.pow(zr, 1 / 3) : (this.kappa() * zr + 16) / 116;
+		var L = 116 * fy - 16;
+		var a = 500 * (fx - fy);
+		var b = 200 * (fy - fz);
+		return [L, a, b];
+	};
+	dojo.gfx.Colorspace.prototype.Lab_to_XYZ = function () {
+		var src = this.munge("Lab", arguments);
+		var wp = this.getWhitePoint();
+		var yr = (src.L > (this.kappa() * this.epsilon())) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa();
+		var fy = (yr > this.epsilon()) ? (src.L + 16) / 116 : (this.kappa() * yr + 16) / 116;
+		var fx = (src.a / 500) + fy;
+		var fz = fy - (src.b / 200);
+		var fxcube = Math.pow(fx, 3);
+		var fzcube = Math.pow(fz, 3);
+		var xr = (fxcube > this.epsilon()) ? fxcube : (116 * fx - 16) / this.kappa();
+		var zr = (fzcube > this.epsilon()) ? fzcube : (116 * fz - 16) / this.kappa();
+		var X = xr * wp.X;
+		var Y = yr * wp.Y;
+		var Z = zr * wp.Z;
+		return [X, Y, Z];
+	};
+	dojo.gfx.Colorspace.prototype.Lab_to_LCHab = function () {
+		var src = this.munge("Lab", arguments);
+		var L = src.L;
+		var C = Math.pow(src.a * src.a + src.b * src.b, 0.5);
+		var H = Math.atan2(src.b, src.a) * (180 / Math.PI);
+		if (H < 0) {
+			H += 360;
+		}
+		if (H > 360) {
+			H -= 360;
+		}
+		return [L, C, H];
+	};
+	dojo.gfx.Colorspace.prototype.LCHab_to_Lab = function () {
+		var src = this.munge("LCH", arguments);
+		var H_rad = src.H * (Math.PI / 180);
+		var L = src.L;
+		var a = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5);
+		if ((90 < src.H) && (src.H < 270)) {
+			a = -a;
+		}
+		var b = Math.pow(Math.pow(src.C, 2) - Math.pow(a, 2), 0.5);
+		if (src.H > 180) {
+			b = -b;
+		}
+		return [L, a, b];
+	};
+	dojo.gfx.Colorspace.prototype.chromaticAdaptation = function (col, src_w, dst_w) {
+		col = this.munge("XYZ", [col]);
+		var old_wp = this.whitePoint;
+		this.whitePoint = src_w;
+		var wp_src = this.getWhitePoint();
+		this.whitePoint = dst_w;
+		var wp_dst = this.getWhitePoint();
+		this.whitePoint = old_wp;
+		switch (this.chromaticAdaptationAlg) {
+		  case "xyz_scaling":
+			var ma = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
+			var mai = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
+			break;
+		  case "bradford":
+			var ma = [[0.8951, -0.7502, 0.0389], [0.2664, 1.7135, -0.0685], [-0.1614, 0.0367, 1.0296]];
+			var mai = [[0.986993, 0.432305, -0.008529], [-0.147054, 0.51836, 0.040043], [0.159963, 0.049291, 0.968487]];
+			break;
+		  case "von_kries":
+			var ma = [[0.40024, -0.2263, 0], [0.7076, 1.16532, 0], [-0.08081, 0.0457, 0.91822]];
+			var mai = [[1.859936, 0.361191, 0], [-1.129382, 0.638812, 0], [0.219897, -0.000006, 1.089064]];
+			break;
+		  default:
+			dojo.debug("The " + this.chromaticAdaptationAlg + " chromatic adaptation algorithm matricies are not defined");
+		}
+		var domain_src = dojo.math.matrix.multiply([[wp_src.x, wp_src.y, wp_src.z]], ma);
+		var domain_dst = dojo.math.matrix.multiply([[wp_dst.x, wp_dst.y, wp_dst.z]], ma);
+		var centre = [[domain_dst[0][0] / domain_src[0][0], 0, 0], [0, domain_dst[0][1] / domain_src[0][1], 0], [0, 0, domain_dst[0][2] / domain_src[0][2]]];
+		var m = dojo.math.matrix.multiply(dojo.math.matrix.multiply(ma, centre), mai);
+		var dst = dojo.math.matrix.multiply([[col.X, col.Y, col.Z]], m);
+		return dst[0];
+	};
+	dojo.gfx.Colorspace.prototype.getRGB_XYZ_Matrix = function () {
+		var wp = this.getWhitePoint();
+		var pr = this.getPrimaries();
+		var Xr = pr.xr / pr.yr;
+		var Yr = 1;
+		var Zr = (1 - pr.xr - pr.yr) / pr.yr;
+		var Xg = pr.xg / pr.yg;
+		var Yg = 1;
+		var Zg = (1 - pr.xg - pr.yg) / pr.yg;
+		var Xb = pr.xb / pr.yb;
+		var Yb = 1;
+		var Zb = (1 - pr.xb - pr.yb) / pr.yb;
+		var m1 = [[Xr, Yr, Zr], [Xg, Yg, Zg], [Xb, Yb, Zb]];
+		var m2 = [[wp.X, wp.Y, wp.Z]];
+		var sm = dojo.math.matrix.multiply(m2, dojo.math.matrix.inverse(m1));
+		var Sr = sm[0][0];
+		var Sg = sm[0][1];
+		var Sb = sm[0][2];
+		var m4 = [[Sr * Xr, Sr * Yr, Sr * Zr], [Sg * Xg, Sg * Yg, Sg * Zg], [Sb * Xb, Sb * Yb, Sb * Zb]];
+		return m4;
+	};
+	dojo.gfx.Colorspace.prototype.getXYZ_RGB_Matrix = function () {
+		var m = this.getRGB_XYZ_Matrix();
+		return dojo.math.matrix.inverse(m);
+	};
+	dojo.gfx.Colorspace.prototype.XYZ_to_Luv = function () {
+		var src = this.munge("XYZ", arguments);
+		var wp = this.getWhitePoint();
+		var ud = (4 * src.X) / (src.X + 15 * src.Y + 3 * src.Z);
+		var vd = (9 * src.Y) / (src.X + 15 * src.Y + 3 * src.Z);
+		var udr = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z);
+		var vdr = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z);
+		var yr = src.Y / wp.Y;
+		var L = (yr > this.epsilon()) ? 116 * Math.pow(yr, 1 / 3) - 16 : this.kappa() * yr;
+		var u = 13 * L * (ud - udr);
+		var v = 13 * L * (vd - vdr);
+		return [L, u, v];
+	};
+	dojo.gfx.Colorspace.prototype.Luv_to_XYZ = function () {
+		var src = this.munge("Luv", arguments);
+		var wp = this.getWhitePoint();
+		var uz = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z);
+		var vz = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z);
+		var Y = (src.L > this.kappa() * this.epsilon()) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa();
+		var a = (1 / 3) * (((52 * src.L) / (src.u + 13 * src.L * uz)) - 1);
+		var b = -5 * Y;
+		var c = -(1 / 3);
+		var d = Y * (((39 * src.L) / (src.v + 13 * src.L * vz)) - 5);
+		var X = (d - b) / (a - c);
+		var Z = X * a + b;
+		return [X, Y, Z];
+	};
+	dojo.gfx.Colorspace.prototype.Luv_to_LCHuv = function () {
+		var src = this.munge("Luv", arguments);
+		var L = src.L;
+		var C = Math.pow(src.u * src.u + src.v * src.v, 0.5);
+		var H = Math.atan2(src.v, src.u) * (180 / Math.PI);
+		if (H < 0) {
+			H += 360;
+		}
+		if (H > 360) {
+			H -= 360;
+		}
+		return [L, C, H];
+	};
+	dojo.gfx.Colorspace.prototype.LCHuv_to_Luv = function () {
+		var src = this.munge("LCH", arguments);
+		var H_rad = src.H * (Math.PI / 180);
+		var L = src.L;
+		var u = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5);
+		var v = Math.pow(src.C * src.C - u * u, 0.5);
+		if ((90 < src.H) && (src.H < 270)) {
+			u *= -1;
+		}
+		if (src.H > 180) {
+			v *= -1;
+		}
+		return [L, u, v];
+	};
+	dojo.gfx.Colorspace.colorTemp_to_whitePoint = function (T) {
+		if (T < 4000) {
+			dojo.debug("Can't find a white point for temperatures under 4000K");
+			return [0, 0];
+		}
+		if (T > 25000) {
+			dojo.debug("Can't find a white point for temperatures over 25000K");
+			return [0, 0];
+		}
+		var T1 = T;
+		var T2 = T * T;
+		var T3 = T2 * T;
+		var ten9 = Math.pow(10, 9);
+		var ten6 = Math.pow(10, 6);
+		var ten3 = Math.pow(10, 3);
+		if (T <= 7000) {
+			var x = (-4.607 * ten9 / T3) + (2.9678 * ten6 / T2) + (0.09911 * ten3 / T) + 0.244063;
+		} else {
+			var x = (-2.0064 * ten9 / T3) + (1.9018 * ten6 / T2) + (0.24748 * ten3 / T) + 0.23704;
+		}
+		var y = -3 * x * x + 2.87 * x - 0.275;
+		return [x, y];
+	};
+	dojo.gfx.Colorspace.prototype.RGB_to_CMY = function () {
+		var src = this.munge("RGB", arguments);
+		var C = 1 - src.R;
+		var M = 1 - src.G;
+		var Y = 1 - src.B;
+		return [C, M, Y];
+	};
+	dojo.gfx.Colorspace.prototype.CMY_to_RGB = function () {
+		var src = this.munge("CMY", arguments);
+		var R = 1 - src.C;
+		var G = 1 - src.M;
+		var B = 1 - src.Y;
+		return [R, G, B];
+	};
+	dojo.gfx.Colorspace.prototype.RGB_to_CMYK = function () {
+		var src = this.munge("RGB", arguments);
+		var K = Math.min(1 - src.R, 1 - src.G, 1 - src.B);
+		var C = (1 - src.R - K) / (1 - K);
+		var M = (1 - src.G - K) / (1 - K);
+		var Y = (1 - src.B - K) / (1 - K);
+		return [C, M, Y, K];
+	};
+	dojo.gfx.Colorspace.prototype.CMYK_to_RGB = function () {
+		var src = this.munge("CMYK", arguments);
+		var R = 1 - Math.min(1, src.C * (1 - src.K) + src.K);
+		var G = 1 - Math.min(1, src.M * (1 - src.K) + src.K);
+		var B = 1 - Math.min(1, src.Y * (1 - src.K) + src.K);
+		return [R, G, B];
+	};
+	dojo.gfx.Colorspace.prototype.CMY_to_CMYK = function () {
+		var src = this.munge("CMY", arguments);
+		var K = Math.min(src.C, src.M, src.Y);
+		var C = (src.C - K) / (1 - K);
+		var M = (src.M - K) / (1 - K);
+		var Y = (src.Y - K) / (1 - K);
+		return [C, M, Y, K];
+	};
+	dojo.gfx.Colorspace.prototype.CMYK_to_CMY = function () {
+		var src = this.munge("CMYK", arguments);
+		var C = Math.min(1, src.C * (1 - src.K) + src.K);
+		var M = Math.min(1, src.M * (1 - src.K) + src.K);
+		var Y = Math.min(1, src.Y * (1 - src.K) + src.K);
+		return [C, M, Y];
+	};
+	dojo.gfx.Colorspace.prototype.RGB_to_HSV = function () {
+		var src = this.munge("RGB", arguments);
+		var min = Math.min(src.R, src.G, src.B);
+		var V = Math.max(src.R, src.G, src.B);
+		var delta = V - min;
+		var H = null;
+		var S = (V == 0) ? 0 : delta / V;
+		if (S == 0) {
+			H = 0;
+		} else {
+			if (src.R == V) {
+				H = 60 * (src.G - src.B) / delta;
+			} else {
+				if (src.G == V) {
+					H = 120 + 60 * (src.B - src.R) / delta;
+				} else {
+					if (src.B == V) {
+						H = 240 + 60 * (src.R - src.G) / delta;
+					}
+				}
+			}
+			if (H < 0) {
+				H += 360;
+			}
+		}
+		H = (H == 0) ? 360 : H;
+		return [H, S, V];
+	};
+	dojo.gfx.Colorspace.prototype.HSV_to_RGB = function () {
+		var src = this.munge("HSV", arguments);
+		if (src.H == 360) {
+			src.H = 0;
+		}
+		var r = null;
+		var g = null;
+		var b = null;
+		if (src.S == 0) {
+			var R = src.V;
+			var G = src.V;
+			var B = src.V;
+		} else {
+			var hTemp = src.H / 60;
+			var i = Math.floor(hTemp);
+			var f = hTemp - i;
+			var p = src.V * (1 - src.S);
+			var q = src.V * (1 - (src.S * f));
+			var t = src.V * (1 - (src.S * (1 - f)));
+			switch (i) {
+			  case 0:
+				R = src.V;
+				G = t;
+				B = p;
+				break;
+			  case 1:
+				R = q;
+				G = src.V;
+				B = p;
+				break;
+			  case 2:
+				R = p;
+				G = src.V;
+				B = t;
+				break;
+			  case 3:
+				R = p;
+				G = q;
+				B = src.V;
+				break;
+			  case 4:
+				R = t;
+				G = p;
+				B = src.V;
+				break;
+			  case 5:
+				R = src.V;
+				G = p;
+				B = q;
+				break;
+			}
+		}
+		return [R, G, B];
+	};
+	dojo.gfx.Colorspace.prototype.RGB_to_HSL = function () {
+		var src = this.munge("RGB", arguments);
+		var min = Math.min(src.R, src.G, src.B);
+		var max = Math.max(src.R, src.G, src.B);
+		var delta = max - min;
+		var H = 0;
+		var S = 0;
+		var L = (min + max) / 2;
+		if ((L > 0) && (L < 1)) {
+			S = delta / ((L < 0.5) ? (2 * L) : (2 - 2 * L));
+		}
+		if (delta > 0) {
+			if ((max == src.R) && (max != src.G)) {
+				H += (src.G - src.B) / delta;
+			}
+			if ((max == src.G) && (max != src.B)) {
+				H += (2 + (src.B - src.R) / delta);
+			}
+			if ((max == src.B) && (max != src.R)) {
+				H += (4 + (src.R - src.G) / delta);
+			}
+			H *= 60;
+		}
+		H = (H == 0) ? 360 : H;
+		return [H, S, L];
+	};
+	dojo.gfx.Colorspace.prototype.HSL_to_RGB = function () {
+		var src = this.munge("HSL", arguments);
+		while (src.H < 0) {
+			src.H += 360;
+		}
+		while (src.H >= 360) {
+			src.H -= 360;
+		}
+		var R = 0;
+		var G = 0;
+		var B = 0;
+		if (src.H < 120) {
+			R = (120 - src.H) / 60;
+			G = src.H / 60;
+			B = 0;
+		} else {
+			if (src.H < 240) {
+				R = 0;
+				G = (240 - src.H) / 60;
+				B = (src.H - 120) / 60;
+			} else {
+				R = (src.H - 240) / 60;
+				G = 0;
+				B = (360 - src.H) / 60;
+			}
+		}
+		R = 2 * src.S * Math.min(R, 1) + (1 - src.S);
+		G = 2 * src.S * Math.min(G, 1) + (1 - src.S);
+		B = 2 * src.S * Math.min(B, 1) + (1 - src.S);
+		if (src.L < 0.5) {
+			R = src.L * R;
+			G = src.L * G;
+			B = src.L * B;
+		} else {
+			R = (1 - src.L) * R + 2 * src.L - 1;
+			G = (1 - src.L) * G + 2 * src.L - 1;
+			B = (1 - src.L) * B + 2 * src.L - 1;
+		}
+		return [R, G, B];
+	};
+}});
+
+
+__CPAN_FILE__ src/gfx/path.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.path"], ["require", "dojo.math"], ["require", "dojo.gfx.shape"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.path");
+	dojo.require("dojo.math");
+	dojo.require("dojo.gfx.shape");
+	dojo.declare("dojo.gfx.path.Path", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true);
+		this.segments = [];
+		this.absolute = true;
+		this.last = {};
+		this.attach(rawNode);
+	}, setAbsoluteMode:function (mode) {
+		this.absolute = typeof (mode) == "string" ? (mode == "absolute") : mode;
+		return this;
+	}, getAbsoluteMode:function () {
+		return this.absolute;
+	}, getBoundingBox:function () {
+		return "l" in this.bbox ? {x:this.bbox.l, y:this.bbox.t, width:this.bbox.r - this.bbox.l, height:this.bbox.b - this.bbox.t} : null;
+	}, getLastPosition:function () {
+		return "x" in this.last ? this.last : null;
+	}, _updateBBox:function (x, y) {
+		if ("l" in this.bbox) {
+			if (this.bbox.l > x) {
+				this.bbox.l = x;
+			}
+			if (this.bbox.r < x) {
+				this.bbox.r = x;
+			}
+			if (this.bbox.t > y) {
+				this.bbox.t = y;
+			}
+			if (this.bbox.b < y) {
+				this.bbox.b = y;
+			}
+		} else {
+			this.bbox = {l:x, b:y, r:x, t:y};
+		}
+	}, _updateWithSegment:function (segment) {
+		var n = segment.args;
+		var l = n.length;
+		switch (segment.action) {
+		  case "M":
+		  case "L":
+		  case "C":
+		  case "S":
+		  case "Q":
+		  case "T":
+			for (var i = 0; i < l; i += 2) {
+				this._updateBBox(this.bbox, n[i], n[i + 1]);
+			}
+			this.last.x = n[l - 2];
+			this.last.y = n[l - 1];
+			this.absolute = true;
+			break;
+		  case "H":
+			for (var i = 0; i < l; ++i) {
+				this._updateBBox(this.bbox, n[i], this.last.y);
+			}
+			this.last.x = n[l - 1];
+			this.absolute = true;
+			break;
+		  case "V":
+			for (var i = 0; i < l; ++i) {
+				this._updateBBox(this.bbox, this.last.x, n[i]);
+			}
+			this.last.y = n[l - 1];
+			this.absolute = true;
+			break;
+		  case "m":
+			var start = 0;
+			if (!("x" in this.last)) {
+				this._updateBBox(this.bbox, this.last.x = n[0], this.last.y = n[1]);
+				start = 2;
+			}
+			for (var i = start; i < l; i += 2) {
+				this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]);
+			}
+			this.absolute = false;
+			break;
+		  case "l":
+		  case "t":
+			for (var i = 0; i < l; i += 2) {
+				this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]);
+			}
+			this.absolute = false;
+			break;
+		  case "h":
+			for (var i = 0; i < l; ++i) {
+				this._updateBBox(this.bbox, this.last.x += n[i], this.last.y);
+			}
+			this.absolute = false;
+			break;
+		  case "v":
+			for (var i = 0; i < l; ++i) {
+				this._updateBBox(this.bbox, this.last.x, this.last.y += n[i]);
+			}
+			this.absolute = false;
+			break;
+		  case "c":
+			for (var i = 0; i < l; i += 6) {
+				this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]);
+				this._updateBBox(this.bbox, this.last.x + n[i + 2], this.last.y + n[i + 3]);
+				this._updateBBox(this.bbox, this.last.x += n[i + 4], this.last.y += n[i + 5]);
+			}
+			this.absolute = false;
+			break;
+		  case "s":
+		  case "q":
+			for (var i = 0; i < l; i += 4) {
+				this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]);
+				this._updateBBox(this.bbox, this.last.x += n[i + 2], this.last.y += n[i + 3]);
+			}
+			this.absolute = false;
+			break;
+		  case "A":
+			for (var i = 0; i < l; i += 7) {
+				this._updateBBox(this.bbox, n[i + 5], n[i + 6]);
+			}
+			this.last.x = n[l - 2];
+			this.last.y = n[l - 1];
+			this.absolute = true;
+			break;
+		  case "a":
+			for (var i = 0; i < l; i += 7) {
+				this._updateBBox(this.bbox, this.last.x += n[i + 5], this.last.y += n[i + 6]);
+			}
+			this.absolute = false;
+			break;
+		}
+		var path = [segment.action];
+		for (var i = 0; i < l; ++i) {
+			path.push(dojo.gfx.formatNumber(n[i], true));
+		}
+		if (typeof (this.shape.path) == "string") {
+			this.shape.path += path.join("");
+		} else {
+			this.shape.path = this.shape.path.concat(path);
+		}
+	}, _validSegments:{m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7, z:0}, _pushSegment:function (action, args) {
+		var group = this._validSegments[action.toLowerCase()];
+		if (typeof (group) == "number") {
+			if (group) {
+				if (args.length >= group) {
+					var segment = {action:action, args:args.slice(0, args.length - args.length % group)};
+					this.segments.push(segment);
+					this._updateWithSegment(segment);
+				}
+			} else {
+				var segment = {action:action, args:[]};
+				this.segments.push(segment);
+				this._updateWithSegment(segment);
+			}
+		}
+	}, _collectArgs:function (array, args) {
+		for (var i = 0; i < args.length; ++i) {
+			var t = args[i];
+			if (typeof (t) == "boolean") {
+				array.push(t ? 1 : 0);
+			} else {
+				if (typeof (t) == "number") {
+					array.push(t);
+				} else {
+					if (t instanceof Array) {
+						this._collectArgs(array, t);
+					} else {
+						if ("x" in t && "y" in t) {
+							array.push(t.x);
+							array.push(t.y);
+						}
+					}
+				}
+			}
+		}
+	}, moveTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "M" : "m", args);
+		return this;
+	}, lineTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "L" : "l", args);
+		return this;
+	}, hLineTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "H" : "h", args);
+		return this;
+	}, vLineTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "V" : "v", args);
+		return this;
+	}, curveTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "C" : "c", args);
+		return this;
+	}, smoothCurveTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "S" : "s", args);
+		return this;
+	}, qCurveTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "Q" : "q", args);
+		return this;
+	}, qSmoothCurveTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		this._pushSegment(this.absolute ? "T" : "t", args);
+		return this;
+	}, arcTo:function () {
+		var args = [];
+		this._collectArgs(args, arguments);
+		for (var i = 2; i < args.length; i += 7) {
+			args[i] = -args[i];
+		}
+		this._pushSegment(this.absolute ? "A" : "a", args);
+		return this;
+	}, closePath:function () {
+		this._pushSegment("Z", []);
+		return this;
+	}, _setPath:function (path) {
+		var p = path.match(dojo.gfx.pathRegExp);
+		this.segments = [];
+		this.absolute = true;
+		this.bbox = {};
+		this.last = {};
+		if (!p) {
+			return;
+		}
+		var action = "";
+		var args = [];
+		for (var i = 0; i < p.length; ++i) {
+			var t = p[i];
+			var x = parseFloat(t);
+			if (isNaN(x)) {
+				if (action) {
+					this._pushSegment(action, args);
+				}
+				args = [];
+				action = t;
+			} else {
+				args.push(x);
+			}
+		}
+		this._pushSegment(action, args);
+	}, setShape:function (newShape) {
+		this.shape = dojo.gfx.makeParameters(this.shape, typeof (newShape) == "string" ? {path:newShape} : newShape);
+		var path = this.shape.path;
+		this.shape.path = [];
+		this._setPath(path);
+		this.shape.path = this.shape.path.join("");
+		return this;
+	}, _2PI:Math.PI * 2});
+}});
+
+
 __CPAN_FILE__ src/gfx/common.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -63563,6 +121201,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.common");
 dojo.require("dojo.gfx.color");
 dojo.require("dojo.lang.declare");
@@ -63626,6 +121266,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.svg");
 dojo.require("dojo.lang.declare");
 dojo.require("dojo.svg");
@@ -64099,6 +121741,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.color");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.array");
@@ -64238,6 +121882,160 @@
 };
 
 
+__CPAN_FILE__ src/gfx/color.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.color"], ["require", "dojo.lang.common"], ["require", "dojo.lang.array"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.color");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.array");
+	dojo.gfx.color.Color = function (r, g, b, a) {
+		if (dojo.lang.isArray(r)) {
+			this.r = r[0];
+			this.g = r[1];
+			this.b = r[2];
+			this.a = r[3] || 1;
+		} else {
+			if (dojo.lang.isString(r)) {
+				var rgb = dojo.gfx.color.extractRGB(r);
+				this.r = rgb[0];
+				this.g = rgb[1];
+				this.b = rgb[2];
+				this.a = g || 1;
+			} else {
+				if (r instanceof dojo.gfx.color.Color) {
+					this.r = r.r;
+					this.b = r.b;
+					this.g = r.g;
+					this.a = r.a;
+				} else {
+					this.r = r;
+					this.g = g;
+					this.b = b;
+					this.a = a;
+				}
+			}
+		}
+	};
+	dojo.gfx.color.Color.fromArray = function (arr) {
+		return new dojo.gfx.color.Color(arr[0], arr[1], arr[2], arr[3]);
+	};
+	dojo.extend(dojo.gfx.color.Color, {toRgb:function (includeAlpha) {
+		if (includeAlpha) {
+			return this.toRgba();
+		} else {
+			return [this.r, this.g, this.b];
+		}
+	}, toRgba:function () {
+		return [this.r, this.g, this.b, this.a];
+	}, toHex:function () {
+		return dojo.gfx.color.rgb2hex(this.toRgb());
+	}, toCss:function () {
+		return "rgb(" + this.toRgb().join() + ")";
+	}, toString:function () {
+		return this.toHex();
+	}, blend:function (color, weight) {
+		var rgb = null;
+		if (dojo.lang.isArray(color)) {
+			rgb = color;
+		} else {
+			if (color instanceof dojo.gfx.color.Color) {
+				rgb = color.toRgb();
+			} else {
+				rgb = new dojo.gfx.color.Color(color).toRgb();
+			}
+		}
+		return dojo.gfx.color.blend(this.toRgb(), rgb, weight);
+	}});
+	dojo.gfx.color.named = {white:[255, 255, 255], black:[0, 0, 0], red:[255, 0, 0], green:[0, 255, 0], lime:[0, 255, 0], blue:[0, 0, 255], navy:[0, 0, 128], gray:[128, 128, 128], silver:[192, 192, 192]};
+	dojo.gfx.color.blend = function (a, b, weight) {
+		if (typeof a == "string") {
+			return dojo.gfx.color.blendHex(a, b, weight);
+		}
+		if (!weight) {
+			weight = 0;
+		}
+		weight = Math.min(Math.max(-1, weight), 1);
+		weight = ((weight + 1) / 2);
+		var c = [];
+		for (var x = 0; x < 3; x++) {
+			c[x] = parseInt(b[x] + ((a[x] - b[x]) * weight));
+		}
+		return c;
+	};
+	dojo.gfx.color.blendHex = function (a, b, weight) {
+		return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight));
+	};
+	dojo.gfx.color.extractRGB = function (color) {
+		var hex = "0123456789abcdef";
+		color = color.toLowerCase();
+		if (color.indexOf("rgb") == 0) {
+			var matches = color.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
+			var ret = matches.splice(1, 3);
+			return ret;
+		} else {
+			var colors = dojo.gfx.color.hex2rgb(color);
+			if (colors) {
+				return colors;
+			} else {
+				return dojo.gfx.color.named[color] || [255, 255, 255];
+			}
+		}
+	};
+	dojo.gfx.color.hex2rgb = function (hex) {
+		var hexNum = "0123456789ABCDEF";
+		var rgb = new Array(3);
+		if (hex.indexOf("#") == 0) {
+			hex = hex.substring(1);
+		}
+		hex = hex.toUpperCase();
+		if (hex.replace(new RegExp("[" + hexNum + "]", "g"), "") != "") {
+			return null;
+		}
+		if (hex.length == 3) {
+			rgb[0] = hex.charAt(0) + hex.charAt(0);
+			rgb[1] = hex.charAt(1) + hex.charAt(1);
+			rgb[2] = hex.charAt(2) + hex.charAt(2);
+		} else {
+			rgb[0] = hex.substring(0, 2);
+			rgb[1] = hex.substring(2, 4);
+			rgb[2] = hex.substring(4);
+		}
+		for (var i = 0; i < rgb.length; i++) {
+			rgb[i] = hexNum.indexOf(rgb[i].charAt(0)) * 16 + hexNum.indexOf(rgb[i].charAt(1));
+		}
+		return rgb;
+	};
+	dojo.gfx.color.rgb2hex = function (r, g, b) {
+		if (dojo.lang.isArray(r)) {
+			g = r[1] || 0;
+			b = r[2] || 0;
+			r = r[0] || 0;
+		}
+		var ret = dojo.lang.map([r, g, b], function (x) {
+			x = new Number(x);
+			var s = x.toString(16);
+			while (s.length < 2) {
+				s = "0" + s;
+			}
+			return s;
+		});
+		ret.unshift("#");
+		return ret.join("");
+	};
+}});
+
+
 __CPAN_FILE__ src/gfx/__package__.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -64249,12 +122047,491 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]});
 dojo.requireIf(dojo.render.svg.capable, "dojo.gfx.svg");
 dojo.requireIf(dojo.render.vml.capable, "dojo.gfx.vml");
 dojo.provide("dojo.gfx.*");
 
 
+__CPAN_FILE__ src/gfx/svg.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.svg"], ["require", "dojo.lang.declare"], ["require", "dojo.svg"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.common"], ["require", "dojo.gfx.shape"], ["require", "dojo.gfx.path"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.svg");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.svg");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.gfx.common");
+	dojo.require("dojo.gfx.shape");
+	dojo.require("dojo.gfx.path");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.gfx.svg");
+	dojo.gfx.svg.getRef = function (fill) {
+		if (!fill || fill == "none") {
+			return null;
+		}
+		if (fill.match(/^url\(#.+\)$/)) {
+			return dojo.byId(fill.slice(5, -1));
+		}
+		if (dojo.render.html.opera && fill.match(/^#dj_unique_.+$/)) {
+			return dojo.byId(fill.slice(1));
+		}
+		return null;
+	};
+	dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) {
+		if (!fill) {
+			this.fillStyle = null;
+			this.rawNode.setAttribute("fill", "none");
+			this.rawNode.setAttribute("fill-opacity", 0);
+			return this;
+		}
+		if (typeof (fill) == "object" && "type" in fill) {
+			switch (fill.type) {
+			  case "linear":
+				var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill);
+				var gradient = this._setFillObject(f, "linearGradient");
+				dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) {
+					gradient.setAttribute(x, f[x].toFixed(8));
+				});
+				break;
+			  case "radial":
+				var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill);
+				var gradient = this._setFillObject(f, "radialGradient");
+				dojo.lang.forEach(["cx", "cy", "r"], function (x) {
+					gradient.setAttribute(x, f[x].toFixed(8));
+				});
+				break;
+			  case "pattern":
+				var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill);
+				var pattern = this._setFillObject(f, "pattern");
+				dojo.lang.forEach(["x", "y", "width", "height"], function (x) {
+					pattern.setAttribute(x, f[x].toFixed(8));
+				});
+				break;
+			}
+			return this;
+		}
+		var f = dojo.gfx.normalizeColor(fill);
+		this.fillStyle = f;
+		this.rawNode.setAttribute("fill", f.toCss());
+		this.rawNode.setAttribute("fill-opacity", f.a);
+		return this;
+	}, setStroke:function (stroke) {
+		if (!stroke) {
+			this.strokeStyle = null;
+			this.rawNode.setAttribute("stroke", "none");
+			this.rawNode.setAttribute("stroke-opacity", 0);
+			return this;
+		}
+		this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke);
+		this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color);
+		var s = this.strokeStyle;
+		var rn = this.rawNode;
+		if (s) {
+			rn.setAttribute("stroke", s.color.toCss());
+			rn.setAttribute("stroke-opacity", s.color.a);
+			rn.setAttribute("stroke-width", s.width);
+			rn.setAttribute("stroke-linecap", s.cap);
+			if (typeof (s.join) == "number") {
+				rn.setAttribute("stroke-linejoin", "miter");
+				rn.setAttribute("stroke-miterlimit", s.join);
+			} else {
+				rn.setAttribute("stroke-linejoin", s.join);
+			}
+		}
+		return this;
+	}, _setFillObject:function (f, nodeType) {
+		var def_elems = this.rawNode.parentNode.getElementsByTagName("defs");
+		if (def_elems.length == 0) {
+			return this;
+		}
+		this.fillStyle = f;
+		var defs = def_elems[0];
+		var fill = this.rawNode.getAttribute("fill");
+		var ref = dojo.gfx.svg.getRef(fill);
+		if (ref) {
+			fill = ref;
+			if (fill.tagName.toLowerCase() != nodeType.toLowerCase()) {
+				var id = fill.id;
+				fill.parentNode.removeChild(fill);
+				fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType);
+				fill.setAttribute("id", id);
+				defs.appendChild(fill);
+			} else {
+				while (fill.childNodes.length) {
+					fill.removeChild(fill.lastChild);
+				}
+			}
+		} else {
+			fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType);
+			fill.setAttribute("id", dojo.dom.getUniqueId());
+			defs.appendChild(fill);
+		}
+		if (nodeType == "pattern") {
+			fill.setAttribute("patternUnits", "userSpaceOnUse");
+			var img = document.createElementNS(dojo.svg.xmlns.svg, "image");
+			img.setAttribute("x", 0);
+			img.setAttribute("y", 0);
+			img.setAttribute("width", f.width.toFixed(8));
+			img.setAttribute("height", f.height.toFixed(8));
+			img.setAttributeNS(dojo.svg.xmlns.xlink, "href", f.src);
+			fill.appendChild(img);
+		} else {
+			fill.setAttribute("gradientUnits", "userSpaceOnUse");
+			for (var i = 0; i < f.colors.length; ++i) {
+				f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
+				var t = document.createElementNS(dojo.svg.xmlns.svg, "stop");
+				t.setAttribute("offset", f.colors[i].offset.toFixed(8));
+				t.setAttribute("stop-color", f.colors[i].color.toCss());
+				fill.appendChild(t);
+			}
+		}
+		this.rawNode.setAttribute("fill", "url(#" + fill.getAttribute("id") + ")");
+		this.rawNode.removeAttribute("fill-opacity");
+		return fill;
+	}, _applyTransform:function () {
+		var matrix = this._getRealMatrix();
+		if (matrix) {
+			var tm = this.matrix;
+			this.rawNode.setAttribute("transform", "matrix(" + tm.xx.toFixed(8) + "," + tm.yx.toFixed(8) + "," + tm.xy.toFixed(8) + "," + tm.yy.toFixed(8) + "," + tm.dx.toFixed(8) + "," + tm.dy.toFixed(8) + ")");
+		} else {
+			this.rawNode.removeAttribute("transform");
+		}
+		return this;
+	}, setRawNode:function (rawNode) {
+		with (rawNode) {
+			setAttribute("fill", "none");
+			setAttribute("fill-opacity", 0);
+			setAttribute("stroke", "none");
+			setAttribute("stroke-opacity", 0);
+			setAttribute("stroke-width", 1);
+			setAttribute("stroke-linecap", "butt");
+			setAttribute("stroke-linejoin", "miter");
+			setAttribute("stroke-miterlimit", 4);
+		}
+		this.rawNode = rawNode;
+	}, moveToFront:function () {
+		this.rawNode.parentNode.appendChild(this.rawNode);
+		return this;
+	}, moveToBack:function () {
+		this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild);
+		return this;
+	}, setShape:function (newShape) {
+		this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		for (var i in this.shape) {
+			if (i != "type") {
+				this.rawNode.setAttribute(i, this.shape[i]);
+			}
+		}
+		return this;
+	}, attachFill:function (rawNode) {
+		var fillStyle = null;
+		if (rawNode) {
+			var fill = rawNode.getAttribute("fill");
+			if (fill == "none") {
+				return;
+			}
+			var ref = dojo.gfx.svg.getRef(fill);
+			if (ref) {
+				var gradient = ref;
+				switch (gradient.tagName.toLowerCase()) {
+				  case "lineargradient":
+					fillStyle = this._getGradient(dojo.gfx.defaultLinearGradient, gradient);
+					dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) {
+						fillStyle[x] = gradient.getAttribute(x);
+					});
+					break;
+				  case "radialgradient":
+					fillStyle = this._getGradient(dojo.gfx.defaultRadialGradient, gradient);
+					dojo.lang.forEach(["cx", "cy", "r"], function (x) {
+						fillStyle[x] = gradient.getAttribute(x);
+					});
+					fillStyle.cx = gradient.getAttribute("cx");
+					fillStyle.cy = gradient.getAttribute("cy");
+					fillStyle.r = gradient.getAttribute("r");
+					break;
+				  case "pattern":
+					fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true);
+					dojo.lang.forEach(["x", "y", "width", "height"], function (x) {
+						fillStyle[x] = gradient.getAttribute(x);
+					});
+					fillStyle.src = gradient.firstChild.getAttributeNS(dojo.svg.xmlns.xlink, "href");
+					break;
+				}
+			} else {
+				fillStyle = new dojo.gfx.color.Color(fill);
+				var opacity = rawNode.getAttribute("fill-opacity");
+				if (opacity != null) {
+					fillStyle.a = opacity;
+				}
+			}
+		}
+		return fillStyle;
+	}, _getGradient:function (defaultGradient, gradient) {
+		var fillStyle = dojo.lang.shallowCopy(defaultGradient, true);
+		fillStyle.colors = [];
+		for (var i = 0; i < gradient.childNodes.length; ++i) {
+			fillStyle.colors.push({offset:gradient.childNodes[i].getAttribute("offset"), color:new dojo.gfx.color.Color(gradient.childNodes[i].getAttribute("stop-color"))});
+		}
+		return fillStyle;
+	}, attachStroke:function (rawNode) {
+		if (!rawNode) {
+			return;
+		}
+		var stroke = rawNode.getAttribute("stroke");
+		if (stroke == null || stroke == "none") {
+			return null;
+		}
+		var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true);
+		var color = new dojo.gfx.color.Color(stroke);
+		if (color) {
+			strokeStyle.color = color;
+			strokeStyle.color.a = rawNode.getAttribute("stroke-opacity");
+			strokeStyle.width = rawNode.getAttribute("stroke-width");
+			strokeStyle.cap = rawNode.getAttribute("stroke-linecap");
+			strokeStyle.join = rawNode.getAttribute("stroke-linejoin");
+			if (strokeStyle.join == "miter") {
+				strokeStyle.join = rawNode.getAttribute("stroke-miterlimit");
+			}
+		}
+		return strokeStyle;
+	}, attachTransform:function (rawNode) {
+		var matrix = null;
+		if (rawNode) {
+			matrix = rawNode.getAttribute("transform");
+			if (matrix.match(/^matrix\(.+\)$/)) {
+				var t = matrix.slice(7, -1).split(",");
+				matrix = dojo.gfx.matrix.normalize({xx:parseFloat(t[0]), xy:parseFloat(t[2]), yx:parseFloat(t[1]), yy:parseFloat(t[3]), dx:parseFloat(t[4]), dy:parseFloat(t[5])});
+			}
+		}
+		return matrix;
+	}, attachShape:function (rawNode) {
+		var shape = null;
+		if (rawNode) {
+			shape = dojo.lang.shallowCopy(this.shape, true);
+			for (var i in shape) {
+				shape[i] = rawNode.getAttribute(i);
+			}
+		}
+		return shape;
+	}, attach:function (rawNode) {
+		if (rawNode) {
+			this.rawNode = rawNode;
+			this.fillStyle = this.attachFill(rawNode);
+			this.strokeStyle = this.attachStroke(rawNode);
+			this.matrix = this.attachTransform(rawNode);
+			this.shape = this.attachShape(rawNode);
+		}
+	}});
+	dojo.declare("dojo.gfx.Group", dojo.gfx.Shape, {setRawNode:function (rawNode) {
+		this.rawNode = rawNode;
+	}});
+	dojo.gfx.Group.nodeType = "g";
+	dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) {
+		var shape = null;
+		if (rawNode) {
+			shape = dojo.gfx.Rect.superclass.attachShape.apply(this, arguments);
+			shape.r = Math.min(rawNode.getAttribute("rx"), rawNode.getAttribute("ry"));
+		}
+		return shape;
+	}, setShape:function (newShape) {
+		this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		for (var i in this.shape) {
+			if (i != "type" && i != "r") {
+				this.rawNode.setAttribute(i, this.shape[i]);
+			}
+		}
+		this.rawNode.setAttribute("rx", this.shape.r);
+		this.rawNode.setAttribute("ry", this.shape.r);
+		return this;
+	}});
+	dojo.gfx.Rect.nodeType = "rect";
+	dojo.gfx.Ellipse = dojo.gfx.shape.Ellipse;
+	dojo.gfx.Ellipse.nodeType = "ellipse";
+	dojo.gfx.Circle = dojo.gfx.shape.Circle;
+	dojo.gfx.Circle.nodeType = "circle";
+	dojo.gfx.Line = dojo.gfx.shape.Line;
+	dojo.gfx.Line.nodeType = "line";
+	dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, {setShape:function (points) {
+		if (points && points instanceof Array) {
+			this.shape = dojo.gfx.makeParameters(this.shape, {points:points});
+			if (closed && this.shape.points.length) {
+				this.shape.points.push(this.shape.points[0]);
+			}
+		} else {
+			this.shape = dojo.gfx.makeParameters(this.shape, points);
+		}
+		this.box = null;
+		var attr = [];
+		var p = this.shape.points;
+		for (var i = 0; i < p.length; ++i) {
+			attr.push(p[i].x.toFixed(8));
+			attr.push(p[i].y.toFixed(8));
+		}
+		this.rawNode.setAttribute("points", attr.join(" "));
+		return this;
+	}});
+	dojo.gfx.Polyline.nodeType = "polyline";
+	dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {setShape:function (newShape) {
+		this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		var rawNode = this.rawNode;
+		for (var i in this.shape) {
+			if (i != "type" && i != "src") {
+				rawNode.setAttribute(i, this.shape[i]);
+			}
+		}
+		rawNode.setAttributeNS(dojo.svg.xmlns.xlink, "href", this.shape.src);
+		return this;
+	}, setStroke:function () {
+		return this;
+	}, setFill:function () {
+		return this;
+	}, attachStroke:function (rawNode) {
+		return null;
+	}, attachFill:function (rawNode) {
+		return null;
+	}});
+	dojo.gfx.Image.nodeType = "image";
+	dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, {_updateWithSegment:function (segment) {
+		dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments);
+		if (typeof (this.shape.path) == "string") {
+			this.rawNode.setAttribute("d", this.shape.path);
+		}
+	}, setShape:function (newShape) {
+		dojo.gfx.Path.superclass.setShape.apply(this, arguments);
+		this.rawNode.setAttribute("d", this.shape.path);
+		return this;
+	}});
+	dojo.gfx.Path.nodeType = "path";
+	dojo.gfx._creators = {createPath:function (path) {
+		return this.createObject(dojo.gfx.Path, path);
+	}, createRect:function (rect) {
+		return this.createObject(dojo.gfx.Rect, rect);
+	}, createCircle:function (circle) {
+		return this.createObject(dojo.gfx.Circle, circle);
+	}, createEllipse:function (ellipse) {
+		return this.createObject(dojo.gfx.Ellipse, ellipse);
+	}, createLine:function (line) {
+		return this.createObject(dojo.gfx.Line, line);
+	}, createPolyline:function (points) {
+		return this.createObject(dojo.gfx.Polyline, points);
+	}, createImage:function (image) {
+		return this.createObject(dojo.gfx.Image, image);
+	}, createGroup:function () {
+		return this.createObject(dojo.gfx.Group);
+	}, createObject:function (shapeType, rawShape) {
+		if (!this.rawNode) {
+			return null;
+		}
+		var shape = new shapeType();
+		var node = document.createElementNS(dojo.svg.xmlns.svg, shapeType.nodeType);
+		shape.setRawNode(node);
+		this.rawNode.appendChild(node);
+		shape.setShape(rawShape);
+		this.add(shape);
+		return shape;
+	}, add:function (shape) {
+		var oldParent = shape.getParent();
+		if (oldParent) {
+			oldParent.remove(shape, true);
+		}
+		shape._setParent(this, null);
+		this.rawNode.appendChild(shape.rawNode);
+		return this;
+	}, remove:function (shape, silently) {
+		if (this.rawNode == shape.rawNode.parentNode) {
+			this.rawNode.removeChild(shape.rawNode);
+		}
+		shape._setParent(null, null);
+		return this;
+	}};
+	dojo.gfx.attachNode = function (node) {
+		if (!node) {
+			return null;
+		}
+		var s = null;
+		switch (node.tagName.toLowerCase()) {
+		  case dojo.gfx.Rect.nodeType:
+			s = new dojo.gfx.Rect();
+			break;
+		  case dojo.gfx.Ellipse.nodeType:
+			s = new dojo.gfx.Ellipse();
+			break;
+		  case dojo.gfx.Polyline.nodeType:
+			s = new dojo.gfx.Polyline();
+			break;
+		  case dojo.gfx.Path.nodeType:
+			s = new dojo.gfx.Path();
+			break;
+		  case dojo.gfx.Circle.nodeType:
+			s = new dojo.gfx.Circle();
+			break;
+		  case dojo.gfx.Line.nodeType:
+			s = new dojo.gfx.Line();
+			break;
+		  case dojo.gfx.Image.nodeType:
+			s = new dojo.gfx.Image();
+			break;
+		  default:
+			dojo.debug("FATAL ERROR! tagName = " + node.tagName);
+		}
+		s.attach(node);
+		return s;
+	};
+	dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) {
+		if (!this.rawNode) {
+			return this;
+		}
+		this.rawNode.setAttribute("width", width);
+		this.rawNode.setAttribute("height", height);
+		return this;
+	}, getDimensions:function () {
+		return this.rawNode ? {width:this.rawNode.getAttribute("width"), height:this.rawNode.getAttribute("height")} : null;
+	}});
+	dojo.gfx.createSurface = function (parentNode, width, height) {
+		var s = new dojo.gfx.Surface();
+		s.rawNode = document.createElementNS(dojo.svg.xmlns.svg, "svg");
+		s.rawNode.setAttribute("width", width);
+		s.rawNode.setAttribute("height", height);
+		var defs = new dojo.gfx.svg.Defines();
+		var node = document.createElementNS(dojo.svg.xmlns.svg, dojo.gfx.svg.Defines.nodeType);
+		defs.setRawNode(node);
+		s.rawNode.appendChild(node);
+		dojo.byId(parentNode).appendChild(s.rawNode);
+		return s;
+	};
+	dojo.gfx.attachSurface = function (node) {
+		var s = new dojo.gfx.Surface();
+		s.rawNode = node;
+		return s;
+	};
+	dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators);
+	dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators);
+	delete dojo.gfx._creators;
+	dojo.gfx.svg.Defines = function () {
+		this.rawNode = null;
+	};
+	dojo.lang.extend(dojo.gfx.svg.Defines, {setRawNode:function (rawNode) {
+		this.rawNode = rawNode;
+	}});
+	dojo.gfx.svg.Defines.nodeType = "defs";
+}});
+
+
 __CPAN_FILE__ src/gfx/Colorspace.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -64266,6 +122543,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.Colorspace");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.math.matrix");
@@ -64989,6 +123268,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.vml");
 dojo.require("dojo.dom");
 dojo.require("dojo.math");
@@ -65988,6 +124269,246 @@
 };
 
 
+__CPAN_FILE__ src/gfx/matrix.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.matrix"], ["require", "dojo.lang.common"], ["require", "dojo.math.*"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.matrix");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.math.*");
+	dojo.gfx.matrix.Matrix2D = function (arg) {
+		if (arg) {
+			if (arg instanceof Array) {
+				if (arg.length > 0) {
+					var m = dojo.gfx.matrix.normalize(arg[0]);
+					for (var i = 1; i < arg.length; ++i) {
+						var l = m;
+						var r = dojo.gfx.matrix.normalize(arg[i]);
+						m = new dojo.gfx.matrix.Matrix2D();
+						m.xx = l.xx * r.xx + l.xy * r.yx;
+						m.xy = l.xx * r.xy + l.xy * r.yy;
+						m.yx = l.yx * r.xx + l.yy * r.yx;
+						m.yy = l.yx * r.xy + l.yy * r.yy;
+						m.dx = l.xx * r.dx + l.xy * r.dy + l.dx;
+						m.dy = l.yx * r.dx + l.yy * r.dy + l.dy;
+					}
+					dojo.mixin(this, m);
+				}
+			} else {
+				dojo.mixin(this, arg);
+			}
+		}
+	};
+	dojo.extend(dojo.gfx.matrix.Matrix2D, {xx:1, xy:0, yx:0, yy:1, dx:0, dy:0});
+	dojo.mixin(dojo.gfx.matrix, {identity:new dojo.gfx.matrix.Matrix2D(), flipX:new dojo.gfx.matrix.Matrix2D({xx:-1}), flipY:new dojo.gfx.matrix.Matrix2D({yy:-1}), flipXY:new dojo.gfx.matrix.Matrix2D({xx:-1, yy:-1}), translate:function (a, b) {
+		if (arguments.length > 1) {
+			return new dojo.gfx.matrix.Matrix2D({dx:a, dy:b});
+		}
+		return new dojo.gfx.matrix.Matrix2D({dx:a.x, dy:a.y});
+	}, scale:function (a, b) {
+		if (arguments.length > 1) {
+			return new dojo.gfx.matrix.Matrix2D({xx:a, yy:b});
+		}
+		if (typeof a == "number") {
+			return new dojo.gfx.matrix.Matrix2D({xx:a, yy:a});
+		}
+		return new dojo.gfx.matrix.Matrix2D({xx:a.x, yy:a.y});
+	}, rotate:function (angle) {
+		var c = Math.cos(angle);
+		var s = Math.sin(angle);
+		return new dojo.gfx.matrix.Matrix2D({xx:c, xy:s, yx:-s, yy:c});
+	}, rotateg:function (degree) {
+		return dojo.gfx.matrix.rotate(dojo.math.degToRad(degree));
+	}, skewX:function (angle) {
+		return new dojo.gfx.matrix.Matrix2D({xy:Math.tan(angle)});
+	}, skewXg:function (degree) {
+		return dojo.gfx.matrix.skewX(dojo.math.degToRad(degree));
+	}, skewY:function (angle) {
+		return new dojo.gfx.matrix.Matrix2D({yx:-Math.tan(angle)});
+	}, skewYg:function (degree) {
+		return dojo.gfx.matrix.skewY(dojo.math.degToRad(degree));
+	}, normalize:function (matrix) {
+		return (matrix instanceof dojo.gfx.matrix.Matrix2D) ? matrix : new dojo.gfx.matrix.Matrix2D(matrix);
+	}, clone:function (matrix) {
+		var obj = new dojo.gfx.matrix.Matrix2D();
+		for (var i in matrix) {
+			if (typeof (matrix[i]) == "number" && typeof (obj[i]) == "number" && obj[i] != matrix[i]) {
+				obj[i] = matrix[i];
+			}
+		}
+		return obj;
+	}, invert:function (matrix) {
+		var m = dojo.gfx.matrix.normalize(matrix);
+		var D = m.xx * m.yy - m.xy * m.yx;
+		var M = new dojo.gfx.matrix.Matrix2D({xx:m.yy / D, xy:-m.xy / D, yx:-m.yx / D, yy:m.xx / D, dx:(m.yx * m.dy - m.yy * m.dx) / D, dy:(m.xy * m.dx - m.xx * m.dy) / D});
+		return M;
+	}, _multiplyPoint:function (m, x, y) {
+		return {x:m.xx * x + m.xy * y + m.dx, y:m.yx * x + m.yy * y + m.dy};
+	}, multiplyPoint:function (matrix, a, b) {
+		var m = dojo.gfx.matrix.normalize(matrix);
+		if (typeof a == "number" && typeof b == "number") {
+			return dojo.gfx.matrix._multiplyPoint(m, a, b);
+		}
+		return dojo.gfx.matrix._multiplyPoint(m, a.x, a.y);
+	}, multiply:function (matrix) {
+		var m = dojo.gfx.matrix.normalize(matrix);
+		for (var i = 1; i < arguments.length; ++i) {
+			var l = m;
+			var r = dojo.gfx.matrix.normalize(arguments[i]);
+			m = new dojo.gfx.matrix.Matrix2D();
+			m.xx = l.xx * r.xx + l.xy * r.yx;
+			m.xy = l.xx * r.xy + l.xy * r.yy;
+			m.yx = l.yx * r.xx + l.yy * r.yx;
+			m.yy = l.yx * r.xy + l.yy * r.yy;
+			m.dx = l.xx * r.dx + l.xy * r.dy + l.dx;
+			m.dy = l.yx * r.dx + l.yy * r.dy + l.dy;
+		}
+		return m;
+	}, _sandwich:function (m, x, y) {
+		return dojo.gfx.matrix.multiply(dojo.gfx.matrix.translate(x, y), m, dojo.gfx.matrix.translate(-x, -y));
+	}, scaleAt:function (a, b, c, d) {
+		switch (arguments.length) {
+		  case 4:
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c, d);
+		  case 3:
+			if (typeof c == "number") {
+				return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b, c);
+			}
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c.x, c.y);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b.x, b.y);
+	}, rotateAt:function (angle, a, b) {
+		if (arguments.length > 2) {
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a, b);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a.x, a.y);
+	}, rotategAt:function (degree, a, b) {
+		if (arguments.length > 2) {
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a, b);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a.x, a.y);
+	}, skewXAt:function (angle, a, b) {
+		if (arguments.length > 2) {
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a, b);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a.x, a.y);
+	}, skewXgAt:function (degree, a, b) {
+		if (arguments.length > 2) {
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a, b);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a.x, a.y);
+	}, skewYAt:function (angle, a, b) {
+		if (arguments.length > 2) {
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a, b);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a.x, a.y);
+	}, skewYgAt:function (degree, a, b) {
+		if (arguments.length > 2) {
+			return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a, b);
+		}
+		return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a.x, a.y);
+	}});
+}});
+
+
+__CPAN_FILE__ src/gfx/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]}], ["requireIf", dojo.render.svg.capable, "dojo.gfx.svg"], ["requireIf", dojo.render.vml.capable, "dojo.gfx.vml"], ["provide", "dojo.gfx.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]});
+	dojo.requireIf(dojo.render.svg.capable, "dojo.gfx.svg");
+	dojo.requireIf(dojo.render.vml.capable, "dojo.gfx.vml");
+	dojo.provide("dojo.gfx.*");
+}});
+
+
+__CPAN_FILE__ src/gfx/common.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.common"], ["require", "dojo.gfx.color"], ["require", "dojo.lang.declare"], ["require", "dojo.lang.extras"], ["require", "dojo.dom"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.common");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.dom");
+	dojo.lang.mixin(dojo.gfx, {defaultPath:{type:"path", path:""}, defaultPolyline:{type:"polyline", points:[]}, defaultRect:{type:"rect", x:0, y:0, width:100, height:100, r:0}, defaultEllipse:{type:"ellipse", cx:0, cy:0, rx:200, ry:100}, defaultCircle:{type:"circle", cx:0, cy:0, r:100}, defaultLine:{type:"line", x1:0, y1:0, x2:100, y2:100}, defaultImage:{type:"image", width:0, height:0, src:""}, defaultStroke:{color:"black", width:1, cap:"butt", join:4}, defaultLinearGradient:{type:"linear", x1:0, y1:0, x2:100, y2:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultRadialGradient:{type:"radial", cx:0, cy:0, r:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultPattern:{type:"pattern", x:0, y:0, width:0, height:0, src:""}, normalizeColor:function (color) {
+		return (color instanceof dojo.gfx.color.Color) ? color : new dojo.gfx.color.Color(color);
+	}, normalizeParameters:function (existed, update) {
+		if (update) {
+			var empty = {};
+			for (var x in existed) {
+				if (x in update && !(x in empty)) {
+					existed[x] = update[x];
+				}
+			}
+		}
+		return existed;
+	}, makeParameters:function (defaults, update) {
+		if (!update) {
+			return dojo.lang.shallowCopy(defaults, true);
+		}
+		var result = {};
+		for (var i in defaults) {
+			if (!(i in result)) {
+				result[i] = dojo.lang.shallowCopy((i in update) ? update[i] : defaults[i], true);
+			}
+		}
+		return result;
+	}, formatNumber:function (x, addSpace) {
+		var val = x.toString();
+		if (val.indexOf("e") >= 0) {
+			val = x.toFixed(4);
+		} else {
+			var point = val.indexOf(".");
+			if (point >= 0 && val.length - point > 5) {
+				val = x.toFixed(4);
+			}
+		}
+		if (x < 0) {
+			return val;
+		}
+		return addSpace ? " " + val : val;
+	}, pathRegExp:/([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g});
+	dojo.declare("dojo.gfx.Surface", null, {initializer:function () {
+		this.rawNode = null;
+	}, getEventSource:function () {
+		return this.rawNode;
+	}});
+	dojo.declare("dojo.gfx.Point", null, {});
+	dojo.declare("dojo.gfx.Rectangle", null, {});
+}});
+
+
 __CPAN_FILE__ src/gfx/path.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -65999,6 +124520,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.path");
 dojo.require("dojo.math");
 dojo.require("dojo.gfx.shape");
@@ -66256,6 +124779,1200 @@
 }, _2PI:Math.PI * 2});
 
 
+__CPAN_FILE__ src/gfx/vml.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.vml"], ["require", "dojo.dom"], ["require", "dojo.math"], ["require", "dojo.lang.declare"], ["require", "dojo.lang.extras"], ["require", "dojo.string.*"], ["require", "dojo.html.metrics"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.common"], ["require", "dojo.gfx.shape"], ["require", "dojo.gfx.path"], ["require", "dojo.experimental"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.vml");
+	dojo.require("dojo.dom");
+	dojo.require("dojo.math");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.lang.extras");
+	dojo.require("dojo.string.*");
+	dojo.require("dojo.html.metrics");
+	dojo.require("dojo.gfx.color");
+	dojo.require("dojo.gfx.common");
+	dojo.require("dojo.gfx.shape");
+	dojo.require("dojo.gfx.path");
+	dojo.require("dojo.experimental");
+	dojo.experimental("dojo.gfx.vml");
+	dojo.gfx.vml.xmlns = "urn:schemas-microsoft-com:vml";
+	dojo.gfx.vml._parseFloat = function (str) {
+		return str.match(/^\d+f$/i) ? parseInt(str) / 65536 : parseFloat(str);
+	};
+	dojo.gfx.vml.cm_in_pt = 72 / 2.54;
+	dojo.gfx.vml.mm_in_pt = 7.2 / 2.54;
+	dojo.gfx.vml.px_in_pt = function () {
+		return dojo.html.getCachedFontMeasurements()["12pt"] / 12;
+	};
+	dojo.gfx.vml.pt2px = function (len) {
+		return len * this.px_in_pt();
+	};
+	dojo.gfx.vml.px2pt = function (len) {
+		return len / this.px_in_pt();
+	};
+	dojo.gfx.vml.normalizedLength = function (len) {
+		if (len.length == 0) {
+			return 0;
+		}
+		if (len.length > 2) {
+			var px_in_pt = this.px_in_pt();
+			var val = parseFloat(len);
+			switch (len.slice(-2)) {
+			  case "px":
+				return val;
+			  case "pt":
+				return val * px_in_pt;
+			  case "in":
+				return val * 72 * px_in_pt;
+			  case "pc":
+				return val * 12 * px_in_pt;
+			  case "mm":
+				return val / this.mm_in_pt * px_in_pt;
+			  case "cm":
+				return val / this.cm_in_pt * px_in_pt;
+			}
+		}
+		return parseFloat(len);
+	};
+	dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) {
+		if (!fill) {
+			this.fillStyle = null;
+			this.rawNode.filled = false;
+			return this;
+		}
+		if (typeof (fill) == "object" && "type" in fill) {
+			switch (fill.type) {
+			  case "linear":
+				var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill);
+				this.fillStyle = f;
+				var s = "";
+				for (var i = 0; i < f.colors.length; ++i) {
+					f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
+					s += f.colors[i].offset.toFixed(8) + " " + f.colors[i].color.toHex() + ";";
+				}
+				var fo = this.rawNode.fill;
+				fo.colors.value = s;
+				fo.method = "sigma";
+				fo.type = "gradient";
+				fo.angle = (dojo.math.radToDeg(Math.atan2(f.x2 - f.x1, f.y2 - f.y1)) + 180) % 360;
+				fo.on = true;
+				break;
+			  case "radial":
+				var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill);
+				this.fillStyle = f;
+				var w = parseFloat(this.rawNode.style.width);
+				var h = parseFloat(this.rawNode.style.height);
+				var c = isNaN(w) ? 1 : 2 * f.r / w;
+				var i = f.colors.length - 1;
+				f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
+				var s = "0 " + f.colors[i].color.toHex();
+				for (; i >= 0; --i) {
+					f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color);
+					s += (1 - c * f.colors[i].offset).toFixed(8) + " " + f.colors[i].color.toHex() + ";";
+				}
+				var fo = this.rawNode.fill;
+				fo.colors.value = s;
+				fo.method = "sigma";
+				fo.type = "gradientradial";
+				if (isNaN(w) || isNaN(h)) {
+					fo.focusposition = "0.5 0.5";
+				} else {
+					fo.focusposition = (f.cx / w).toFixed(8) + " " + (f.cy / h).toFixed(8);
+				}
+				fo.focussize = "0 0";
+				fo.on = true;
+				break;
+			  case "pattern":
+				var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill);
+				this.fillStyle = f;
+				var fo = this.rawNode.fill;
+				fo.type = "tile";
+				fo.src = f.src;
+				if (f.width && f.height) {
+					fo.size.x = dojo.gfx.vml.px2pt(f.width);
+					fo.size.y = dojo.gfx.vml.px2pt(f.height);
+				}
+				fo.alignShape = false;
+				fo.position.x = 0;
+				fo.position.y = 0;
+				fo.origin.x = f.width ? f.x / f.width : 0;
+				fo.origin.y = f.height ? f.y / f.height : 0;
+				fo.on = true;
+				break;
+			}
+			this.rawNode.fill.opacity = 1;
+			return this;
+		}
+		this.fillStyle = dojo.gfx.normalizeColor(fill);
+		this.rawNode.fillcolor = this.fillStyle.toHex();
+		this.rawNode.fill.opacity = this.fillStyle.a;
+		this.rawNode.filled = true;
+		return this;
+	}, setStroke:function (stroke) {
+		if (!stroke) {
+			this.strokeStyle = null;
+			this.rawNode.stroked = false;
+			return this;
+		}
+		this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke);
+		this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color);
+		var s = this.strokeStyle;
+		this.rawNode.stroked = true;
+		this.rawNode.strokecolor = s.color.toCss();
+		this.rawNode.strokeweight = s.width + "px";
+		if (this.rawNode.stroke) {
+			this.rawNode.stroke.opacity = s.color.a;
+			this.rawNode.stroke.endcap = this._translate(this._capMap, s.cap);
+			if (typeof (s.join) == "number") {
+				this.rawNode.stroke.joinstyle = "miter";
+				this.rawNode.stroke.miterlimit = s.join;
+			} else {
+				this.rawNode.stroke.joinstyle = s.join;
+			}
+		}
+		return this;
+	}, _capMap:{butt:"flat"}, _capMapReversed:{flat:"butt"}, _translate:function (dict, value) {
+		return (value in dict) ? dict[value] : value;
+	}, _applyTransform:function () {
+		var matrix = this._getRealMatrix();
+		if (!matrix) {
+			return this;
+		}
+		var skew = this.rawNode.skew;
+		if (typeof (skew) == "undefined") {
+			for (var i = 0; i < this.rawNode.childNodes.length; ++i) {
+				if (this.rawNode.childNodes[i].tagName == "skew") {
+					skew = this.rawNode.childNodes[i];
+					break;
+				}
+			}
+		}
+		if (skew) {
+			skew.on = false;
+			var mt = matrix.xx.toFixed(8) + " " + matrix.xy.toFixed(8) + " " + matrix.yx.toFixed(8) + " " + matrix.yy.toFixed(8) + " 0 0";
+			var offset = Math.floor(matrix.dx).toFixed() + "px " + Math.floor(matrix.dy).toFixed() + "px";
+			var l = parseFloat(this.rawNode.style.left);
+			var t = parseFloat(this.rawNode.style.top);
+			var w = parseFloat(this.rawNode.style.width);
+			var h = parseFloat(this.rawNode.style.height);
+			if (isNaN(l)) {
+				l = 0;
+			}
+			if (isNaN(t)) {
+				t = 0;
+			}
+			if (isNaN(w)) {
+				w = 1;
+			}
+			if (isNaN(h)) {
+				h = 1;
+			}
+			var origin = (-l / w - 0.5).toFixed(8) + " " + (-t / h - 0.5).toFixed(8);
+			skew.matrix = mt;
+			skew.origin = origin;
+			skew.offset = offset;
+			skew.on = true;
+		}
+		return this;
+	}, setRawNode:function (rawNode) {
+		rawNode.stroked = false;
+		rawNode.filled = false;
+		this.rawNode = rawNode;
+	}, attachFill:function (rawNode) {
+		var fillStyle = null;
+		var fo = rawNode.fill;
+		if (rawNode) {
+			if (fo.on && fo.type == "gradient") {
+				var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultLinearGradient, true);
+				var rad = dojo.math.degToRad(fo.angle);
+				fillStyle.x2 = Math.cos(rad);
+				fillStyle.y2 = Math.sin(rad);
+				fillStyle.colors = [];
+				var stops = fo.colors.value.split(";");
+				for (var i = 0; i < stops.length; ++i) {
+					var t = stops[i].match(/\S+/g);
+					if (!t || t.length != 2) {
+						continue;
+					}
+					fillStyle.colors.push({offset:dojo.gfx.vml._parseFloat(t[0]), color:new dojo.gfx.color.Color(t[1])});
+				}
+			} else {
+				if (fo.on && fo.type == "gradientradial") {
+					var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultRadialGradient, true);
+					var w = parseFloat(rawNode.style.width);
+					var h = parseFloat(rawNode.style.height);
+					fillStyle.cx = isNaN(w) ? 0 : fo.focusposition.x * w;
+					fillStyle.cy = isNaN(h) ? 0 : fo.focusposition.y * h;
+					fillStyle.r = isNaN(w) ? 1 : w / 2;
+					fillStyle.colors = [];
+					var stops = fo.colors.value.split(";");
+					for (var i = stops.length - 1; i >= 0; --i) {
+						var t = stops[i].match(/\S+/g);
+						if (!t || t.length != 2) {
+							continue;
+						}
+						fillStyle.colors.push({offset:dojo.gfx.vml._parseFloat(t[0]), color:new dojo.gfx.color.Color(t[1])});
+					}
+				} else {
+					if (fo.on && fo.type == "tile") {
+						var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true);
+						fillStyle.width = dojo.gfx.vml.pt2px(fo.size.x);
+						fillStyle.height = dojo.gfx.vml.pt2px(fo.size.y);
+						fillStyle.x = fo.origin.x * fillStyle.width;
+						fillStyle.y = fo.origin.y * fillStyle.height;
+						fillStyle.src = fo.src;
+					} else {
+						if (fo.on && rawNode.fillcolor) {
+							fillStyle = new dojo.gfx.color.Color(rawNode.fillcolor + "");
+							fillStyle.a = fo.opacity;
+						}
+					}
+				}
+			}
+		}
+		return fillStyle;
+	}, attachStroke:function (rawNode) {
+		var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true);
+		if (rawNode && rawNode.stroked) {
+			strokeStyle.color = new dojo.gfx.color.Color(rawNode.strokecolor.value);
+			dojo.debug("We are expecting an .75pt here, instead of strokeweight = " + rawNode.strokeweight);
+			strokeStyle.width = dojo.gfx.vml.normalizedLength(rawNode.strokeweight + "");
+			strokeStyle.color.a = rawNode.stroke.opacity;
+			strokeStyle.cap = this._translate(this._capMapReversed, rawNode.stroke.endcap);
+			strokeStyle.join = rawNode.stroke.joinstyle == "miter" ? rawNode.stroke.miterlimit : rawNode.stroke.joinstyle;
+		} else {
+			return null;
+		}
+		return strokeStyle;
+	}, attachTransform:function (rawNode) {
+		var matrix = {};
+		if (rawNode) {
+			var s = rawNode.skew;
+			matrix.xx = s.matrix.xtox;
+			matrix.xy = s.matrix.ytox;
+			matrix.yx = s.matrix.xtoy;
+			matrix.yy = s.matrix.ytoy;
+			matrix.dx = dojo.gfx.vml.pt2px(s.offset.x);
+			matrix.dy = dojo.gfx.vml.pt2px(s.offset.y);
+		}
+		return dojo.gfx.matrix.normalize(matrix);
+	}, attach:function (rawNode) {
+		if (rawNode) {
+			this.rawNode = rawNode;
+			this.shape = this.attachShape(rawNode);
+			this.fillStyle = this.attachFill(rawNode);
+			this.strokeStyle = this.attachStroke(rawNode);
+			this.matrix = this.attachTransform(rawNode);
+		}
+	}});
+	dojo.declare("dojo.gfx.Group", dojo.gfx.shape.VirtualGroup, {add:function (shape) {
+		if (this != shape.getParent()) {
+			this.rawNode.appendChild(shape.rawNode);
+			dojo.gfx.Group.superclass.add.apply(this, arguments);
+		}
+		return this;
+	}, remove:function (shape, silently) {
+		if (this == shape.getParent()) {
+			if (this.rawNode == shape.rawNode.parentNode) {
+				this.rawNode.removeChild(shape.rawNode);
+			}
+			dojo.gfx.Group.superclass.remove.apply(this, arguments);
+		}
+		return this;
+	}, attach:function (rawNode) {
+		if (rawNode) {
+			this.rawNode = rawNode;
+			this.shape = null;
+			this.fillStyle = null;
+			this.strokeStyle = null;
+			this.matrix = null;
+		}
+	}});
+	dojo.gfx.Group.nodeType = "group";
+	var zIndex = {moveToFront:function () {
+		this.rawNode.parentNode.appendChild(this.rawNode);
+		return this;
+	}, moveToBack:function () {
+		this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild);
+		return this;
+	}};
+	dojo.lang.extend(dojo.gfx.Shape, zIndex);
+	dojo.lang.extend(dojo.gfx.Group, zIndex);
+	delete zIndex;
+	dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) {
+		var arcsize = rawNode.outerHTML.match(/arcsize = \"(\d*\.?\d+[%f]?)\"/)[1];
+		arcsize = (arcsize.indexOf("%") >= 0) ? parseFloat(arcsize) / 100 : dojo.gfx.vml._parseFloat(arcsize);
+		var style = rawNode.style;
+		var width = parseFloat(style.width);
+		var height = parseFloat(style.height);
+		var o = dojo.gfx.makeParameters(dojo.gfx.defaultRect, {x:parseInt(style.left), y:parseInt(style.top), width:width, height:height, r:Math.min(width, height) * arcsize});
+		return o;
+	}, setShape:function (newShape) {
+		var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		var style = this.rawNode.style;
+		style.left = shape.x.toFixed();
+		style.top = shape.y.toFixed();
+		style.width = (typeof (shape.width) == "string" && shape.width.indexOf("%") >= 0) ? shape.width : shape.width.toFixed();
+		style.height = (typeof (shape.width) == "string" && shape.height.indexOf("%") >= 0) ? shape.height : shape.height.toFixed();
+		var r = Math.min(1, (shape.r / Math.min(parseFloat(shape.width), parseFloat(shape.height)))).toFixed(8);
+		var parent = this.rawNode.parentNode;
+		var before = null;
+		if (parent) {
+			if (parent.lastChild != this.rawNode) {
+				for (var i = 0; i < parent.childNodes.length; ++i) {
+					if (parent.childNodes[i] == this.rawNode) {
+						before = parent.childNodes[i + 1];
+						break;
+					}
+				}
+			}
+			parent.removeChild(this.rawNode);
+		}
+		this.rawNode.arcsize = r;
+		if (parent) {
+			if (before) {
+				parent.insertBefore(this.rawNode, before);
+			} else {
+				parent.appendChild(this.rawNode);
+			}
+		}
+		return this.setTransform(this.matrix);
+	}});
+	dojo.gfx.Rect.nodeType = "roundrect";
+	dojo.declare("dojo.gfx.Ellipse", dojo.gfx.shape.Ellipse, {attachShape:function (rawNode) {
+		var style = this.rawNode.style;
+		var rx = parseInt(style.width) / 2;
+		var ry = parseInt(style.height) / 2;
+		var o = dojo.gfx.makeParameters(dojo.gfx.defaultEllipse, {cx:parseInt(style.left) + rx, cy:parseInt(style.top) + ry, rx:rx, ry:ry});
+		return o;
+	}, setShape:function (newShape) {
+		var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		var style = this.rawNode.style;
+		style.left = (shape.cx - shape.rx).toFixed();
+		style.top = (shape.cy - shape.ry).toFixed();
+		style.width = (shape.rx * 2).toFixed();
+		style.height = (shape.ry * 2).toFixed();
+		return this.setTransform(this.matrix);
+	}});
+	dojo.gfx.Ellipse.nodeType = "oval";
+	dojo.declare("dojo.gfx.Circle", dojo.gfx.shape.Circle, {attachShape:function (rawNode) {
+		var style = this.rawNode.style;
+		var r = parseInt(style.width) / 2;
+		var o = dojo.gfx.makeParameters(dojo.gfx.defaultCircle, {cx:parseInt(style.left) + r, cy:parseInt(style.top) + r, r:r});
+		return o;
+	}, setShape:function (newShape) {
+		var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		var style = this.rawNode.style;
+		style.left = (shape.cx - shape.r).toFixed();
+		style.top = (shape.cy - shape.r).toFixed();
+		style.width = (shape.r * 2).toFixed();
+		style.height = (shape.r * 2).toFixed();
+		return this;
+	}});
+	dojo.gfx.Circle.nodeType = "oval";
+	dojo.declare("dojo.gfx.Line", dojo.gfx.shape.Line, function (rawNode) {
+		if (rawNode) {
+			rawNode.setAttribute("dojoGfxType", "line");
+		}
+	}, {attachShape:function (rawNode) {
+		var p = rawNode.path.v.match(dojo.gfx.pathRegExp);
+		var shape = {};
+		do {
+			if (p.length < 7 || p[0] != "m" || p[3] != "l" || p[6] != "e") {
+				break;
+			}
+			shape.x1 = parseInt(p[1]);
+			shape.y1 = parseInt(p[2]);
+			shape.x2 = parseInt(p[4]);
+			shape.y2 = parseInt(p[5]);
+		} while (false);
+		return dojo.gfx.makeParameters(dojo.gfx.defaultLine, shape);
+	}, setShape:function (newShape) {
+		var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		this.rawNode.path.v = "m" + shape.x1.toFixed() + " " + shape.y1.toFixed() + "l" + shape.x2.toFixed() + " " + shape.y2.toFixed() + "e";
+		return this.setTransform(this.matrix);
+	}});
+	dojo.gfx.Line.nodeType = "shape";
+	dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, function (rawNode) {
+		if (rawNode) {
+			rawNode.setAttribute("dojoGfxType", "polyline");
+		}
+	}, {attachShape:function (rawNode) {
+		var shape = dojo.lang.shallowCopy(dojo.gfx.defaultPolyline, true);
+		var p = rawNode.path.v.match(dojo.gfx.pathRegExp);
+		do {
+			if (p.length < 3 || p[0] != "m") {
+				break;
+			}
+			var x = parseInt(p[0]);
+			var y = parseInt(p[1]);
+			if (isNaN(x) || isNaN(y)) {
+				break;
+			}
+			shape.points.push({x:x, y:y});
+			if (p.length < 6 || p[3] != "l") {
+				break;
+			}
+			for (var i = 4; i < p.length; i += 2) {
+				x = parseInt(p[i]);
+				y = parseInt(p[i + 1]);
+				if (isNaN(x) || isNaN(y)) {
+					break;
+				}
+				shape.points.push({x:x, y:y});
+			}
+		} while (false);
+		return shape;
+	}, setShape:function (points, closed) {
+		if (points && points instanceof Array) {
+			this.shape = dojo.gfx.makeParameters(this.shape, {points:points});
+			if (closed && this.shape.points.length) {
+				this.shape.points.push(this.shape.points[0]);
+			}
+		} else {
+			this.shape = dojo.gfx.makeParameters(this.shape, points);
+		}
+		this.bbox = null;
+		var attr = [];
+		var p = this.shape.points;
+		if (p.length > 0) {
+			attr.push("m");
+			attr.push(p[0].x.toFixed());
+			attr.push(p[0].y.toFixed());
+			if (p.length > 1) {
+				attr.push("l");
+				for (var i = 1; i < p.length; ++i) {
+					attr.push(p[i].x.toFixed());
+					attr.push(p[i].y.toFixed());
+				}
+			}
+		}
+		attr.push("e");
+		this.rawNode.path.v = attr.join(" ");
+		return this.setTransform(this.matrix);
+	}});
+	dojo.gfx.Polyline.nodeType = "shape";
+	dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {getEventSource:function () {
+		return this.rawNode ? this.rawNode.firstChild : null;
+	}, attachShape:function (rawNode) {
+		var shape = dojo.lang.shallowCopy(dojo.gfx.defaultImage, true);
+		shape.src = rawNode.firstChild.src;
+		return shape;
+	}, setShape:function (newShape) {
+		var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape);
+		this.bbox = null;
+		var firstChild = this.rawNode.firstChild;
+		firstChild.src = shape.src;
+		if (shape.width || shape.height) {
+			firstChild.style.width = shape.width;
+			firstChild.style.height = shape.height;
+		}
+		return this.setTransform(this.matrix);
+	}, setStroke:function () {
+		return this;
+	}, setFill:function () {
+		return this;
+	}, attachStroke:function (rawNode) {
+		return null;
+	}, attachFill:function (rawNode) {
+		return null;
+	}, attachTransform:function (rawNode) {
+		var matrix = {};
+		if (rawNode) {
+			var m = rawNode.filters["DXImageTransform.Microsoft.Matrix"];
+			matrix.xx = m.M11;
+			matrix.xy = m.M12;
+			matrix.yx = m.M21;
+			matrix.yy = m.M22;
+			matrix.dx = m.Dx;
+			matrix.dy = m.Dy;
+		}
+		return dojo.gfx.matrix.normalize(matrix);
+	}, _applyTransform:function () {
+		var matrix = this._getRealMatrix();
+		if (!matrix) {
+			return this;
+		}
+		with (this.rawNode.filters["DXImageTransform.Microsoft.Matrix"]) {
+			M11 = matrix.xx;
+			M12 = matrix.xy;
+			M21 = matrix.yx;
+			M22 = matrix.yy;
+			Dx = matrix.dx;
+			Dy = matrix.dy;
+		}
+		return this;
+	}});
+	dojo.gfx.Image.nodeType = "image";
+	dojo.gfx.path._calcArc = function (alpha) {
+		var cosa = Math.cos(alpha);
+		var sina = Math.sin(alpha);
+		var p2 = {x:cosa + (4 / 3) * (1 - cosa), y:sina - (4 / 3) * cosa * (1 - cosa) / sina};
+		return {s:{x:cosa, y:sina}, c1:p2, c2:{x:p2.x, y:-p2.y}, e:{x:cosa, y:-sina}};
+	};
+	dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, function (rawNode) {
+		if (rawNode) {
+			rawNode.setAttribute("dojoGfxType", "path");
+		}
+		this.vmlPath = "";
+		this.lastControl = {};
+	}, {_updateWithSegment:function (segment) {
+		var last = dojo.lang.shallowCopy(this.last);
+		dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments);
+		var path = this[this.renderers[segment.action]](segment, last);
+		if (typeof (this.vmlPath) == "string") {
+			this.vmlPath += path.join("");
+		} else {
+			this.vmlPath = this.vmlPath.concat(path);
+		}
+		if (typeof (this.vmlPath) == "string") {
+			this.rawNode.path.v = this.vmlPath + " e";
+		}
+	}, attachShape:function (rawNode) {
+		var shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true);
+		var p = rawNode.path.v.match(dojo.gfx.pathRegExp);
+		var t = [], skip = false;
+		for (var i = 0; i < p.length; ++p) {
+			var s = p[i];
+			if (s in this._pathVmlToSvgMap) {
+				skip = false;
+				t.push(this._pathVmlToSvgMap[s]);
+			} else {
+				if (!skip) {
+					var n = parseInt(s);
+					if (isNaN(n)) {
+						skip = true;
+					} else {
+						t.push(n);
+					}
+				}
+			}
+		}
+		if (t.length) {
+			shape.path = t.join(" ");
+		}
+		return shape;
+	}, setShape:function (newShape) {
+		this.vmlPath = [];
+		this.lastControl = {};
+		dojo.gfx.Path.superclass.setShape.apply(this, arguments);
+		this.vmlPath = this.vmlPath.join("");
+		this.rawNode.path.v = this.vmlPath + " e";
+		return this;
+	}, _pathVmlToSvgMap:{m:"M", l:"L", t:"m", r:"l", c:"C", v:"c", qb:"Q", x:"z", e:""}, renderers:{M:"_moveToA", m:"_moveToR", L:"_lineToA", l:"_lineToR", H:"_hLineToA", h:"_hLineToR", V:"_vLineToA", v:"_vLineToR", C:"_curveToA", c:"_curveToR", S:"_smoothCurveToA", s:"_smoothCurveToR", Q:"_qCurveToA", q:"_qCurveToR", T:"_qSmoothCurveToA", t:"_qSmoothCurveToR", A:"_arcTo", a:"_arcTo", Z:"_closePath", z:"_closePath"}, _addArgs:function (path, args, from, upto) {
+		if (typeof (upto) == "undefined") {
+			upto = args.length;
+		}
+		if (typeof (from) == "undefined") {
+			from = 0;
+		}
+		for (var i = from; i < upto; ++i) {
+			path.push(" ");
+			path.push(args[i].toFixed());
+		}
+	}, _addArgsAdjusted:function (path, last, args, from, upto) {
+		if (typeof (upto) == "undefined") {
+			upto = args.length;
+		}
+		if (typeof (from) == "undefined") {
+			from = 0;
+		}
+		for (var i = from; i < upto; i += 2) {
+			path.push(" ");
+			path.push((last.x + args[i]).toFixed());
+			path.push(" ");
+			path.push((last.y + args[i + 1]).toFixed());
+		}
+	}, _moveToA:function (segment) {
+		var p = [" m"];
+		var n = segment.args;
+		var l = n.length;
+		if (l == 2) {
+			this._addArgs(p, n);
+		} else {
+			this._addArgs(p, n, 0, 2);
+			p.push(" l");
+			this._addArgs(p, n, 2);
+		}
+		this.lastControl = {};
+		return p;
+	}, _moveToR:function (segment, last) {
+		var p = ["x" in last ? " t" : " m"];
+		var n = segment.args;
+		var l = n.length;
+		if (l == 2) {
+			this._addArgs(p, n);
+		} else {
+			this._addArgs(p, n, 0, 2);
+			p.push(" r");
+			this._addArgs(p, n, 2);
+		}
+		this.lastControl = {};
+		return p;
+	}, _lineToA:function (segment) {
+		var p = [" l"];
+		this._addArgs(p, segment.args);
+		this.lastControl = {};
+		return p;
+	}, _lineToR:function (segment) {
+		var p = [" r"];
+		this._addArgs(p, segment.args);
+		this.lastControl = {};
+		return p;
+	}, _hLineToA:function (segment, last) {
+		var p = [" l"];
+		var n = segment.args;
+		var l = n.length;
+		var y = " " + last.y.toFixed();
+		for (var i = 0; i < l; ++i) {
+			p.push(" ");
+			p.push(n[i].toFixed());
+			p.push(y);
+		}
+		this.lastControl = {};
+		return p;
+	}, _hLineToR:function (segment) {
+		var p = [" r"];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; ++i) {
+			p.push(" ");
+			p.push(n[i].toFixed());
+			p.push(" 0");
+		}
+		this.lastControl = {};
+		return p;
+	}, _vLineToA:function (segment, last) {
+		var p = [" l"];
+		var n = segment.args;
+		var l = n.length;
+		var x = " " + last.x.toFixed();
+		for (var i = 0; i < l; ++i) {
+			p.push(x);
+			p.push(" ");
+			p.push(n[i].toFixed());
+		}
+		this.lastControl = {};
+		return p;
+	}, _vLineToR:function (segment) {
+		var p = [" r"];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; ++i) {
+			p.push(" 0 ");
+			p.push(n[i].toFixed());
+		}
+		this.lastControl = {};
+		return p;
+	}, _curveToA:function (segment) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 6) {
+			p.push(" c");
+			this._addArgs(p, n, i, i + 6);
+		}
+		this.lastControl = {x:n[l - 4], y:n[l - 3], type:"C"};
+		return p;
+	}, _curveToR:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 6) {
+			p.push(" v");
+			this._addArgs(p, n, i, i + 6);
+			this.lastControl = {x:last.x + n[i + 2], y:last.y + n[i + 3]};
+			last.x += n[i + 4];
+			last.y += n[i + 5];
+		}
+		this.lastControl.type = "C";
+		return p;
+	}, _smoothCurveToA:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 4) {
+			p.push(" c");
+			if (this.lastControl.type == "C") {
+				this._addArgs(p, [2 * last.x - this.lastControl.x, 2 * last.y - this.lastControl.y]);
+			} else {
+				this._addArgs(p, [last.x, last.y]);
+			}
+			this._addArgs(p, n, i, i + 4);
+		}
+		this.lastControl = {x:n[l - 4], y:n[l - 3], type:"C"};
+		return p;
+	}, _smoothCurveToR:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 4) {
+			p.push(" v");
+			if (this.lastControl.type == "C") {
+				this._addArgs(p, [last.x - this.lastControl.x, last.y - this.lastControl.y]);
+			} else {
+				this._addArgs(p, [0, 0]);
+			}
+			this._addArgs(p, n, i, i + 4);
+			this.lastControl = {x:last.x + n[i], y:last.y + n[i + 1]};
+			last.x += n[i + 2];
+			last.y += n[i + 3];
+		}
+		this.lastControl.type = "C";
+		return p;
+	}, _qCurveToA:function (segment) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 4) {
+			p.push(" qb");
+			this._addArgs(p, n, i, i + 4);
+		}
+		this.lastControl = {x:n[l - 4], y:n[l - 3], type:"Q"};
+		return p;
+	}, _qCurveToR:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 4) {
+			p.push(" qb");
+			this._addArgsAdjusted(p, last, n, i, i + 4);
+			this.lastControl = {x:last.x + n[i], y:last.y + n[i + 1]};
+			last.x += n[i + 2];
+			last.y += n[i + 3];
+		}
+		this.lastControl.type = "Q";
+		return p;
+	}, _qSmoothCurveToA:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 2) {
+			p.push(" qb");
+			if (this.lastControl.type == "Q") {
+				this._addArgs(p, [this.lastControl.x = 2 * last.x - this.lastControl.x, this.lastControl.y = 2 * last.y - this.lastControl.y]);
+			} else {
+				this._addArgs(p, [this.lastControl.x = last.x, this.lastControl.y = last.y]);
+			}
+			this._addArgs(p, n, i, i + 2);
+		}
+		this.lastControl.type = "Q";
+		return p;
+	}, _qSmoothCurveToR:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		for (var i = 0; i < l; i += 2) {
+			p.push(" qb");
+			if (this.lastControl.type == "Q") {
+				this._addArgs(p, [this.lastControl.x = 2 * last.x - this.lastControl.x, this.lastControl.y = 2 * last.y - this.lastControl.y]);
+			} else {
+				this._addArgs(p, [this.lastControl.x = last.x, this.lastControl.y = last.y]);
+			}
+			this._addArgsAdjusted(p, last, n, i, i + 2);
+		}
+		this.lastControl.type = "Q";
+		return p;
+	}, _PI4:Math.PI / 4, _curvePI4:dojo.gfx.path._calcArc(Math.PI / 8), _calcArcTo:function (path, last, rx, ry, xRotg, large, cw, x, y) {
+		var m = dojo.gfx.matrix;
+		var xRot = -dojo.math.degToRad(xRotg);
+		var rx2 = rx * rx;
+		var ry2 = ry * ry;
+		var pa = m.multiplyPoint(m.rotate(-xRot), {x:(last.x - x) / 2, y:(last.y - y) / 2});
+		var pax2 = pa.x * pa.x;
+		var pay2 = pa.y * pa.y;
+		var c1 = Math.sqrt((rx2 * ry2 - rx2 * pay2 - ry2 * pax2) / (rx2 * pay2 + ry2 * pax2));
+		var ca = {x:c1 * rx * pa.y / ry, y:-c1 * ry * pa.x / rx};
+		if (large == cw) {
+			ca = {x:-ca.x, y:-ca.y};
+		}
+		var c = m.multiplyPoint([m.translate((last.x + x) / 2, (last.y + y) / 2), m.rotate(xRot)], ca);
+		var startAngle = Math.atan2(c.y - last.y, last.x - c.x) - xRot;
+		var endAngle = Math.atan2(c.y - y, x - c.x) - xRot;
+		var theta = cw ? startAngle - endAngle : endAngle - startAngle;
+		if (theta < 0) {
+			theta += this._2PI;
+		} else {
+			if (theta > this._2PI) {
+				theta = this._2PI;
+			}
+		}
+		var elliptic_transform = m.normalize([m.translate(c.x, c.y), m.rotate(xRot), m.scale(rx, ry)]);
+		var alpha = this._PI4 / 2;
+		var curve = this._curvePI4;
+		var step = cw ? -alpha : alpha;
+		for (var angle = theta; angle > 0; angle -= this._PI4) {
+			if (angle < this._PI4) {
+				alpha = angle / 2;
+				curve = dojo.gfx.path._calcArc(alpha);
+				step = cw ? -alpha : alpha;
+			}
+			var c1, c2, e;
+			var M = m.normalize([elliptic_transform, m.rotate(startAngle + step)]);
+			if (cw) {
+				c1 = m.multiplyPoint(M, curve.c2);
+				c2 = m.multiplyPoint(M, curve.c1);
+				e = m.multiplyPoint(M, curve.s);
+			} else {
+				c1 = m.multiplyPoint(M, curve.c1);
+				c2 = m.multiplyPoint(M, curve.c2);
+				e = m.multiplyPoint(M, curve.e);
+			}
+			path.push(" c");
+			this._addArgs(path, [c1.x, c1.y, c2.x, c2.y, e.x, e.y]);
+			startAngle += 2 * step;
+		}
+	}, _arcTo:function (segment, last) {
+		var p = [];
+		var n = segment.args;
+		var l = n.length;
+		var relative = segment.action == "a";
+		for (var i = 0; i < l; i += 7) {
+			var x1 = n[i + 5];
+			var y1 = n[i + 6];
+			if (relative) {
+				x1 += last.x;
+				y1 += last.y;
+			}
+			this._calcArcTo(p, last, n[i], n[i + 1], n[i + 2], n[i + 3] ? 1 : 0, n[i + 4] ? 1 : 0, x1, y1);
+			last = {x:x1, y:y1};
+		}
+		this.lastControl = {};
+		return p;
+	}, _closePath:function () {
+		this.lastControl = {};
+		return ["x"];
+	}});
+	dojo.gfx.Path.nodeType = "shape";
+	dojo.gfx._creators = {createPath:function (path) {
+		return this.createObject(dojo.gfx.Path, path, true);
+	}, createRect:function (rect) {
+		return this.createObject(dojo.gfx.Rect, rect);
+	}, createCircle:function (circle) {
+		return this.createObject(dojo.gfx.Circle, circle);
+	}, createEllipse:function (ellipse) {
+		return this.createObject(dojo.gfx.Ellipse, ellipse);
+	}, createLine:function (line) {
+		return this.createObject(dojo.gfx.Line, line, true);
+	}, createPolyline:function (points) {
+		return this.createObject(dojo.gfx.Polyline, points, true);
+	}, createImage:function (image) {
+		if (!this.rawNode) {
+			return null;
+		}
+		var shape = new dojo.gfx.Image();
+		var node = document.createElement("div");
+		node.style.position = "relative";
+		node.style.width = this.rawNode.style.width;
+		node.style.height = this.rawNode.style.height;
+		node.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, Dx=0, Dy=0)";
+		var img = document.createElement("img");
+		node.appendChild(img);
+		shape.setRawNode(node);
+		this.rawNode.appendChild(node);
+		shape.setShape(image);
+		this.add(shape);
+		return shape;
+	}, createGroup:function () {
+		return this.createObject(dojo.gfx.Group, null, true);
+	}, createObject:function (shapeType, rawShape, overrideSize) {
+		if (!this.rawNode) {
+			return null;
+		}
+		var shape = new shapeType();
+		var node = document.createElement("v:" + shapeType.nodeType);
+		shape.setRawNode(node);
+		this.rawNode.appendChild(node);
+		if (overrideSize) {
+			this._overrideSize(node);
+		}
+		shape.setShape(rawShape);
+		this.add(shape);
+		return shape;
+	}, _overrideSize:function (node) {
+		node.style.width = this.rawNode.style.width;
+		node.style.height = this.rawNode.style.height;
+		node.coordsize = parseFloat(node.style.width) + " " + parseFloat(node.style.height);
+	}};
+	dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators);
+	dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators);
+	delete dojo.gfx._creators;
+	dojo.gfx.attachNode = function (node) {
+		if (!node) {
+			return null;
+		}
+		var s = null;
+		switch (node.tagName.toLowerCase()) {
+		  case dojo.gfx.Rect.nodeType:
+			s = new dojo.gfx.Rect();
+			break;
+		  case dojo.gfx.Ellipse.nodeType:
+			s = (node.style.width == node.style.height) ? new dojo.gfx.Circle() : new dojo.gfx.Ellipse();
+			break;
+		  case dojo.gfx.Path.nodeType:
+			switch (node.getAttribute("dojoGfxType")) {
+			  case "line":
+				s = new dojo.gfx.Line();
+				break;
+			  case "polyline":
+				s = new dojo.gfx.Polyline();
+				break;
+			  case "path":
+				s = new dojo.gfx.Path();
+				break;
+			}
+			break;
+		  case dojo.gfx.Image.nodeType:
+			s = new dojo.gfx.Image();
+			break;
+		  default:
+			dojo.debug("FATAL ERROR! tagName = " + node.tagName);
+		}
+		s.attach(node);
+		return s;
+	};
+	dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) {
+		if (!this.rawNode) {
+			return this;
+		}
+		this.rawNode.style.width = width;
+		this.rawNode.style.height = height;
+		this.rawNode.coordsize = width + " " + height;
+		return this;
+	}, getDimensions:function () {
+		return this.rawNode ? {width:this.rawNode.style.width, height:this.rawNode.style.height} : null;
+	}, add:function (shape) {
+		var oldParent = shape.getParent();
+		if (this != oldParent) {
+			this.rawNode.appendChild(shape.rawNode);
+			if (oldParent) {
+				oldParent.remove(shape, true);
+			}
+			shape._setParent(this, null);
+		}
+		return this;
+	}, remove:function (shape, silently) {
+		if (this == shape.getParent()) {
+			if (this.rawNode == shape.rawNode.parentNode) {
+				this.rawNode.removeChild(shape.rawNode);
+			}
+			shape._setParent(null, null);
+		}
+		return this;
+	}});
+	dojo.gfx.createSurface = function (parentNode, width, height) {
+		var s = new dojo.gfx.Surface();
+		s.rawNode = document.createElement("v:group");
+		s.rawNode.style.width = width ? width : "100%";
+		s.rawNode.style.height = height ? height : "100%";
+		s.rawNode.coordsize = (width && height) ? (parseFloat(width) + " " + parseFloat(height)) : "100% 100%";
+		s.rawNode.coordorigin = "0 0";
+		dojo.byId(parentNode).appendChild(s.rawNode);
+		return s;
+	};
+	dojo.gfx.attachSurface = function (node) {
+		var s = new dojo.gfx.Surface();
+		s.rawNode = node;
+		return s;
+	};
+}});
+
+
+__CPAN_FILE__ src/gfx/shape.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.shape"], ["require", "dojo.lang.declare"], ["require", "dojo.gfx.common"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.shape");
+	dojo.require("dojo.lang.declare");
+	dojo.require("dojo.gfx.common");
+	dojo.declare("dojo.gfx.Shape", null, {initializer:function () {
+		this.rawNode = null;
+		this.shape = null;
+		this.matrix = null;
+		this.fillStyle = null;
+		this.strokeStyle = null;
+		this.bbox = null;
+		this.parent = null;
+		this.parentMatrix = null;
+	}, getNode:function () {
+		return this.rawNode;
+	}, getShape:function () {
+		return this.shape;
+	}, getTransform:function () {
+		return this.matrix;
+	}, getFill:function () {
+		return this.fillStyle;
+	}, getStroke:function () {
+		return this.strokeStyle;
+	}, getParent:function () {
+		return this.parent;
+	}, getBoundingBox:function () {
+		return this.bbox;
+	}, getEventSource:function () {
+		return this.rawNode;
+	}, setShape:function (shape) {
+		return this;
+	}, setFill:function (fill) {
+		return this;
+	}, setStroke:function (stroke) {
+		return this;
+	}, moveToFront:function () {
+		return this;
+	}, moveToBack:function () {
+		return this;
+	}, setTransform:function (matrix) {
+		this.matrix = dojo.gfx.matrix.clone(matrix ? dojo.gfx.matrix.normalize(matrix) : dojo.gfx.identity, true);
+		return this._applyTransform();
+	}, applyRightTransform:function (matrix) {
+		return matrix ? this.setTransform([this.matrix, matrix]) : this;
+	}, applyLeftTransform:function (matrix) {
+		return matrix ? this.setTransform([matrix, this.matrix]) : this;
+	}, applyTransform:function (matrix) {
+		return matrix ? this.setTransform([this.matrix, matrix]) : this;
+	}, remove:function (silently) {
+		if (this.parent) {
+			this.parent.remove(this, silently);
+		}
+		return this;
+	}, _setParent:function (parent, matrix) {
+		this.parent = parent;
+		return this._updateParentMatrix(matrix);
+	}, _updateParentMatrix:function (matrix) {
+		this.parentMatrix = matrix ? dojo.gfx.matrix.clone(matrix) : null;
+		return this._applyTransform();
+	}, _getRealMatrix:function () {
+		return this.parentMatrix ? new dojo.gfx.matrix.Matrix2D([this.parentMatrix, this.matrix]) : this.matrix;
+	}});
+	dojo.declare("dojo.gfx.shape.VirtualGroup", dojo.gfx.Shape, {initializer:function () {
+		this.children = [];
+	}, add:function (shape) {
+		var oldParent = shape.getParent();
+		if (oldParent) {
+			oldParent.remove(shape, true);
+		}
+		this.children.push(shape);
+		return shape._setParent(this, this._getRealMatrix());
+	}, remove:function (shape, silently) {
+		for (var i = 0; i < this.children.length; ++i) {
+			if (this.children[i] == shape) {
+				if (silently) {
+				} else {
+					shape._setParent(null, null);
+				}
+				this.children.splice(i, 1);
+				break;
+			}
+		}
+		return this;
+	}, _applyTransform:function () {
+		var matrix = this._getRealMatrix();
+		for (var i = 0; i < this.children.length; ++i) {
+			this.children[i]._updateParentMatrix(matrix);
+		}
+		return this;
+	}});
+	dojo.declare("dojo.gfx.shape.Rect", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultRect, true);
+		this.attach(rawNode);
+	}, getBoundingBox:function () {
+		return this.shape;
+	}});
+	dojo.declare("dojo.gfx.shape.Ellipse", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultEllipse, true);
+		this.attach(rawNode);
+	}, getBoundingBox:function () {
+		if (!this.bbox) {
+			var shape = this.shape;
+			this.bbox = {x:shape.cx - shape.rx, y:shape.cy - shape.ry, width:2 * shape.rx, height:2 * shape.ry};
+		}
+		return this.bbox;
+	}});
+	dojo.declare("dojo.gfx.shape.Circle", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultCircle, true);
+		this.attach(rawNode);
+	}, getBoundingBox:function () {
+		if (!this.bbox) {
+			var shape = this.shape;
+			this.bbox = {x:shape.cx - shape.r, y:shape.cy - shape.r, width:2 * shape.r, height:2 * shape.r};
+		}
+		return this.bbox;
+	}});
+	dojo.declare("dojo.gfx.shape.Line", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultLine, true);
+		this.attach(rawNode);
+	}, getBoundingBox:function () {
+		if (!this.bbox) {
+			var shape = this.shape;
+			this.bbox = {x:Math.min(shape.x1, shape.x2), y:Math.min(shape.y1, shape.y2), width:Math.abs(shape.x2 - shape.x1), height:Math.abs(shape.y2 - shape.y1)};
+		}
+		return this.bbox;
+	}});
+	dojo.declare("dojo.gfx.shape.Polyline", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultPolyline, true);
+		this.attach(rawNode);
+	}, getBoundingBox:function () {
+		if (!this.bbox && this.shape.points.length) {
+			var p = this.shape.points;
+			var l = p.length;
+			var t = p[0];
+			var bbox = {l:t.x, t:t.y, r:t.x, b:t.y};
+			for (var i = 1; i < l; ++i) {
+				t = p[i];
+				if (bbox.l > t.x) {
+					bbox.l = t.x;
+				}
+				if (bbox.r < t.x) {
+					bbox.r = t.x;
+				}
+				if (bbox.t > t.y) {
+					bbox.t = t.y;
+				}
+				if (bbox.b < t.y) {
+					bbox.b = t.y;
+				}
+			}
+			this.bbox = {x:bbox.l, y:bbox.t, width:bbox.r - bbox.l, height:bbox.b - bbox.t};
+		}
+		return this.bbox;
+	}});
+	dojo.declare("dojo.gfx.shape.Image", dojo.gfx.Shape, {initializer:function (rawNode) {
+		this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultImage, true);
+		this.attach(rawNode);
+	}, getBoundingBox:function () {
+		if (!this.bbox) {
+			var shape = this.shape;
+			this.bbox = {x:0, y:0, width:shape.width, height:shape.height};
+		}
+		return this.bbox;
+	}});
+}});
+
+
 __CPAN_FILE__ src/gfx/shape.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -66267,6 +125984,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.shape");
 dojo.require("dojo.lang.declare");
 dojo.require("dojo.gfx.common");
@@ -66433,6 +126152,128 @@
 
 
 __CPAN_DIR__ src/gfx/color
+__CPAN_FILE__ src/gfx/color/hsl.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.color.hsl"], ["require", "dojo.lang.array"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.color.hsl");
+	dojo.require("dojo.lang.array");
+	dojo.lang.extend(dojo.gfx.color.Color, {toHsl:function () {
+		return dojo.gfx.color.rgb2hsl(this.toRgb());
+	}});
+	dojo.gfx.color.rgb2hsl = function (r, g, b) {
+		if (dojo.lang.isArray(r)) {
+			b = r[2] || 0;
+			g = r[1] || 0;
+			r = r[0] || 0;
+		}
+		r /= 255;
+		g /= 255;
+		b /= 255;
+		var h = null;
+		var s = null;
+		var l = null;
+		var min = Math.min(r, g, b);
+		var max = Math.max(r, g, b);
+		var delta = max - min;
+		l = (min + max) / 2;
+		s = 0;
+		if ((l > 0) && (l < 1)) {
+			s = delta / ((l < 0.5) ? (2 * l) : (2 - 2 * l));
+		}
+		h = 0;
+		if (delta > 0) {
+			if ((max == r) && (max != g)) {
+				h += (g - b) / delta;
+			}
+			if ((max == g) && (max != b)) {
+				h += (2 + (b - r) / delta);
+			}
+			if ((max == b) && (max != r)) {
+				h += (4 + (r - g) / delta);
+			}
+			h *= 60;
+		}
+		h = (h == 0) ? 360 : Math.ceil((h / 360) * 255);
+		s = Math.ceil(s * 255);
+		l = Math.ceil(l * 255);
+		return [h, s, l];
+	};
+	dojo.gfx.color.hsl2rgb = function (h, s, l) {
+		if (dojo.lang.isArray(h)) {
+			l = h[2] || 0;
+			s = h[1] || 0;
+			h = h[0] || 0;
+		}
+		h = (h / 255) * 360;
+		if (h == 360) {
+			h = 0;
+		}
+		s = s / 255;
+		l = l / 255;
+		while (h < 0) {
+			h += 360;
+		}
+		while (h > 360) {
+			h -= 360;
+		}
+		var r, g, b;
+		if (h < 120) {
+			r = (120 - h) / 60;
+			g = h / 60;
+			b = 0;
+		} else {
+			if (h < 240) {
+				r = 0;
+				g = (240 - h) / 60;
+				b = (h - 120) / 60;
+			} else {
+				r = (h - 240) / 60;
+				g = 0;
+				b = (360 - h) / 60;
+			}
+		}
+		r = Math.min(r, 1);
+		g = Math.min(g, 1);
+		b = Math.min(b, 1);
+		r = 2 * s * r + (1 - s);
+		g = 2 * s * g + (1 - s);
+		b = 2 * s * b + (1 - s);
+		if (l < 0.5) {
+			r = l * r;
+			g = l * g;
+			b = l * b;
+		} else {
+			r = (1 - l) * r + 2 * l - 1;
+			g = (1 - l) * g + 2 * l - 1;
+			b = (1 - l) * b + 2 * l - 1;
+		}
+		r = Math.ceil(r * 255);
+		g = Math.ceil(g * 255);
+		b = Math.ceil(b * 255);
+		return [r, g, b];
+	};
+	dojo.gfx.color.hsl2hex = function (h, s, l) {
+		var rgb = dojo.gfx.color.hsl2rgb(h, s, l);
+		return dojo.gfx.color.rgb2hex(rgb[0], rgb[1], rgb[2]);
+	};
+	dojo.gfx.color.hex2hsl = function (hex) {
+		var rgb = dojo.gfx.color.hex2rgb(hex);
+		return dojo.gfx.color.rgb2hsl(rgb[0], rgb[1], rgb[2]);
+	};
+}});
+
+
 __CPAN_FILE__ src/gfx/color/hsl.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -66444,6 +126285,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.color.hsl");
 dojo.require("dojo.lang.array");
 dojo.lang.extend(dojo.gfx.color.Color, {toHsl:function () {
@@ -66551,6 +126394,220 @@
 };
 
 
+__CPAN_FILE__ src/gfx/color/hsv.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.color.hsv"], ["require", "dojo.lang.array"], ["require", "dojo.math"]], definePackage:function (dojo) {
+	dojo.provide("dojo.gfx.color.hsv");
+	dojo.require("dojo.lang.array");
+	dojo.require("dojo.math");
+	dojo.lang.extend(dojo.gfx.color.Color, {toHsv:function () {
+		return dojo.gfx.color.rgb2hsv(this.toRgb());
+	}});
+	dojo.gfx.color.rgb2hsv = function (r, g, b, options) {
+		if (dojo.lang.isArray(r)) {
+			if (g) {
+				options = g;
+			}
+			b = r[2] || 0;
+			g = r[1] || 0;
+			r = r[0] || 0;
+		}
+		var opt = {inputRange:(options && options.inputRange) ? options.inputRange : 255, outputRange:(options && options.outputRange) ? options.outputRange : [255, 255, 255]};
+		var h = null;
+		var s = null;
+		var v = null;
+		switch (opt.inputRange) {
+		  case 1:
+			r = (r * 255);
+			g = (g * 255);
+			b = (b * 255);
+			break;
+		  case 100:
+			r = (r / 100) * 255;
+			g = (g / 100) * 255;
+			b = (b / 100) * 255;
+			break;
+		  default:
+			break;
+		}
+		var min = Math.min(r, g, b);
+		v = Math.max(r, g, b);
+		var delta = v - min;
+		s = (v == 0) ? 0 : delta / v;
+		if (s == 0) {
+			h = 0;
+		} else {
+			if (r == v) {
+				h = 60 * (g - b) / delta;
+			} else {
+				if (g == v) {
+					h = 120 + 60 * (b - r) / delta;
+				} else {
+					if (b == v) {
+						h = 240 + 60 * (r - g) / delta;
+					}
+				}
+			}
+			if (h <= 0) {
+				h += 360;
+			}
+		}
+		switch (opt.outputRange[0]) {
+		  case 360:
+			break;
+		  case 100:
+			h = (h / 360) * 100;
+			break;
+		  case 1:
+			h = (h / 360);
+			break;
+		  default:
+			h = (h / 360) * 255;
+			break;
+		}
+		switch (opt.outputRange[1]) {
+		  case 100:
+			s = s * 100;
+		  case 1:
+			break;
+		  default:
+			s = s * 255;
+			break;
+		}
+		switch (opt.outputRange[2]) {
+		  case 100:
+			v = (v / 255) * 100;
+			break;
+		  case 1:
+			v = (v / 255);
+			break;
+		  default:
+			break;
+		}
+		h = dojo.math.round(h);
+		s = dojo.math.round(s);
+		v = dojo.math.round(v);
+		return [h, s, v];
+	};
+	dojo.gfx.color.hsv2rgb = function (h, s, v, options) {
+		if (dojo.lang.isArray(h)) {
+			if (s) {
+				options = s;
+			}
+			v = h[2] || 0;
+			s = h[1] || 0;
+			h = h[0] || 0;
+		}
+		var opt = {inputRange:(options && options.inputRange) ? options.inputRange : [255, 255, 255], outputRange:(options && options.outputRange) ? options.outputRange : 255};
+		switch (opt.inputRange[0]) {
+		  case 1:
+			h = h * 360;
+			break;
+		  case 100:
+			h = (h / 100) * 360;
+			break;
+		  case 360:
+			h = h;
+			break;
+		  default:
+			h = (h / 255) * 360;
+		}
+		if (h == 360) {
+			h = 0;
+		}
+		switch (opt.inputRange[1]) {
+		  case 100:
+			s /= 100;
+			break;
+		  case 255:
+			s /= 255;
+		}
+		switch (opt.inputRange[2]) {
+		  case 100:
+			v /= 100;
+			break;
+		  case 255:
+			v /= 255;
+		}
+		var r = null;
+		var g = null;
+		var b = null;
+		if (s == 0) {
+			r = v;
+			g = v;
+			b = v;
+		} else {
+			var hTemp = h / 60;
+			var i = Math.floor(hTemp);
+			var f = hTemp - i;
+			var p = v * (1 - s);
+			var q = v * (1 - (s * f));
+			var t = v * (1 - (s * (1 - f)));
+			switch (i) {
+			  case 0:
+				r = v;
+				g = t;
+				b = p;
+				break;
+			  case 1:
+				r = q;
+				g = v;
+				b = p;
+				break;
+			  case 2:
+				r = p;
+				g = v;
+				b = t;
+				break;
+			  case 3:
+				r = p;
+				g = q;
+				b = v;
+				break;
+			  case 4:
+				r = t;
+				g = p;
+				b = v;
+				break;
+			  case 5:
+				r = v;
+				g = p;
+				b = q;
+				break;
+			}
+		}
+		switch (opt.outputRange) {
+		  case 1:
+			r = dojo.math.round(r, 2);
+			g = dojo.math.round(g, 2);
+			b = dojo.math.round(b, 2);
+			break;
+		  case 100:
+			r = Math.round(r * 100);
+			g = Math.round(g * 100);
+			b = Math.round(b * 100);
+			break;
+		  default:
+			r = Math.round(r * 255);
+			g = Math.round(g * 255);
+			b = Math.round(b * 255);
+		}
+		return [r, g, b];
+	};
+}});
+
+
 __CPAN_FILE__ src/gfx/color/hsv.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -66562,6 +126619,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.gfx.color.hsv");
 dojo.require("dojo.lang.array");
 dojo.require("dojo.math");
@@ -66762,6 +126821,25 @@
 
 
 __CPAN_DIR__ src/text
+__CPAN_FILE__ src/text/textDirectory.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["require", "dojo.cal.textDirectory"]], definePackage:function (dojo) {
+	dojo.require("dojo.cal.textDirectory");
+	dojo.deprecate("dojo.text.textDirectory", "use dojo.cal.textDirectory", "0.5");
+}});
+
+
 __CPAN_FILE__ src/text/textDirectory.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -66773,6 +126851,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.require("dojo.cal.textDirectory");
 dojo.deprecate("dojo.text.textDirectory", "use dojo.cal.textDirectory", "0.5");
 
@@ -66788,10 +126868,31 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.text.String", "dojo.text.Builder"]});
 dojo.deprecated("dojo.text", "textDirectory moved to cal, text.String and text.Builder havne't been here for awhile", "0.5");
 
 
+__CPAN_FILE__ src/text/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.text.String", "dojo.text.Builder"]}]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.text.String", "dojo.text.Builder"]});
+	dojo.deprecated("dojo.text", "textDirectory moved to cal, text.String and text.Builder havne't been here for awhile", "0.5");
+}});
+
+
 __CPAN_DIR__ src/logging
 __CPAN_FILE__ src/logging/Logger.js
 /*
@@ -66804,6 +126905,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.logging.Logger");
 dojo.provide("dojo.logging.LogFilter");
 dojo.provide("dojo.logging.Record");
@@ -67020,6 +127123,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.logging.ConsoleLogger");
 dojo.require("dojo.logging.Logger");
 dojo.lang.extend(dojo.logging.MemoryLogHandler, {debug:function () {
@@ -67106,10 +127211,341 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:[["dojo.logging.Logger", false, false]], rhino:["dojo.logging.RhinoLogger"]});
 dojo.provide("dojo.logging.*");
 
 
+__CPAN_FILE__ src/logging/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:[["dojo.logging.Logger", false, false]], rhino:["dojo.logging.RhinoLogger"]}], ["provide", "dojo.logging.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:[["dojo.logging.Logger", false, false]], rhino:["dojo.logging.RhinoLogger"]});
+	dojo.provide("dojo.logging.*");
+}});
+
+
+__CPAN_FILE__ src/logging/Logger.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.logging.Logger"], ["provide", "dojo.logging.LogFilter"], ["provide", "dojo.logging.Record"], ["provide", "dojo.log"], ["require", "dojo.lang.common"], ["require", "dojo.lang.declare"]], definePackage:function (dojo) {
+	dojo.provide("dojo.logging.Logger");
+	dojo.provide("dojo.logging.LogFilter");
+	dojo.provide("dojo.logging.Record");
+	dojo.provide("dojo.log");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.declare");
+	dojo.logging.Record = function (logLevel, message) {
+		this.level = logLevel;
+		this.message = "";
+		this.msgArgs = [];
+		this.time = new Date();
+		if (dojo.lang.isArray(message)) {
+			if (message.length > 0 && dojo.lang.isString(message[0])) {
+				this.message = message.shift();
+			}
+			this.msgArgs = message;
+		} else {
+			this.message = message;
+		}
+	};
+	dojo.logging.LogFilter = function (loggerChain) {
+		this.passChain = loggerChain || "";
+		this.filter = function (record) {
+			return true;
+		};
+	};
+	dojo.logging.Logger = function () {
+		this.cutOffLevel = 0;
+		this.propagate = true;
+		this.parent = null;
+		this.data = [];
+		this.filters = [];
+		this.handlers = [];
+	};
+	dojo.extend(dojo.logging.Logger, {_argsToArr:function (args) {
+		var ret = [];
+		for (var x = 0; x < args.length; x++) {
+			ret.push(args[x]);
+		}
+		return ret;
+	}, setLevel:function (lvl) {
+		this.cutOffLevel = parseInt(lvl);
+	}, isEnabledFor:function (lvl) {
+		return parseInt(lvl) >= this.cutOffLevel;
+	}, getEffectiveLevel:function () {
+		if ((this.cutOffLevel == 0) && (this.parent)) {
+			return this.parent.getEffectiveLevel();
+		}
+		return this.cutOffLevel;
+	}, addFilter:function (flt) {
+		this.filters.push(flt);
+		return this.filters.length - 1;
+	}, removeFilterByIndex:function (fltIndex) {
+		if (this.filters[fltIndex]) {
+			delete this.filters[fltIndex];
+			return true;
+		}
+		return false;
+	}, removeFilter:function (fltRef) {
+		for (var x = 0; x < this.filters.length; x++) {
+			if (this.filters[x] === fltRef) {
+				delete this.filters[x];
+				return true;
+			}
+		}
+		return false;
+	}, removeAllFilters:function () {
+		this.filters = [];
+	}, filter:function (rec) {
+		for (var x = 0; x < this.filters.length; x++) {
+			if ((this.filters[x]["filter"]) && (!this.filters[x].filter(rec)) || (rec.level < this.cutOffLevel)) {
+				return false;
+			}
+		}
+		return true;
+	}, addHandler:function (hdlr) {
+		this.handlers.push(hdlr);
+		return this.handlers.length - 1;
+	}, handle:function (rec) {
+		if ((!this.filter(rec)) || (rec.level < this.cutOffLevel)) {
+			return false;
+		}
+		for (var x = 0; x < this.handlers.length; x++) {
+			if (this.handlers[x]["handle"]) {
+				this.handlers[x].handle(rec);
+			}
+		}
+		return true;
+	}, log:function (lvl, msg) {
+		if ((this.propagate) && (this.parent) && (this.parent.rec.level >= this.cutOffLevel)) {
+			this.parent.log(lvl, msg);
+			return false;
+		}
+		this.handle(new dojo.logging.Record(lvl, msg));
+		return true;
+	}, debug:function (msg) {
+		return this.logType("DEBUG", this._argsToArr(arguments));
+	}, info:function (msg) {
+		return this.logType("INFO", this._argsToArr(arguments));
+	}, warning:function (msg) {
+		return this.logType("WARNING", this._argsToArr(arguments));
+	}, error:function (msg) {
+		return this.logType("ERROR", this._argsToArr(arguments));
+	}, critical:function (msg) {
+		return this.logType("CRITICAL", this._argsToArr(arguments));
+	}, exception:function (msg, e, squelch) {
+		if (e) {
+			var eparts = [e.name, (e.description || e.message)];
+			if (e.fileName) {
+				eparts.push(e.fileName);
+				eparts.push("line " + e.lineNumber);
+			}
+			msg += " " + eparts.join(" : ");
+		}
+		this.logType("ERROR", msg);
+		if (!squelch) {
+			throw e;
+		}
+	}, logType:function (type, args) {
+		return this.log.apply(this, [dojo.logging.log.getLevel(type), args]);
+	}, warn:function () {
+		this.warning.apply(this, arguments);
+	}, err:function () {
+		this.error.apply(this, arguments);
+	}, crit:function () {
+		this.critical.apply(this, arguments);
+	}});
+	dojo.logging.LogHandler = function (level) {
+		this.cutOffLevel = (level) ? level : 0;
+		this.formatter = null;
+		this.data = [];
+		this.filters = [];
+	};
+	dojo.lang.extend(dojo.logging.LogHandler, {setFormatter:function (formatter) {
+		dojo.unimplemented("setFormatter");
+	}, flush:function () {
+	}, close:function () {
+	}, handleError:function () {
+		dojo.deprecated("dojo.logging.LogHandler.handleError", "use handle()", "0.6");
+	}, handle:function (record) {
+		if ((this.filter(record)) && (record.level >= this.cutOffLevel)) {
+			this.emit(record);
+		}
+	}, emit:function (record) {
+		dojo.unimplemented("emit");
+	}});
+	void (function () {
+		var names = ["setLevel", "addFilter", "removeFilterByIndex", "removeFilter", "removeAllFilters", "filter"];
+		var tgt = dojo.logging.LogHandler.prototype;
+		var src = dojo.logging.Logger.prototype;
+		for (var x = 0; x < names.length; x++) {
+			tgt[names[x]] = src[names[x]];
+		}
+	})();
+	dojo.logging.log = new dojo.logging.Logger();
+	dojo.logging.log.levels = [{"name":"DEBUG", "level":1}, {"name":"INFO", "level":2}, {"name":"WARNING", "level":3}, {"name":"ERROR", "level":4}, {"name":"CRITICAL", "level":5}];
+	dojo.logging.log.loggers = {};
+	dojo.logging.log.getLogger = function (name) {
+		if (!this.loggers[name]) {
+			this.loggers[name] = new dojo.logging.Logger();
+			this.loggers[name].parent = this;
+		}
+		return this.loggers[name];
+	};
+	dojo.logging.log.getLevelName = function (lvl) {
+		for (var x = 0; x < this.levels.length; x++) {
+			if (this.levels[x].level == lvl) {
+				return this.levels[x].name;
+			}
+		}
+		return null;
+	};
+	dojo.logging.log.getLevel = function (name) {
+		for (var x = 0; x < this.levels.length; x++) {
+			if (this.levels[x].name.toUpperCase() == name.toUpperCase()) {
+				return this.levels[x].level;
+			}
+		}
+		return null;
+	};
+	dojo.declare("dojo.logging.MemoryLogHandler", dojo.logging.LogHandler, {initializer:function (level, recordsToKeep, postType, postInterval) {
+		dojo.logging.LogHandler.call(this, level);
+		this.numRecords = (typeof djConfig["loggingNumRecords"] != "undefined") ? djConfig["loggingNumRecords"] : ((recordsToKeep) ? recordsToKeep : -1);
+		this.postType = (typeof djConfig["loggingPostType"] != "undefined") ? djConfig["loggingPostType"] : (postType || -1);
+		this.postInterval = (typeof djConfig["loggingPostInterval"] != "undefined") ? djConfig["loggingPostInterval"] : (postType || -1);
+	}, emit:function (record) {
+		if (!djConfig.isDebug) {
+			return;
+		}
+		var logStr = String(dojo.log.getLevelName(record.level) + ": " + record.time.toLocaleTimeString()) + ": " + record.message;
+		if (!dj_undef("println", dojo.hostenv)) {
+			dojo.hostenv.println(logStr, record.msgArgs);
+		}
+		this.data.push(record);
+		if (this.numRecords != -1) {
+			while (this.data.length > this.numRecords) {
+				this.data.shift();
+			}
+		}
+	}});
+	dojo.logging.logQueueHandler = new dojo.logging.MemoryLogHandler(0, 50, 0, 10000);
+	dojo.logging.log.addHandler(dojo.logging.logQueueHandler);
+	dojo.log = dojo.logging.log;
+}});
+
+
+__CPAN_FILE__ src/logging/ConsoleLogger.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.logging.ConsoleLogger"], ["require", "dojo.logging.Logger"]], definePackage:function (dojo) {
+	dojo.provide("dojo.logging.ConsoleLogger");
+	dojo.require("dojo.logging.Logger");
+	dojo.lang.extend(dojo.logging.MemoryLogHandler, {debug:function () {
+		dojo.hostenv.println.apply(this, arguments);
+	}, info:function () {
+		dojo.hostenv.println.apply(this, arguments);
+	}, warn:function () {
+		dojo.hostenv.println.apply(this, arguments);
+	}, error:function () {
+		dojo.hostenv.println.apply(this, arguments);
+	}, critical:function () {
+		dojo.hostenv.println.apply(this, arguments);
+	}, emit:function (record) {
+		if (!djConfig.isDebug) {
+			return;
+		}
+		var funcName = null;
+		switch (record.level) {
+		  case 1:
+			funcName = "debug";
+			break;
+		  case 2:
+			funcName = "info";
+			break;
+		  case 3:
+			funcName = "warn";
+			break;
+		  case 4:
+			funcName = "error";
+			break;
+		  case 5:
+			funcName = "critical";
+			break;
+		  default:
+			funcName = "debug";
+		}
+		var logStr = String(dojo.log.getLevelName(record.level) + ": " + record.time.toLocaleTimeString()) + ": " + record.message;
+		if (record.msgArgs && record.msgArgs.length > 0) {
+			this[funcName].call(this, logStr, record.msgArgs);
+		} else {
+			this[funcName].call(this, logStr);
+		}
+		this.data.push(record);
+		if (this.numRecords != -1) {
+			while (this.data.length > this.numRecords) {
+				this.data.shift();
+			}
+		}
+	}});
+	if (!dj_undef("console") && !dj_undef("info", console)) {
+		dojo.lang.extend(dojo.logging.MemoryLogHandler, {debug:function () {
+			console.debug.apply(this, arguments);
+		}, info:function () {
+			console.info.apply(this, arguments);
+		}, warn:function () {
+			console.warn.apply(this, arguments);
+		}, error:function () {
+			console.error.apply(this, arguments);
+		}, critical:function () {
+			console.error.apply(this, arguments);
+		}});
+		dojo.lang.extend(dojo.logging.Logger, {exception:function (msg, e, squelch) {
+			var args = [msg];
+			if (e) {
+				msg += " : " + e.name + " " + (e.description || e.message);
+				args.push(e);
+			}
+			this.logType("ERROR", args);
+			if (!squelch) {
+				throw e;
+			}
+		}});
+	}
+}});
+
+
 __CPAN_DIR__ src/uuid
 __CPAN_FILE__ src/uuid/NameBasedGenerator.js
 /*
@@ -67122,6 +127558,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uuid.NameBasedGenerator");
 dojo.uuid.NameBasedGenerator = new function () {
 	this.generate = function (returnType) {
@@ -67146,6 +127584,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uuid.TimeBasedGenerator");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.type");
@@ -67380,6 +127820,34 @@
 }();
 
 
+__CPAN_FILE__ src/uuid/NameBasedGenerator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uuid.NameBasedGenerator"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uuid.NameBasedGenerator");
+	dojo.uuid.NameBasedGenerator = new function () {
+		this.generate = function (returnType) {
+			dojo.unimplemented("dojo.uuid.NameBasedGenerator.generate");
+			var returnValue = "00000000-0000-0000-0000-000000000000";
+			if (returnType && (returnType != String)) {
+				returnValue = new returnType(returnValue);
+			}
+			return returnValue;
+		};
+	}();
+}});
+
+
 __CPAN_FILE__ src/uuid/Uuid.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -67391,6 +127859,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uuid.Uuid");
 dojo.require("dojo.lang.common");
 dojo.require("dojo.lang.assert");
@@ -67606,6 +128076,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uuid.RandomGenerator");
 dojo.uuid.RandomGenerator = new function () {
 	this.generate = function (returnType) {
@@ -67630,6 +128102,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uuid.NilGenerator");
 dojo.uuid.NilGenerator = new function () {
 	this.generate = function (returnType) {
@@ -67653,10 +128127,305 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.kwCompoundRequire({common:["dojo.uuid.Uuid", "dojo.uuid.LightweightGenerator", "dojo.uuid.RandomGenerator", "dojo.uuid.TimeBasedGenerator", "dojo.uuid.NameBasedGenerator", "dojo.uuid.NilGenerator"]});
 dojo.provide("dojo.uuid.*");
 
 
+__CPAN_FILE__ src/uuid/RandomGenerator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uuid.RandomGenerator"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uuid.RandomGenerator");
+	dojo.uuid.RandomGenerator = new function () {
+		this.generate = function (returnType) {
+			dojo.unimplemented("dojo.uuid.RandomGenerator.generate");
+			var returnValue = "00000000-0000-0000-0000-000000000000";
+			if (returnType && (returnType != String)) {
+				returnValue = new returnType(returnValue);
+			}
+			return returnValue;
+		};
+	}();
+}});
+
+
+__CPAN_FILE__ src/uuid/NilGenerator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uuid.NilGenerator"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uuid.NilGenerator");
+	dojo.uuid.NilGenerator = new function () {
+		this.generate = function (returnType) {
+			var returnValue = "00000000-0000-0000-0000-000000000000";
+			if (returnType && (returnType != String)) {
+				returnValue = new returnType(returnValue);
+			}
+			return returnValue;
+		};
+	}();
+}});
+
+
+__CPAN_FILE__ src/uuid/Uuid.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uuid.Uuid"], ["require", "dojo.lang.common"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uuid.Uuid");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.assert");
+	dojo.uuid.Uuid = function (input) {
+		this._uuidString = dojo.uuid.Uuid.NIL_UUID;
+		if (input) {
+			if (dojo.lang.isString(input)) {
+				this._uuidString = input.toLowerCase();
+				dojo.lang.assert(this.isValid());
+			} else {
+				if (dojo.lang.isObject(input) && input.generate) {
+					var generator = input;
+					this._uuidString = generator.generate();
+					dojo.lang.assert(this.isValid());
+				} else {
+					dojo.lang.assert(false, "The dojo.uuid.Uuid() constructor must be initializated with a UUID string.");
+				}
+			}
+		} else {
+			var ourGenerator = dojo.uuid.Uuid.getGenerator();
+			if (ourGenerator) {
+				this._uuidString = ourGenerator.generate();
+				dojo.lang.assert(this.isValid());
+			}
+		}
+	};
+	dojo.uuid.Uuid.NIL_UUID = "00000000-0000-0000-0000-000000000000";
+	dojo.uuid.Uuid.Version = {UNKNOWN:0, TIME_BASED:1, DCE_SECURITY:2, NAME_BASED_MD5:3, RANDOM:4, NAME_BASED_SHA1:5};
+	dojo.uuid.Uuid.Variant = {NCS:"0", DCE:"10", MICROSOFT:"110", UNKNOWN:"111"};
+	dojo.uuid.Uuid.HEX_RADIX = 16;
+	dojo.uuid.Uuid.compare = function (uuidOne, uuidTwo) {
+		var uuidStringOne = uuidOne.toString();
+		var uuidStringTwo = uuidTwo.toString();
+		if (uuidStringOne > uuidStringTwo) {
+			return 1;
+		}
+		if (uuidStringOne < uuidStringTwo) {
+			return -1;
+		}
+		return 0;
+	};
+	dojo.uuid.Uuid.setGenerator = function (generator) {
+		dojo.lang.assert(!generator || (dojo.lang.isObject(generator) && generator.generate));
+		dojo.uuid.Uuid._ourGenerator = generator;
+	};
+	dojo.uuid.Uuid.getGenerator = function () {
+		return dojo.uuid.Uuid._ourGenerator;
+	};
+	dojo.uuid.Uuid.prototype.toString = function (format) {
+		if (format) {
+			switch (format) {
+			  case "{}":
+				return "{" + this._uuidString + "}";
+				break;
+			  case "()":
+				return "(" + this._uuidString + ")";
+				break;
+			  case "\"\"":
+				return "\"" + this._uuidString + "\"";
+				break;
+			  case "''":
+				return "'" + this._uuidString + "'";
+				break;
+			  case "urn":
+				return "urn:uuid:" + this._uuidString;
+				break;
+			  case "!-":
+				return this._uuidString.split("-").join("");
+				break;
+			  default:
+				dojo.lang.assert(false, "The toString() method of dojo.uuid.Uuid was passed a bogus format.");
+			}
+		} else {
+			return this._uuidString;
+		}
+	};
+	dojo.uuid.Uuid.prototype.compare = function (otherUuid) {
+		return dojo.uuid.Uuid.compare(this, otherUuid);
+	};
+	dojo.uuid.Uuid.prototype.isEqual = function (otherUuid) {
+		return (this.compare(otherUuid) == 0);
+	};
+	dojo.uuid.Uuid.prototype.isValid = function () {
+		try {
+			dojo.lang.assertType(this._uuidString, String);
+			dojo.lang.assert(this._uuidString.length == 36);
+			dojo.lang.assert(this._uuidString == this._uuidString.toLowerCase());
+			var arrayOfParts = this._uuidString.split("-");
+			dojo.lang.assert(arrayOfParts.length == 5);
+			dojo.lang.assert(arrayOfParts[0].length == 8);
+			dojo.lang.assert(arrayOfParts[1].length == 4);
+			dojo.lang.assert(arrayOfParts[2].length == 4);
+			dojo.lang.assert(arrayOfParts[3].length == 4);
+			dojo.lang.assert(arrayOfParts[4].length == 12);
+			for (var i in arrayOfParts) {
+				var part = arrayOfParts[i];
+				var integer = parseInt(part, dojo.uuid.Uuid.HEX_RADIX);
+				dojo.lang.assert(isFinite(integer));
+			}
+			return true;
+		}
+		catch (e) {
+			return false;
+		}
+	};
+	dojo.uuid.Uuid.prototype.getVariant = function () {
+		var variantCharacter = this._uuidString.charAt(19);
+		var variantNumber = parseInt(variantCharacter, dojo.uuid.Uuid.HEX_RADIX);
+		dojo.lang.assert((variantNumber >= 0) && (variantNumber <= 16));
+		if (!dojo.uuid.Uuid._ourVariantLookupTable) {
+			var Variant = dojo.uuid.Uuid.Variant;
+			var lookupTable = [];
+			lookupTable[0] = Variant.NCS;
+			lookupTable[1] = Variant.NCS;
+			lookupTable[2] = Variant.NCS;
+			lookupTable[3] = Variant.NCS;
+			lookupTable[4] = Variant.NCS;
+			lookupTable[5] = Variant.NCS;
+			lookupTable[6] = Variant.NCS;
+			lookupTable[7] = Variant.NCS;
+			lookupTable[8] = Variant.DCE;
+			lookupTable[9] = Variant.DCE;
+			lookupTable[10] = Variant.DCE;
+			lookupTable[11] = Variant.DCE;
+			lookupTable[12] = Variant.MICROSOFT;
+			lookupTable[13] = Variant.MICROSOFT;
+			lookupTable[14] = Variant.UNKNOWN;
+			lookupTable[15] = Variant.UNKNOWN;
+			dojo.uuid.Uuid._ourVariantLookupTable = lookupTable;
+		}
+		return dojo.uuid.Uuid._ourVariantLookupTable[variantNumber];
+	};
+	dojo.uuid.Uuid.prototype.getVersion = function () {
+		if (!this._versionNumber) {
+			var errorMessage = "Called getVersion() on a dojo.uuid.Uuid that was not a DCE Variant UUID.";
+			dojo.lang.assert(this.getVariant() == dojo.uuid.Uuid.Variant.DCE, errorMessage);
+			var versionCharacter = this._uuidString.charAt(14);
+			this._versionNumber = parseInt(versionCharacter, dojo.uuid.Uuid.HEX_RADIX);
+		}
+		return this._versionNumber;
+	};
+	dojo.uuid.Uuid.prototype.getNode = function () {
+		if (!this._nodeString) {
+			var errorMessage = "Called getNode() on a dojo.uuid.Uuid that was not a TIME_BASED UUID.";
+			dojo.lang.assert(this.getVersion() == dojo.uuid.Uuid.Version.TIME_BASED, errorMessage);
+			var arrayOfStrings = this._uuidString.split("-");
+			this._nodeString = arrayOfStrings[4];
+		}
+		return this._nodeString;
+	};
+	dojo.uuid.Uuid.prototype.getTimestamp = function (returnType) {
+		var errorMessage = "Called getTimestamp() on a dojo.uuid.Uuid that was not a TIME_BASED UUID.";
+		dojo.lang.assert(this.getVersion() == dojo.uuid.Uuid.Version.TIME_BASED, errorMessage);
+		if (!returnType) {
+			returnType = null;
+		}
+		switch (returnType) {
+		  case "string":
+		  case String:
+			return this.getTimestamp(Date).toUTCString();
+			break;
+		  case "hex":
+			if (!this._timestampAsHexString) {
+				var arrayOfStrings = this._uuidString.split("-");
+				var hexTimeLow = arrayOfStrings[0];
+				var hexTimeMid = arrayOfStrings[1];
+				var hexTimeHigh = arrayOfStrings[2];
+				hexTimeHigh = hexTimeHigh.slice(1);
+				this._timestampAsHexString = hexTimeHigh + hexTimeMid + hexTimeLow;
+				dojo.lang.assert(this._timestampAsHexString.length == 15);
+			}
+			return this._timestampAsHexString;
+			break;
+		  case null:
+		  case "date":
+		  case Date:
+			if (!this._timestampAsDate) {
+				var GREGORIAN_CHANGE_OFFSET_IN_HOURS = 3394248;
+				var arrayOfParts = this._uuidString.split("-");
+				var timeLow = parseInt(arrayOfParts[0], dojo.uuid.Uuid.HEX_RADIX);
+				var timeMid = parseInt(arrayOfParts[1], dojo.uuid.Uuid.HEX_RADIX);
+				var timeHigh = parseInt(arrayOfParts[2], dojo.uuid.Uuid.HEX_RADIX);
+				var hundredNanosecondIntervalsSince1582 = timeHigh & 4095;
+				hundredNanosecondIntervalsSince1582 <<= 16;
+				hundredNanosecondIntervalsSince1582 += timeMid;
+				hundredNanosecondIntervalsSince1582 *= 4294967296;
+				hundredNanosecondIntervalsSince1582 += timeLow;
+				var millisecondsSince1582 = hundredNanosecondIntervalsSince1582 / 10000;
+				var secondsPerHour = 60 * 60;
+				var hoursBetween1582and1970 = GREGORIAN_CHANGE_OFFSET_IN_HOURS;
+				var secondsBetween1582and1970 = hoursBetween1582and1970 * secondsPerHour;
+				var millisecondsBetween1582and1970 = secondsBetween1582and1970 * 1000;
+				var millisecondsSince1970 = millisecondsSince1582 - millisecondsBetween1582and1970;
+				this._timestampAsDate = new Date(millisecondsSince1970);
+			}
+			return this._timestampAsDate;
+			break;
+		  default:
+			dojo.lang.assert(false, "The getTimestamp() method dojo.uuid.Uuid was passed a bogus returnType: " + returnType);
+			break;
+		}
+	};
+}});
+
+
+__CPAN_FILE__ src/uuid/__package__.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.uuid.Uuid", "dojo.uuid.LightweightGenerator", "dojo.uuid.RandomGenerator", "dojo.uuid.TimeBasedGenerator", "dojo.uuid.NameBasedGenerator", "dojo.uuid.NilGenerator"]}], ["provide", "dojo.uuid.*"]], definePackage:function (dojo) {
+	dojo.kwCompoundRequire({common:["dojo.uuid.Uuid", "dojo.uuid.LightweightGenerator", "dojo.uuid.RandomGenerator", "dojo.uuid.TimeBasedGenerator", "dojo.uuid.NameBasedGenerator", "dojo.uuid.NilGenerator"]});
+	dojo.provide("dojo.uuid.*");
+}});
+
+
 __CPAN_FILE__ src/uuid/LightweightGenerator.js
 /*
 	Copyright (c) 2004-2006, The Dojo Foundation
@@ -67668,6 +128437,8 @@
 		http://dojotoolkit.org/community/licensing.shtml
 */
 
+
+
 dojo.provide("dojo.uuid.LightweightGenerator");
 dojo.uuid.LightweightGenerator = new function () {
 	var HEX_RADIX = 16;
@@ -67699,3 +128470,298 @@
 }();
 
 
+__CPAN_FILE__ src/uuid/TimeBasedGenerator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uuid.TimeBasedGenerator"], ["require", "dojo.lang.common"], ["require", "dojo.lang.type"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) {
+	dojo.provide("dojo.uuid.TimeBasedGenerator");
+	dojo.require("dojo.lang.common");
+	dojo.require("dojo.lang.type");
+	dojo.require("dojo.lang.assert");
+	dojo.uuid.TimeBasedGenerator = new function () {
+		this.GREGORIAN_CHANGE_OFFSET_IN_HOURS = 3394248;
+		var _uuidPseudoNodeString = null;
+		var _uuidClockSeqString = null;
+		var _dateValueOfPreviousUuid = null;
+		var _nextIntraMillisecondIncrement = 0;
+		var _cachedMillisecondsBetween1582and1970 = null;
+		var _cachedHundredNanosecondIntervalsPerMillisecond = null;
+		var _uniformNode = null;
+		var HEX_RADIX = 16;
+		function _carry(arrayA) {
+			arrayA[2] += arrayA[3] >>> 16;
+			arrayA[3] &= 65535;
+			arrayA[1] += arrayA[2] >>> 16;
+			arrayA[2] &= 65535;
+			arrayA[0] += arrayA[1] >>> 16;
+			arrayA[1] &= 65535;
+			dojo.lang.assert((arrayA[0] >>> 16) === 0);
+		}
+		function _get64bitArrayFromFloat(x) {
+			var result = new Array(0, 0, 0, 0);
+			result[3] = x % 65536;
+			x -= result[3];
+			x /= 65536;
+			result[2] = x % 65536;
+			x -= result[2];
+			x /= 65536;
+			result[1] = x % 65536;
+			x -= result[1];
+			x /= 65536;
+			result[0] = x;
+			return result;
+		}
+		function _addTwo64bitArrays(arrayA, arrayB) {
+			dojo.lang.assertType(arrayA, Array);
+			dojo.lang.assertType(arrayB, Array);
+			dojo.lang.assert(arrayA.length == 4);
+			dojo.lang.assert(arrayB.length == 4);
+			var result = new Array(0, 0, 0, 0);
+			result[3] = arrayA[3] + arrayB[3];
+			result[2] = arrayA[2] + arrayB[2];
+			result[1] = arrayA[1] + arrayB[1];
+			result[0] = arrayA[0] + arrayB[0];
+			_carry(result);
+			return result;
+		}
+		function _multiplyTwo64bitArrays(arrayA, arrayB) {
+			dojo.lang.assertType(arrayA, Array);
+			dojo.lang.assertType(arrayB, Array);
+			dojo.lang.assert(arrayA.length == 4);
+			dojo.lang.assert(arrayB.length == 4);
+			var overflow = false;
+			if (arrayA[0] * arrayB[0] !== 0) {
+				overflow = true;
+			}
+			if (arrayA[0] * arrayB[1] !== 0) {
+				overflow = true;
+			}
+			if (arrayA[0] * arrayB[2] !== 0) {
+				overflow = true;
+			}
+			if (arrayA[1] * arrayB[0] !== 0) {
+				overflow = true;
+			}
+			if (arrayA[1] * arrayB[1] !== 0) {
+				overflow = true;
+			}
+			if (arrayA[2] * arrayB[0] !== 0) {
+				overflow = true;
+			}
+			dojo.lang.assert(!overflow);
+			var result = new Array(0, 0, 0, 0);
+			result[0] += arrayA[0] * arrayB[3];
+			_carry(result);
+			result[0] += arrayA[1] * arrayB[2];
+			_carry(result);
+			result[0] += arrayA[2] * arrayB[1];
+			_carry(result);
+			result[0] += arrayA[3] * arrayB[0];
+			_carry(result);
+			result[1] += arrayA[1] * arrayB[3];
+			_carry(result);
+			result[1] += arrayA[2] * arrayB[2];
+			_carry(result);
+			result[1] += arrayA[3] * arrayB[1];
+			_carry(result);
+			result[2] += arrayA[2] * arrayB[3];
+			_carry(result);
+			result[2] += arrayA[3] * arrayB[2];
+			_carry(result);
+			result[3] += arrayA[3] * arrayB[3];
+			_carry(result);
+			return result;
+		}
+		function _padWithLeadingZeros(string, desiredLength) {
+			while (string.length < desiredLength) {
+				string = "0" + string;
+			}
+			return string;
+		}
+		function _generateRandomEightCharacterHexString() {
+			var random32bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 32));
+			var eightCharacterString = random32bitNumber.toString(HEX_RADIX);
+			while (eightCharacterString.length < 8) {
+				eightCharacterString = "0" + eightCharacterString;
+			}
+			return eightCharacterString;
+		}
+		function _generateUuidString(node) {
+			dojo.lang.assertType(node, String, {optional:true});
+			if (node) {
+				dojo.lang.assert(node.length == 12);
+			} else {
+				if (_uniformNode) {
+					node = _uniformNode;
+				} else {
+					if (!_uuidPseudoNodeString) {
+						var pseudoNodeIndicatorBit = 32768;
+						var random15bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 15));
+						var leftmost4HexCharacters = (pseudoNodeIndicatorBit | random15bitNumber).toString(HEX_RADIX);
+						_uuidPseudoNodeString = leftmost4HexCharacters + _generateRandomEightCharacterHexString();
+					}
+					node = _uuidPseudoNodeString;
+				}
+			}
+			if (!_uuidClockSeqString) {
+				var variantCodeForDCEUuids = 32768;
+				var random14bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 14));
+				_uuidClockSeqString = (variantCodeForDCEUuids | random14bitNumber).toString(HEX_RADIX);
+			}
+			var now = new Date();
+			var millisecondsSince1970 = now.valueOf();
+			var nowArray = _get64bitArrayFromFloat(millisecondsSince1970);
+			if (!_cachedMillisecondsBetween1582and1970) {
+				var arraySecondsPerHour = _get64bitArrayFromFloat(60 * 60);
+				var arrayHoursBetween1582and1970 = _get64bitArrayFromFloat(dojo.uuid.TimeBasedGenerator.GREGORIAN_CHANGE_OFFSET_IN_HOURS);
+				var arraySecondsBetween1582and1970 = _multiplyTwo64bitArrays(arrayHoursBetween1582and1970, arraySecondsPerHour);
+				var arrayMillisecondsPerSecond = _get64bitArrayFromFloat(1000);
+				_cachedMillisecondsBetween1582and1970 = _multiplyTwo64bitArrays(arraySecondsBetween1582and1970, arrayMillisecondsPerSecond);
+				_cachedHundredNanosecondIntervalsPerMillisecond = _get64bitArrayFromFloat(10000);
+			}
+			var arrayMillisecondsSince1970 = nowArray;
+			var arrayMillisecondsSince1582 = _addTwo64bitArrays(_cachedMillisecondsBetween1582and1970, arrayMillisecondsSince1970);
+			var arrayHundredNanosecondIntervalsSince1582 = _multiplyTwo64bitArrays(arrayMillisecondsSince1582, _cachedHundredNanosecondIntervalsPerMillisecond);
+			if (now.valueOf() == _dateValueOfPreviousUuid) {
+				arrayHundredNanosecondIntervalsSince1582[3] += _nextIntraMillisecondIncrement;
+				_carry(arrayHundredNanosecondIntervalsSince1582);
+				_nextIntraMillisecondIncrement += 1;
+				if (_nextIntraMillisecondIncrement == 10000) {
+					while (now.valueOf() == _dateValueOfPreviousUuid) {
+						now = new Date();
+					}
+				}
+			} else {
+				_dateValueOfPreviousUuid = now.valueOf();
+				_nextIntraMillisecondIncrement = 1;
+			}
+			var hexTimeLowLeftHalf = arrayHundredNanosecondIntervalsSince1582[2].toString(HEX_RADIX);
+			var hexTimeLowRightHalf = arrayHundredNanosecondIntervalsSince1582[3].toString(HEX_RADIX);
+			var hexTimeLow = _padWithLeadingZeros(hexTimeLowLeftHalf, 4) + _padWithLeadingZeros(hexTimeLowRightHalf, 4);
+			var hexTimeMid = arrayHundredNanosecondIntervalsSince1582[1].toString(HEX_RADIX);
+			hexTimeMid = _padWithLeadingZeros(hexTimeMid, 4);
+			var hexTimeHigh = arrayHundredNanosecondIntervalsSince1582[0].toString(HEX_RADIX);
+			hexTimeHigh = _padWithLeadingZeros(hexTimeHigh, 3);
+			var hyphen = "-";
+			var versionCodeForTimeBasedUuids = "1";
+			var resultUuid = hexTimeLow + hyphen + hexTimeMid + hyphen + versionCodeForTimeBasedUuids + hexTimeHigh + hyphen + _uuidClockSeqString + hyphen + node;
+			resultUuid = resultUuid.toLowerCase();
+			return resultUuid;
+		}
+		this.setNode = function (node) {
+			dojo.lang.assert((node === null) || (node.length == 12));
+			_uniformNode = node;
+		};
+		this.getNode = function () {
+			return _uniformNode;
+		};
+		this.generate = function (input) {
+			var nodeString = null;
+			var returnType = null;
+			if (input) {
+				if (dojo.lang.isObject(input) && !dojo.lang.isBuiltIn(input)) {
+					var namedParameters = input;
+					dojo.lang.assertValidKeywords(namedParameters, ["node", "hardwareNode", "pseudoNode", "returnType"]);
+					var node = namedParameters["node"];
+					var hardwareNode = namedParameters["hardwareNode"];
+					var pseudoNode = namedParameters["pseudoNode"];
+					nodeString = (node || pseudoNode || hardwareNode);
+					if (nodeString) {
+						var firstCharacter = nodeString.charAt(0);
+						var firstDigit = parseInt(firstCharacter, HEX_RADIX);
+						if (hardwareNode) {
+							dojo.lang.assert((firstDigit >= 0) && (firstDigit <= 7));
+						}
+						if (pseudoNode) {
+							dojo.lang.assert((firstDigit >= 8) && (firstDigit <= 15));
+						}
+					}
+					returnType = namedParameters["returnType"];
+					dojo.lang.assertType(returnType, Function, {optional:true});
+				} else {
+					if (dojo.lang.isString(input)) {
+						nodeString = input;
+						returnType = null;
+					} else {
+						if (dojo.lang.isFunction(input)) {
+							nodeString = null;
+							returnType = input;
+						}
+					}
+				}
+				if (nodeString) {
+					dojo.lang.assert(nodeString.length == 12);
+					var integer = parseInt(nodeString, HEX_RADIX);
+					dojo.lang.assert(isFinite(integer));
+				}
+				dojo.lang.assertType(returnType, Function, {optional:true});
+			}
+			var uuidString = _generateUuidString(nodeString);
+			var returnValue;
+			if (returnType && (returnType != String)) {
+				returnValue = new returnType(uuidString);
+			} else {
+				returnValue = uuidString;
+			}
+			return returnValue;
+		};
+	}();
+}});
+
+
+__CPAN_FILE__ src/uuid/LightweightGenerator.xd.js
+/*
+	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.hostenv.packageLoaded({depends:[["provide", "dojo.uuid.LightweightGenerator"], ["require", ]], definePackage:function (dojo) {
+	dojo.provide("dojo.uuid.LightweightGenerator");
+	dojo.uuid.LightweightGenerator = new function () {
+		var HEX_RADIX = 16;
+		function _generateRandomEightCharacterHexString() {
+			var random32bitNumber = Math.floor((Math.random() % 1) * Math.pow(2, 32));
+			var eightCharacterHexString = random32bitNumber.toString(HEX_RADIX);
+			while (eightCharacterHexString.length < 8) {
+				eightCharacterHexString = "0" + eightCharacterHexString;
+			}
+			return eightCharacterHexString;
+		}
+		this.generate = function (returnType) {
+			var hyphen = "-";
+			var versionCodeForRandomlyGeneratedUuids = "4";
+			var variantCodeForDCEUuids = "8";
+			var a = _generateRandomEightCharacterHexString();
+			var b = _generateRandomEightCharacterHexString();
+			b = b.substring(0, 4) + hyphen + versionCodeForRandomlyGeneratedUuids + b.substring(5, 8);
+			var c = _generateRandomEightCharacterHexString();
+			c = variantCodeForDCEUuids + c.substring(1, 4) + hyphen + c.substring(4, 8);
+			var d = _generateRandomEightCharacterHexString();
+			var returnValue = a + hyphen + b + hyphen + c + d;
+			returnValue = returnValue.toLowerCase();
+			if (returnType && (returnType != String)) {
+				returnValue = new returnType(returnValue);
+			}
+			return returnValue;
+		};
+	}();
+}});
+
+

Modified: trunk/HTML-Dojo/lib/HTML/Dojo.pm
===================================================================
--- trunk/HTML-Dojo/lib/HTML/Dojo.pm	2007-05-21 20:41:55 UTC (rev 6413)
+++ trunk/HTML-Dojo/lib/HTML/Dojo.pm	2007-05-22 13:46:20 UTC (rev 6414)
@@ -5,7 +5,7 @@
 use warnings;
 use Carp qw/ croak /;
 
-our $VERSION = '0.0402.0';
+our $VERSION = '0.0403.0';
 
 our $COMMON_DATA;
 our $EDITIONS_DATA;
@@ -13,7 +13,7 @@
 
 =head1 NAME
 
-HTML::Dojo - Provides the Dojo JavaScript / AJAX distribution 0.4.2 files.
+HTML::Dojo - Provides the Dojo JavaScript / AJAX distribution 0.4.3 files.
 
 =head1 SYNOPSIS
 
@@ -101,26 +101,18 @@
 
 =item ajax
 
-=item browserio
-
 =item charting
 
-=item core
-
 =item dojoWebsite
 
 =item editor
 
-=item event
-
 =item event_and_io
 
 =item kitchen_sink
 
 =item lfx
 
-=item minimal
-
 =item moxie
 
 =item storage
@@ -136,14 +128,10 @@
 sub editions {
     return qw/
         ajax
-        browserio
         charting
-        core
         editor
-        event
         event_and_io
         kitchen_sink
-        minimal
         src
         storage
         widget
@@ -174,7 +162,7 @@
 sub list {
     my ($self, $opt) = @_;
     
-    my $edition = $opt->{edition} || $self->{edition} || 'core';
+    my $edition = $opt->{edition} || $self->{edition} || 'ajax';
     $opt->{directories} = 0 if ! exists $opt->{directories};
     $opt->{files}       = 1 if ! exists $opt->{files};
     
@@ -233,7 +221,7 @@
 
 =over
 
-=item C<edition>, default C<core>.
+=item C<edition>, default C<ajax>.
 
 =back
 
@@ -242,7 +230,7 @@
 sub file {
     my ($self, $filename, $opt) = @_;
     
-    my $edition = $opt->{edition} || $self->{edition} || 'core';
+    my $edition = $opt->{edition} || $self->{edition} || 'ajax';
     
     croak "too many arguments, options must be a hash-ref" if @_ > 3;
     




More information about the Catalyst-commits mailing list