]*>/gi,"\n").replace(/<[^>]*>/g,"").replace(/&/gi,"&").replace(/</gi,"<").replace(/>/gi,">");if(!dojo.isIE){_3=_3.replace(/\n$/,"");}}this.value=this.formValueNode.value=_3;if(this.iframe){var _9=dojo.doc.createElement("div");_5.appendChild(_9);var _a=_9.offsetTop;if(_5.scrollWidth>_5.clientWidth){_a+=16;}if(this.lastHeight!=_a){if(_a==0){_a=16;}dojo.contentBox(this.iframe,{h:_a});this.lastHeight=_a;}_5.removeChild(_9);}dijit.form.Textarea.superclass.setValue.call(this,this.getValue(),_4);},getValue:function(){return this.value.replace(/\r/g,"");},postMixInProperties:function(){this.inherited(arguments);if(this.srcNodeRef&&this.srcNodeRef.innerHTML!=""){this.value=this.srcNodeRef.innerHTML;this.srcNodeRef.innerHTML="";}if((!this.value||this.value=="")&&this.srcNodeRef&&this.srcNodeRef.value){this.value=this.srcNodeRef.value;}if(!this.value){this.value="";}this.value=this.value.replace(/\r\n/g,"\n").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&");if(dojo.isFF==2){var _b=dojo.i18n.getLocalization("dijit","Textarea");this._iframeEditTitle=_b.iframeEditTitle;this._iframeFocusTitle=_b.iframeFocusTitle;var _c=dojo.query("label[for=\""+this.id+"\"]");if(_c.length){this._iframeEditTitle=_c[0].innerHTML+" "+this._iframeEditTitle;}var _d=this.focusNode=this.editNode=dojo.doc.createElement("BODY");_d.style.margin="0px";_d.style.padding="0px";_d.style.border="0px";}},postCreate:function(){if(dojo.isIE||dojo.isSafari||dojo.isFF>=3){this.domNode.style.overflowY="hidden";}else{if(dojo.isFF){var w=this.iframe.contentWindow;var _f="";try{_f=this.iframe.contentDocument.title;}catch(e){}if(!w||!_f){this.iframe.postCreate=dojo.hitch(this,this.postCreate);return;}var d=w.document;d.getElementsByTagName("HTML")[0].replaceChild(this.editNode,d.getElementsByTagName("BODY")[0]);if(!this.isLeftToRight()){d.getElementsByTagName("HTML")[0].dir="rtl";}this.iframe.style.overflowY="hidden";this.eventNode=d;w.addEventListener("resize",dojo.hitch(this,this._changed),false);}else{this.focusNode=this.domNode;}}if(this.eventNode){this.connect(this.eventNode,"keypress",this._onKeyPress);this.connect(this.eventNode,"mousemove",this._changed);this.connect(this.eventNode,"focus",this._focused);this.connect(this.eventNode,"blur",this._blurred);}if(this.editNode){this.connect(this.editNode,"change",this._changed);}this.inherited("postCreate",arguments);},_focused:function(e){dojo.addClass(this.iframe||this.domNode,"dijitInputFieldFocused");this._changed(e);},_blurred:function(e){dojo.removeClass(this.iframe||this.domNode,"dijitInputFieldFocused");this._changed(e,true);},_onIframeBlur:function(){this.iframe.contentDocument.title=this._iframeEditTitle;},_onKeyPress:function(e){if(e.keyCode==dojo.keys.TAB&&!e.shiftKey&&!e.ctrlKey&&!e.altKey&&this.iframe){this.iframe.contentDocument.title=this._iframeFocusTitle;this.iframe.focus();dojo.stopEvent(e);}else{if(e.keyCode==dojo.keys.ENTER){e.stopPropagation();}else{if(this.inherited("_onKeyPress",arguments)&&this.iframe){var te=dojo.doc.createEvent("KeyEvents");te.initKeyEvent("keypress",true,true,null,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.keyCode,e.charCode);this.iframe.dispatchEvent(te);}}}this._changing();},_changing:function(e){setTimeout(dojo.hitch(this,"_changed",e,false),1);},_changed:function(e,_17){if(this.iframe&&this.iframe.contentDocument.designMode!="on"&&!this.disabled&&!this.readOnly){this.iframe.contentDocument.designMode="on";}this.setValue(null,_17||false);}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/TimeTextBox.js b/spring-js/src/main/resources/META-INF/dijit/form/TimeTextBox.js
new file mode 100644
index 00000000..62de4939
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/TimeTextBox.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.form.TimeTextBox"]){dojo._hasResource["dijit.form.TimeTextBox"]=true;dojo.provide("dijit.form.TimeTextBox");dojo.require("dijit._TimePicker");dojo.require("dijit.form._DateTimeTextBox");dojo.declare("dijit.form.TimeTextBox",dijit.form._DateTimeTextBox,{popupClass:"dijit._TimePicker",_selector:"time"});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/ValidationTextBox.js b/spring-js/src/main/resources/META-INF/dijit/form/ValidationTextBox.js
new file mode 100644
index 00000000..50803a5c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/ValidationTextBox.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.form.ValidationTextBox"]){dojo._hasResource["dijit.form.ValidationTextBox"]=true;dojo.provide("dijit.form.ValidationTextBox");dojo.require("dojo.i18n");dojo.require("dijit.form.TextBox");dojo.require("dijit.Tooltip");dojo.requireLocalization("dijit.form","validate",null,"cs,de,es,fr,gr,hu,it,ja,ko,pl,pt,ru,ROOT,zh,zh-cn,zh-tw");dojo.declare("dijit.form.ValidationTextBox",dijit.form.TextBox,{templateString:"
\n",baseClass:"dijitTextBox",required:false,promptMessage:"",invalidMessage:"$_unset_$",constraints:{},regExp:".*",regExpGen:function(_1){return this.regExp;},state:"",tooltipPosition:[],setValue:function(){this.inherited(arguments);this.validate(this._focused);},validator:function(_2,_3){return (new RegExp("^("+this.regExpGen(_3)+")"+(this.required?"":"?")+"$")).test(_2)&&(!this.required||!this._isEmpty(_2))&&(this._isEmpty(_2)||this.parse(_2,_3)!==undefined);},isValid:function(_4){return this.validator(this.textbox.value,this.constraints);},_isEmpty:function(_5){return /^\s*$/.test(_5);},getErrorMessage:function(_6){return this.invalidMessage;},getPromptMessage:function(_7){return this.promptMessage;},validate:function(_8){var _9="";var _a=this.isValid(_8);var _b=this._isEmpty(this.textbox.value);this.state=(_a||(!this._hasBeenBlurred&&_b))?"":"Error";this._setStateClass();dijit.setWaiState(this.focusNode,"invalid",_a?"false":"true");if(_8){if(_b){_9=this.getPromptMessage(true);}if(!_9&&this.state=="Error"){_9=this.getErrorMessage(true);}}this.displayMessage(_9);return _a;},_message:"",displayMessage:function(_c){if(this._message==_c){return;}this._message=_c;dijit.hideTooltip(this.domNode);if(_c){dijit.showTooltip(_c,this.domNode,this.tooltipPosition);}},_refreshState:function(){this.validate(this._focused);},_update:function(e){this._refreshState();this._onMouse(e);},constructor:function(){this.constraints={};},postMixInProperties:function(){this.inherited(arguments);this.constraints.locale=this.lang;this.messages=dojo.i18n.getLocalization("dijit.form","validate",this.lang);if(this.invalidMessage=="$_unset_$"){this.invalidMessage=this.messages.invalidMessage;}var p=this.regExpGen(this.constraints);this.regExp=p;}});dojo.declare("dijit.form.MappedTextBox",dijit.form.ValidationTextBox,{serialize:function(_f,_10){return _f.toString?_f.toString():"";},toString:function(){var val=this.filter(this.getValue());return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},setAttribute:function(_12,_13){this.inherited(arguments);switch(_12){case "disabled":if(this.valueNode){this.valueNode.disabled=this.disabled;}}},postCreate:function(){var _14=this.textbox;var _15=(this.valueNode=dojo.doc.createElement("input"));_15.setAttribute("type",_14.type);_15.setAttribute("value",this.toString());dojo.style(_15,"display","none");_15.name=this.textbox.name;_15.disabled=this.textbox.disabled;this.textbox.name=this.textbox.name+"_displayed_";this.textbox.removeAttribute("name");dojo.place(_15,_14,"after");this.inherited(arguments);}});dojo.declare("dijit.form.RangeBoundTextBox",dijit.form.MappedTextBox,{rangeMessage:"",compare:function(_16,_17){return _16-_17;},rangeCheck:function(_18,_19){var _1a="min" in _19;var _1b="max" in _19;if(_1a||_1b){return (!_1a||this.compare(_18,_19.min)>=0)&&(!_1b||this.compare(_18,_19.max)<=0);}return true;},isInRange:function(_1c){return this.rangeCheck(this.getValue(),this.constraints);},isValid:function(_1d){return this.inherited(arguments)&&((this._isEmpty(this.textbox.value)&&!this.required)||this.isInRange(_1d));},getErrorMessage:function(_1e){if(dijit.form.RangeBoundTextBox.superclass.isValid.call(this,false)&&!this.isInRange(_1e)){return this.rangeMessage;}return this.inherited(arguments);},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage){this.messages=dojo.i18n.getLocalization("dijit.form","validate",this.lang);this.rangeMessage=this.messages.rangeMessage;}},postCreate:function(){this.inherited(arguments);if(this.constraints.min!==undefined){dijit.setWaiState(this.focusNode,"valuemin",this.constraints.min);}if(this.constraints.max!==undefined){dijit.setWaiState(this.focusNode,"valuemax",this.constraints.max);}},setValue:function(_1f,_20){dijit.setWaiState(this.focusNode,"valuenow",_1f);this.inherited("setValue",arguments);}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/_DateTimeTextBox.js b/spring-js/src/main/resources/META-INF/dijit/form/_DateTimeTextBox.js
new file mode 100644
index 00000000..65650cd1
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/_DateTimeTextBox.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.form._DateTimeTextBox"]){dojo._hasResource["dijit.form._DateTimeTextBox"]=true;dojo.provide("dijit.form._DateTimeTextBox");dojo.require("dojo.date");dojo.require("dojo.date.locale");dojo.require("dojo.date.stamp");dojo.require("dijit.form.ValidationTextBox");dojo.declare("dijit.form._DateTimeTextBox",dijit.form.RangeBoundTextBox,{regExpGen:dojo.date.locale.regexp,compare:dojo.date.compare,format:function(_1,_2){if(!_1){return "";}return dojo.date.locale.format(_1,_2);},parse:function(_3,_4){return dojo.date.locale.parse(_3,_4)||undefined;},serialize:dojo.date.stamp.toISOString,value:new Date(""),popupClass:"",_selector:"",postMixInProperties:function(){this.inherited(arguments);if(!this.value||this.value.toString()==dijit.form._DateTimeTextBox.prototype.value.toString()){this.value=undefined;}var _5=this.constraints;_5.selector=this._selector;_5.fullYear=true;var _6=dojo.date.stamp.fromISOString;if(typeof _5.min=="string"){_5.min=_6(_5.min);}if(typeof _5.max=="string"){_5.max=_6(_5.max);}},_onFocus:function(_7){this._open();},setValue:function(_8,_9,_a){this.inherited(arguments);if(this._picker){if(!_8){_8=new Date();}this._picker.setValue(_8);}},_open:function(){if(this.disabled||this.readOnly||!this.popupClass){return;}var _b=this;if(!this._picker){var _c=dojo.getObject(this.popupClass,false);this._picker=new _c({onValueSelected:function(_d){_b.focus();setTimeout(dojo.hitch(_b,"_close"),1);dijit.form._DateTimeTextBox.superclass.setValue.call(_b,_d,true);},lang:_b.lang,constraints:_b.constraints,isDisabledDate:function(_e){var _f=dojo.date.compare;var _10=_b.constraints;return _10&&(_10.min&&(_f(_10.min,_e,"date")>0)||(_10.max&&_f(_10.max,_e,"date")<0));}});this._picker.setValue(this.getValue()||new Date());}if(!this._opened){dijit.popup.open({parent:this,popup:this._picker,around:this.domNode,onCancel:dojo.hitch(this,this._close),onClose:function(){_b._opened=false;}});this._opened=true;}dojo.marginBox(this._picker.domNode,{w:this.domNode.offsetWidth});},_close:function(){if(this._opened){dijit.popup.close(this._picker);this._opened=false;}},_onBlur:function(){this._close();if(this._picker){this._picker.destroy();delete this._picker;}this.inherited(arguments);},getDisplayedValue:function(){return this.textbox.value;},setDisplayedValue:function(_11,_12){this.setValue(this.parse(_11,this.constraints),_12,_11);},destroy:function(){if(this._picker){this._picker.destroy();delete this._picker;}this.inherited(arguments);},_onKeyPress:function(e){if(dijit.form._DateTimeTextBox.superclass._onKeyPress.apply(this,arguments)){if(this._opened&&e.keyCode==dojo.keys.ESCAPE&&!e.shiftKey&&!e.ctrlKey&&!e.altKey){this._close();dojo.stopEvent(e);}}}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/_FormWidget.js b/spring-js/src/main/resources/META-INF/dijit/form/_FormWidget.js
new file mode 100644
index 00000000..a3857927
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/_FormWidget.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.form._FormWidget"]){dojo._hasResource["dijit.form._FormWidget"]=true;dojo.provide("dijit.form._FormWidget");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit.form._FormWidget",[dijit._Widget,dijit._Templated],{baseClass:"",name:"",alt:"",value:"",type:"text",tabIndex:"0",disabled:false,readOnly:false,intermediateChanges:false,attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap),{value:"focusNode",disabled:"focusNode",readOnly:"focusNode",id:"focusNode",tabIndex:"focusNode",alt:"focusNode"}),setAttribute:function(_1,_2){this.inherited(arguments);switch(_1){case "disabled":var _3=this[this.attributeMap["tabIndex"]||"domNode"];if(_2){this._hovering=false;this._active=false;_3.removeAttribute("tabIndex");}else{_3.setAttribute("tabIndex",this.tabIndex);}dijit.setWaiState(this[this.attributeMap["disabled"]||"domNode"],"disabled",_2);this._setStateClass();}},setDisabled:function(_4){dojo.deprecated("setDisabled("+_4+") is deprecated. Use setAttribute('disabled',"+_4+") instead.","","2.0");this.setAttribute("disabled",_4);},_onMouse:function(_5){var _6=_5.currentTarget;if(_6&&_6.getAttribute){this.stateModifier=_6.getAttribute("stateModifier")||"";}if(!this.disabled){switch(_5.type){case "mouseenter":case "mouseover":this._hovering=true;this._active=this._mouseDown;break;case "mouseout":case "mouseleave":this._hovering=false;this._active=false;break;case "mousedown":this._active=true;this._mouseDown=true;var _7=this.connect(dojo.body(),"onmouseup",function(){this._active=false;this._mouseDown=false;this._setStateClass();this.disconnect(_7);});if(this.isFocusable()){this.focus();}break;}this._setStateClass();}},isFocusable:function(){return !this.disabled&&!this.readOnly&&this.focusNode&&(dojo.style(this.domNode,"display")!="none");},focus:function(){setTimeout(dojo.hitch(this,dijit.focus,this.focusNode),0);},_setStateClass:function(){if(!("staticClass" in this)){this.staticClass=(this.stateNode||this.domNode).className;}var _8=[this.baseClass];function multiply(_9){_8=_8.concat(dojo.map(_8,function(c){return c+_9;}),"dijit"+_9);};if(this.checked){multiply("Checked");}if(this.state){multiply(this.state);}if(this.selected){multiply("Selected");}if(this.disabled){multiply("Disabled");}else{if(this.readOnly){multiply("ReadOnly");}else{if(this._active){multiply(this.stateModifier+"Active");}else{if(this._focused){multiply("Focused");}if(this._hovering){multiply(this.stateModifier+"Hover");}}}}(this.stateNode||this.domNode).className=this.staticClass+" "+_8.join(" ");},onChange:function(_b){},_onChangeMonitor:"value",_onChangeActive:false,_handleOnChange:function(_c,_d){this._lastValue=_c;if(this._lastValueReported==undefined&&(_d===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_c;}if((this.intermediateChanges||_d||_d===undefined)&&((_c&&_c.toString)?_c.toString():_c)!==((this._lastValueReported&&this._lastValueReported.toString)?this._lastValueReported.toString():this._lastValueReported)){this._lastValueReported=_c;if(this._onChangeActive){this.onChange(_c);}}},reset:function(){this._hasBeenBlurred=false;if(this.setValue&&!this._getValueDeprecated){this.setValue(this._resetValue,true);}else{if(this._onChangeMonitor){this.setAttribute(this._onChangeMonitor,(this._resetValue!==undefined&&this._resetValue!==null)?this._resetValue:"");}}},create:function(){this.inherited(arguments);this._onChangeActive=true;this._setStateClass();},destroy:function(){if(this._layoutHackHandle){clearTimeout(this._layoutHackHandle);}this.inherited(arguments);},setValue:function(_e){dojo.deprecated("dijit.form._FormWidget:setValue("+_e+") is deprecated. Use setAttribute('value',"+_e+") instead.","","2.0");this.setAttribute("value",_e);},_getValueDeprecated:true,getValue:function(){dojo.deprecated("dijit.form._FormWidget:getValue() is deprecated. Use widget.value instead.","","2.0");return this.value;},_layoutHack:function(){if(dojo.isFF==2){var _f=this.domNode;var old=_f.style.opacity;_f.style.opacity="0.999";this._layoutHackHandle=setTimeout(dojo.hitch(this,function(){this._layoutHackHandle=null;_f.style.opacity=old;}),0);}}});dojo.declare("dijit.form._FormValueWidget",dijit.form._FormWidget,{attributeMap:dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap),{value:""}),postCreate:function(){this.setValue(this.value,null);},setValue:function(_11,_12){this.value=_11;this._handleOnChange(_11,_12);},_getValueDeprecated:false,getValue:function(){return this._lastValue;},undo:function(){this.setValue(this._lastValueReported,false);},_valueChanged:function(){var v=this.getValue();var lv=this._lastValueReported;return ((v!==null&&(v!==undefined)&&v.toString)?v.toString():"")!==((lv!==null&&(lv!==undefined)&&lv.toString)?lv.toString():"");},_onKeyPress:function(e){if(e.keyCode==dojo.keys.ESCAPE&&!e.shiftKey&&!e.ctrlKey&&!e.altKey){if(this._valueChanged()){this.undo();dojo.stopEvent(e);return false;}}return true;}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/_Spinner.js b/spring-js/src/main/resources/META-INF/dijit/form/_Spinner.js
new file mode 100644
index 00000000..6b74de4e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/_Spinner.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.form._Spinner"]){dojo._hasResource["dijit.form._Spinner"]=true;dojo.provide("dijit.form._Spinner");dojo.require("dijit.form.ValidationTextBox");dojo.declare("dijit.form._Spinner",dijit.form.RangeBoundTextBox,{defaultTimeout:500,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:"
\n",baseClass:"dijitSpinner",adjust:function(_1,_2){return _1;},_arrowState:function(_3,_4){this._active=_4;this.stateModifier=_3.getAttribute("stateModifier")||"";this._setStateClass();},_arrowPressed:function(_5,_6){if(this.disabled||this.readOnly){return;}this._arrowState(_5,true);this.setValue(this.adjust(this.getValue(),_6*this.smallDelta),false);dijit.selectInputText(this.textbox,this.textbox.value.length);},_arrowReleased:function(_7){this._wheelTimer=null;if(this.disabled||this.readOnly){return;}this._arrowState(_7,false);},_typematicCallback:function(_8,_9,_a){if(_9==this.textbox){_9=(_a.keyCode==dojo.keys.UP_ARROW)?this.upArrowNode:this.downArrowNode;}if(_8==-1){this._arrowReleased(_9);}else{this._arrowPressed(_9,(_9==this.upArrowNode)?1:-1);}},_wheelTimer:null,_mouseWheeled:function(_b){dojo.stopEvent(_b);var _c=0;if(typeof _b.wheelDelta=="number"){_c=_b.wheelDelta;}else{if(typeof _b.detail=="number"){_c=-_b.detail;}}var _d,_e;if(_c>0){_d=this.upArrowNode;_e=+1;}else{if(_c<0){_d=this.downArrowNode;_e=-1;}else{return;}}this._arrowPressed(_d,_e);if(this._wheelTimer!=null){clearTimeout(this._wheelTimer);}var _f=this;this._wheelTimer=setTimeout(function(){_f._arrowReleased(_d);},50);},postCreate:function(){this.inherited("postCreate",arguments);this.connect(this.textbox,dojo.isIE?"onmousewheel":"DOMMouseScroll","_mouseWheeled");this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{keyCode:dojo.keys.UP_ARROW,ctrlKey:false,altKey:false,shiftKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout));this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{keyCode:dojo.keys.DOWN_ARROW,ctrlKey:false,altKey:false,shiftKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout));if(dojo.isIE){var _10=this;this.connect(this.domNode,"onresize",function(){setTimeout(dojo.hitch(_10,function(){this.upArrowNode.style.behavior="";this.downArrowNode.style.behavior="";this._setStateClass();}),0);});}}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ComboBox.js
new file mode 100644
index 00000000..49bba39a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Previous choices","nextMessage":"More choices"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/Textarea.js
new file mode 100644
index 00000000..889b477c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"edit area","iframeTitle2":"edit area frame"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/ComboBox.js
new file mode 100644
index 00000000..84e08413
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Předchozí volby","nextMessage":"Další volby"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/Textarea.js
new file mode 100644
index 00000000..7ae5d8c2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"oblast úprav","iframeTitle2":"rámec oblasti úprav"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/validate.js
new file mode 100644
index 00000000..7bb7b9e2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/cs/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Tato hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/de/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/de/ComboBox.js
new file mode 100644
index 00000000..6cce34bf
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/de/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/de/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/de/Textarea.js
new file mode 100644
index 00000000..8f4d537c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/de/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"Editierbereich","iframeTitle2":"Rahmen für Editierbereich"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/de/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/de/validate.js
new file mode 100644
index 00000000..bb6a9b78
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/de/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Dieser Wert ist außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/es/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/es/ComboBox.js
new file mode 100644
index 00000000..5bf69f98
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/es/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/es/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/es/Textarea.js
new file mode 100644
index 00000000..4e39ffb0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/es/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"área de edición","iframeTitle2":"marco del área de edición"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/es/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/es/validate.js
new file mode 100644
index 00000000..65e190ec
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/es/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/ComboBox.js
new file mode 100644
index 00000000..14b39762
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Choix précédents","nextMessage":"Plus de choix"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/Textarea.js
new file mode 100644
index 00000000..e35bd7d6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"zone d'édition","iframeTitle2":"cadre de la zone d'édition"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/validate.js
new file mode 100644
index 00000000..665d19ee
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/fr/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée. ","invalidMessage":"La valeur indiquée n'est pas correcte. ","missingMessage":"Cette valeur est requise. "})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/ComboBox.js
new file mode 100644
index 00000000..6124d796
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Προηγούμενες επιλογές","nextMessage":"Επιπλέον επιλογές"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/Textarea.js
new file mode 100644
index 00000000..eceaa6dc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"περιοχή τροποποίησης","iframeTitle2":"περιοχή τροποποίησης frame"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/validate.js
new file mode 100644
index 00000000..edeb264b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/gr/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Η τιμή είναι εκτός πεδίου ορισμού.","invalidMessage":"Η τιμή που εισάγατε δεν είναι έγκυρη.","missingMessage":"Το πεδίο είναι υποχρεωτικό."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/ComboBox.js
new file mode 100644
index 00000000..4b6a620a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Előző menüpontok","nextMessage":"További menüpontok"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/Textarea.js
new file mode 100644
index 00000000..df0f00c4
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"szerkesztési terület","iframeTitle2":"szerkesztési terület keret"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/validate.js
new file mode 100644
index 00000000..35edb8b0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/hu/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Az érték kívül van a megengedett tartományon. ","invalidMessage":"A megadott érték érvénytelen. ","missingMessage":"Meg kell adni egy értéket. "})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/it/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/it/ComboBox.js
new file mode 100644
index 00000000..9f670723
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/it/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Scelte precedenti","nextMessage":"Altre scelte"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/it/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/it/Textarea.js
new file mode 100644
index 00000000..fa4d216a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/it/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"modifica area","iframeTitle2":"modifica frame area"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/it/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/it/validate.js
new file mode 100644
index 00000000..af7227fd
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/it/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Questo valore non è compreso nell'intervallo.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/ComboBox.js
new file mode 100644
index 00000000..6b34170b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/Textarea.js
new file mode 100644
index 00000000..6cccc11a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"編集域","iframeTitle2":"編集域フレーム"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/validate.js
new file mode 100644
index 00000000..450cd7e3
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ja/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"この値は範囲外です。","invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/ComboBox.js
new file mode 100644
index 00000000..87d0f064
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/Textarea.js
new file mode 100644
index 00000000..1047e790
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"편집 영역","iframeTitle2":"편집 영역 프레임"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/validate.js
new file mode 100644
index 00000000..d8315e71
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ko/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"이 값은 범위를 벗어납니다. ","invalidMessage":"입력한 값이 유효하지 않습니다. ","missingMessage":"이 값은 필수입니다. "})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/ComboBox.js
new file mode 100644
index 00000000..f2b4b08a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Poprzednie wybory","nextMessage":"Więcej wyborów"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/Textarea.js
new file mode 100644
index 00000000..f323751b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"edycja obszaru","iframeTitle2":"edycja ramki obszaru"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/validate.js
new file mode 100644
index 00000000..f76a5dfa
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/pl/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Ta wartość jest spoza zakresu.","invalidMessage":"Wprowadzona wartość nie jest poprawna.","missingMessage":"Ta wartość jest wymagana."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/ComboBox.js
new file mode 100644
index 00000000..25405424
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/Textarea.js
new file mode 100644
index 00000000..84b6a3f7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"área de edição","iframeTitle2":"quadro da área de edição"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/validate.js
new file mode 100644
index 00000000..1b60c3ac
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/pt/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Esse valor está fora do intervalo.","invalidMessage":"O valor digitado não é válido.","missingMessage":"Esse valor é necessário."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/ComboBox.js
new file mode 100644
index 00000000..193f4ee3
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/Textarea.js
new file mode 100644
index 00000000..d1e6ddc8
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"область редактирования","iframeTitle2":"фрейм области редактирования"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/validate.js
new file mode 100644
index 00000000..35fb5ca2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/ru/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"Это значение вне диапазона.","invalidMessage":"Указано недопустимое значение.","missingMessage":"Это обязательное значение."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/validate.js
new file mode 100644
index 00000000..29a1a476
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-cn/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-cn/validate.js
new file mode 100644
index 00000000..931bd676
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-cn/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"输入数据超出值域。","invalidMessage":"非法的输入值。","missingMessage":"此值是必须的。"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/ComboBox.js
new file mode 100644
index 00000000..ead5fa6b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"前一個選擇項","nextMessage":"其他選擇項"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/Textarea.js
new file mode 100644
index 00000000..a24e9c36
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"編輯區","iframeTitle2":"編輯區框"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/validate.js
new file mode 100644
index 00000000..b398a31a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh-tw/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"此值超出範圍。","invalidMessage":"輸入的值無效。","missingMessage":"必須提供此值。"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/ComboBox.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/ComboBox.js
new file mode 100644
index 00000000..7cc92cf1
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/ComboBox.js
@@ -0,0 +1 @@
+({"previousMessage":"先前选项","nextMessage":"更多选项"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/Textarea.js
new file mode 100644
index 00000000..ebb458a3
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/Textarea.js
@@ -0,0 +1 @@
+({"iframeTitle1":"编辑区","iframeTitle2":"编辑区框架"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/validate.js b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/validate.js
new file mode 100644
index 00000000..e2c01f55
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/nls/zh/validate.js
@@ -0,0 +1 @@
+({"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"此值是必需值。"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/Button.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/Button.html
new file mode 100644
index 00000000..09dbad82
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/Button.html
@@ -0,0 +1,11 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/CheckBox.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/CheckBox.html
new file mode 100644
index 00000000..580b820f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/CheckBox.html
@@ -0,0 +1,7 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/ComboBox.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/ComboBox.html
new file mode 100644
index 00000000..a8f28c52
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/ComboBox.html
@@ -0,0 +1,19 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/ComboButton.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/ComboButton.html
new file mode 100644
index 00000000..6b46ea0a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/ComboButton.html
@@ -0,0 +1,21 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/DropDownButton.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/DropDownButton.html
new file mode 100644
index 00000000..2e62f55c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/DropDownButton.html
@@ -0,0 +1,13 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/HorizontalSlider.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/HorizontalSlider.html
new file mode 100644
index 00000000..4dac451b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/HorizontalSlider.html
@@ -0,0 +1,37 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/InlineEditBox.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/InlineEditBox.html
new file mode 100644
index 00000000..6db34964
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/InlineEditBox.html
@@ -0,0 +1,12 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/Spinner.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/Spinner.html
new file mode 100644
index 00000000..3eddb600
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/Spinner.html
@@ -0,0 +1,28 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/TextBox.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/TextBox.html
new file mode 100644
index 00000000..e8703d36
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/TextBox.html
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/TimePicker.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/TimePicker.html
new file mode 100644
index 00000000..0bf3c40a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/TimePicker.html
@@ -0,0 +1,5 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/ValidationTextBox.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/ValidationTextBox.html
new file mode 100644
index 00000000..83faaa26
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/ValidationTextBox.html
@@ -0,0 +1,12 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/form/templates/VerticalSlider.html b/spring-js/src/main/resources/META-INF/dijit/form/templates/VerticalSlider.html
new file mode 100644
index 00000000..88b2951e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/form/templates/VerticalSlider.html
@@ -0,0 +1,46 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/AccordionContainer.js b/spring-js/src/main/resources/META-INF/dijit/layout/AccordionContainer.js
new file mode 100644
index 00000000..0efd41fa
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/AccordionContainer.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.AccordionContainer"]){dojo._hasResource["dijit.layout.AccordionContainer"]=true;dojo.provide("dijit.layout.AccordionContainer");dojo.require("dojo.fx");dojo.require("dijit._Container");dojo.require("dijit._Templated");dojo.require("dijit.layout.StackContainer");dojo.require("dijit.layout.ContentPane");dojo.declare("dijit.layout.AccordionContainer",dijit.layout.StackContainer,{duration:250,_verticalSpace:0,postCreate:function(){this.domNode.style.overflow="hidden";this.inherited("postCreate",arguments);dijit.setWaiRole(this.domNode,"tablist");dojo.addClass(this.domNode,"dijitAccordionContainer");},startup:function(){if(this._started){return;}this.inherited("startup",arguments);if(this.selectedChildWidget){var _1=this.selectedChildWidget.containerNode.style;_1.display="";_1.overflow="auto";this.selectedChildWidget._setSelectedState(true);}},layout:function(){var _2=0;var _3=this.selectedChildWidget;dojo.forEach(this.getChildren(),function(_4){_2+=_4.getTitleHeight();});var _5=this._contentBox;this._verticalSpace=(_5.h-_2);if(_3){_3.containerNode.style.height=this._verticalSpace+"px";}},_setupChild:function(_6){return _6;},_transition:function(_7,_8){if(this._inTransition){return;}this._inTransition=true;var _9=[];var _a=this._verticalSpace;if(_7){_7.setSelected(true);var _b=_7.containerNode;_b.style.display="";_9.push(dojo.animateProperty({node:_b,duration:this.duration,properties:{height:{start:"1",end:_a}},onEnd:function(){_b.style.overflow="auto";}}));}if(_8){_8.setSelected(false);var _c=_8.containerNode;_c.style.overflow="hidden";_9.push(dojo.animateProperty({node:_c,duration:this.duration,properties:{height:{start:_a,end:"1"}},onEnd:function(){_c.style.display="none";}}));}this._inTransition=false;dojo.fx.combine(_9).play();},_onKeyPress:function(e){if(this.disabled||e.altKey||!(e._dijitWidget||e.ctrlKey)){return;}var k=dojo.keys;var _f=e._dijitWidget;switch(e.keyCode){case k.LEFT_ARROW:case k.UP_ARROW:if(_f){this._adjacent(false)._onTitleClick();dojo.stopEvent(e);}break;case k.PAGE_UP:if(e.ctrlKey){this._adjacent(false)._onTitleClick();dojo.stopEvent(e);}break;case k.RIGHT_ARROW:case k.DOWN_ARROW:if(_f){this._adjacent(true)._onTitleClick();dojo.stopEvent(e);}break;case k.PAGE_DOWN:if(e.ctrlKey){this._adjacent(true)._onTitleClick();dojo.stopEvent(e);}break;default:if(e.ctrlKey&&e.keyCode==k.TAB){this._adjacent(e._dijitWidget,!e.shiftKey)._onTitleClick();dojo.stopEvent(e);}}}});dojo.declare("dijit.layout.AccordionPane",[dijit.layout.ContentPane,dijit._Templated,dijit._Contained],{templateString:"
\n",postCreate:function(){this.inherited("postCreate",arguments);dojo.setSelectable(this.titleNode,false);this.setSelected(this.selected);},getTitleHeight:function(){return dojo.marginBox(this.titleNode).h;},_onTitleClick:function(){var _10=this.getParent();if(!_10._inTransition){_10.selectChild(this);dijit.focus(this.focusNode);}},_onTitleKeyPress:function(evt){evt._dijitWidget=this;return this.getParent()._onKeyPress(evt);},_setSelectedState:function(_12){this.selected=_12;dojo[(_12?"addClass":"removeClass")](this.titleNode,"dijitAccordionTitle-selected");this.focusNode.setAttribute("tabIndex",_12?"0":"-1");},_handleFocus:function(e){dojo[(e.type=="focus"?"addClass":"removeClass")](this.focusNode,"dijitAccordionFocused");},setSelected:function(_14){this._setSelectedState(_14);if(_14){this.onSelected();this._loadCheck(true);}},onSelected:function(){}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/BorderContainer.js b/spring-js/src/main/resources/META-INF/dijit/layout/BorderContainer.js
new file mode 100644
index 00000000..3218c041
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/BorderContainer.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.BorderContainer"]){dojo._hasResource["dijit.layout.BorderContainer"]=true;dojo.provide("dijit.layout.BorderContainer");dojo.require("dijit.layout._LayoutWidget");dojo.require("dojo.cookie");dojo.declare("dijit.layout.BorderContainer",dijit.layout._LayoutWidget,{design:"headline",liveSplitters:true,persist:false,_splitterClass:"dijit.layout._Splitter",postCreate:function(){this.inherited(arguments);this._splitters={};this._splitterThickness={};dojo.addClass(this.domNode,"dijitBorderContainer");},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_1){var _2=_1.region;if(_2){_1.domNode.style.position="absolute";var _3=this.isLeftToRight();if(_2=="leading"){_2=_3?"left":"right";}if(_2=="trailing"){_2=_3?"right":"left";}this["_"+_2]=_1.domNode;this["_"+_2+"Widget"]=_1;if(_1.splitter){var _4=dojo.getObject(this._splitterClass);var _5={left:"right",right:"left",top:"bottom",bottom:"top",leading:"trailing",trailing:"leading"};var _6=dojo.query("[region="+_5[_1.region]+"]",this.domNode);var _7=new _4({container:this,child:_1,region:_2,oppNode:_6[0],live:this.liveSplitters});this._splitters[_2]=_7.domNode;dojo.place(_7.domNode,_1.domNode,"after");this._computeSplitterThickness(_2);}_1.region=_2;}},_computeSplitterThickness:function(_8){var re=new RegExp("top|bottom");this._splitterThickness[_8]=dojo.marginBox(this._splitters[_8])[(re.test(_8)?"h":"w")];},layout:function(){this._layoutChildren();},addChild:function(_a,_b){this.inherited(arguments);this._setupChild(_a);if(this._started){this._layoutChildren();}},removeChild:function(_c){var _d=_c.region;var _e=this._splitters[_d];if(_e){dijit.byNode(_e).destroy();delete this._splitters[_d];delete this._splitterThickness[_d];}this.inherited(arguments);delete this["_"+_d];delete this["_"+_d+"Widget"];if(this._started){this._layoutChildren(_c.region);}},_layoutChildren:function(_f){var _10=(this.design=="sidebar");var _11=0,_12=0,_13=0,_14=0;var _15={},_16={},_17={},_18={},_19=(this._center&&this._center.style)||{};var _1a=/left|right/.test(_f);var _1b=!_f||(!_1a&&!_10);var _1c=!_f||(_1a&&_10);if(this._top){_15=_1c&&this._top.style;_11=dojo.marginBox(this._top).h;}if(this._left){_16=_1b&&this._left.style;_13=dojo.marginBox(this._left).w;}if(this._right){_17=_1b&&this._right.style;_14=dojo.marginBox(this._right).w;}if(this._bottom){_18=_1c&&this._bottom.style;_12=dojo.marginBox(this._bottom).h;}var _1d=this._splitters;var _1e=_1d.top;var _1f=_1d.bottom;var _20=_1d.left;var _21=_1d.right;var _22=this._splitterThickness;var _23=_22.top||0;var _24=_22.left||0;var _25=_22.right||0;var _26=_22.bottom||0;if(_24>50||_25>50){setTimeout(dojo.hitch(this,function(){for(var _27 in this._splitters){this._computeSplitterThickness(_27);}this._layoutChildren();}),50);return false;}var _28={left:(_10?_13+_24:"0")+"px",right:(_10?_14+_25:"0")+"px"};if(_1e){dojo.mixin(_1e.style,_28);_1e.style.top=_11+"px";}if(_1f){dojo.mixin(_1f.style,_28);_1f.style.bottom=_12+"px";}_28={top:(_10?"0":_11+_23)+"px",bottom:(_10?"0":_12+_26)+"px"};if(_20){dojo.mixin(_20.style,_28);_20.style.left=_13+"px";}if(_21){dojo.mixin(_21.style,_28);_21.style.right=_14+"px";}dojo.mixin(_19,{top:_11+_23+"px",left:_13+_24+"px",right:_14+_25+"px",bottom:_12+_26+"px"});var _29={top:_10?"0":_19.top,bottom:_10?"0":_19.bottom};dojo.mixin(_16,_29);dojo.mixin(_17,_29);_16.left=_17.right=_15.top=_18.bottom="0";if(_10){_15.left=_18.left=_13+(this.isLeftToRight()?_24:0)+"px";_15.right=_18.right=_14+(this.isLeftToRight()?0:_25)+"px";}else{_15.left=_15.right=_18.left=_18.right="0";}var _2a=dojo.isIE||dojo.some(this.getChildren(),function(_2b){return _2b.domNode.tagName=="TEXTAREA";});if(_2a){var _2c=function(n,b){n=dojo.byId(n);var s=dojo.getComputedStyle(n);if(!b){return dojo._getBorderBox(n,s);}var me=dojo._getMarginExtents(n,s);dojo._setMarginBox(n,b.l,b.t,b.w+me.w,b.h+me.h,s);return null;};var _31=function(_32,dim){if(_32){_32.resize?_32.resize(dim):dojo.marginBox(_32.domNode,dim);}};var _34=_2c(this.domNode);var _35=_34.h;var _36=_35;if(this._top){_36-=_11;}if(this._bottom){_36-=_12;}if(_1e){_36-=_23;}if(_1f){_36-=_26;}var _37={h:_36};var _38=_10?_35:_36;if(_20){_20.style.height=_38;}if(_21){_21.style.height=_38;}_31(this._leftWidget,{h:_38});_31(this._rightWidget,{h:_38});var _39=_34.w;var _3a=_39;if(this._left){_3a-=_13;}if(this._right){_3a-=_14;}if(_20){_3a-=_24;}if(_21){_3a-=_25;}_37.w=_3a;var _3b=_10?_3a:_39;if(_1e){_1e.style.width=_3b;}if(_1f){_1f.style.width=_3b;}_31(this._topWidget,{w:_3b});_31(this._bottomWidget,{w:_3b});_31(this._centerWidget,_37);}else{var _3c={};if(_f){_3c[_f]=_3c.center=true;if(/top|bottom/.test(_f)&&this.design!="sidebar"){_3c.left=_3c.right=true;}else{if(/left|right/.test(_f)&&this.design=="sidebar"){_3c.top=_3c.bottom=true;}}}dojo.forEach(this.getChildren(),function(_3d){if(_3d.resize&&(!_f||_3d.region in _3c)){_3d.resize();}},this);}}});dojo.extend(dijit._Widget,{region:"",splitter:false,minSize:0,maxSize:Infinity});dojo.require("dijit._Templated");dojo.declare("dijit.layout._Splitter",[dijit._Widget,dijit._Templated],{live:true,templateString:"
",postCreate:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));this._factor=/top|left/.test(this.region)?1:-1;this._minSize=this.child.minSize;this._computeMaxSize();this.connect(this.container,"layout",dojo.hitch(this,this._computeMaxSize));this._cookieName=this.container.id+"_"+this.region;if(this.container.persist){var _3e=dojo.cookie(this._cookieName);if(_3e){this.child.domNode.style[this.horizontal?"height":"width"]=_3e;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w";var _40=dojo.contentBox(this.container.domNode)[dim]-(this.oppNode?dojo.marginBox(this.oppNode)[dim]:0);this._maxSize=Math.min(this.child.maxSize,_40);},_startDrag:function(e){if(!this.cover){this.cover=dojo.doc.createElement("div");dojo.addClass(this.cover,"dijitSplitterCover");dojo.place(this.cover,this.child.domNode,"after");}else{this.cover.style.zIndex=1;}if(this.fake){dojo._destroyElement(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");dojo.addClass(this.domNode,"dijitSplitterShadow");dojo.place(this.fake,this.domNode,"after");}dojo.addClass(this.domNode,"dijitSplitterActive");var _42=this._factor,max=this._maxSize,min=this._minSize||10;var _45=this.horizontal?"pageY":"pageX";var _46=e[_45];var _47=this.domNode.style;var dim=this.horizontal?"h":"w";var _49=dojo.marginBox(this.child.domNode)[dim];var _4a=parseInt(this.domNode.style[this.region]);var _4b=this._resize;var _4c=this.region;var mb={};var _4e=this.child.domNode;var _4f=dojo.hitch(this.container,this.container._layoutChildren);var de=dojo.doc.body;this._handlers=(this._handlers||[]).concat([dojo.connect(de,"onmousemove",this._drag=function(e,_52){var _53=e[_45]-_46,_54=_42*_53+_49,_55=Math.max(Math.min(_54,max),min);if(_4b||_52){mb[dim]=_55;dojo.marginBox(_4e,mb);_4f(_4c);}_47[_4c]=_42*_53+_4a+(_55-_54)+"px";}),dojo.connect(de,"onmouseup",this,"_stopDrag")]);dojo.stopEvent(e);},_stopDrag:function(e){try{if(this.cover){this.cover.style.zIndex=-1;}if(this.fake){dojo._destroyElement(this.fake);}dojo.removeClass(this.domNode,"dijitSplitterActive");dojo.removeClass(this.domNode,"dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();delete this._drag;}if(this.container.persist){dojo.cookie(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"]);}},_cleanupHandlers:function(){dojo.forEach(this._handlers,dojo.disconnect);delete this._handlers;},_onKeyPress:function(e){this._resize=true;var _58=this.horizontal;var _59=1;var dk=dojo.keys;switch(e.keyCode){case _58?dk.UP_ARROW:dk.LEFT_ARROW:_59*=-1;break;case _58?dk.DOWN_ARROW:dk.RIGHT_ARROW:break;default:return;}var _5b=dojo.marginBox(this.child.domNode)[_58?"h":"w"]+this._factor*_59;var mb={};mb[this.horizontal?"h":"w"]=Math.max(Math.min(_5b,this._maxSize),this._minSize);dojo.marginBox(this.child.domNode,mb);this.container._layoutChildren(this.region);dojo.stopEvent(e);},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.fake;this.inherited(arguments);}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/ContentPane.js b/spring-js/src/main/resources/META-INF/dijit/layout/ContentPane.js
new file mode 100644
index 00000000..48347263
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/ContentPane.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.ContentPane"]){dojo._hasResource["dijit.layout.ContentPane"]=true;dojo.provide("dijit.layout.ContentPane");dojo.require("dijit._Widget");dojo.require("dijit.layout._LayoutWidget");dojo.require("dojo.parser");dojo.require("dojo.string");dojo.requireLocalization("dijit","loading",null,"cs,de,es,fr,gr,hu,it,ja,ko,ROOT,pl,pt,ru,sv,zh,zh-tw");dojo.declare("dijit.layout.ContentPane",dijit._Widget,{href:"",extractContent:false,parseOnLoad:true,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"
",isLoaded:false,"class":"dijitContentPane",doLayout:"auto",postCreate:function(){this.domNode.title="";if(!this.containerNode){this.containerNode=this.domNode;}if(this.preload){this._loadCheck();}var _1=dojo.i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=dojo.string.substitute(this.loadingMessage,_1);this.errorMessage=dojo.string.substitute(this.errorMessage,_1);var _2=dijit.getWaiRole(this.domNode);if(!_2){dijit.setWaiRole(this.domNode,"group");}dojo.addClass(this.domNode,this["class"]);},startup:function(){if(this._started){return;}if(this.doLayout!="false"&&this.doLayout!==false){this._checkIfSingleChild();if(this._singleChild){this._singleChild.startup();}}this._loadCheck();this.inherited(arguments);},_checkIfSingleChild:function(){var _3=dojo.query(">",this.containerNode||this.domNode),_4=_3.filter("[widgetId]");if(_3.length==1&&_4.length==1){this.isContainer=true;this._singleChild=dijit.byNode(_4[0]);}else{delete this.isContainer;delete this._singleChild;}},refresh:function(){return this._prepareLoad(true);},setHref:function(_5){this.href=_5;return this._prepareLoad();},setContent:function(_6){if(!this._isDownloaded){this.href="";this._onUnloadHandler();}this._setContent(_6||"");this._isDownloaded=false;if(this.parseOnLoad){this._createSubWidgets();}if(this.doLayout!="false"&&this.doLayout!==false){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){this._singleChild.startup();this._singleChild.resize(this._contentBox||dojo.contentBox(this.containerNode||this.domNode));}}this._onLoadHandler();},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;},destroy:function(){if(this._beingDestroyed){return;}this._onUnloadHandler();this._beingDestroyed=true;this.inherited("destroy",arguments);},resize:function(_7){dojo.marginBox(this.domNode,_7);var _8=this.containerNode||this.domNode,mb=dojo.mixin(dojo.marginBox(_8),_7||{});this._contentBox=dijit.layout.marginBox2contentBox(_8,mb);if(this._singleChild&&this._singleChild.resize){this._singleChild.resize(this._contentBox);}},_prepareLoad:function(_a){this.cancel();this.isLoaded=false;this._loadCheck(_a);},_isShown:function(){if("open" in this){return this.open;}else{var _b=this.domNode;return (_b.style.display!="none")&&(_b.style.visibility!="hidden");}},_loadCheck:function(_c){var _d=this._isShown();if(this.href&&(_c||(this.preload&&!this._xhrDfd)||(this.refreshOnShow&&_d&&!this._xhrDfd)||(!this.isLoaded&&_d&&!this._xhrDfd))){this._downloadExternalContent();}},_downloadExternalContent:function(){this._onUnloadHandler();this._setContent(this.onDownloadStart.call(this));var _e=this;var _f={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(dojo.isObject(this.ioArgs)){dojo.mixin(_f,this.ioArgs);}var _10=this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_f);_10.addCallback(function(_11){try{_e.onDownloadEnd.call(_e);_e._isDownloaded=true;_e.setContent.call(_e,_11);}catch(err){_e._onError.call(_e,"Content",err);}delete _e._xhrDfd;return _11;});_10.addErrback(function(err){if(!_10.cancelled){_e._onError.call(_e,"Download",err);}delete _e._xhrDfd;return err;});},_onLoadHandler:function(){this.isLoaded=true;try{this.onLoad.call(this);}catch(e){console.error("Error "+this.widgetId+" running custom onLoad code");}},_onUnloadHandler:function(){this.isLoaded=false;this.cancel();try{this.onUnload.call(this);}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code");}},_setContent:function(_13){this.destroyDescendants();try{var _14=this.containerNode||this.domNode;while(_14.firstChild){dojo._destroyElement(_14.firstChild);}if(typeof _13=="string"){if(this.extractContent){match=_13.match(/]*>\s*([\s\S]+)\s*<\/body>/im);if(match){_13=match[1];}}_14.innerHTML=_13;}else{if(_13.nodeType){_14.appendChild(_13);}else{dojo.forEach(_13,function(n){_14.appendChild(n.cloneNode(true));});}}}catch(e){var _16=this.onContentError(e);try{_14.innerHTML=_16;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}}},_onError:function(_17,err,_19){var _1a=this["on"+_17+"Error"].call(this,err);if(_19){console.error(_19,err);}else{if(_1a){this._setContent.call(this,_1a);}}},_createSubWidgets:function(){var _1b=this.containerNode||this.domNode;try{dojo.parser.parse(_1b,true);}catch(e){this._onError("Content",e,"Couldn't create widgets in "+this.id+(this.href?" from "+this.href:""));}},onLoad:function(e){},onUnload:function(e){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(_1e){},onDownloadError:function(_1f){return this.errorMessage;},onDownloadEnd:function(){}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/LayoutContainer.js b/spring-js/src/main/resources/META-INF/dijit/layout/LayoutContainer.js
new file mode 100644
index 00000000..00e3efb2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/LayoutContainer.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.LayoutContainer"]){dojo._hasResource["dijit.layout.LayoutContainer"]=true;dojo.provide("dijit.layout.LayoutContainer");dojo.require("dijit.layout._LayoutWidget");dojo.declare("dijit.layout.LayoutContainer",dijit.layout._LayoutWidget,{constructor:function(){dojo.deprecated("dijit.layout.LayoutContainer is deprecated","use BorderContainer instead",2);},layout:function(){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());},addChild:function(_1,_2){dijit._Container.prototype.addChild.apply(this,arguments);if(this._started){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());}},removeChild:function(_3){dijit._Container.prototype.removeChild.apply(this,arguments);if(this._started){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());}}});dojo.extend(dijit._Widget,{layoutAlign:"none"});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/LinkPane.js b/spring-js/src/main/resources/META-INF/dijit/layout/LinkPane.js
new file mode 100644
index 00000000..07a9ac00
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/LinkPane.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.LinkPane"]){dojo._hasResource["dijit.layout.LinkPane"]=true;dojo.provide("dijit.layout.LinkPane");dojo.require("dijit.layout.ContentPane");dojo.require("dijit._Templated");dojo.declare("dijit.layout.LinkPane",[dijit.layout.ContentPane,dijit._Templated],{templateString:"
",postCreate:function(){if(this.srcNodeRef){this.title+=this.srcNodeRef.innerHTML;}this.inherited("postCreate",arguments);}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/SplitContainer.js b/spring-js/src/main/resources/META-INF/dijit/layout/SplitContainer.js
new file mode 100644
index 00000000..2b4db307
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/SplitContainer.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.SplitContainer"]){dojo._hasResource["dijit.layout.SplitContainer"]=true;dojo.provide("dijit.layout.SplitContainer");dojo.require("dojo.cookie");dojo.require("dijit.layout._LayoutWidget");dojo.declare("dijit.layout.SplitContainer",dijit.layout._LayoutWidget,{constructor:function(){dojo.deprecated("dijit.layout.SplitContainer is deprecated","use BorderContainer with splitter instead",2);},activeSizing:false,sizerWidth:7,orientation:"horizontal",persist:true,postMixInProperties:function(){this.inherited("postMixInProperties",arguments);this.isHorizontal=(this.orientation=="horizontal");},postCreate:function(){this.inherited("postCreate",arguments);this.sizers=[];dojo.addClass(this.domNode,"dijitSplitContainer");if(dojo.isMozilla){this.domNode.style.overflow="-moz-scrollbars-none";}if(typeof this.sizerWidth=="object"){try{this.sizerWidth=parseInt(this.sizerWidth.toString());}catch(e){this.sizerWidth=7;}}var _1=this.virtualSizer=dojo.doc.createElement("div");_1.style.position="relative";_1.style.zIndex=10;_1.className=this.isHorizontal?"dijitSplitContainerVirtualSizerH":"dijitSplitContainerVirtualSizerV";this.domNode.appendChild(_1);dojo.setSelectable(_1,false);},destroy:function(){delete this.virtualSizer;dojo.forEach(this._ownconnects,dojo.disconnect);this.inherited(arguments);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_2,i,_4){this._injectChild(_2);if(i<_4.length-1){this._addSizer();}},this);if(this.persist){this._restoreState();}this.inherited(arguments);},_injectChild:function(_5){_5.domNode.style.position="absolute";dojo.addClass(_5.domNode,"dijitSplitPane");},_addSizer:function(){var i=this.sizers.length;var _7=this.sizers[i]=dojo.doc.createElement("div");this.domNode.appendChild(_7);_7.className=this.isHorizontal?"dijitSplitContainerSizerH":"dijitSplitContainerSizerV";var _8=dojo.doc.createElement("div");_8.className="thumb";_7.appendChild(_8);var _9=this;var _a=(function(){var _b=i;return function(e){_9.beginSizing(e,_b);};})();this.connect(_7,"onmousedown",_a);dojo.setSelectable(_7,false);},removeChild:function(_d){if(this.sizers.length){var i=dojo.indexOf(this.getChildren(),_d);if(i!=-1){if(i==this.sizers.length){i--;}dojo._destroyElement(this.sizers[i]);this.sizers.splice(i,1);}}this.inherited(arguments);if(this._started){this.layout();}},addChild:function(_f,_10){this.inherited("addChild",arguments);if(this._started){this._injectChild(_f);var _11=this.getChildren();if(_11.length>1){this._addSizer();}this.layout();}},layout:function(){this.paneWidth=this._contentBox.w;this.paneHeight=this._contentBox.h;var _12=this.getChildren();if(!_12.length){return;}var _13=this.isHorizontal?this.paneWidth:this.paneHeight;if(_12.length>1){_13-=this.sizerWidth*(_12.length-1);}var _14=0;dojo.forEach(_12,function(_15){_14+=_15.sizeShare;});var _16=_13/_14;var _17=0;dojo.forEach(_12.slice(0,_12.length-1),function(_18){var _19=Math.round(_16*_18.sizeShare);_18.sizeActual=_19;_17+=_19;});_12[_12.length-1].sizeActual=_13-_17;this._checkSizes();var pos=0;var _1b=_12[0].sizeActual;this._movePanel(_12[0],pos,_1b);_12[0].position=pos;pos+=_1b;if(!this.sizers){return;}dojo.some(_12.slice(1),function(_1c,i){if(!this.sizers[i]){return true;}this._moveSlider(this.sizers[i],pos,this.sizerWidth);this.sizers[i].position=pos;pos+=this.sizerWidth;_1b=_1c.sizeActual;this._movePanel(_1c,pos,_1b);_1c.position=pos;pos+=_1b;},this);},_movePanel:function(_1e,pos,_20){if(this.isHorizontal){_1e.domNode.style.left=pos+"px";_1e.domNode.style.top=0;var box={w:_20,h:this.paneHeight};if(_1e.resize){_1e.resize(box);}else{dojo.marginBox(_1e.domNode,box);}}else{_1e.domNode.style.left=0;_1e.domNode.style.top=pos+"px";var box={w:this.paneWidth,h:_20};if(_1e.resize){_1e.resize(box);}else{dojo.marginBox(_1e.domNode,box);}}},_moveSlider:function(_22,pos,_24){if(this.isHorizontal){_22.style.left=pos+"px";_22.style.top=0;dojo.marginBox(_22,{w:_24,h:this.paneHeight});}else{_22.style.left=0;_22.style.top=pos+"px";dojo.marginBox(_22,{w:this.paneWidth,h:_24});}},_growPane:function(_25,_26){if(_25>0){if(_26.sizeActual>_26.sizeMin){if((_26.sizeActual-_26.sizeMin)>_25){_26.sizeActual=_26.sizeActual-_25;_25=0;}else{_25-=_26.sizeActual-_26.sizeMin;_26.sizeActual=_26.sizeMin;}}}return _25;},_checkSizes:function(){var _27=0;var _28=0;var _29=this.getChildren();dojo.forEach(_29,function(_2a){_28+=_2a.sizeActual;_27+=_2a.sizeMin;});if(_27<=_28){var _2b=0;dojo.forEach(_29,function(_2c){if(_2c.sizeActual<_2c.sizeMin){_2b+=_2c.sizeMin-_2c.sizeActual;_2c.sizeActual=_2c.sizeMin;}});if(_2b>0){var _2d=this.isDraggingLeft?_29.reverse():_29;dojo.forEach(_2d,function(_2e){_2b=this._growPane(_2b,_2e);},this);}}else{dojo.forEach(_29,function(_2f){_2f.sizeActual=Math.round(_28*(_2f.sizeMin/_27));});}},beginSizing:function(e,i){var _32=this.getChildren();this.paneBefore=_32[i];this.paneAfter=_32[i+1];this.isSizing=true;this.sizingSplitter=this.sizers[i];if(!this.cover){this.cover=dojo.doc.createElement("div");this.domNode.appendChild(this.cover);var s=this.cover.style;s.position="absolute";s.zIndex=1;s.top=0;s.left=0;s.width="100%";s.height="100%";}else{this.cover.style.zIndex=1;}this.sizingSplitter.style.zIndex=2;this.originPos=dojo.coords(_32[0].domNode,true);if(this.isHorizontal){var _34=(e.layerX?e.layerX:e.offsetX);var _35=e.pageX;this.originPos=this.originPos.x;}else{var _34=(e.layerY?e.layerY:e.offsetY);var _35=e.pageY;this.originPos=this.originPos.y;}this.startPoint=this.lastPoint=_35;this.screenToClientOffset=_35-_34;this.dragOffset=this.lastPoint-this.paneBefore.sizeActual-this.originPos-this.paneBefore.position;if(!this.activeSizing){this._showSizingLine();}this._ownconnects=[];this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmousemove",this,"changeSizing"));this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmouseup",this,"endSizing"));dojo.stopEvent(e);},changeSizing:function(e){if(!this.isSizing){return;}this.lastPoint=this.isHorizontal?e.pageX:e.pageY;this.movePoint();if(this.activeSizing){this._updateSize();}else{this._moveSizingLine();}dojo.stopEvent(e);},endSizing:function(e){if(!this.isSizing){return;}if(this.cover){this.cover.style.zIndex=-1;}if(!this.activeSizing){this._hideSizingLine();}this._updateSize();this.isSizing=false;if(this.persist){this._saveState(this);}dojo.forEach(this._ownconnects,dojo.disconnect);},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);if(!this.activeSizing){var min=this.paneBefore.position+this.paneBefore.sizeMin;if(a
max){a=max;}}a-=this.sizingSplitter.position;this._checkSizes();return a;},_updateSize:function(){var pos=this.lastPoint-this.dragOffset-this.originPos;var _3e=this.paneBefore.position;var _3f=this.paneAfter.position+this.paneAfter.sizeActual;this.paneBefore.sizeActual=pos-_3e;this.paneAfter.position=pos+this.sizerWidth;this.paneAfter.sizeActual=_3f-this.paneAfter.position;dojo.forEach(this.getChildren(),function(_40){_40.sizeShare=_40.sizeActual;});if(this._started){this.layout();}},_showSizingLine:function(){this._moveSizingLine();dojo.marginBox(this.virtualSizer,this.isHorizontal?{w:this.sizerWidth,h:this.paneHeight}:{w:this.paneWidth,h: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;dojo.style(this.virtualSizer,(this.isHorizontal?"left":"top"),pos+"px");},_getCookieName:function(i){return this.id+"_"+i;},_restoreState:function(){dojo.forEach(this.getChildren(),function(_43,i){var _45=this._getCookieName(i);var _46=dojo.cookie(_45);if(_46){var pos=parseInt(_46);if(typeof pos=="number"){_43.sizeShare=pos;}}},this);},_saveState:function(){dojo.forEach(this.getChildren(),function(_48,i){dojo.cookie(this._getCookieName(i),_48.sizeShare);},this);}});dojo.extend(dijit._Widget,{sizeMin:10,sizeShare:10});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/StackContainer.js b/spring-js/src/main/resources/META-INF/dijit/layout/StackContainer.js
new file mode 100644
index 00000000..7cf17369
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/StackContainer.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.StackContainer"]){dojo._hasResource["dijit.layout.StackContainer"]=true;dojo.provide("dijit.layout.StackContainer");dojo.require("dijit._Templated");dojo.require("dijit.layout._LayoutWidget");dojo.require("dijit.form.Button");dojo.require("dijit.Menu");dojo.requireLocalization("dijit","common",null,"ROOT,cs,de,es,fr,gr,hu,it,ja,ko,pl,pt,ru,sv,zh,zh-tw");dojo.declare("dijit.layout.StackContainer",dijit.layout._LayoutWidget,{doLayout:true,_started:false,postCreate:function(){dijit.setWaiRole((this.containerNode||this.domNode),"tabpanel");this.connect(this.domNode,"onkeypress",this._onKeyPress);},startup:function(){if(this._started){return;}var _1=this.getChildren();dojo.forEach(_1,this._setupChild,this);dojo.some(_1,function(_2){if(_2.selected){this.selectedChildWidget=_2;}return _2.selected;},this);var _3=this.selectedChildWidget;if(!_3&&_1[0]){_3=this.selectedChildWidget=_1[0];_3.selected=true;}if(_3){this._showChild(_3);}dojo.publish(this.id+"-startup",[{children:_1,selected:_3}]);this.inherited(arguments);},_setupChild:function(_4){_4.domNode.style.display="none";_4.domNode.style.position="relative";return _4;},addChild:function(_5,_6){dijit._Container.prototype.addChild.apply(this,arguments);_5=this._setupChild(_5);if(this._started){this.layout();dojo.publish(this.id+"-addChild",[_5,_6]);if(!this.selectedChildWidget){this.selectChild(_5);}}},removeChild:function(_7){dijit._Container.prototype.removeChild.apply(this,arguments);if(this._beingDestroyed){return;}if(this._started){dojo.publish(this.id+"-removeChild",[_7]);this.layout();}if(this.selectedChildWidget===_7){this.selectedChildWidget=undefined;if(this._started){var _8=this.getChildren();if(_8.length){this.selectChild(_8[0]);}}}},selectChild:function(_9){_9=dijit.byId(_9);if(this.selectedChildWidget!=_9){this._transition(_9,this.selectedChildWidget);this.selectedChildWidget=_9;dojo.publish(this.id+"-selectChild",[_9]);}},_transition:function(_a,_b){if(_b){this._hideChild(_b);}this._showChild(_a);if(this.doLayout&&_a.resize){_a.resize(this._containerContentBox||this._contentBox);}},_adjacent:function(_c){var _d=this.getChildren();var _e=dojo.indexOf(_d,this.selectedChildWidget);_e+=_c?1:_d.length-1;return _d[_e%_d.length];},forward:function(){this.selectChild(this._adjacent(true));},back:function(){this.selectChild(this._adjacent(false));},_onKeyPress:function(e){dojo.publish(this.id+"-containerKeyPress",[{e:e,page:this}]);},layout:function(){if(this.doLayout&&this.selectedChildWidget&&this.selectedChildWidget.resize){this.selectedChildWidget.resize(this._contentBox);}},_showChild:function(_10){var _11=this.getChildren();_10.isFirstChild=(_10==_11[0]);_10.isLastChild=(_10==_11[_11.length-1]);_10.selected=true;_10.domNode.style.display="";if(_10._loadCheck){_10._loadCheck();}if(_10.onShow){_10.onShow();}},_hideChild:function(_12){_12.selected=false;_12.domNode.style.display="none";if(_12.onHide){_12.onHide();}},closeChild:function(_13){var _14=_13.onClose(this,_13);if(_14){this.removeChild(_13);_13.destroyRecursive();}},destroy:function(){this._beingDestroyed=true;this.inherited(arguments);}});dojo.declare("dijit.layout.StackController",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:" ",containerId:"",buttonWidget:"dijit.layout._StackButton",postCreate:function(){dijit.setWaiRole(this.domNode,"tablist");this.pane2button={};this.pane2menu={};this._subscriptions=[dojo.subscribe(this.containerId+"-startup",this,"onStartup"),dojo.subscribe(this.containerId+"-addChild",this,"onAddChild"),dojo.subscribe(this.containerId+"-removeChild",this,"onRemoveChild"),dojo.subscribe(this.containerId+"-selectChild",this,"onSelectChild"),dojo.subscribe(this.containerId+"-containerKeyPress",this,"onContainerKeyPress")];},onStartup:function(_15){dojo.forEach(_15.children,this.onAddChild,this);this.onSelectChild(_15.selected);},destroy:function(){for(var _16 in this.pane2button){this.onRemoveChild(_16);}dojo.forEach(this._subscriptions,dojo.unsubscribe);this.inherited(arguments);},onAddChild:function(_17,_18){var _19=dojo.doc.createElement("span");this.domNode.appendChild(_19);var cls=dojo.getObject(this.buttonWidget);var _1b=new cls({label:_17.title,closeButton:_17.closable},_19);this.addChild(_1b,_18);this.pane2button[_17]=_1b;_17.controlButton=_1b;dojo.connect(_1b,"onClick",dojo.hitch(this,"onButtonClick",_17));if(_17.closable){dojo.connect(_1b,"onClickCloseButton",dojo.hitch(this,"onCloseButtonClick",_17));var _1c=dojo.i18n.getLocalization("dijit","common");var _1d=new dijit.Menu({targetNodeIds:[_1b.id],id:_1b.id+"_Menu"});var _1e=new dijit.MenuItem({label:_1c.itemClose});dojo.connect(_1e,"onClick",dojo.hitch(this,"onCloseButtonClick",_17));_1d.addChild(_1e);this.pane2menu[_17]=_1d;}if(!this._currentChild){_1b.focusNode.setAttribute("tabIndex","0");this._currentChild=_17;}if(!this.isLeftToRight()&&dojo.isIE&&this._rectifyRtlTabList){this._rectifyRtlTabList();}},onRemoveChild:function(_1f){if(this._currentChild===_1f){this._currentChild=null;}var _20=this.pane2button[_1f];var _21=this.pane2menu[_1f];if(_21){_21.destroy();}if(_20){_20.destroy();}this.pane2button[_1f]=null;},onSelectChild:function(_22){if(!_22){return;}if(this._currentChild){var _23=this.pane2button[this._currentChild];_23.setAttribute("checked",false);_23.focusNode.setAttribute("tabIndex","-1");}var _24=this.pane2button[_22];_24.setAttribute("checked",true);this._currentChild=_22;_24.focusNode.setAttribute("tabIndex","0");var _25=dijit.byId(this.containerId);dijit.setWaiState(_25.containerNode||_25.domNode,"labelledby",_24.id);},onButtonClick:function(_26){var _27=dijit.byId(this.containerId);_27.selectChild(_26);},onCloseButtonClick:function(_28){var _29=dijit.byId(this.containerId);_29.closeChild(_28);var b=this.pane2button[this._currentChild];if(b){dijit.focus(b.focusNode||b.domNode);}},adjacent:function(_2b){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_2b=!_2b;}var _2c=this.getChildren();var _2d=dojo.indexOf(_2c,this.pane2button[this._currentChild]);var _2e=_2b?1:_2c.length-1;return _2c[(_2d+_2e)%_2c.length];},onkeypress:function(e){if(this.disabled||e.altKey){return;}var _30=null;if(e.ctrlKey||!e._djpage){var k=dojo.keys;switch(e.keyCode){case k.LEFT_ARROW:case k.UP_ARROW:if(!e._djpage){_30=false;}break;case k.PAGE_UP:if(e.ctrlKey){_30=false;}break;case k.RIGHT_ARROW:case k.DOWN_ARROW:if(!e._djpage){_30=true;}break;case k.PAGE_DOWN:if(e.ctrlKey){_30=true;}break;case k.DELETE:if(this._currentChild.closable){this.onCloseButtonClick(this._currentChild);}dojo.stopEvent(e);break;default:if(e.ctrlKey){if(e.keyCode==k.TAB){this.adjacent(!e.shiftKey).onClick();dojo.stopEvent(e);}else{if(e.keyChar=="w"){if(this._currentChild.closable){this.onCloseButtonClick(this._currentChild);}dojo.stopEvent(e);}}}}if(_30!==null){this.adjacent(_30).onClick();dojo.stopEvent(e);}}},onContainerKeyPress:function(_32){_32.e._djpage=_32.page;this.onkeypress(_32.e);}});dojo.declare("dijit.layout._StackButton",dijit.form.ToggleButton,{tabIndex:"-1",postCreate:function(evt){dijit.setWaiRole((this.focusNode||this.domNode),"tab");this.inherited(arguments);},onClick:function(evt){dijit.focus(this.focusNode);},onClickCloseButton:function(evt){evt.stopPropagation();}});dojo.extend(dijit._Widget,{title:"",selected:false,closable:false,onClose:function(){return true;}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/TabContainer.js b/spring-js/src/main/resources/META-INF/dijit/layout/TabContainer.js
new file mode 100644
index 00000000..94089667
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/TabContainer.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout.TabContainer"]){dojo._hasResource["dijit.layout.TabContainer"]=true;dojo.provide("dijit.layout.TabContainer");dojo.require("dijit.layout.StackContainer");dojo.require("dijit._Templated");dojo.declare("dijit.layout.TabContainer",[dijit.layout.StackContainer,dijit._Templated],{tabPosition:"top",templateString:null,templateString:"\n",_controllerWidget:"dijit.layout.TabController",postCreate:function(){this.inherited(arguments);var _1=dojo.getObject(this._controllerWidget);this.tablist=new _1({id:this.id+"_tablist",tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id},this.tablistNode);},_setupChild:function(_2){dojo.addClass(_2.domNode,"dijitTabPane");this.inherited(arguments);return _2;},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);if(dojo.isSafari){setTimeout(dojo.hitch(this,"layout"),0);}if(dojo.isIE&&!this.isLeftToRight()&&this.tabPosition=="right-h"&&this.tablist&&this.tablist.pane2button){for(var _3 in this.tablist.pane2button){var _4=this.tablist.pane2button[_3];if(!_4.closeButton){continue;}tabButtonStyle=_4.closeButtonNode.style;tabButtonStyle.position="absolute";if(dojo.isIE<7){tabButtonStyle.left=_4.domNode.offsetWidth+"px";}else{tabButtonStyle.padding="0px";}}}},layout:function(){if(!this.doLayout){return;}var _5=this.tabPosition.replace(/-h/,"");var _6=[{domNode:this.tablist.domNode,layoutAlign:_5},{domNode:this.containerNode,layoutAlign:"client"}];dijit.layout.layoutChildren(this.domNode,this._contentBox,_6);this._containerContentBox=dijit.layout.marginBox2contentBox(this.containerNode,_6[1]);if(this.selectedChildWidget){this._showChild(this.selectedChildWidget);if(this.doLayout&&this.selectedChildWidget.resize){this.selectedChildWidget.resize(this._containerContentBox);}}},destroy:function(){if(this.tablist){this.tablist.destroy();}this.inherited(arguments);}});dojo.declare("dijit.layout.TabController",dijit.layout.StackController,{templateString:"
",tabPosition:"top",doLayout:true,buttonWidget:"dijit.layout._TabButton",postMixInProperties:function(){this["class"]="dijitTabLabels-"+this.tabPosition+(this.doLayout?"":" dijitTabNoLayout");this.inherited(arguments);},_rectifyRtlTabList:function(){if(0>=this.tabPosition.indexOf("-h")){return;}if(!this.pane2button){return;}var _7=0;for(var _8 in this.pane2button){_7=Math.max(_7,dojo.marginBox(this.pane2button[_8].innerDiv).w);}for(_8 in this.pane2button){this.pane2button[_8].innerDiv.style.width=_7+"px";}}});dojo.declare("dijit.layout._TabButton",dijit.layout._StackButton,{baseClass:"dijitTab",templateString:"\n
\n
\n\t ${!label} \n\t \n\t x \n\t \n
\n
\n
\n",postCreate:function(){if(this.closeButton){dojo.addClass(this.innerDiv,"dijitClosable");}else{this.closeButtonNode.style.display="none";}this.inherited(arguments);dojo.setSelectable(this.containerNode,false);}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/_LayoutWidget.js b/spring-js/src/main/resources/META-INF/dijit/layout/_LayoutWidget.js
new file mode 100644
index 00000000..28d6834d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/_LayoutWidget.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dijit.layout._LayoutWidget"]){dojo._hasResource["dijit.layout._LayoutWidget"]=true;dojo.provide("dijit.layout._LayoutWidget");dojo.require("dijit._Widget");dojo.require("dijit._Container");dojo.declare("dijit.layout._LayoutWidget",[dijit._Widget,dijit._Container,dijit._Contained],{isLayoutContainer:true,postCreate:function(){dojo.addClass(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_1){_1.startup();});if(!this.getParent||!this.getParent()){this.resize();this.connect(window,"onresize",function(){this.resize();});}this.inherited(arguments);},resize:function(_2){var _3=this.domNode;if(_2){dojo.marginBox(_3,_2);if(_2.t){_3.style.top=_2.t+"px";}if(_2.l){_3.style.left=_2.l+"px";}}var mb=dojo.mixin(dojo.marginBox(_3),_2||{});this._contentBox=dijit.layout.marginBox2contentBox(_3,mb);this.layout();},layout:function(){}});dijit.layout.marginBox2contentBox=function(_5,mb){var cs=dojo.getComputedStyle(_5);var me=dojo._getMarginExtents(_5,cs);var pb=dojo._getPadBorderExtents(_5,cs);return {l:dojo._toPixelValue(_5,cs.paddingLeft),t:dojo._toPixelValue(_5,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};};(function(){var _a=function(_b){return _b.substring(0,1).toUpperCase()+_b.substring(1);};var _c=function(_d,_e){_d.resize?_d.resize(_e):dojo.marginBox(_d.domNode,_e);dojo.mixin(_d,dojo.marginBox(_d.domNode));dojo.mixin(_d,_e);};dijit.layout.layoutChildren=function(_f,dim,_11){dim=dojo.mixin({},dim);dojo.addClass(_f,"dijitLayoutContainer");_11=dojo.filter(_11,function(_12){return _12.layoutAlign!="client";}).concat(dojo.filter(_11,function(_13){return _13.layoutAlign=="client";}));dojo.forEach(_11,function(_14){var elm=_14.domNode,pos=_14.layoutAlign;var _17=elm.style;_17.left=dim.l+"px";_17.top=dim.t+"px";_17.bottom=_17.right="auto";dojo.addClass(elm,"dijitAlign"+_a(pos));if(pos=="top"||pos=="bottom"){_c(_14,{w:dim.w});dim.h-=_14.h;if(pos=="top"){dim.t+=_14.h;}else{_17.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_c(_14,{h:dim.h});dim.w-=_14.w;if(pos=="left"){dim.l+=_14.w;}else{_17.left=dim.l+dim.w+"px";}}else{if(pos=="client"){_c(_14,dim);}}}});};})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/templates/AccordionPane.html b/spring-js/src/main/resources/META-INF/dijit/layout/templates/AccordionPane.html
new file mode 100644
index 00000000..a675d3a7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/templates/AccordionPane.html
@@ -0,0 +1,11 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/templates/TabContainer.html b/spring-js/src/main/resources/META-INF/dijit/layout/templates/TabContainer.html
new file mode 100644
index 00000000..105e8c6c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/templates/TabContainer.html
@@ -0,0 +1,4 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/templates/TooltipDialog.html b/spring-js/src/main/resources/META-INF/dijit/layout/templates/TooltipDialog.html
new file mode 100644
index 00000000..59255001
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/templates/TooltipDialog.html
@@ -0,0 +1,6 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/layout/templates/_TabButton.html b/spring-js/src/main/resources/META-INF/dijit/layout/templates/_TabButton.html
new file mode 100644
index 00000000..b7b37ac2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/layout/templates/_TabButton.html
@@ -0,0 +1,10 @@
+
+
+
+ ${!label}
+
+ x
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/Textarea.js b/spring-js/src/main/resources/META-INF/dijit/nls/Textarea.js
new file mode 100644
index 00000000..4b0e996a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/Textarea.js
@@ -0,0 +1 @@
+({"iframeEditTitle":"edit area","iframeFocusTitle":"edit area frame"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/common.js
new file mode 100644
index 00000000..6573dcde
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/common.js
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/cs/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/cs/common.js
new file mode 100644
index 00000000..17b55e65
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/cs/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Storno","buttonSave":"Uložit","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/cs/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/cs/loading.js
new file mode 100644
index 00000000..c611926e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/cs/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/de/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/de/common.js
new file mode 100644
index 00000000..28724f59
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/de/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Abbrechen","buttonSave":"Speichern","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/de/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/de/loading.js
new file mode 100644
index 00000000..4989983d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/de/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/es/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/es/common.js
new file mode 100644
index 00000000..19994ea6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/es/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Cancelar","buttonSave":"Guardar","buttonOk":"Aceptar","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/es/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/es/loading.js
new file mode 100644
index 00000000..dc969a3b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/es/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/fr/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/fr/common.js
new file mode 100644
index 00000000..62309c36
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/fr/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Annuler","buttonSave":"Sauvegarder","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/fr/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/fr/loading.js
new file mode 100644
index 00000000..ec7192ba
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/fr/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Chargement...","errorState":"Une erreur est survenue"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/gr/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/gr/common.js
new file mode 100644
index 00000000..cd46341f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/gr/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Ακύρωση","buttonSave":"Αποθήκευση","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/gr/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/gr/loading.js
new file mode 100644
index 00000000..7c02d129
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/gr/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Φόρτωση...","errorState":"Σύγνωνη, εμφανίστηκε λάθος"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/hu/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/hu/common.js
new file mode 100644
index 00000000..57f121b6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/hu/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Mégse","buttonSave":"Mentés","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/hu/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/hu/loading.js
new file mode 100644
index 00000000..d61e9a2a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/hu/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/it/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/it/common.js
new file mode 100644
index 00000000..9da52d50
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/it/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Annulla","buttonSave":"Salva","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/it/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/it/loading.js
new file mode 100644
index 00000000..60d05e00
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/it/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/ja/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/ja/common.js
new file mode 100644
index 00000000..cbc39aa8
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/ja/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"キャンセル","buttonSave":"保存","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/ja/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/ja/loading.js
new file mode 100644
index 00000000..fa67d67c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/ja/loading.js
@@ -0,0 +1 @@
+({"loadingState":"ロード中...","errorState":"エラーが発生しました。"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/ko/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/ko/common.js
new file mode 100644
index 00000000..df58302e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/ko/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"취소","buttonSave":"저장","buttonOk":"확인","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/ko/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/ko/loading.js
new file mode 100644
index 00000000..5d1ca128
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/ko/loading.js
@@ -0,0 +1 @@
+({"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/loading.js
new file mode 100644
index 00000000..1d6fa9b7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Loading...","errorState":"Sorry, an error occurred"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/pl/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/pl/common.js
new file mode 100644
index 00000000..1eae74b8
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/pl/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Anuluj","buttonSave":"Zapisz","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/pl/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/pl/loading.js
new file mode 100644
index 00000000..eab34766
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/pl/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Trwa ładowanie...","errorState":"Niestety, wystąpił błąd"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/pt/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/pt/common.js
new file mode 100644
index 00000000..8a18f4dc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/pt/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Cancelar ","buttonSave":"Salvar","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/pt/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/pt/loading.js
new file mode 100644
index 00000000..bf7057a2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/pt/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Carregando...","errorState":"Ocorreu um erro"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/ru/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/ru/common.js
new file mode 100644
index 00000000..40d9b667
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/ru/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Отмена","buttonSave":"Сохранить","buttonOk":"ОК","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/ru/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/ru/loading.js
new file mode 100644
index 00000000..55cd03b6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/ru/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/sv/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/sv/common.js
new file mode 100644
index 00000000..ac3d254b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/sv/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"Avbryt","buttonSave":"Spara","buttonOk":"OK","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/sv/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/sv/loading.js
new file mode 100644
index 00000000..8f33424c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/sv/loading.js
@@ -0,0 +1 @@
+({"loadingState":"Laddar...","errorState":"Ett fel har uppstått."})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/common.js
new file mode 100644
index 00000000..943bfe99
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"取消","buttonSave":"儲存","buttonOk":"確定","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/loading.js
new file mode 100644
index 00000000..00785410
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/zh-tw/loading.js
@@ -0,0 +1 @@
+({"loadingState":"載入中...","errorState":"抱歉,發生錯誤"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/zh/common.js b/spring-js/src/main/resources/META-INF/dijit/nls/zh/common.js
new file mode 100644
index 00000000..c975ba8f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/zh/common.js
@@ -0,0 +1 @@
+({"buttonCancel":"取消","buttonSave":"保存","buttonOk":"确定","itemClose":"Close"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/nls/zh/loading.js b/spring-js/src/main/resources/META-INF/dijit/nls/zh/loading.js
new file mode 100644
index 00000000..f68b8fa2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/nls/zh/loading.js
@@ -0,0 +1 @@
+({"loadingState":"正在装入...","errorState":"对不起,发生了错误"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/resources/_modules.js b/spring-js/src/main/resources/META-INF/dijit/resources/_modules.js
new file mode 100644
index 00000000..03dd5390
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/resources/_modules.js
@@ -0,0 +1,11 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/Calendar.html b/spring-js/src/main/resources/META-INF/dijit/templates/Calendar.html
new file mode 100644
index 00000000..d025351e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/Calendar.html
@@ -0,0 +1,35 @@
+
+
+
+
+ -
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/ColorPalette.html b/spring-js/src/main/resources/META-INF/dijit/templates/ColorPalette.html
new file mode 100644
index 00000000..e4557c76
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/ColorPalette.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/Dialog.html b/spring-js/src/main/resources/META-INF/dijit/templates/Dialog.html
new file mode 100644
index 00000000..f3a2e5cd
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/Dialog.html
@@ -0,0 +1,9 @@
+
+
+ ${title}
+
+ x
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/InlineEditBox.html b/spring-js/src/main/resources/META-INF/dijit/templates/InlineEditBox.html
new file mode 100644
index 00000000..449705b2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/InlineEditBox.html
@@ -0,0 +1,8 @@
+${buttonSave} ${buttonCancel}
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/ProgressBar.html b/spring-js/src/main/resources/META-INF/dijit/templates/ProgressBar.html
new file mode 100644
index 00000000..49b8e229
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/ProgressBar.html
@@ -0,0 +1,9 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/TitlePane.html b/spring-js/src/main/resources/META-INF/dijit/templates/TitlePane.html
new file mode 100644
index 00000000..c14905d2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/TitlePane.html
@@ -0,0 +1,14 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/Tooltip.html b/spring-js/src/main/resources/META-INF/dijit/templates/Tooltip.html
new file mode 100644
index 00000000..87396480
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/templates/Tooltip.html
@@ -0,0 +1,4 @@
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/buttons/bg-fade.png b/spring-js/src/main/resources/META-INF/dijit/templates/buttons/bg-fade.png
new file mode 100644
index 00000000..5d74aad6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/templates/buttons/bg-fade.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/colors3x4.png b/spring-js/src/main/resources/META-INF/dijit/templates/colors3x4.png
new file mode 100644
index 00000000..e4078812
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/templates/colors3x4.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/templates/colors7x10.png b/spring-js/src/main/resources/META-INF/dijit/templates/colors7x10.png
new file mode 100644
index 00000000..77d22ce3
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/templates/colors7x10.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/a11y/README.txt b/spring-js/src/main/resources/META-INF/dijit/themes/a11y/README.txt
new file mode 100644
index 00000000..a8093542
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/a11y/README.txt
@@ -0,0 +1,3 @@
+This folder contains images used by all themes when in "high-contrast" mode.
+
+If you think you need to put something here, please talk to Becky or Bill first.
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/a11y/indeterminate_progress.gif b/spring-js/src/main/resources/META-INF/dijit/themes/a11y/indeterminate_progress.gif
new file mode 100644
index 00000000..66f535cd
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/a11y/indeterminate_progress.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/dijit.css b/spring-js/src/main/resources/META-INF/dijit/themes/dijit.css
new file mode 100644
index 00000000..235db8a0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/dijit.css
@@ -0,0 +1,1512 @@
+/*
+ Essential styles that themes can inherit.
+ In other words, works but doesn't look great.
+*/
+
+
+
+/****
+ GENERIC PIECES
+ ****/
+
+.dijitReset {
+ /* Use this style to null out padding, margin, border in your template elements
+ so that page specific styles don't break them.
+ - Use in all TABLE, TR and TD tags.
+ - If there is more than one class on the tag, place this first so other classes override.
+ */
+ margin:0;
+ border:0;
+ padding:0;
+ line-height:normal;
+ font: inherit;
+ color: inherit;
+}
+
+.dijitInline {
+ /* To inline block elements.
+ Similar to InlineBox below, but this has fewer side-effects in Moz.
+ Also, apparently works on a DIV as well as a FIELDSET.
+ */
+ display:-moz-inline-box; /* FF2 */
+ display:inline-block; /* webkit and FF3 */
+ #zoom: 1; /* set hasLayout:true to mimic inline-block */
+ #display:inline; /* don't use .dj_ie since that increases the priority */
+ border:0;
+ padding:0;
+ vertical-align:middle;
+}
+
+.dj_ie INPUT.dijitTextBox,
+.dj_ie .dijitInputField INPUT {
+ font-size: 100%;
+ font-family: inherit; /* trigger pseudo font-family inheritance */
+ behavior: expression( /* if the font-family = inherit, then get the parent's font-family */
+ function(self){
+ var cs, e;
+ try{
+ if(self.currentStyle.fontFamily=='inherit'){
+ cs = self.parentNode.currentStyle || document.documentElement.currentStyle;
+ self.style.fontFamily = cs.fontFamily;
+ }
+ self.style.behavior = null; /* #5562: prevent re-eval of css expression */
+ }catch(e){} /* #6024: random exceptions thrown during init */
+ }(this)
+ );
+}
+
+.dj_ie .dijitInputField INPUT { /* try to get rid of IE implicit margin around INPUT */
+ margin: -1px 0 !important;
+}
+.dj_iequirks .dijitInputField INPUT { /* try to get rid of IE implicit margin around INPUT */
+ margin-top: -3px !important;
+}
+
+.dijitInlineTable {
+ /* To inline tables with a given width set (otherwise, use dijitInline above)
+ * Must also put style="-moz-inline-stack" on the node itself to workaround FF2 bugs
+ */
+ display: -moz-inline-stack; /* FF2 */
+ display:inline-table;
+ display:inline-block; /* webkit and FF3 */
+ #zoom: 1; /* set hasLayout:true to mimic inline-block */
+ #display:inline; /* don't use .dj_ie since that increases the priority */
+ box-sizing: content-box; -moz-box-sizing: content-box;
+ border:0;
+ padding:0;
+}
+
+.dijitTeeny {
+ font-size:1px;
+ line-height:1px;
+}
+
+/*
+ * Popup items have a wrapper div (dijitPopup)
+ * with the real popup inside, and maybe an iframe too
+ */
+.dijitPopup {
+ position: absolute;
+ background-color: transparent;
+ margin: 0;
+ border: 0;
+ padding: 0;
+}
+.dijit_a11y .dijitPopup,
+.dijit_ally .dijitPopup div,
+.dijit_a11y .dijitPopup table,
+.dijit_a11y .dijitTooltipContainer {
+ opacity: 1 !important;
+ background-color: white !important;
+}
+.dj_ie .dijit_a11y .dijitPopup * {
+ filter: none;
+}
+
+.dijitInputField {
+ overflow:hidden;
+ #zoom:1;
+}
+
+.dijitPositionOnly {
+ /* Null out all position-related properties */
+ padding: 0 !important;
+ border: 0 !important;
+ background-color: transparent !important;
+ background-image: none !important;
+ height: auto !important;
+ width: auto !important;
+}
+
+.dijitNonPositionOnly {
+ /* Null position-related properties */
+ float: none !important;
+ position: static !important;
+ margin: 0 0 0 0 !important;
+ vertical-align: middle !important;
+}
+
+.dijitBackgroundIframe {
+ /*
+ * iframe used for FF2 in high-contrast mode to prevent menu
+ * being transparent
+ */
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ z-index: -1;
+ border: 0;
+ padding: 0;
+ margin: 0;
+}
+
+.dijitClickableRegion {
+ /* a region we expect the user to click on */
+ cursor: pointer;
+}
+
+
+.dijitDisplayNone {
+ /* hide something. Use this as a class rather than element.style so another class can override */
+ display:none !important;
+}
+
+.dijitContainer {
+ /* for all layout containers */
+ overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */
+}
+
+/****
+ A11Y
+ ****/
+.dijit_a11y * {
+ background-image:none !important;
+ background-color:transparent !important;
+}
+
+.dijit_a11y .dijitCalendarIncrementControl .dijitA11ySideArrow {
+ padding-left:.2em;
+ visibility:visible !important;
+}
+
+.dijit_a11y .dijitCalendarSelectedDate {
+ text-decoration:overline !important;
+}
+
+.dijitA11ySideArrow {
+ vertical-align:top;
+ margin-right:0em;
+ margin-left:.2em;
+ line-height:2em;
+ text-align:center;
+}
+
+.dijit_a11y .dijit * {
+ background:white !important;
+ color:black !important;
+}
+.dijit_a11y .dijitButtonNode {
+ border:1px solid black !important;
+}
+
+.dijit_a11y .dijitButtonDisabled .dijitButtonNode,
+.dijit_a11y .dijitDropDownButtonDisabled .dijitButtonNode,
+.dijit_a11y .dijitComboButtonDisabled .dijitButtonNode,
+.dijit_a11y .dijitComboBoxDisabled .dijitInputField,
+.dijit_a11y .dijitComboBoxDisabled .dijitButtonNode,
+.dijit_a11y .dijitSpinnerDisabled .dijitButtonNode,
+.dijit_a11y .dijitSpinnerDisabled .dijitInputField {
+ border-style: dotted !important;
+ border-color: #999 !important;
+ color:#999 !important;
+}
+
+/* button inner contents - labels, icons etc. */
+.dijitButtonNode * {
+ vertical-align: middle;
+}
+.dijit_a11y .dijitArrowButtonInner {
+ width: 1.0em;
+ display: none !important;
+}
+.dijitButtonNode .dijitArrowButtonInner {
+ background:no-repeat center;
+ width: 16px;
+}
+.dijitComboBox .dijitArrowButtonInner {
+ display: block;
+}
+
+/* In high contrast mode, display the check symbol */
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+ display: inline !important;
+}
+
+
+/****
+ 3-element borders: ( dijitLeft + dijitStretch + dijitRight )
+ ****/
+
+.dijitLeft {
+ /* Left part of a 3-element border */
+ background-position:left top;
+ background-repeat:no-repeat;
+}
+
+.dijitStretch {
+ /* Middle (stretchy) part of a 3-element border */
+ white-space:nowrap; /* MOW: move somewhere else */
+ background-repeat:repeat-x;
+}
+
+.dijitRight {
+ /* Right part of a 3-element border */
+ #display:inline; /* IE7 sizes to outer size w/o this */
+ background-position:right top;
+ background-repeat:no-repeat;
+}
+
+.dijitButton,
+.dijitDropDownButton,
+.dijitComboButton {
+ /* outside of button */
+ margin: 0.2em;
+}
+
+.dj_safari .dijitToolbar .dijitDropDownButton {
+ padding-left: 0.3em;
+}
+
+.dijitButtonNode {
+ /* Node that is acting as a button -- may or may not be a BUTTON element */
+ border:1px solid gray;
+ margin:0;
+ padding:.2em .2em .1em;
+ line-height:normal;
+ cursor:pointer;
+ vertical-align:middle;
+ text-align:center;
+ white-space: nowrap;
+}
+
+.dijitArrowButton {
+ /* Node that is acting as a arrow button -- drop down (spinner has its own treatment). Also gets dijitButtonNode */
+ /* place AFTER dijitButtonNode so it overrides */
+ padding: 0 .4em;
+}
+DIV.dijitArrowButton {
+ float: right;
+}
+
+.dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
+ border-style: solid;
+ border-width: 0 0 0 1px !important;
+ padding: 0;
+ position: absolute;
+ right: 0;
+ float: none;
+}
+.dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
+ position: absolute;
+ height: 50%;
+}
+.dijitSpinner .dijitInputLayoutContainer .dijitDownArrowButton {
+ top: none;
+ bottom: 0;
+ border-top-width: 1px !important;
+}
+.dijitSpinner .dijitInputLayoutContainer .dijitUpArrowButton {
+ top: 0;
+ bottom: none;
+}
+
+.dijitComboButton TABLE {
+ /* each cell in a combo-table should have its own separate border */
+ border-collapse: separate;
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+.dijitComboButton .dijitButtonContents {
+ border-right-width:0 !important;
+}
+
+
+.dj_ie BUTTON.dijitButtonNode {
+ overflow: visible; /* eliminates arbitrary left and right padding on buttons */
+}
+
+table .dijitButton .dijitButtonNode,
+table .dijitComboButton .dijitButtonNode {
+ #overflow:hidden; /* visible messes up if the button is inside a table on IE */
+}
+
+
+
+.dijitButtonNode IMG {
+ /* make text and images line up cleanly */
+ vertical-align:middle;
+ margin-bottom:.2em;
+}
+
+/******
+ TextBox related.
+ Everything that has an
+*******/
+
+.dijitTextBox,
+.dijitComboBox,
+.dijitSpinner {
+ border: solid black 1px;
+ #overflow: hidden; /* #6027, #6067 */
+ width: 15em; /* need to set default size on outer node since inner nodes say and . user can override */
+}
+
+/* rules for safari to deal with fuzzy blue focus border */
+.dijitTextBox input:focus,
+.dijitComboBox input:focus,
+.dijitSpinner input:focus {
+ outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */
+}
+.dijitTextBoxFocused,
+.dijitComboBoxFocused,
+.dijitSpinnerFocused {
+ /* should we display focus like we do on other browsers, or use the safari standard focus indicator?? */
+ outline: auto 5px -webkit-focus-ring-color;
+}
+
+.dijitTextBox INPUT,
+.dijitComboBox INPUT,
+.dijitSpinner INPUT {
+ padding:0;
+ border-left: solid black 1px; /* TODO: for RTL mode should be border-right */
+ display:inline;
+ position:static !important;
+ border:0 !important;
+ margin:0 !important;
+ vertical-align:0em !important;
+ visibility:visible !important;
+ background-color:transparent !important;
+ background-image:none !important;
+ width:100% !important;
+}
+
+/* Display an "X" for invalid input. Themes will override these rules to display an icon instead.
+*/
+.dijitValidationIcon {
+ visibility: hidden;
+ display: block;
+ padding: 0 2px;
+ float: right;
+ height: auto;
+}
+.dijitValidationIconText {
+ visibility: hidden;
+ display: none;
+ float:right;
+ font-family: sans-serif;
+ font-style:italic;
+ font-size: 0.45em;
+ line-height: 190%;
+}
+.dijit_a11y .dijitValidationIcon { display: none !important; }
+.dijit_a11y .dijitValidationIconText { display: block !important; }
+
+.dijitError .dijitValidationIcon,
+.dijitError .dijitValidationIconText {
+ visibility: visible;
+}
+
+.dijitTextBox .dijitArrowButton {
+ /* this is for a combo box with no arrow displayed; we set baseClass=TextBox */
+ display:none;
+}
+
+/****
+ dijit.form.CheckBox
+ &
+ dijit.form.RadioButton
+ ****/
+
+.dijitCheckBox,
+.dijitRadio,
+.dijitCheckBoxInput {
+ padding: 0;
+ border: 0;
+ width: 16px;
+ height: 16px;
+ background-position:center center;
+ background-repeat:no-repeat;
+ overflow: hidden;
+}
+
+.dijitCheckBox INPUT,
+.dijitRadio INPUT {
+ margin: 0;
+ padding: 0;
+ display: block;
+}
+
+.dijitCheckBoxInput {
+ /* place the actual input on top, but all-but-invisible */
+ opacity: 0.01;
+}
+
+.dj_ie .dijitCheckBoxInput {
+ filter: alpha(opacity=0);
+}
+
+.dijit_a11y .dijitCheckBox,
+.dijit_a11y .dijitRadio {
+ width: auto;
+ height: auto;
+}
+.dijit_a11y .dijitCheckBoxInput {
+ opacity: 1;
+ filter: none;
+ width: auto;
+ height: auto;
+}
+
+
+/****
+ dijit.ProgressBar
+ ****/
+
+.dijitProgressBarEmpty{
+ /* outer container and background of the bar that's not finished yet*/
+ position:relative;overflow:hidden;
+ border:1px solid black; /* a11y: border necessary for high-contrast mode */
+ z-index:0; /* establish a stacking context for this progress bar */
+}
+
+.dijitProgressBarFull {
+ /* outer container for background of bar that is finished */
+ position:absolute;
+ overflow:hidden;
+ z-index:-1;
+ top:0;
+ width:100%;
+ height:100%;
+}
+
+.dijitProgressBarTile{
+ /* inner container for finished portion */
+ position:absolute;
+ overflow:hidden;
+ top:0;
+ left:0;
+ bottom:0;
+ right:0;
+ margin:0;
+ padding:0;
+ width:auto;
+ height:auto;
+ background-color:#aaa;
+ background-attachment: fixed;
+}
+
+.dijit_a11y .dijitProgressBarTile{
+ /* a11y: The border provides visibility in high-contrast mode */
+ border-width:4px;
+ border-style:solid;
+ background-color:transparent !important;
+}
+
+.dj_iequirks .dijitProgressBarTile{
+ width:100%;
+ height:100%;
+}
+
+.dj_ie6 .dijitProgressBarTile{
+ /* width:auto works in IE6 with position:static but not position:absolute */
+ position:static;
+ /* height:auto does not work in IE6 */
+ height:100%;
+}
+
+.dijitProgressBarIndeterminate .dijitProgressBarLabel{
+ visibility:hidden;
+}
+
+.dijitProgressBarIndeterminate .dijitProgressBarTile{
+ /* animated gif for 'indeterminate' mode */
+}
+
+.dijitProgressBarIndeterminateHighContrastImage{
+ display:none;
+}
+
+.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage{
+ display:block;
+ position:absolute;
+ top:0;
+ bottom:0;
+ margin:0;
+ padding:0;
+ width:100%;
+ height:auto;
+}
+
+.dijitProgressBarLabel{
+ display:block;
+ position:static;
+ width:100%;
+ text-align:center;
+ background-color:transparent;
+}
+
+/* progress bar in vertical mode - TODO: remove? no longer supported? */
+.dijitProgressBarV .dijitProgressBarFull{
+ bottom:0; /* start at the bottom */
+}
+
+.dj_ie6 .dijitProgressBarV .dijitProgressBarTile{
+ position:absolute;
+ /* can't use position:static here -- need absolute positioning to place
+ the bar at the bottom of a vertical progressbar */
+ width:100%;
+}
+
+
+/****
+ dijit.Tooltip
+ ****/
+
+.dijitTooltip {
+ position: absolute;
+ z-index: 2000;
+ display: block;
+ /* make visible but off screen */
+ left: 50%;
+ top: -10000px;
+ overflow: visible;
+}
+
+.dijitTooltipContainer {
+ border: solid black 2px;
+ background: #b8b5b5;
+ color: black;
+ font-size: small;
+}
+
+.dijitTooltipFocusNode {
+ padding: 2px 2px 2px 2px;
+}
+
+.dijitTooltipConnector {
+ position: absolute;
+}
+
+/* MOW: using actual images at this time
+/* draw an arrow with CSS only * /
+.dijitTooltipConnector {
+ /* the border on the triangle * /
+ font-size: 0; line-height: 0%; width: 0;
+ border-top: none;
+ border-bottom: 14px solid black;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ top: -14px;
+ left: 3px;
+ z-index: 2;
+}
+
+.dijitTooltipConnector div {
+ /* the background of the triangle * /
+ font-size: 0; line-height: 0%; width: 0;
+ position: absolute;
+ border-bottom: 10px solid #b8b5b5;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ top: 6px;
+ left: -5px;
+ z-index: 3;
+}
+
+*/
+
+
+
+/* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS)
+ make sure that the position:absolute in dijitAlign* overrides other classes */
+
+.dijitLayoutContainer{
+ position: relative;
+ display: block;
+ overflow: hidden;
+}
+
+body .dijitAlignTop,
+body .dijitAlignBottom,
+body .dijitAlignLeft,
+body .dijitAlignRight {
+ position: absolute;
+ overflow: hidden;
+}
+
+body .dijitAlignClient { position: absolute; }
+
+.dijitBorderContainer {
+ position:relative;
+ overflow: hidden;
+}
+
+.dijitBorderContainer > .dijitTextArea {
+ /* On Safari, for SimpleTextArea inside a BorderContainer,
+ don't want to display the grip to resize */
+ resize: none;
+}
+
+/* SplitContainer
+
+ 'V' == container that splits vertically (up/down)
+ 'H' = horizontal (left/right)
+*/
+
+.dijitSplitter {
+ position: absolute;
+ overflow: hidden;
+ z-index: 9999;
+ background-color: #fff;
+ border-color: gray;
+ border-style: solid;
+ border-width: 0;
+ z-index: 10 !important;
+}
+.dijitSplitterCover{
+ position:absolute;
+ z-index:1;
+ top:0;
+ left:0;
+ width:100%;
+ height:100%;
+}
+.dijitSplitterH {
+ height: 7px;
+ border-top:1px;
+ border-bottom:1px;
+ cursor: ns-resize;
+}
+.dijitSplitterV {
+ width: 7px;
+ border-left:1px;
+ border-right:1px;
+ cursor: ew-resize;
+}
+.dijitSplitContainer{
+ position: relative;
+ overflow: hidden;
+ display: block;
+}
+
+.dijitSplitPane{
+ position: absolute;
+}
+
+.dijitSplitContainerSizerH,
+.dijitSplitContainerSizerV {
+ position:absolute;
+ font-size: 1px;
+ cursor: move;
+ cursor: w-resize;
+ background-color: ThreeDFace;
+ border: 1px solid;
+ border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+ margin: 0;
+}
+
+.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
+ overflow:hidden;
+ position:absolute;
+ top:49%;
+}
+
+.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
+ position:absolute;
+ left:49%;
+}
+
+.dijitSplitterShadow,
+.dijitSplitContainerVirtualSizerH,
+.dijitSplitContainerVirtualSizerV {
+ font-size: 1px;
+ background-color: ThreeDShadow;
+ -moz-opacity: 0.5;
+ opacity: 0.5;
+ filter: Alpha(Opacity=50);
+ margin: 0;
+}
+
+.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
+ cursor: w-resize;
+}
+.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
+ cursor: n-resize;
+}
+
+
+/* ContentPane */
+
+.dijitContentPane {
+ display: block;
+ overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */
+}
+/* TitlePane */
+.dijitTitlePane {
+ display: block;
+ overflow: hidden;
+}
+.dj_ie7 .dijitTitlePaneTextNode {
+ display:inline;
+}
+
+/* Color Palette */
+
+.dijitColorPalette {
+ border:1px solid #999;
+ background:#fff;
+ -moz-border-radius:3pt;
+}
+
+img.dijitColorPaletteUnder {
+ border-style:none;
+ position:absolute;
+ left:0;
+ top:0;
+}
+.dijitColorPaletteInner {
+ position: relative;
+ overflow:hidden;
+ outline:0;
+}
+.dijitPaletteCell {
+ width: 20px;
+ height: 20px;
+ position: absolute;
+ overflow: hidden;
+ z-index: 10;
+ outline-width: 0;
+}
+.dijitPaletteImg {
+ width: 16px; /*This is the width of one color in the provided palettes. */
+ height: 14px; /* Height of one color in the provided palettes. */
+ position: absolute;
+ top: 1px;
+ left: 1px;
+ overflow: hidden;
+ cursor: default;
+ border:1px solid #999;
+ /* -moz-border-radius:2pt; */
+}
+
+.dijitPaletteCellHighlight img {
+ width: 14px; /*This is the width of one color in the provided palettes. */
+ height: 12px; /* Height of one color in the provided palettes. */
+ position: absolute;
+ top: 1px;
+ left: 1px;
+ overflow: hidden;
+ cursor: default;
+ border:2px solid #000;
+ outline:1px solid #dedede;
+ /* -moz-border-radius:0; */
+}
+
+
+/* Accordion */
+
+.dijitAccordionPane {
+ overflow: hidden !important; /* prevent spurious scrollbars */
+}
+
+.dijitAccordionPane .dijitAccordionBody {
+ overflow: auto;
+}
+
+
+.dijitAccordionContainer {
+ border:1px solid #b7b7b7;
+ border-top:0 !important;
+}
+
+.dijitAccordionTitle:hover {
+ cursor: pointer;
+}
+
+.dijitAccordionTitle .dijitAccordionArrow {
+ float: right;
+}
+
+/* images off, high-contrast mode styles */
+.dijitAccordionPane .dijitAccordionTitle .arrowTextUp,
+.dijitAccordionPane .dijitAccordionTitle .arrowTextDown {
+ display: none;
+ float: right;
+ font-size: 0.65em;
+ font-weight: normal !important;
+}
+
+.dijit_a11y .dijitAccordionPane .dijitAccordionTitle .arrowTextUp {
+ display: inline;
+}
+
+.dijit_a11y .dijitAccordionTitle-selected .arrowTextDown {
+ display: inline;
+}
+
+.dijit_a11y .dijitAccordionTitle-selected .arrowTextUp {
+ display: none;
+}
+
+/* Calendar */
+
+.dijitCalendarContainer thead tr th, .dijitCalendarContainer thead tr td, .dijitCalendarContainer tbody tr td, .dijitCalendarContainer tfoot tr td {
+ padding: 0;
+}
+
+.dijitCalendarNextYear {
+ margin:0 0 0 0.55em;
+}
+
+.dijitCalendarPreviousYear {
+ margin:0 0.55em 0 0;
+}
+
+.dijitCalendarIncrementControl {
+ cursor:pointer;
+ cursor:hand;
+ width:1em;
+}
+
+.dijitCalendarDisabledDate {
+ color:gray !important;
+}
+
+.dijitCalendarBodyContainer tbody tr td {
+ cursor:pointer;
+ cursor:hand;
+}
+
+.dijitCalendarPreviousMonthDisabled,
+.dijitCalendarCurrentMonthDisabled,
+.dijitCalendarNextMonthDisabled {
+ cursor:default !important
+}
+
+.dijitCalendarDateTemplate,
+.dijitCalendarSelectedYear,
+.dijitCalendarNextYear,
+.dijitCalendarPreviousYear {
+ cursor:pointer;
+}
+
+.dijitCalendarMonthLabelSpacer {
+ /* don't display it, but make it affect the width */
+ position: relative;
+ height: 1px;
+ overflow: hidden;
+ visibility: hidden;
+}
+
+
+/* Menu */
+
+.dijitMenu {
+ border:1px solid black;
+ background-color:white;
+}
+.dijitMenuTable {
+ margin:1px 0;
+ border-collapse:collapse;
+ border-width:0;
+ background-color:white;
+}
+
+.dijitMenuItem{
+ white-space: nowrap;
+ padding:.1em .2em;
+}
+
+.dijitMenuItemHover {
+ cursor:pointer;
+ cursor:hand;
+ background-color:black;
+ color:white;
+}
+
+.dijitMenuItemIcon {
+ position: relative;
+ background-repeat: no-repeat;
+}
+
+.dijitMenuItemDisabled * {
+ /* for a disabled menu item, just set it to mostly transparent */
+ opacity:0.3;
+ cursor:default;
+}
+.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
+.dj_ie .dijitMenuItemDisabled *,
+.dj_ie .dijitMenuItemDisabled td {
+ color:gray !important;
+ filter: alpha(opacity=35);
+}
+
+.dijitMenuItemLabel {
+ position: relative;
+ vertical-align: middle;
+}
+
+.dijit_a11y .dijitMenuItemHover .dijitMenuItemLabel {
+ border-width: 1px;
+ border-style: solid;
+}
+.dijit_a11y .dijitMenuItemHover {
+ border: 1px #fff dotted !important;
+}
+
+.dijit_a11y .dijitMenuExpandInner {
+ display:block !important;
+}
+
+/* separator can be two pixels -- set border of either one to 0 to have only one */
+.dijitMenuSeparatorTop {
+ height: 50%;
+ margin: 0;
+ margin-top:3px;
+ font-size: 1px;
+}
+
+.dijitMenuSeparatorBottom {
+ height: 50%;
+ margin: 0;
+ margin-bottom:3px;
+ font-size: 1px;
+}
+
+
+
+/* Tab */
+
+
+.dijitTabLabels-top {
+/* position the tab labels row down by 1 px, and on top of the dijitTabPaneWrapper
+ so the buttons can overlay the tab pane properly */
+ top:1px !important;
+ z-index:10;
+}
+
+.dijitTabLabels-bottom {
+/* position the tab labels row up by 1 px so they overlap */
+ margin-top:-1px !important;
+ z-index:10;
+}
+
+.dijitTabLabels-left-h {
+/* position the tab labels left by 1 px so they overlap */
+ margin-right:-1px !important;
+ z-index:10;
+}
+
+.dijitTabLabels-right-h {
+/* position the tab labels right by 1 px, on top of the dijitTabPaneWrapper
+ so the buttons can overlay the tab pane properly */
+ margin-left:-1px !important;
+ z-index:10;
+}
+
+.dijitTabPaneWrapper {
+ z-index:0;
+ overflow: hidden;
+ clear: both; /* needed for doLayout=false mode */
+}
+
+.dijitTab {
+ position:relative;
+ float:left;
+ cursor:pointer;
+ white-space:nowrap;
+ z-index:3;
+}
+
+.dijitTabContainer .dijitAlignLeft .dijitTab,
+.dijitTabContainer .dijitAlignRight .dijitTab {
+ float:none;
+}
+
+.dijitTabInnerDiv {
+ position:relative;
+}
+
+.dijitTab .close {
+ display: inline-block;
+ cursor: default;
+ font-size: small;
+}
+
+/* images off, high-contrast mode styles */
+.dijitTab .closeText {
+ display:none;
+ padding: 0 2px;
+ margin: 0 2px;
+}
+.dijit_a11y .dijitTab .closeImage {
+ padding: 0 !important;
+ margin: 0 !important;
+ top: 0 !important;
+ bottom: 0 !important;
+}
+.dijit_a11y .closeText {
+ display:inline;
+ margin-left:6px;
+}
+.dijit_a11y .closeText:hover {
+ border:thin solid;
+}
+.dijit_a11y .dijitTabChecked {
+ border-style:dashed !important;
+}
+
+.dijit_a11y .dijitTabInnerDiv {
+ border-left:none !important;
+ }
+
+
+.dijitInlineEditor {
+ /* span around an inline-editable value when in edit mode */
+ position:relative;
+ vertical-align:bottom;
+}
+.dj_ie .dijitInlineEditor {
+ vertical-align:middle;
+}
+
+.dijitInlineValue {
+ /* span around an inline-editable value when NOT in edit mode */
+}
+
+.dijitInlineEditor .dijitButtonContainer {
+ /* div around the buttons -- makes them float below the field */
+ position:absolute;
+ right:0;
+ overflow:visible;
+}
+
+.dijitInlineEditor .saveButton,
+.dijitInlineEditor .cancelButton {
+}
+
+/* Tree */
+
+.dijitTreeExpando, .dijitTreeExpand {
+ float:left;
+ display:inline;
+}
+
+.dijitTreeExpando {
+ clear:both;
+}
+
+.dijitTreeContent {
+ cursor: default;
+ /* can't make inline - multiline bugs */
+}
+
+.dijitExpandoText {
+ display: none;
+}
+
+.dijit_a11y .dijitExpandoText {
+ float: left;
+ display: inline;
+ padding-left: 10px;
+ padding-right: 10px;
+ font-family: monospace;
+ border-style: solid;
+ border-width: thin;
+ cursor: pointer;
+}
+
+/* Dialog */
+
+.dijitDialog {
+ position: absolute;
+ z-index: 999;
+ padding: 1px;
+}
+
+.dijitDialogUnderlayWrapper {
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 998;
+ display: none;
+ background: transparent;
+}
+
+.dijitDialogUnderlay {
+ background: #eee;
+ opacity: 0.5;
+}
+
+.dj_ie .dijitDialogUnderlay {
+ filter: alpha(opacity=50);
+}
+
+/* images off, high-contrast mode styles */
+.dijit_a11y .dijitInputLayoutContainer,
+.dijit_a11y .dijitDialog {
+ opacity: 1 !important;
+ background-color: white !important;
+}
+
+.dijitDialog .closeText {
+ display:none;
+ /* for the onhover border in high contrast on IE: */
+ position:absolute;
+}
+
+.dijit_a11y .dijitDialog .closeText {
+ display:inline;
+}
+
+.dijitSliderMoveable {
+ z-index:99;
+ position:absolute !important;
+ display:block;
+ vertical-align:middle;
+}
+
+.dijitSliderMoveableH {
+ right:0;
+}
+
+.dijit_a11y div.dijitSliderImageHandle,
+.dijitSliderImageHandle {
+ margin:0;
+ padding:0;
+ position:absolute !important;
+ border:8px solid gray;
+ width:0;
+ height:0;
+}
+.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
+ border:4px solid #000;
+ height:8px;
+ width:8px;
+}
+
+.dijitSliderImageHandleV {
+ top:-8px;
+ left:-6px;
+}
+
+.dijitSliderImageHandleH {
+ left:-8px;
+ top:-5px;
+ vertical-align:top;
+}
+
+.dijitSliderBar {
+ border-style:solid;
+ border-color:black;
+}
+
+.dijitSliderBarH {
+ height:4px;
+ border-width:1px 0;
+}
+
+.dijitSliderBarV {
+ width:4px;
+ border-width:0 1px;
+}
+
+.dijitSliderProgressBar {
+ background-color:red;
+ #z-index:0;
+}
+
+.dijitSliderProgressBarV {
+ position:static !important;
+ height:0%;
+ vertical-align:top;
+ text-align:left;
+}
+
+.dijitSliderProgressBarH {
+ position:absolute !important;
+ width:0%;
+ vertical-align:middle;
+ overflow:visible;
+}
+
+.dijitSliderRemainingBar {
+ overflow:hidden;
+ background-color:transparent;
+ #z-index:-1;
+}
+
+.dijitSliderRemainingBarV {
+ height:100%;
+ text-align:left;
+}
+
+.dijitSliderRemainingBarH {
+ width:100% !important;
+}
+
+/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */
+.dijitSliderBumper {
+ overflow:hidden;
+ #z-index:-1
+}
+
+.dijitSliderBumperV {
+ width:4px;
+ height:8px;
+ border-width:0 1px;
+}
+
+.dijitSliderBumperH {
+ width:8px;
+ height:4px;
+ border-width:1px 0;
+}
+
+.dijitSliderBottomBumper,
+.dijitSliderLeftBumper {
+ background-color:red;
+}
+
+.dijitSliderTopBumper,
+.dijitSliderRightBumper {
+ background-color:transparent;
+}
+
+.dijitSliderDecorationH {
+ text-align:center;
+}
+
+.dijitSlider .dijitSliderButton {
+ font-family:monospace;
+ margin:0;
+ padding:0;
+ display:block;
+}
+
+.dijit_a11y .dijitSliderButtonInner {
+ visibility:visible !important;
+}
+
+.dijitSliderButtonContainer {
+ text-align:center;
+ height:0;
+}
+
+.dijitSlider .dijitButtonNode {
+ padding:0;
+ display:block;
+}
+
+.dj_ie .dijitRuleContainer {
+ z-index: -1; /* #4809 */
+}
+
+.dijitRuleContainer {
+ position:relative;
+ overflow:visible;
+}
+
+.dijitRuleContainerV {
+ height:100%;
+ line-height:0;
+ float:left;
+ text-align:left;
+}
+
+.dj_opera .dijitRuleContainerV {
+ line-height:2%;
+}
+
+.dj_ie .dijitRuleContainerV {
+ line-height:normal;
+}
+
+.dj_gecko .dijitRuleContainerV {
+ margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */
+}
+
+.dijitRuleMark {
+ position:absolute;
+ border:1px solid black;
+ line-height:0;
+ height:100%;
+}
+
+.dijitRuleMarkH {
+ width:0;
+ border-top-width:0 !important;
+ border-bottom-width:0 !important;
+ border-left-width:0 !important;
+}
+
+.dijitRuleLabelContainer {
+ position:absolute;
+}
+
+.dijitRuleLabelContainerH {
+ text-align:center;
+ display:inline-block;
+}
+
+.dijitRuleLabelH {
+ position:relative;
+ left:-50%;
+}
+
+.dijitRuleMarkV {
+ height:0;
+ border-right-width:0 !important;
+ border-bottom-width:0 !important;
+ border-left-width:0 !important;
+ width:100%;
+ left:0;
+}
+
+.dj_ie .dijitRuleLabelContainerV {
+ margin-top:-.55em;
+}
+
+/* Toolbar A11y */
+.dijit_a11y .dijitButtonContents .dijitButtonText {
+ display: inline !important;
+}
+
+.dijitTextArea {
+ width:100%;
+ overflow: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */
+}
+
+.dj_ie .dijitTextArea p {
+ margin-top:0;
+ margin-bottom:0;
+ line-height: normal !important;
+}
+
+.dijitToolbarSeparator {
+ height: 18px;
+ width: 5px;
+ padding: 0 1px;
+ margin: 0;
+}
+
+/* Editor */
+.dijitIEFixedToolbar {
+ position:absolute;
+ /* top:0; */
+ top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+
+/* TimePicker */
+
+.dijitTimePickerItemInner {
+ text-align:center;
+ border:0;
+ padding:2px 8px 2px 8px;
+}
+.dijitTimePickerTick {
+ /* opacity:0.1 !important; */
+ color:#dedede;
+ border-bottom:1px solid #dedede;
+ border-top:1px solid #dedede;
+ position:relative;
+}
+.dijitTimePickerTick .dijitTimePickerItemInner {
+ font-size:0.25em;
+}
+.dijitTimePickerMarker {
+ background-color:#ededed;
+ border-top:1px solid #999;
+ border-bottom:1px solid #999;
+}
+
+.dijitTimePickerItemHover {
+ opacity:1 !important;
+ background-color:#808080;
+ color:#fff;
+ border-top:1px solid #333;
+ border-bottom:1px solid #333;
+ cursor:pointer;
+}
+.dijitTimePickerMarker.dijitTimePickerItemHover {
+ font-size:1.3em;
+}
+
+.dijitTimePickerItemHover .dijitTimePickerItemInner {
+ display:block;
+ overflow:visible;
+ background-color:#808080;
+ font-size:1em;
+}
+
+.dijitTimePickerItemSelected {
+ font-weight:bold;
+ color:#333;
+ background-color:#b7cdee !important;
+}
+
+.dijit_a11y .dijitTimePickerItem {
+ border-bottom:1px solid #333;
+}
+
+
+/* Disable the high contrast character */
+.dijitToggleButtonIconChar {
+ display:none !important;
+}
+.dijit_a11y .dijitToggleButtonIconChar {
+ display:inline !important;
+}
+
+.dijit_a11y .dijitToggleButtonIconChar {
+ visibility:hidden;
+}
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+ visibility:visible !important;
+}
+
+.dijitArrowButtonChar {
+ display:none !important;
+}
+.dijit_a11y .dijitArrowButtonChar {
+ display:inline !important;
+}
+.dijitInputLayoutContainer {
+ position: relative;
+ overflow: hidden;
+}
+.dijitSpinnerButtonContainer {
+ float: right;
+ width: 18px;
+ position: relative;
+ overflow: hidden;
+}
+.dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
+ height: 50%;
+ width: 16px;
+ overflow: hidden;
+}
+.dj_ie .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
+ behavior: expression(
+ function(self){
+ var e;
+ try{
+ var h = self.parentNode.offsetHeight/2;
+ if(h > 1){
+ self.style.height = h;
+ self.style.behavior = null; /* prevent re-eval of css expression */
+ }
+ }catch(e){} /* random exceptions thrown during init */
+ }(this)
+ );
+}
+.dijitSpinner .dijitInputLayoutContainer .dijitArrowButtonInner {
+ overflow: hidden;
+ line-height: 50%;
+}
+.dijit_a11y .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
+ width: 100%;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButton .dijitArrowButtonChar {
+ font-size: 0.4em;
+ vertical-align: top;
+}
+.dijit_a11y .dijitSpinnerButtonContainer {
+ width: 0.5em;
+ margin-left: 2px;
+ overflow: visible;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/dijit_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/dijit_rtl.css
new file mode 100644
index 00000000..2016849e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/dijit_rtl.css
@@ -0,0 +1,194 @@
+.dj_gecko .dijitRtl .dijitInputField {
+ direction: ltr; /* Firefox needs this - probably a bug */
+}
+.dj_gecko .dijitRtl .dijitInputField * {
+ direction: rtl; /* Firefox needs dijitInputField to be ltr, so fix the contained tags */
+}
+
+/* Tree */
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpando, .dijitRtl .dijitTreeContainer .dijitTreeExpand {
+ float:right;
+}
+
+/* can't specify .dijitRtl and .dijit_a11y on this rule, since they are on the same node */
+.dijitRtl .dijitExpandoText {
+ float: right;
+ padding-left: 3px;
+ padding-right: 0;
+}
+
+.dijitRtl .dijitComboBox .dijitInputField {
+ border-right-width:1px !important;
+ border-left-width:0 !important;
+}
+
+/* Calendar */
+
+.dijitRtl .dijitCalendarNextYear {
+ margin:0 0.55em 0 0;
+}
+
+.dijitRtl .dijitCalendarPreviousYear {
+ margin:0 0 0 0.55em;
+}
+
+.dijitRtl .dijitProgressBarFull .dijitProgressBarLabel {
+ right:0; /* FF workaround */
+}
+
+/* Button */
+
+.dijitRtl .dijitComboButton .dijitButtonContents {
+ border-right-width:1px !important;
+}
+
+/* A11y */
+.dijitRtl .dijitA11ySideArrow {
+ margin-left:1em;
+ margin-right:0;
+}
+
+/* AccordionPane */
+
+.dijitRtl .dijitAccordionArrow,
+.dijitRtl .dijitAccordionTitle .arrowTextUp,
+.dijitRtl .dijitAccordionTitle .arrowTextDown {
+ float: left;
+}
+
+/* Slider */
+
+.dijitRtl .dijitSliderImageHandleV {
+ left:auto;
+ right:-6px;
+}
+
+.dj_ie .dijitRtl .dijitSliderImageHandleV {
+ right:-10px;
+}
+
+.dijitRtl .dijitSliderMoveableH {
+ right:auto;
+ left:0;
+}
+
+.dijitRtl .dijitRuleContainerV {
+ float:right;
+}
+
+.dj_gecko .dijitRtl .dijitRuleContainerV {
+ float:left;
+}
+
+.dj_ie .dijitRtl .dijitRuleContainerV {
+ text-align:right;
+}
+
+.dj_ie .dijitRtl .dijitRuleLabelV {
+ text-align:left;
+}
+
+.dj_ie .dijitRtl .dijitRuleLabelH {
+ zoom:1;
+}
+
+.dj_ie .dijitRtl .dijitSliderProgressBarH {
+ right:0;
+ left:auto;
+}
+
+.dj_gecko .dijitRtl .dijitSliderProgressBarH {
+ float:right;
+ right:0;
+ left:auto;
+}
+
+/* TabContainer */
+
+.dijitRtl .dijitTab {
+ float:right;
+}
+
+.dj_ie .dijitRtl .dijitTab,
+.dj_ie .dijitRtl .dijitTab .dijitTabInnerDiv,
+.dj_ie .dijitRtl .dijitTab .dijitTabInnerDiv span {
+ position:static;
+ zoom:1;
+}
+
+.dj_ie .dijitRtl .dijitTabContainer .dijitAlignLeft {
+ margin-left:1px !important;
+}
+
+.dj_ie .dijitRtl .dijitTabContainer .dijitAlignRight {
+ margin-right:1px !important;
+}
+
+.dj_ie6 .dijitRtl .dijitTab {
+ /* force ie6 to render each tab based on the tab's label */
+ width:1px;
+}
+
+.dj_ie7 .dijitRtl .dijitTabContainer .dijitAlignLeft {
+ /* fix the offset between tabs and the pane */
+ margin-left:1px !important;
+}
+
+.dj_ie7 .dijitRtl .dijitTabContainer .dijitAlignRight {
+ /* fix the offset between tabs and the pane */
+ margin-right:1px !important;
+}
+
+.dj_ie6 .dijitRtl .dijitTabContainer .dijitAlignLeft {
+ overflow-x:visible;
+ margin-left:2px !important;
+}
+
+.dj_ie6 .dijitRtl .dijitTabContainer .dijitAlignRight {
+ overflow-x:visible;
+ margin-right:2px !important;
+}
+
+.dj_ie7 .dijitRtl .dijitTab .dijitTabInnerDiv {
+ float:left;
+}
+
+.dj_ie7 .dijitRtl .dijitTab .closeImage {
+ padding: 0 0 0 12px;
+}
+
+.dj_ie .dijitRtl .dijitAlignRight .dijitTab {
+ position:relative;
+}
+
+/* TitlePane */
+
+.dijitRtl .dijitTitlePane .dijitArrowNode {
+ float: left;
+}
+
+.dijitRtl .dijitSpinner .dijitInputLayoutContainer .dijitArrowButton {
+ right: auto;
+ left: 0;
+ border-width: 0 1px 0 0 !important;
+}
+
+.dijitRtl .dijitSpinnerButtonContainer {
+ float: left;
+}
+
+.dijitRtl .dijit_a11y .dijitSpinnerButtonContainer {
+ margin-left: none;
+ margin-right: 2px;
+}
+
+.dijitRtl DIV.dijitArrowButton, .dijitRtl .dijitValidationIcon, .dijitRtl .dijitValidationIconText {
+ float: left;
+}
+
+/* ContentPane*/
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+ background-position:right;
+ padding-right:25px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar.css
new file mode 100644
index 00000000..76017eae
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar.css
@@ -0,0 +1,159 @@
+/* Calendar*/
+
+.nihilo .dijitCalendarIncrementControl {
+ /* next/prev month buttons */
+ width:15px;
+ height:15px;
+ font-size: 1px;
+}
+.dj_ie6 .nihilo .dijitCalendarIncrementControl {
+ padding:.1em;
+}
+
+.nihilo .dijitCalendarIncreaseInner,
+.nihilo .dijitCalendarDecreaseInner {
+ visibility:hidden;
+}
+
+.nihilo .dijitCalendarDecrease {
+ background:url("images/spriteRoundedIconsSmall.png") no-repeat top left;
+}
+.dj_ie6 .nihilo .dijitCalendarDecrease {
+ background:url("images/spriteRoundedIconsSmall.gif") no-repeat top left;
+}
+
+.nihilo .dijitCalendarIncrease {
+ background:url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+}
+.dj_ie6 .nihilo .dijitCalendarIncrease {
+ background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;
+}
+
+.nihilo table.dijitCalendarContainer {
+ font-size: 100%;
+ border-spacing: 0;
+ border-collapse: separate;
+ border: 1px solid #ccc;
+ margin: 0;
+}
+
+.nihilo .dijitCalendarMonthContainer th {
+ /* month header cell */
+ background:#d3d3d3 url("images/titleBar.png") repeat-x top;
+ padding-top:.3em;
+ padding-bottom:.2em;
+ text-align:center;
+}
+.dj_ie6 .nihilo .dijitCalendarMonthContainer th {
+ padding-top:.1em;
+ padding-bottom:0em;
+}
+
+.nihilo .dijitCalendarDayLabelTemplate {
+ /* day of week labels */
+ background:#fefefe;
+ font-weight:normal;
+ padding-top:.15em;
+ padding-bottom:.2em;
+ border-bottom: 1px solid #eeeeee;
+ color:#293a4b;
+ text-align:center;
+}
+
+.nihilo .dijitCalendarBodyContainer {
+ border-bottom: 1px solid #eeeeee;
+}
+
+.nihilo .dijitCalendarMonthLabel {
+ color:#293a4b;
+ font-weight: bold;
+}
+
+.dj_ie7 .nihilo .dijitCalendarDateTemplate,
+.dj_ie6 .nihilo .dijitCalendarDateTemplate {
+ font-size: 0.8em;
+}
+
+.nihilo .dijitCalendarDateTemplate {
+ /* style for each day cell */
+ font-size: 0.9em;
+ font-weight: bold;
+ text-align: center;
+ padding: 0.3em 0.3em 0.1em 0.3em;
+ letter-spacing: 1px;
+ background-color: #fdfdfd;
+ border:#fdfdfd solid 1px !important;
+}
+
+
+.nihilo .dijitCalendarPreviousMonth,
+.nihilo .dijitCalendarNextMonth {
+ /* days that are part of the previous or next month */
+ color:#999999;
+ background-color:#f5f5f5 !important;
+ border:#f5f5f5 solid 1px !important;
+}
+
+.nihilo .dijitCalendarPreviousMonthDisabled,
+.nihilo .dijitCalendarNextMonthDisabled {
+ /* days that are part of the previous or next month - disabled*/
+ background-color:#a4a5a6 !important;
+}
+
+.nihilo .dijitCalendarCurrentMonth {
+ /* days that are part of this month */
+}
+
+.nihilo .dijitCalendarCurrentMonthDisabled {
+ /* days that are part of this month - disabled */
+ background-color:#bbbbbc !important;
+}
+
+.nihilo .dijitCalendarDisabledDate {
+ /* one or the other? */
+ /* background: url(images/noX.gif) no-repeat center center !important; */
+ text-decoration:line-through !important;
+ cursor:default !important;
+}
+
+.nihilo .dijitCalendarCurrentDate {
+ /* cell for today's date */
+ text-decoration:underline;
+ font-weight:bold;
+}
+
+.nihilo .dijitCalendarSelectedDate {
+ /* cell for the selected date */
+ background-color:#ffe284 !important;
+ color:black !important;
+ border:#f7c95c solid 1px !important;
+}
+
+
+.nihilo .dijitCalendarYearContainer {
+ /* footer of the table that contains the year display/selector */
+ background:white url("images/titleBar.png") repeat-x top;
+}
+
+.nihilo .dijitCalendarYearLabel {
+ /* container for all of 3 year labels */
+ margin:0;
+ padding:0.4em 0 0.25em 0;
+ text-align:center;
+}
+
+.nihilo .dijitCalendarSelectedYear {
+ /* label for selected year */
+ color:black;
+ padding:0.2em;
+ padding-bottom:0.1em;
+ background-color:#ffe284 !important;
+ border:#f7c95c solid 1px !important;
+}
+
+.nihilo .dijitCalendarNextYear,
+.nihilo .dijitCalendarPreviousYear {
+ /* label for next/prev years */
+ color:black !important;
+ font-weight:normal;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar_rtl.css
new file mode 100644
index 00000000..c72d43b5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Calendar_rtl.css
@@ -0,0 +1,16 @@
+
+/* Calendar */
+
+.dijitRtl .dijitCalendarDecrease {
+ background-position: -30px top;
+}
+
+.dijitRtl .dijitCalendarIncrease {
+ background-position: 0px top;
+}
+.dj_ie6 .dijitRtl .dijitCalendarIncrease {
+ background-position: 0px top;
+}
+.dj_ie6 .dijitRtl .dijitCalendarDecrease {
+ background-position: -30px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ColorPalette.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ColorPalette.css
new file mode 100644
index 00000000..59a4689f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ColorPalette.css
@@ -0,0 +1,5 @@
+.dijitColorPalette {
+ border:1px solid #d3d3d3;
+ background:#fff;
+ -moz-border-radius: 0px !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Common.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Common.css
new file mode 100644
index 00000000..10449205
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Common.css
@@ -0,0 +1,37 @@
+
+/**** Disabled cursor *****/
+.nihilo .dijitSliderDisabled *,
+.nihilo .dijitDisabledClickableRegion, /* a region the user would be able to click on, but it's disabled */
+.nihilo .dijitSpinnerDisabled *,
+.nihilo .dijitButtonDisabled *,
+.nihilo .dijitDropDownButtonDisabled *,
+.nihilo .dijitComboButtonDisabled *,
+.nihilo .dijitComboBoxDisabled *
+{
+ cursor: not-allowed !important;
+}
+
+
+/* DnD avatar-specific settings */
+/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
+.nihilo .dojoDndItemBefore {
+ border-top: 2px solid #369;
+}
+
+.nihilo .dojoDndItemAfter {
+ border-bottom: 2px solid #369;
+}
+
+.nihilo .dojoDndItemOver {
+ cursor:pointer;
+}
+
+.nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.nihilo .dojoDndAvatar td { border: none; }
+.nihilo .dojoDndAvatar tr { border: none; }
+.nihilo .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
+.nihilo .dojoDndAvatarItem td { padding: 2px;}
+.nihilo.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog.css
new file mode 100644
index 00000000..91b1c235
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog.css
@@ -0,0 +1,175 @@
+
+/* Dialog */
+
+.nihilo .dijitDialog {
+ background: #eee;
+ border: 1px solid #d3d3d3;
+ -webkit-box-shadow: 0px 5px 10px #adadad;
+ padding: 0px;
+}
+
+.nihilo .dijitDialog .dijitDialogTitle {
+ border-top: none;
+ border-left: none;
+ border-right: none;
+ font-size: 0.9em;
+ color: #3243C5F;
+}
+
+.nihilo .dijitDialog .dijitDialogPaneContent {
+ background: #ffffff;
+ border:none;
+ border-top: 1px solid #d3d3d3; /* #cddde9; /* w/out this, an on the top line causes a gap between the .content and .label */
+ padding:10px;
+
+}
+
+.nihilo .dijitDialogTitleBar {
+ /* outer container for the titlebar of the dialog */
+ background: #fafafa url("images/titleBar.png") repeat-x top left;
+ /* border: 1px solid #bfbfbf; */
+ padding: 5px 6px 3px 2px;
+ cursor: move;
+ outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
+}
+
+.nihilo .dijitDialogTitle {
+ /* typography and styling of the dialog title */
+ font-weight: bold;
+ padding: 8px 12px 8px 12px;
+ outline:0;
+}
+
+.nihilo .dijitDialogCloseIcon {
+ /* the default close icon for the dialog */
+ background : url("images/spriteRoundedIconsSmall.png") no-repeat right top;
+ float: right;
+ position: absolute;
+ vertical-align: middle;
+ right: 6px;
+ top: 4px;
+ height: 15px;
+ width: 15px;
+ cursor: pointer;
+}
+.dj_ie6 .nihilo .dijitDialogCloseIcon {
+ background : url("images/spriteRoundedIconsSmall.gif") no-repeat right top;
+}
+
+.nihilo .dijitDialogContent {
+ /* the body of the dialog */
+ padding: 8px;
+}
+
+
+/* Tooltip and TooltipDialog */
+
+.nihilo .dijitTooltip,
+.nihilo .dijitTooltipDialog {
+ /* the outermost dom node, holding the connector and container */
+ opacity: 0.95;
+ background: transparent; /* make the area on the sides of the arrow transparent */
+}
+
+.dijitTooltipBelow {
+ /* leave room for arrow above content */
+ padding-top: 10px;
+}
+
+.dijitTooltipAbove {
+ /* leave room for arrow below content */
+ padding-bottom: 10px;
+}
+
+.nihilo .dijitTooltipContainer {
+ /*
+ The part with the text.
+
+ NOTE:
+ FF doesn't clip images used as CSS bgs if you specify a border
+ radius. If you use a solid color, it does. Webkit gets it right.
+ Sigh.
+ background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
+ */
+ background-color: #fff;
+ border:1px solid #d3d3d3;
+ padding:0.45em;
+ /*
+ border-radius: 6px;
+ -moz-border-radius: 7px;
+ -webkit-border-radius: 6px;
+ */
+}
+
+.nihilo .dijitTooltipConnector {
+ /* the arrow piece */
+ border:0px;
+ z-index: 2;
+}
+
+.nihilo .dijitTooltipABRight .dijitTooltipConnector {
+ /* above or below tooltip, but the arrow appears on the right,
+ and the right edges of target and tooltip are aligned rather than the left */
+ left: auto !important;
+ right: 6px;
+}
+
+.nihilo .dijitTooltipBelow .dijitTooltipConnector {
+ /* the arrow piece for tooltips below an element */
+ top: 0px;
+ left: 6px;
+ background:url("images/tooltipConnectorUp.png") no-repeat top left;
+ width:17px;
+ height:11px;
+}
+
+.dj_ie6 .nihilo .dijitTooltipBelow .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorUp.gif");
+}
+
+.nihilo .dijitTooltipAbove .dijitTooltipConnector {
+ /* the arrow piece for tooltips above an element */
+ bottom: 0px;
+ left: 6px;
+ background:url("images/tooltipConnectorDown.png") no-repeat top left;
+ width:17px;
+ height:11px;
+}
+.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorDown.gif");
+ bottom: -5px;
+}
+
+.nihilo .dijitTooltipLeft {
+ padding-right: 10px;
+}
+.dj_ie6 .nihilo .dijitTooltipLeft {
+ padding-left: 11px;
+}
+.nihilo .dijitTooltipLeft .dijitTooltipConnector {
+ /* the arrow piece for tooltips to the left of an element, bottom borders aligned */
+ right: 0px;
+ bottom: 7px;
+ background:url("images/tooltipConnectorRight.png") no-repeat top left;
+ width:11px;
+ height:17px;
+}
+.dj_ie6 .nihilo .dijitTooltipLeft .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorRight.gif");
+}
+
+.nihilo .dijitTooltipRight {
+ padding-left: 10px;
+}
+.nihilo .dijitTooltipRight .dijitTooltipConnector {
+ /* the arrow piece for tooltips to the right of an element, bottom borders aligned */
+ left: 0px;
+ bottom: 7px;
+ background:url("images/tooltipConnectorLeft.png") no-repeat top left;
+ width:11px;
+ height:17px;
+}
+.dj_ie6 .nihilo .dijitTooltipRight .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorLeft.gif");
+}
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog_rtl.css
new file mode 100644
index 00000000..ea85d497
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Dialog_rtl.css
@@ -0,0 +1,29 @@
+/* Dialog */
+.dijitRtl .dijitDialogTitleBar .dijitDialogCloseIcon {
+ background-position: -60px top;
+ float: left;
+ right: auto;
+ left: 5px;
+}
+
+/*FIXME: redundant?*/
+.dj_ie6 .dijitRtl .dijitDialogTitleBar .dijitDialogCloseIcon {
+ background-position: -60px top;
+}
+
+
+/* ToolTip */
+
+.dj_ie .dijitRtl .dijitTooltipLeft {
+ margin-right: 0px;
+ margin-left: 13px;
+}
+
+.dj_ie .dijitRtl .dijitTooltipRight {
+ margin-left: 26px;
+ margin-right: -13px;
+}
+
+.dj_ie .dijitRtl .dijitTooltipDialog {
+ zoom:1 !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor.css
new file mode 100644
index 00000000..a2113a50
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor.css
@@ -0,0 +1,60 @@
+.dijitIEFixedToolbar {
+ position:absolute;
+ /* top:0; */
+ top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+
+.nihilo .dijitToolbar .dijitToolbarSeparator {
+ background: url('images/editor.gif');
+}
+
+/**** ICONS *****/
+
+.nihilo .dijitEditorIcon {
+ background-image: url('images/editor.gif'); /* editor icons sprite image */
+ background-repeat: no-repeat;
+ width: 18px;
+ height: 18px;
+ text-align: center;
+}
+.nihilo .dijitEditorIconSep { background-position: 0px; }
+.nihilo .dijitEditorIconBackColor { background-position: -18px; }
+.nihilo .dijitEditorIconBold { background-position: -36px; }
+.nihilo .dijitEditorIconCancel { background-position: -54px; }
+.nihilo .dijitEditorIconCopy { background-position: -72px; }
+.nihilo .dijitEditorIconCreateLink { background-position: -90px; }
+.nihilo .dijitEditorIconCut { background-position: -108px; }
+.nihilo .dijitEditorIconDelete { background-position: -126px; }
+.nihilo .dijitEditorIconForeColor { background-position: -144px; }
+.nihilo .dijitEditorIconHiliteColor { background-position: -162px; }
+.nihilo .dijitEditorIconIndent { background-position: -180px; }
+.nihilo .dijitEditorIconInsertHorizontalRule { background-position: -198px; }
+.nihilo .dijitEditorIconInsertImage { background-position: -216px; }
+.nihilo .dijitEditorIconInsertOrderedList { background-position: -234px; }
+.nihilo .dijitEditorIconInsertTable { background-position: -252px; }
+.nihilo .dijitEditorIconInsertUnorderedList { background-position: -270px; }
+.nihilo .dijitEditorIconItalic { background-position: -288px; }
+.nihilo .dijitEditorIconJustifyCenter { background-position: -306px; }
+.nihilo .dijitEditorIconJustifyFull { background-position: -324px; }
+.nihilo .dijitEditorIconJustifyLeft { background-position: -342px; }
+.nihilo .dijitEditorIconJustifyRight { background-position: -360px; }
+.nihilo .dijitEditorIconLeftToRight { background-position: -378px; }
+.nihilo .dijitEditorIconListBulletIndent { background-position: -396px; }
+.nihilo .dijitEditorIconListBulletOutdent { background-position: -414px; }
+.nihilo .dijitEditorIconListNumIndent { background-position: -432px; }
+.nihilo .dijitEditorIconListNumOutdent { background-position: -450px; }
+.nihilo .dijitEditorIconOutdent { background-position: -468px; }
+.nihilo .dijitEditorIconPaste { background-position: -486px; }
+.nihilo .dijitEditorIconRedo { background-position: -504px; }
+.nihilo .dijitEditorIconRemoveFormat { background-position: -522px; }
+.nihilo .dijitEditorIconRightToLeft { background-position: -540px; }
+.nihilo .dijitEditorIconSave { background-position: -558px; }
+.nihilo .dijitEditorIconSpace { background-position: -576px; }
+.nihilo .dijitEditorIconStrikethrough { background-position: -594px; }
+.nihilo .dijitEditorIconSubscript { background-position: -612px; }
+.nihilo .dijitEditorIconSuperscript { background-position: -630px; }
+.nihilo .dijitEditorIconUnderline { background-position: -648px; }
+.nihilo .dijitEditorIconUndo { background-position: -666px; }
+.nihilo .dijitEditorIconWikiword { background-position: -684px; }
+.nihilo .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555;
+ font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor_rtl.css
new file mode 100644
index 00000000..e834b525
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Editor_rtl.css
@@ -0,0 +1,11 @@
+/* Editor */
+.dijitRtl .dijitEditorIcon {
+ background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */
+}
+
+
+/* Toolbar */
+
+.dijitRtl .dijitToolbar .dijitToolbarSeparator {
+ background-image: url('images/editor_rtl.gif');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu.css
new file mode 100644
index 00000000..5709ea5c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu.css
@@ -0,0 +1,63 @@
+
+/* Menu */
+.nihilo .dijitMenu {
+ border: 1px solid #d3d3d3;
+ margin: 0px;
+ padding: 0px;
+ background-color: #fff;
+}
+
+.nihilo .dijitMenuItem {
+ background-color: #fff;
+ font: menu;
+ margin: 0px;
+ color: #243C5F;
+}
+.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {
+ font-style: italic;
+}
+.nihilo .dijitMenuItem TD {
+ padding:1px;
+}
+
+.nihilo .dijitMenuItemHover {
+ background-color: #ffe284; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */
+ color: #243C5F;
+}
+
+.nihilo .dijitMenuItemIcon {
+ width: 15px;
+ height: 15px;
+ /* padding-right: 3px; */
+}
+
+.nihilo .dijitMenuExpand {
+ display:none;
+}
+.nihilo .dijitMenuExpandEnabled {
+ /* margin-top:4px; */
+ width:15px;
+ height:15px;
+ background:url('images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+ display:block;
+}
+.dj_ie6 .nihilo .dijitMenuExpandEnabled {
+ background-image:url('images/spriteRoundedIconsSmall.gif');
+}
+.nihilo .dijitMenuExpandInner {
+ display:none;
+}
+
+.nihilo .dijitMenuSeparator {
+ background-color: #fff;
+ height: 1px;
+}
+
+/* separator can be two pixels -- set border of either one to 0px to have only one */
+.nihilo .dijitMenuSeparatorTop {
+ border-bottom: 1px solid #fff; /*97adcb; */
+}
+
+.nihilo .dijitMenuSeparatorBottom {
+ border-top: 1px solid #d3d3d3;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu_rtl.css
new file mode 100644
index 00000000..ac66852f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Menu_rtl.css
@@ -0,0 +1,15 @@
+
+/* Menu */
+
+.dijitRtl .dijitMenuItem .dijitMenuItemIcon {
+ padding-left: 3px;
+ padding-right: 0px;
+}
+
+.dijitRtl .dijitMenuItem .dijitMenuExpandEnabled {
+ background-image:url('images/arrowLeft.png');
+}
+
+.dj_ie6 .dijitRtl .dijitMenuItem .dijitMenuExpandEnabled {
+ background-image:url('images/arrowLeft.gif');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ProgressBar.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ProgressBar.css
new file mode 100644
index 00000000..aaa49eaf
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/ProgressBar.css
@@ -0,0 +1,33 @@
+
+/****
+ dijit.ProgressBar
+ ****/
+
+.nihilo .dijitProgressBar {
+ margin:2px 0px 2px 0px;
+}
+
+.nihilo .dijitProgressBarEmpty{
+ /* outer container and background of the bar that's not finished yet*/
+ background:#fff url("images/progressBarEmpty.png") repeat-x center center;
+ border-color: #f8d582 #f8d582 #f8d582 #f8d582;
+}
+
+.nihilo .dijitProgressBarTile{
+ /* inner container for finished portion when in 'tile' (image) mode */
+ background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
+}
+
+.nihilo .dijitProgressBarFull {
+ border-right:1px solid #f8d582;
+}
+
+.nihilo .dijitProgressBarLabel {
+ /* Set to a color that contrasts with both the "Empty" and "Full" parts. */
+ color:#293a4b;
+}
+
+.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {
+ /* use an animated gif for the progress bar in 'indeterminate' mode */
+ background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane.css
new file mode 100644
index 00000000..9b191b92
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane.css
@@ -0,0 +1,77 @@
+/**
+ * dijit.layout.TitlePane
+ *
+ */
+
+.nihilo .dijitTitlePane .dijitTitlePaneTitle {
+ background: #cccccc;
+ background:#fff url("images/titleBar.png") repeat-x top left;
+ border:1px solid #bfbfbf;
+ padding:4px 4px 2px 4px;
+ cursor: pointer;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #6d6d6d;
+}
+
+/* TODO: merge these, and all other icons to a series of background-image:() and background-position: -16*n px styles */
+.nihilo .dijitTitlePane .dijitArrowNode {
+ width:15px;
+ height:15px;
+ float:right;
+ margin-top: -2px;
+}
+
+.nihilo .dijitTitlePaneFocused .dijitTitlePaneTextNode {
+ color: #243C5F;
+}
+
+
+.nihilo .dijitOpen .dijitTitlePaneTextNode {
+ color: #243C5F;
+}
+
+.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background: url('images/spriteRoundedIconsSmall.png') no-repeat top left;
+}
+.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background:url('images/spriteRoundedIconsSmall.gif') no-repeat top left;
+}
+.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
+ background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+}
+.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
+ background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
+}
+.nihilo .dijitTitlePane .dijitArrowNodeInner {
+ visibility:hidden;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+ visibility:visible;
+}
+
+.nihilo .dijitTitlePaneTitle .dijitOpenCloseArrowOuter {
+ margin-right:5px;
+}
+
+.nihilo .dijitOpen .dijitTitlePaneTitle .dijitOpenCloseArrowOuter {
+ position:relative;
+ top:2px;
+}
+
+.nihilo .dijitTitlePaneContentOuter {
+ background: #ffffff;
+ border:1px solid #bfbfbf;
+ border-top: 0px solid #3d3d3d; /* w/out this, an on the top line causes a gap between the .content and .label */
+}
+.nihilo .dijitTitlePaneContentInner {
+ padding:10px;
+}
+/* force hasLayout to ensure borders etc, show up */
+.dj_ie6 .nihilo .dijitTitlePaneContentOuter,
+.dj_ie6 .nihilo .dijitTitlePane .dijitTitlePaneTitle {
+ zoom: 1;
+}
+.nihilo .dijitClickableRegion {
+ background-color : #ffc !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane_rtl.css
new file mode 100644
index 00000000..52286bcd
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/TitlePane_rtl.css
@@ -0,0 +1,6 @@
+.dijitRtl .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background-position: -30px top;
+}
+.dj_ie6 .dijitRtl .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background-position: -30px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Toolbar.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Toolbar.css
new file mode 100644
index 00000000..1f932f21
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Toolbar.css
@@ -0,0 +1,95 @@
+.nihilo .dijitToolbar {
+ padding: 3px 0 1px 3px;
+ border-bottom: 1px solid #ccc;
+ background:#eaeaea url("images/titleBar.png") repeat-x top left;
+}
+
+.nihilo .dijitToolbar .dijitButtonNode {
+ background: none;
+ margin: 0px !important;
+ padding: 0px !important;
+ border: none;
+ font-size: 12px;
+}
+
+.nihilo .dijitToolbar .dijitButton,
+.nihilo .dijitToolbar .dijitToggleButton,
+.nihilo .dijitToolbar .dijitDropDownButton {
+ background: none;
+ margin: 1px;
+ padding: 0px;
+ border: 1px solid transparent;
+}
+
+.nihilo .dijitToolbar .dijitButtonChecked,
+.nihilo .dijitToolbar .dijitToggleButtonChecked {
+ background-color:#ffeeb9;
+ border:1px solid #f7c95c;
+ margin: 1px !important;
+ padding: 0px !important;
+}
+
+.nihilo .dijitToolbar .dijitButtonCheckedHover,
+.nihilo .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+ background-color:#ffe284;
+ border:1px solid #f7c95c;
+ margin: 1px !important;
+ padding: 0px !important;
+}
+
+.nihilo .dijitToolbar .dijitButtonHover,
+.nihilo .dijitToolbar .dijitToggleButtonHover,
+.nihilo .dijitToolbar .dijitDropDownButtonHover {
+ /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
+ border: 1px solid #f7c95c;
+ background-color:#ffe284;
+}
+
+.nihilo .dijitToolbar label {
+ padding: 3px 3px 0 6px;
+}
+
+.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused,
+.dj_ff2 .nihilo.dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ff2 .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+ border: 1px black dotted !important;
+}
+
+/* IE6 specific rules */
+.dj_ie6 .nihilo .dijitToolbar .dijitButton,
+.dj_ie6 .nihilo .dijitToolbar .dijitToggleButton,
+.dj_ie6 .nihilo .dijitToolbar .dijitDropDownButton {
+ /* workaround no transparent border support in IE6 */
+ margin: 2px;
+ padding: 0px 2px;
+ border: 0px;
+}
+
+.dj_ie6 .nihilo .dijitToolbar .dijitButtonChecked,
+.dj_ie6 .nihilo .dijitToolbar .dijitToggleButtonChecked,
+.dj_ie6 .nihilo .dijitToolbar .dijitDropDownButtonChecked {
+ background-color:#ffeeb9;
+ border:1px solid #f7c95c;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
+
+.dj_ie6 .nihilo .dijitToolbar .dijitButtonCheckedHover,
+.dj_ie6 .nihilo .dijitToolbar .dijitToggleButtonCheckedHover,
+.dj_ie6 .nihilo .dijitToolbar .dijitDropDownButtonCheckedHover {
+ background-color:#ffe284;
+ border:1px solid #f7c95c;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
+
+.dj_ie6 .nihilo .dijitToolbar .dijitButtonHover,
+.dj_ie6 .nihilo .dijitToolbar .dijitToggleButtonHover,
+.dj_ie6 .nihilo .dijitToolbar .dijitDropDownButtonHover {
+ background-color:#ffe284;
+ border:1px solid #f7c95c;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree.css
new file mode 100644
index 00000000..6437e92e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree.css
@@ -0,0 +1,90 @@
+
+/* Tree */
+
+.nihilo .dijitTreeNode {
+ background : url('images/treeI.gif') no-repeat;
+ background-position : top left;
+ background-repeat : repeat-y;
+ margin-left: 19px;
+ zoom: 1; /* MOW: what the heck is this doing in here? */
+}
+
+/* left vertical line (grid) for all nodes */
+.nihilo .dijitTreeIsLast {
+ background: url('images/treeI_half.gif') no-repeat;
+}
+
+.nihilo .dijitTreeLabel {
+ font-weight: normal;
+ margin-left: 3px;
+}
+
+.nihilo .dijitTreeIsRoot {
+ margin-left: 0;
+ background-image: none;
+}
+
+.nihilo .dijitTreeExpando {
+ width: 18px;
+ height: 18px;
+}
+
+.nihilo .dijitTreeContent {
+ min-height: 18px;
+ min-width: 18px;
+ margin-left:18px;
+ padding-top:3px;
+ padding-left:1px;
+}
+
+
+.nihilo .dijitTreeExpand {
+ width: 18px;
+ height: 18px;
+ background-repeat : no-repeat;
+}
+
+/* same style as IE selection */
+.nihilo .dijitTreeNodeEmphasized {
+ background-color: Highlight;
+ color: HighlightText;
+}
+
+/* don't use :focus due to opera and IE's lack of support on div's */
+.nihilo .dijitTreeLabelFocused {
+ outline: 1px invert dotted;
+ background:#dde7f2;
+}
+
+.nihilo .dijitTreeExpandoOpened {
+ background: url('images/spriteTree.gif') no-repeat -18px top;
+}
+
+.nihilo .dijitTreeExpandoClosed {
+ background-image: url('images/spriteTree.gif');
+}
+
+.nihilo .dijitTreeExpandoLeaf {
+ background: url('images/spriteTree.gif') no-repeat -36px top;
+}
+
+.nihilo .dijitTreeExpandoLoading {
+ background-image: url('images/treeExpand_loading.gif');
+}
+
+.nihilo .dijitTreeIcon {
+ width: 16px;
+ height: 16px;
+}
+
+.nihilo .dijitFolderOpened {
+ background: url('images/spriteDivIcons.gif') no-repeat -16px top;
+}
+
+.nihilo .dijitFolderClosed {
+ background: url('images/spriteDivIcons.gif') no-repeat top left;
+}
+
+.nihilo .dijitLeaf {
+ background: url('images/spriteDivIcons.gif') no-repeat -32px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree_rtl.css
new file mode 100644
index 00000000..a35d56d6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/Tree_rtl.css
@@ -0,0 +1,38 @@
+
+
+/* Tree */
+.dijitRtl .dijitTreeContainer .dijitTreeNode {
+ background-image : url('images/treeI_rtl.gif');
+ background-position : top right;
+ margin-left: auto;
+ margin-right: 19px;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeIsRoot {
+ margin-left: auto;
+ margin-right: 0;
+ background-image: none;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeIsLast {
+ background-image: url('images/treeI_half_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeContent {
+ margin-left: auto;
+ margin-right: 18px;
+ padding-left: auto;
+ padding-right: 1px;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoOpened {
+ background: url('images/spriteTree_rtl.gif') no-repeat -18px top;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoClosed {
+ background-image: url('images/spriteTree_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoLeaf {
+ background: url('images/spriteTree_rtl.gif') no-repeat -36px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button.css
new file mode 100644
index 00000000..880b89bc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button.css
@@ -0,0 +1,109 @@
+
+/*****
+ dijit.form.Button
+ dijit.form.DropDownButton
+ dijit.form.ComboButton
+ dijit.form.ComboBox (partial)
+ *****/
+
+.nihilo .dijitButtonNode {
+ /* enabled state - inner */
+ /* border:1px outset #a0a0a0; */
+ border:1px solid #dedede;
+ border-bottom:1px solid #dedede;
+ border-right:1px solid #dedede;
+ padding: 0.2em;
+ background:#fff url("../images/buttonEnabled.png") repeat-x top left;
+}
+.dj_ie .nihilo .dijitButtonNode {
+ zoom: 1;
+}
+
+.nihilo .dijitButtonText {
+ padding: 0 0.3em;
+}
+
+.nihilo .dijitComboBox .dijitButtonNode {
+ border-width: 0px 0px 0px 1px;
+}
+
+.nihilo .dijitArrowButton {
+ color: #111;
+}
+
+.nihilo .dijitComboButton .dijitDownArrowButton {
+ padding-right:4px;
+}
+
+.dj_ff2 .nihilo .dijitComboButton .dijitButtonContentsFocused,
+.dj_ff2 .nihilo .dijitComboButton .dijitDownArrowButtonFocused {
+ border: 1px black dotted !important;
+}
+
+.nihilo .dijitButtonDisabled .dijitButtonNode,
+.nihilo .dijitToggleButtonDisabled .dijitButtonNode,
+.nihilo .dijitDropDownButtonDisabled .dijitButtonNode,
+.nihilo .dijitComboButtonDisabled .dijitButtonNode,
+.nihilo .dijitComboBoxDisabled,
+.nihilo .dijitSpinnerDisabled,
+.nihilo .dijitSpinnerDisabled .dijitButtonNode {
+ /* disabled state - inner */
+ border-color: #dedede;
+ /*color:#b4b4b4;*/
+ background:#fafafa url("../images/buttonDisabled.png") top repeat-x;
+ opacity: 0.60; /* Safari, Opera and Mozilla */
+}
+.dj_ie .nihilo .dijitButtonDisabled .dijitButtonNode *,
+.dj_ie .nihilo .dijitToggleButtonDisabled .dijitButtonNode *,
+.dj_ie .nihilo .dijitDropDownButtonDisabled .dijitButtonNode *,
+.dj_ie .nihilo .dijitComboButtonDisabled .dijitButtonNode *,
+.dj_ie .nihilo .dijitSpinnerDisabled .dijitButtonNode * {
+ filter: gray() alpha(opacity=50); /* IE */
+}
+
+.nihilo .dijitButtonHover .dijitButtonNode,
+.nihilo .dijitToggleButtonHover .dijitButtonNode,
+.nihilo .dijitDropDownButtonHover .dijitButtonNode,
+.nihilo .dijitComboButtonHover .dijitButtonContents,
+.nihilo .dijitComboButtonDownArrowHover .dijitDownArrowButton,
+.nihilo .dijitComboBoxHover .dijitDownArrowButton,
+.nihilo .dijitSpinnerUpArrowHover .dijitUpArrowButton,
+.nihilo .dijitSpinnerDownArrowHover .dijitDownArrowButton {
+ /* hover state - inner */
+ /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */
+ color:#000;
+ background:#fcfcfc url("../images/buttonHover.png") repeat-x top left;
+}
+
+.nihilo .dijitSpinnerUpArrowActive .dijitUpArrowButton,
+.nihilo .dijitSpinnerDownArrowActive .dijitDownArrowButton,
+.nihilo .dijitButtonActive .dijitButtonNode,
+.nihilo .dijitToggleButtonActive .dijitButtonNode,
+.nihilo .dijitDropDownButtonActive .dijitButtonNode,
+.nihilo .dijitComboButtonActive .dijitButtonContents,
+.nihilo .dijitDownArrowActive .dijitDownArrowButton,
+.nihilo .dijitComboBoxActive .dijitDownArrowButton {
+ /* active state - inner (for when you are pressing a normal button, or
+ * when a toggle button is in a depressed state
+ */
+ border-color:#dedede;
+ background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x;
+}
+
+
+.nihilo .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.png") no-repeat left top;
+ width: 11px;
+}
+.nihilo .dijitUpArrowButton .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.png") no-repeat -22px top;
+ width: 11px;
+}
+.dj_ie6 .nihilo .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.gif") no-repeat left top;
+ width: 11px;
+}
+.dj_ie6 .nihilo .dijitUpArrowButton .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.gif") no-repeat -22px top;
+ width: 11px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button_rtl.css
new file mode 100644
index 00000000..a99cc721
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Button_rtl.css
@@ -0,0 +1,3 @@
+.dijitRtl .dijitComboBox .dijitButtonNode {
+ border-width: 0px 0px 0px 1px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Checkbox.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Checkbox.css
new file mode 100644
index 00000000..c77871bc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Checkbox.css
@@ -0,0 +1,69 @@
+
+/*
+ * CheckBox and Radio Widgets,
+ * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
+ *
+ * Order of images in the default sprite (from L to R, checkbox and radio in same image):
+ * checkbox normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+ *
+ * radio normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+*/
+
+.nihilo .dijitToggleButton .dijitCheckBox,
+.nihilo .dijitToggleButton .dijitCheckBoxIcon {
+ background-image: url('../images/spriteCheckbox.gif');
+}
+
+.nihilo .dijitCheckBox,
+.nihilo .dijitCheckBoxIcon { /* inside a toggle button */
+ background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 0;
+ padding: 0;
+}
+
+.nihilo .dijitCheckBox,
+.nihilo .dijitToggleButton .dijitCheckBoxIcon {
+ /* unchecked */
+ background-position: -16px;
+}
+
+.nihilo .dijitCheckBoxChecked,
+.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon {
+ /* checked */
+ background-position: 0px;
+}
+
+.nihilo .dijitCheckBoxDisabled {
+ /* disabled */
+ background-position: -48px;
+}
+
+.nihilo .dijitCheckBoxCheckedDisabled {
+ /* disabled but checked */
+ background-position: -32px;
+}
+
+.nihilo .dijitCheckBoxHover,
+.nihilo .dijitCheckBoxFocused {
+ /* hovering over an unchecked enabled checkbox */
+ background-position: -80px;
+}
+
+.nihilo .dijitCheckBoxCheckedHover,
+ .nihilo .dijitCheckBoxCheckedFocused {
+ /* hovering over a checked enabled checkbox */
+ background-position: -64px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/ComboBox.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/ComboBox.css
new file mode 100644
index 00000000..92e53758
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/ComboBox.css
@@ -0,0 +1,7 @@
+.nihilo .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.png") no-repeat left center;
+ width: 11px;
+}
+.nihilo .dijitComboBoxHover .dijitArrowButtonInner {
+ /* TODO: url("images/arrowDownHover.png") but in IE6 it flickers some? */
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common.css
new file mode 100644
index 00000000..39aa1a6e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common.css
@@ -0,0 +1,82 @@
+
+/****
+ dijit.form.TextBox
+ dijit.form.ValidationTextBox
+ dijit.form.SerializableTextBox
+ dijit.form.RangeBoundTextBox
+ dijit.form.NumberTextBox
+ dijit.form.CurrencyTextBox
+ dijit.form.NumberSpinner
+ dijit.form.ComboBox (partial)
+ ****/
+
+.nihilo .dijitInputField INPUT,
+.nihilo .dijitTextBox,
+.nihilo .dijitComboBox,
+.nihilo .dijitSpinner {
+ margin: 0em 0.1em;
+}
+
+.nihilo .dijitTextBox,
+.nihilo .dijitComboBox,
+.nihilo .dijitSpinner,
+.nihilo .dijitInlineEditor input,
+.nihilo .dijitTextArea {
+ /* For all except dijit.form.NumberSpinner: the actual input element.
+ For TextBox, ComboBox, Spinner: the table that contains the input.
+ Otherwise the actual input element.
+ */
+ background:#fff url("../images/validationInputBg.png") repeat-x top left;
+ #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+ border:1px solid #d3d3d3;
+ line-height: normal;
+}
+
+.nihilo .dijitComboBox .dijitButtonNode {
+ padding: 0 0.2em;
+}
+.nihilo .dijitComboBox .dijitButtonNode,
+.nihilo .dijitSpinner .dijitButtonNode {
+ /* line between the input area and the drop down button */
+ border-color: #d3d3d3;
+ border-left: 1px solid #d3d3d3;
+}
+
+.nihilo .dijitTextBoxFocused,
+.nihilo .dijitComboBoxFocused,
+.nihilo .dijitSpinnerFocused {
+ /* input field when focused (ie: typing affects it) */
+ border-color:#b3b3b3;
+}
+.nihilo .dijitComboBoxFocused .dijitButtonNode, .nihilo .dijitSpinnerFocused .dijitButtonNode {
+ border-left-color:#d3d3d3;
+}
+.nihilo .dijitSpinnerFocused .dijitDownArrowButton {
+ border-top-color:#d3d3d3;
+}
+
+.nihilo .dijitError {
+ border-color:#b3b3b3;
+ background-color:#f9f7ba;
+ background-image:none;
+}
+.dj_ie6 .nihilo .dijitError INPUT {
+ /* background-color: transparent on an doesn't work on IE6 */
+ background-color:#f9f7ba !important;
+}
+
+.nihilo .dijitErrorFocused {
+ background-color:#ff6;
+ background-image:none;
+}
+.dj_ie6 .nihilo .dijitErrorFocused INPUT {
+ /* background-color: transparent on an doesn't work on IE6 */
+ background-color:#ff6 !important;
+}
+
+/* Validation errors */
+.nihilo .dijitValidationIcon {
+ /* prevent height change when widget goes from valid to invalid state */
+ width: 16px;
+ background: transparent url('../images/warning.png') no-repeat center center;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common_rtl.css
new file mode 100644
index 00000000..22d6b34b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Common_rtl.css
@@ -0,0 +1,7 @@
+.dijitRtl .dijitComboBox .dijitButtonNode,
+.dijitRtl .dijitSpinner .dijitButtonNode {
+ /* line between the input area and the drop down button */
+ border-color: #8ba0bd;
+ border-left: 0px solid #8ba0bd;
+ border-right: 1px solid #8ba0bd;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/RadioButton.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/RadioButton.css
new file mode 100644
index 00000000..38f3741a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/RadioButton.css
@@ -0,0 +1,68 @@
+/*
+ * CheckBox and Radio Widgets,
+ * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
+ *
+ * Order of images in the default sprite (from L to R, checkbox and radio in same image):
+ * checkbox normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+ *
+ * radio normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+*/
+
+.nihilo .dijitToggleButton .dijitRadio,
+.nihilo .dijitToggleButton .dijitRadioIcon {
+ background-image: url('../images/spriteRadio.gif');
+}
+
+.nihilo .dijitRadio,
+.nihilo .dijitRadioIcon { /* inside a toggle button */
+ background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 0;
+ padding: 0;
+}
+
+.nihilo .dijitRadio,
+.nihilo .dijitToggleButton .dijitRadioIcon {
+ /* unselected */
+ background-position: -16px;
+}
+
+.nihilo .dijitRadioChecked,
+.nihilo .dijitToggleButtonChecked .dijitRadioIcon {
+ /* selected */
+ background-position: 0px;
+}
+
+.nihilo .dijitRadioCheckedDisabled {
+ /* selected but disabled */
+ background-position: -48px;
+}
+
+.nihilo .dijitRadioDisabled {
+ /* unselected and disabled */
+ background-position: -32px;
+}
+
+.nihilo .dijitRadioHover,
+.nihilo .dijitRadioFocused {
+ /* hovering over an unselected enabled radio button */
+ background-position: -80px;
+}
+
+.nihilo .dijitRadioCheckedHover,
+.nihilo .dijitRadioCheckedFocused {
+ /* hovering over a selected enabled radio button */
+ background-position: -64px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider.css
new file mode 100644
index 00000000..c7a7ca21
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider.css
@@ -0,0 +1,136 @@
+
+/****
+ SLIDER
+****/
+
+.nihilo .dijitSliderProgressBarH {
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+
+.nihilo .dijitSliderProgressBarV {
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+
+.nihilo .dijitSliderFocused .dijitSliderProgressBarH,
+.nihilo .dijitSliderFocused .dijitSliderLeftBumper {
+ background-image:url("../images/sliderFullFocus.png");
+}
+
+.nihilo .dijitSliderFocused .dijitSliderProgressBarV,
+.nihilo .dijitSliderFocused .dijitSliderBottomBumper {
+ background-image:url("../images/sliderFullVerticalFocus.png");
+}
+
+.nihilo .dijitSliderRemainingBarV {
+ border-color: #b4b4b4;
+ background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
+}
+
+.nihilo .dijitSliderRemainingBarH {
+ border-color: #b4b4b4;
+ background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+}
+
+.nihilo .dijitSliderBar {
+ border-style: solid;
+ outline:1px;
+ /* border-color: #b4b4b4; */
+}
+.nihilo .dijitSliderFocused .dijitSliderBar {
+ border-color:#727272;
+}
+
+.dijit_a11y .dijitSliderProgressBar {
+ background-color:#333 !important;
+}
+
+.nihilo .dijitSliderImageHandleH {
+ border:0px;
+ width:15px;
+ height:18px;
+ background:url("../images/preciseSliderThumb.png") no-repeat center top;
+ cursor:pointer;
+}
+.nihilo .dijitSliderFocused .dijitSliderImageHandleH {
+ background-image:url("../images/preciseSliderThumbFocus.png");
+ #background-image:url("../images/preciseSliderThumbFocus.gif");
+}
+
+.dj_ie6 .nihilo .dijitSliderImageHandleH {
+ background-image:url("../images/preciseSliderThumb.gif");
+}
+
+.nihilo .dijitSliderLeftBumper {
+ border-left-width: 1px;
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+
+.nihilo .dijitSliderRightBumper {
+ background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+ border-color: #b4b4b4;
+ border-right-width: 1px;
+}
+
+.nihilo .dijitSliderImageHandleV {
+ border:0px;
+ width:20px;
+ height:15px;
+ background:url("../images/sliderThumb.png") no-repeat center center;
+ cursor:pointer;
+}
+
+.nihilo .dijitSliderFocused .dijitSliderImageHandleV {
+ background-image:url("../images/sliderThumbFocus.png");
+}
+.dj_ie6 .nihilo .dijitSliderFocused .dijitSliderImageHandleV {
+ background-image:url("../images/sliderThumbFocus.gif");
+}
+
+.nihilo .dijitSliderBottomBumper {
+ border-bottom-width: 1px;
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+
+.nihilo .dijitSliderTopBumper {
+ background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
+ border-color: #b4b4b4;
+ border-top-width: 1px;
+}
+
+.nihilo .dijitSliderIncrementIconH,
+.nihilo .dijitSliderIncrementIconV {
+ background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top;
+ width:15px; height:15px;
+ cursor:pointer;
+}
+.nihilo .dijitSliderIncrementIconH {
+ background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+}
+
+.nihilo .dijitSliderDecrementIconH,
+.nihilo .dijitSliderDecrementIconV {
+ width:15px;
+ height:15px;
+ cursor:pointer;
+ background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+}
+.nihilo .dijitSliderDecrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top; }
+
+.nihilo .dijitSliderButtonInner {
+ visibility:hidden;
+}
+
+.nihilo .dijitSliderDisabled {
+ opacity:0.6 !important;
+}
+
+.dj_ie6 .nihilo .dijitSliderDisabled,
+.dj_ie6 .nihilo .dijitSliderDisabled .dijitRuleContainer,
+.dj_ie6 .nihilo .dijitSliderDisabled .dijitSliderRemainingBar,
+.dj_ie6 .nihilo .dijitSliderDisabled .dijitSliderProgressBar {
+ filter: gray() alpha(opacity=40);
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider_rtl.css
new file mode 100644
index 00000000..069d4fec
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Slider_rtl.css
@@ -0,0 +1,34 @@
+
+/* Slider */
+
+.dijitRtl .dijitSliderProgressBarH,
+.dijitRtl .dijitSliderRemainingBarH,
+.dijitRtl .dijitSliderLeftBumper,
+.dijitRtl .dijitSliderRightBumper,
+.dijitRtl .dijitSliderTopBumper {
+ background-position: top right;
+}
+
+.dijitRtl .dijitSliderProgressBarV,
+.dijitRtl .dijitSliderRemainingBarV,
+.dijitRtl .dijitSliderBottomBumper {
+ background-position: bottom right;
+}
+
+.dijitRtl .dijitSliderLeftBumper {
+ border-left-width: 0px;
+ border-right-width: 1px;
+}
+
+.dijitRtl .dijitSliderRightBumper {
+ border-left-width: 1px;
+ border-right-width: 0px;
+}
+
+.dijitRtl .dijitSliderIncrementIconH {
+ background-image:url('../images/arrowLeft.png');
+}
+
+.dijitRtl .dijitSliderDecrementIconH {
+ background-image:url('../images/arrowRight.png');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Textarea.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Textarea.css
new file mode 100644
index 00000000..84037722
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/Textarea.css
@@ -0,0 +1,15 @@
+.nihilo .dijitTextBox {
+ margin: 0em 0.1em;
+}
+
+.nihilo .dijitTextBox,
+.nihilo .dijitTextArea {
+ /* For all except dijit.form.NumberSpinner: the actual input element.
+ For TextBox, ComboBox, Spinner: the table that contains the input.
+ Otherwise the actual input element.
+ */
+ background:#fff url("../images/validationInputBg.png") repeat-x top left;
+ #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+ border:1px solid #c4c4c4;
+ line-height: normal;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/TimeTextBox.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/TimeTextBox.css
new file mode 100644
index 00000000..bf67b66d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/form/TimeTextBox.css
@@ -0,0 +1 @@
+@CHARSET "UTF-8";
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/accordionItemActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/accordionItemActive.png
new file mode 100644
index 00000000..58f3cf96
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/accordionItemActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonActive.png
new file mode 100644
index 00000000..e2f2fda3
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonDisabled.png
new file mode 100644
index 00000000..b76af42f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonEnabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonEnabled.png
new file mode 100644
index 00000000..d4fd306a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonEnabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonHover.png
new file mode 100644
index 00000000..1af7e835
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/buttonHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndCopy.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndCopy.png
new file mode 100644
index 00000000..baecd7cf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndCopy.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndMove.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndMove.png
new file mode 100644
index 00000000..07f878cf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndMove.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoCopy.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoCopy.png
new file mode 100644
index 00000000..9bf9c339
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoCopy.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoMove.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoMove.png
new file mode 100644
index 00000000..cb8bd8bd
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/dndNoMove.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor.gif
new file mode 100644
index 00000000..1c96329c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor_rtl.gif
new file mode 100644
index 00000000..ef049380
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/editor_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/no.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/no.gif
new file mode 100644
index 00000000..9021a14e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/no.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.gif
new file mode 100644
index 00000000..53b33e54
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.png
new file mode 100644
index 00000000..045bf35e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
new file mode 100644
index 00000000..8c6f92eb
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
new file mode 100644
index 00000000..c2358495
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/preciseSliderThumbFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarAnim.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarAnim.gif
new file mode 100644
index 00000000..543d0485
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarAnim.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarEmpty.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarEmpty.png
new file mode 100644
index 00000000..c2d36950
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarEmpty.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarFull.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarFull.png
new file mode 100644
index 00000000..a8f38657
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/progressBarFull.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmpty.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmpty.png
new file mode 100644
index 00000000..99fbd727
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmpty.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmptyVertical.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmptyVertical.png
new file mode 100644
index 00000000..2d497e3e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderEmptyVertical.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFull.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFull.png
new file mode 100644
index 00000000..9adb2544
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFull.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullFocus.png
new file mode 100644
index 00000000..3d75caeb
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVertical.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVertical.png
new file mode 100644
index 00000000..27e9752e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVertical.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVerticalFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
new file mode 100644
index 00000000..cca61841
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderFullVerticalFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumb.png
new file mode 100644
index 00000000..b6abbd2f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.gif
new file mode 100644
index 00000000..f8d306fe
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.png
new file mode 100644
index 00000000..73ee7056
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/sliderThumbFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
new file mode 100644
index 00000000..e7bc204d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH.png
new file mode 100644
index 00000000..5f5b0e9f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerH.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
new file mode 100644
index 00000000..410a0a7a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV.png
new file mode 100644
index 00000000..064bc189
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/splitContainerSizerV.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.gif
new file mode 100644
index 00000000..fc81207e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.png
new file mode 100644
index 00000000..73aa7009
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteArrows.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.gif
new file mode 100644
index 00000000..d2c4ebfa
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.png
new file mode 100644
index 00000000..e9923307
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteCheckbox.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.gif
new file mode 100644
index 00000000..00ad23a3
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.png
new file mode 100644
index 00000000..413098ac
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteDivIcons.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.gif
new file mode 100644
index 00000000..8dd6e578
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.png
new file mode 100644
index 00000000..14c1080e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRadio.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
new file mode 100644
index 00000000..251389a2
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
new file mode 100644
index 00000000..e81ba07f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.gif
new file mode 100644
index 00000000..e546e281
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.png
new file mode 100644
index 00000000..33ae07be
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.gif
new file mode 100644
index 00000000..bbcc64be
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.png
new file mode 100644
index 00000000..b06afdb8
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/spriteTree_rtl.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveC.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveC.gif
new file mode 100644
index 00000000..84bffde0
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveC.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif
new file mode 100644
index 00000000..6803db44
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledC.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledC.gif
new file mode 100644
index 00000000..9ef9ab08
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledC.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif
new file mode 100644
index 00000000..b6b08ce4
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverC.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverC.gif
new file mode 100644
index 00000000..0f533b56
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverC.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif
new file mode 100644
index 00000000..010b08ae
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabContainerSprite.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabContainerSprite.gif
new file mode 100644
index 00000000..92044a7f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabContainerSprite.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabLeftChecked.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabLeftChecked.gif
new file mode 100644
index 00000000..d59fd4a5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabLeftChecked.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabRightChecked.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabRightChecked.gif
new file mode 100644
index 00000000..d32f44e3
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabRightChecked.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripe.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripe.gif
new file mode 100644
index 00000000..a9346752
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripe.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeBottom.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeBottom.gif
new file mode 100644
index 00000000..64c3376b
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeBottom.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeLeft.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeLeft.gif
new file mode 100644
index 00000000..d607a45f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeLeft.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeRight.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeRight.gif
new file mode 100644
index 00000000..9778cedf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tabStripeRight.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBar.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBar.png
new file mode 100644
index 00000000..48f3a2fb
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBar.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBarActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBarActive.png
new file mode 100644
index 00000000..58f3cf96
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/titleBarActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.gif
new file mode 100644
index 00000000..9c384955
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.png
new file mode 100644
index 00000000..d75af71f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorDown.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
new file mode 100644
index 00000000..fc947e0a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.png
new file mode 100644
index 00000000..f3de66a7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorLeft.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.gif
new file mode 100644
index 00000000..b0e8097f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.png
new file mode 100644
index 00000000..ed6efc46
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorRight.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.gif
new file mode 100644
index 00000000..54bcf652
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.png
new file mode 100644
index 00000000..7f7a5d8f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/tooltipConnectorUp.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeExpand_loading.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeExpand_loading.gif
new file mode 100644
index 00000000..db9ddd02
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeExpand_loading.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI.gif
new file mode 100644
index 00000000..6f669e24
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half.gif
new file mode 100644
index 00000000..e5fd0155
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half_rtl.gif
new file mode 100644
index 00000000..44ad021a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_half_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_rtl.gif
new file mode 100644
index 00000000..0d32a2f7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/treeI_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.gif b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.gif
new file mode 100644
index 00000000..c28475c8
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.png
new file mode 100644
index 00000000..f3039f95
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/validationInputBg.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/warning.png b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/warning.png
new file mode 100644
index 00000000..c52f83dc
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/images/warning.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer.css
new file mode 100644
index 00000000..de911e96
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer.css
@@ -0,0 +1,44 @@
+/**
+ * dijit.layout.Accordioncontainer
+ *
+ */
+
+.nihilo .dijitAccordionPane {
+ background-color: #e7e7e7;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #6d6d6d;
+}
+
+.nihilo .dijitAccordionTitle {
+ background:#fafafa url("../images/titleBar.png") repeat-x top left;
+ border-top: 1px solid #dedede;
+ padding: 5px 4px 6px 8px;
+ cursor:pointer;
+}
+
+.nihilo .dijitAccordionTitle-selected {
+ background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x;
+ font-weight: bold;
+ border-top: 1px solid #dedede;
+ border-bottom: 1px solid #dedede;
+ padding: 5px 4px 5px 8px;
+ cursor: default;
+ color: #243C5F;
+}
+
+.nihilo .dijitAccordionArrow {
+ background:url("../images/spriteRoundedIconsSmall.gif") no-repeat;
+ width:15px;
+ height:15px;
+ margin-top:-1px;
+}
+
+.nihilo .dijitAccordionTitle-selected .dijitAccordionArrow {
+ background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -15px top;
+ margin-top:-1px;
+}
+
+.nihilo .dijitAccordionBody {
+ background: #fff;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
new file mode 100644
index 00000000..4ceda54c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
@@ -0,0 +1,3 @@
+.dijitRtl .dijitAccordionArrow {
+ background-position: -30px top;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/BorderContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/BorderContainer.css
new file mode 100644
index 00000000..9383e699
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/BorderContainer.css
@@ -0,0 +1,34 @@
+/**
+ * dijit.layout.BorderContainer
+ *
+ */
+
+.nihilo .dijitSplitterH {
+ background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+ border:0;
+ border-left:0px solid #d3d3d3;
+ border-right:0px solid #d3d3d3;
+ height:5px;
+}
+
+.nihilo .dijitSplitterH .dijitSplitterThumb {
+ background:url("../images/splitContainerSizerH-thumb.png") no-repeat;
+ top:1px;
+ width:19px;
+ height:2px;
+}
+
+.nihilo .dijitSplitterV {
+ background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+ border:0;
+ border-top:0px solid #d3d3d3;
+ border-bottom:0px solid #d3d3d3;
+ width:5px;
+}
+
+.nihilo .dijitSplitterV .dijitSplitterThumb {
+ background:url("../images/splitContainerSizerV-thumb.png") no-repeat;
+ left:1px;
+ height:19px;
+ width:5px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/SplitContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/SplitContainer.css
new file mode 100644
index 00000000..a520ef2e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/SplitContainer.css
@@ -0,0 +1,34 @@
+/**
+ * dijit.layout.SplitContainer
+ *
+ */
+
+.nihilo .dijitSplitContainerSizerH {
+ background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+ border:0;
+ border-left:0px solid #d3d3d3;
+ border-right:0px solid #d3d3d3;
+ width:5px;
+}
+
+.nihilo .dijitSplitContainerSizerH .thumb {
+ background:url("../images/splitContainerSizerV-thumb.png") no-repeat;
+ left:1px;
+ width:2px;
+ height:19px;
+}
+
+.nihilo .dijitSplitContainerSizerV {
+ background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+ border:0;
+ border-top:0px solid #d3d3d3;
+ border-bottom:0px solid #d3d3d3;
+ height:2px;
+}
+
+.nihilo .dijitSplitContainerSizerV .thumb {
+ background:url("../images/splitContainerSizerH-thumb.png") no-repeat;
+ top:1px;
+ width:19px;
+ height:5px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer.css
new file mode 100644
index 00000000..8b404e0d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer.css
@@ -0,0 +1,369 @@
+/**
+ * dijit.layout.TabContainer
+ *
+ * To style TabContainer with rounded corners
+ * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right)
+ * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe
+ */
+
+/* Classes for all types of tabs (top/bottom/left/right) */
+
+.nihilo .dijitTabPaneWrapper { /* Container for tab content */
+ /*
+ overflow: hidden;
+ */
+ background:#fff;
+ border:1px solid #ccc;
+}
+
+.nihilo .dijitTab {
+ line-height:normal;
+ margin-right:3px; /* space between one tab and the next in top/bottom mode */
+ padding:0px;
+ background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #6d6d6d;
+ margin-bottom: -1px;
+}
+
+.nihilo dijitTabChecked {
+ margin-bottom: -2px;
+}
+
+.nihilo .dijitTabInnerDiv .dijitTabContent {
+ padding:8px 10px 4px 10px;
+ background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px;
+}
+
+.nihilo .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabContainerSprite.gif") no-repeat;
+ background-position: right -400px;
+ border: none;
+}
+
+.nihilo .dijitTabHover,
+.nihilo .dijitTabCloseButtonHover {
+ color: #243C5F;
+ background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px;
+}
+
+.nihilo .dijitTabHover .dijitTabInnerDiv,
+.nihilo .dijitTabCloseButtonHover .dijitTabInnerDiv {
+ background: url("../images/tabContainerSprite.gif") no-repeat right -250px;
+ border: none;
+}
+
+.nihilo .dijitTabHover .dijitTabInnerDiv .dijitTabContent,
+.nihilo .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;
+ padding:8px 10px 4px 10px;
+}
+
+.nihilo .dijitTabChecked,
+.nihilo .dijitTabCloseButtonChecked
+{
+ /* the selected tab (with or without hover) */
+ background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px;
+}
+
+.nihilo .dijitTabChecked .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabContainerSprite.gif") no-repeat right -100px;
+ border: none;
+}
+
+.nihilo .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px;
+ padding:8px 10px 5px 10px;
+ color: #243C5F !important;
+}
+
+/* top specific classes */
+
+.nihilo .dijitTabLabels-top {
+ border-left: 1px solid #ccc;
+ border-top: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ padding-top: 2px;
+ padding-left: 3px;
+ background: #fafafa url("../images/tabStripe.gif") repeat-x left bottom;
+ padding-bottom: 4px;
+}
+/*
+.nihilo .dijitAlignTop .dijitTabStripe {
+ background: url("../images/tabStripe.gif") repeat-x left bottom;
+ padding-left: 2px;
+ padding-top: 0px;
+ height: 4px;
+ clear: both;
+ font-size: 1px;
+ margin-left: -3px;
+}
+*/
+
+.nihilo .dijitAlignLeft .dijitTab,
+.nihilo .dijitAlignRight .dijitTab {
+ margin-right:0px;
+ margin-bottom:5px; /* space between one tab and the next in left/right mode */
+}
+
+/* make the active tab white on the side next to the content pane */
+.nihilo .dijitAlignTop .dijitTabChecked,
+.nihilo .dijitAlignTop .dijitTabCloseButtonChecked
+{
+ border-bottom-color:white;
+ vertical-align:bottom;
+}
+
+.nihilo .dijitAlignBottom .dijitTabChecked,
+.nihilo .dijitAlignBottom .dijitTabCloseButtonChecked
+{
+ border-top-color:white;
+ /*-moz-border-radius:2px 2px 0px 0px; eliminate some border detritrus on moz */
+}
+
+.nihilo .dijitAlignLeft .dijitTabChecked,
+.nihilo .dijitAlignLeft .dijitTabCloseButtonChecked
+{
+ border-right-color:white;
+}
+
+.nihilo .dijitAlignRight .dijitTabChecked,
+.nihilo .dijitAlignRight .dijitTabCloseButtonChecked
+{
+ border-left-color:white;
+}
+
+/* bottom specific classes */
+
+.nihilo .dijitTabLabels-bottom {
+ padding-bottom: 2px;
+ padding-left: 3px;
+ border-left: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ background: #fafafa url("../images/tabStripeBottom.gif") repeat-x left top;
+ padding-top: 3px;
+}
+/*
+.nihilo .dijitAlignBottom .dijitTabStripe {
+ background: url("../images/tabStripe.gif") repeat-x left bottom;
+ padding-left: 2px;
+ padding-top: 0px;
+ height: 4px;
+ clear: both;
+ font-size: 1px;
+ margin-left: -3px;
+}
+*/
+.nihilo .dijitAlignBottom .dijitTab {
+ line-height:normal;
+ margin-right:3px; /* space between one tab and the next in top/bottom mode */
+ padding:0px;
+ background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #6d6d6d;
+ margin-bottom: 0px;
+ margin-top: 1px;
+}
+
+.nihilo .dijitAlignBottom .dijitTabChecked {
+ margin-bottom: 0px;
+ margin-top: 0px !important;
+}
+
+.nihilo .dijitAlignBottom .dijitTabInnerDiv .dijitTabContent {
+ padding:6px 10px 6px 10px;
+ background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;
+}
+
+.nihilo .dijitAlignBottom .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right;
+ border: none;
+}
+
+.nihilo .dijitAlignBottom .dijitTabHover,
+.nihilo .dijitAlignBottom .dijitTabCloseButtonHover {
+ color: #243C5F;
+ background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left;
+}
+
+.nihilo .dijitAlignBottom .dijitTabHover .dijitTabInnerDiv,
+.nihilo .dijitAlignBottom .dijitTabCloseButtonHover .dijitTabInnerDiv {
+ background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right;
+ border: none;
+}
+
+.nihilo .dijitAlignBottom .dijitTabHover .dijitTabInnerDiv .dijitTabContent,
+.nihilo .dijitAlignBottom .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;
+ padding:6px 10px 6px 10px;
+}
+
+.dj_ie6 .nihilo .dijitAlignBottom .dijitTabHover,
+.dj_ie6 .nihilo .dijitAlignBottom .dijitTabCloseButtonHover {
+ background-image: url("../images/tabHover.gif");
+}
+
+.nihilo .dijitAlignBottom .dijitTabChecked,
+.nihilo .dijitAlignBottom .dijitTabCloseButtonChecked
+{
+ /* the selected tab (with or without hover) */
+ background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left;
+}
+
+.nihilo .dijitAlignBottom .dijitTabChecked .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right;
+ border: none;
+}
+
+.nihilo .dijitAlignBottom .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;
+ padding:7px 10px 6px 10px;
+}
+
+
+/* left specific classes */
+.nihilo .dijitAlignLeft .dijitTab {
+ margin-right: 1px !important;
+}
+
+.nihilo .dijitAlignLeft .dijitTabChecked {
+ margin-right: 0px !important;
+}
+
+.nihilo .dijitAlignLeft .dijitTabChecked .dijitTabInnerDiv {
+ background: url("../images/tabLeftChecked.gif") no-repeat right top !important;
+ padding-left: 10px;
+ border-bottom: 1px solid #dedede !important;
+}
+
+.nihilo .dijitAlignLeft .dijitTabInnerDiv {
+ background: url("../images/tabContainerSprite.gif") no-repeat right -350px;
+ padding-left: 10px;
+ border-bottom: 1px solid #dedede;
+}
+.nihilo .dijitAlignLeft .dijitTabHover .dijitTabInnerDiv {
+ background: url("../images/tabContainerSprite.gif") no-repeat right -200px;
+ padding-left: 10px;
+ border-bottom: 1px solid #dedede;
+}
+
+.nihilo .dijitTabLabels-left-h {
+ padding-left: 2px;
+ padding-top: 3px;
+ border-left: 1px solid #b1badf;
+ border-bottom: 1px solid #b1badf;
+ border-top: 1px solid #b1badf;
+ background: #fafafa url("../images/tabStripeLeft.gif") repeat-y right top;
+ padding-right: 3px;
+}
+
+.nihilo .dijitAlignLeft .dijitTabInnerDiv .dijitTabContent {
+ padding:7px 10px 6px 10px !important;
+}
+
+/* right specific classes */
+.nihilo .dijitTabLabels-right-h {
+ padding-right: 2px;
+ padding-top: 3px;
+ border-right: 1px solid #b1badf;
+ border-bottom: 1px solid #b1badf;
+ border-top: 1px solid #b1badf;
+ background: #fafafa url("../images/tabStripeRight.gif") repeat-y left top;
+ padding-left: 3px;
+}
+
+.nihilo .dijitAlignRight .dijitTab {
+ margin-left: 1px;
+}
+
+.nihilo .dijitAlignRight .dijitTabChecked {
+ margin-left: 0px;
+}
+
+.nihilo .dijitAlignRight .dijitTabChecked {
+ background: url("../images/tabRightChecked.gif") no-repeat left top !important;
+}
+
+.nihilo .dijitAlignRight .dijitTab {
+ background: url("../images/tabContainerSprite.gif") no-repeat left -350px;
+}
+.nihilo .dijitAlignRight .dijitTabHover .dijitTab {
+ background: url("../images/tabContainerSprite.gif") no-repeat left -200px;
+}
+.nihilo .dijitAlignRight .dijitTabInnerDiv .dijitTabContent {
+ padding:7px 10px 6px 10px !important;
+}
+
+.nihilo .dijitAlignRight .dijitTabChecked .dijitTabInnerDiv {
+ border-bottom: 1px solid #dedede !important;
+}
+
+.nihilo .dijitAlignRight .dijitTabInnerDiv {
+ border-bottom: 1px solid #dedede;
+}
+.nihilo .dijitAlignRight .dijitTabHover .dijitTabInnerDiv {
+ border-bottom: 1px solid #dedede;
+}
+
+/* make space for a positioned close button */
+.nihilo .dijitTab .dijitClosable {
+ position: relative;
+ padding: 0;
+ padding-left: 10px !important;
+ padding-right: 20px !important;
+}
+
+.nihilo .dijitTab img {
+ padding: 0;
+ margin: 0;
+}
+
+.nihilo .dijitTab .dijitClosable .closeImage {
+ position:absolute;
+ top: 5px;
+ right: 5px;
+ height: 15px;
+ width: 15px;
+ padding: 0;
+ margin: 0;
+ background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top;
+}
+.dj_ie6 .dijitTab .dijitClosable .closeImage {
+ background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top;
+}
+.dj_ie6 .nihilo .dijitTabCloseButton .dijitClosable .closeImage {
+ background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top;
+}
+
+.nihilo .dijitTabHover .dijitClosable .closeImage {
+ background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px !important;
+}
+.dj_ie6 .nihilo .dijitTabHover .dijitClosable .closeImage {
+ background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px !important;
+}
+
+/* correct for IE6.
+ We cant force hasLayout as that blows out the shrink wrapped tabs
+ ..so we shim in the closeImage position properties instead
+*/
+.dj_ie6 .nihilo .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ left:-20px;
+}
+
+.nihilo .dijitAlignBottom .dijitTab .dijitClosable .closeImage {
+ top: auto;
+ bottom: 7px;
+ right: 3px;
+}
+
+.nihilo .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ top: 7px;
+ left: 3px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer_rtl.css
new file mode 100644
index 00000000..bf6587e5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/layout/TabContainer_rtl.css
@@ -0,0 +1,69 @@
+/* TabContainer */
+
+.dijitRtl .dijitTab {
+ margin-right:0;
+ margin-left:3px; /* space between one tab and the next in top/bottom mode */
+}
+
+.dijitRtl .dijitTab .dijitTabInnerDiv {
+ border-left:none;
+}
+
+.dijitRtl .dijitTab .dijitClosable {
+ padding: 0 10px 0 20px;
+}
+
+.dijitRtl .dijitTab .closeImage {
+ position:static;
+}
+
+.dj_gecko .dijitTab .closeImage {
+ position:relative;
+ float:none;
+ padding:0;
+}
+
+.dijitRtl .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+ background-position: -60px top;
+}
+
+.dj_ie .dijitRtl .dijitTab .dijitClosable .closeImage {
+ width:12px !important;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab,
+.dijitRtl .dijitAlignRight .dijitTab {
+ margin-left:0px;
+}
+
+.dijitRtl .dijitAlignBottom .dijitTab {
+ margin-right:0;
+ margin-left:3px; /* space between one tab and the next in top/bottom mode */
+}
+
+.dijitRtl .dijitAlignBottom .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+}
+
+.dijitRtl .dijitAlignRight .dijitTab .dijitTabInnerDiv {
+ padding-left:10px;
+ padding-right:20px;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab .dijitTabInnerDiv {
+ padding-left:20px;
+ padding-right:10px;
+}
+
+.dijitRtl .dijitAlignRight .dijitTab .dijitClosable .closeImage {
+ left:auto;
+ right:3px;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo.css
new file mode 100644
index 00000000..91652bea
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo.css
@@ -0,0 +1,39 @@
+/*
+ Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
+
+ NOTES:
+ ---
+ Dialog.css contains css classes for both Dialog and Tooltip!
+ This because currently a dijit.TooltipDialog exist. Until this is resolved
+ you need to include Dialog.css for both dijits
+ ---
+ Toolbar.css contains classes also used in Editor. Until this is resolved
+ you need to include Toolbar.css for both Toolbar and Editor
+ ---
+ Button.css contains classes for combobox,
+
+*/
+
+@import url("../dijit.css");
+@import url("Common.css");
+
+@import url("layout/TabContainer.css");
+@import url("layout/AccordionContainer.css");
+@import url("layout/SplitContainer.css");
+@import url("layout/BorderContainer.css");
+@import url("form/Common.css");
+@import url("form/Button.css");
+@import url("form/ComboBox.css");
+@import url("form/Checkbox.css");
+@import url("form/RadioButton.css");
+@import url("form/Textarea.css");
+@import url("form/Slider.css");
+@import url("Tree.css");
+@import url("ProgressBar.css");
+@import url("TitlePane.css");
+@import url("Calendar.css");
+@import url("Toolbar.css");
+@import url("Dialog.css");
+@import url("Menu.css");
+@import url("Editor.css");
+@import url("ColorPalette.css");
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo_rtl.css
new file mode 100644
index 00000000..05bfa3fe
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/nihilo/nihilo_rtl.css
@@ -0,0 +1,28 @@
+/*
+ Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
+
+ NOTES:
+ ---
+ Dialog.css contains css classes for both Dialog and Tooltip!
+ This because currently a dijit.TooltipDialog exist. Until this is resolved
+ you need to include Dialog.css for both dijits
+ ---
+ Toolbar.css contains classes also used in Editor. Until this is resolved
+ you need to include Toolbar.css for both Toolbar and Editor
+ ---
+ Button.css contains classes for combobox,
+
+*/
+
+@import url("../dijit_rtl.css");
+@import url("layout/TabContainer_rtl.css");
+@import url("layout/AccordionContainer_rtl.css");
+@import url("form/Slider_rtl.css");
+@import url("form/Button_rtl.css");
+@import url("form/Common_rtl.css");
+@import url("Tree_rtl.css");
+@import url("TitlePane_rtl.css");
+@import url("Calendar_rtl.css");
+@import url("Dialog_rtl.css");
+@import url("Menu_rtl.css");
+@import url("Editor_rtl.css");
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar.css
new file mode 100644
index 00000000..937a5486
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar.css
@@ -0,0 +1,159 @@
+/* Calendar*/
+
+.soria .dijitCalendarIncrementControl {
+ /* next/prev month buttons */
+ width:15px;
+ height:15px;
+ font-size: 1px;
+}
+.dj_ie6 .soria .dijitCalendarIncrementControl {
+ padding:.1em;
+}
+
+.soria .dijitCalendarIncreaseInner,
+.soria .dijitCalendarDecreaseInner {
+ visibility:hidden;
+}
+
+.soria .dijitCalendarDecrease {
+ background:url("images/spriteRoundedIconsSmall.png") no-repeat top left;
+}
+.dj_ie6 .soria .dijitCalendarDecrease {
+ background:url("images/spriteRoundedIconsSmall.gif") no-repeat top left;
+}
+
+.soria .dijitCalendarIncrease {
+ background:url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+}
+.dj_ie6 .soria .dijitCalendarIncrease {
+ background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;
+}
+
+.soria table.dijitCalendarContainer {
+ font-size: 100%;
+ border-spacing: 0;
+ border-collapse: separate;
+ border: 1px solid #b1badf;
+ margin: 0;
+}
+
+.soria .dijitCalendarMonthContainer th {
+ /* month header cell */
+ background:#bed7f0 url("images/titleBar.png") repeat-x top;
+ padding-top:.3em;
+ padding-bottom:.2em;
+ text-align:center;
+}
+.dj_ie6 .soria .dijitCalendarMonthContainer th {
+ padding-top:.1em;
+ padding-bottom:0em;
+}
+
+.soria .dijitCalendarDayLabelTemplate {
+ /* day of week labels */
+ background:#bed7f0;
+ font-weight:normal;
+ padding-top:.15em;
+ padding-bottom:.2em;
+ border-bottom: 1px solid #b1badf;
+ color:#293a4b;
+ text-align:center;
+}
+
+.soria .dijitCalendarBodyContainer {
+ border-bottom: 1px solid #eeeeee;
+}
+
+.soria .dijitCalendarMonthLabel {
+ color:#293a4b;
+ font-weight: bold;
+}
+
+.dj_ie7 .soria .dijitCalendarDateTemplate,
+.dj_ie6 .soria .dijitCalendarDateTemplate {
+ font-size: 0.8em;
+}
+
+.soria .dijitCalendarDateTemplate {
+ /* style for each day cell */
+ font-size: 0.9em;
+ font-weight: bold;
+ text-align: center;
+ padding: 0.3em 0.3em 0.1em 0.3em;
+ letter-spacing: 1px;
+ background-color: #fff;
+ border:#fff solid 1px !important;
+}
+
+
+.soria .dijitCalendarPreviousMonth,
+.soria .dijitCalendarNextMonth {
+ /* days that are part of the previous or next month */
+ color:#999999;
+ background-color:#fdfdfd !important;
+ border:#fdfdfd solid 1px !important;
+}
+
+.soria .dijitCalendarPreviousMonthDisabled,
+.soria .dijitCalendarNextMonthDisabled {
+ /* days that are part of the previous or next month - disabled*/
+ background-color:#a4a5a6 !important;
+}
+
+.soria .dijitCalendarCurrentMonth {
+ /* days that are part of this month */
+}
+
+.soria .dijitCalendarCurrentMonthDisabled {
+ /* days that are part of this month - disabled */
+ background-color:#bbbbbc !important;
+}
+
+.soria .dijitCalendarDisabledDate {
+ /* one or the other? */
+ /* background: url(images/noX.gif) no-repeat center center !important; */
+ text-decoration:line-through !important;
+ cursor:default !important;
+}
+
+.soria .dijitCalendarCurrentDate {
+ /* cell for today's date */
+ text-decoration:underline;
+ font-weight:bold;
+}
+
+.soria .dijitCalendarSelectedDate {
+ /* cell for the selected date */
+ background-color:#b9cbf1 !important;
+ color:black !important;
+ border:#4b5aaa solid 1px !important;
+}
+
+
+.soria .dijitCalendarYearContainer {
+ /* footer of the table that contains the year display/selector */
+ background:white url("images/titleBar.png") repeat-x top;
+}
+
+.soria .dijitCalendarYearLabel {
+ /* container for all of 3 year labels */
+ margin:0;
+ padding:0.4em 0 0.25em 0;
+ text-align:center;
+}
+
+.soria .dijitCalendarSelectedYear {
+ /* label for selected year */
+ color:black;
+ padding:0.2em;
+ padding-bottom:0.1em;
+ background-color:#b9cbf1 !important;
+ border:#4b5aaa solid 1px !important;
+}
+
+.soria .dijitCalendarNextYear,
+.soria .dijitCalendarPreviousYear {
+ /* label for next/prev years */
+ color:black !important;
+ font-weight:normal;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar_rtl.css
new file mode 100644
index 00000000..c72d43b5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Calendar_rtl.css
@@ -0,0 +1,16 @@
+
+/* Calendar */
+
+.dijitRtl .dijitCalendarDecrease {
+ background-position: -30px top;
+}
+
+.dijitRtl .dijitCalendarIncrease {
+ background-position: 0px top;
+}
+.dj_ie6 .dijitRtl .dijitCalendarIncrease {
+ background-position: 0px top;
+}
+.dj_ie6 .dijitRtl .dijitCalendarDecrease {
+ background-position: -30px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/ColorPalette.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/ColorPalette.css
new file mode 100644
index 00000000..ed922ac2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/ColorPalette.css
@@ -0,0 +1,5 @@
+.dijitColorPalette {
+ border:1px solid #cbcbcb;
+ background:#fff;
+ -moz-border-radius: 0px !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Common.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Common.css
new file mode 100644
index 00000000..6a9febf5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Common.css
@@ -0,0 +1,36 @@
+
+/**** Disabled cursor *****/
+.soria .dijitSliderDisabled *,
+.soria .dijitDisabledClickableRegion, /* a region the user would be able to click on, but it's disabled */
+.soria .dijitSpinnerDisabled *,
+.soria .dijitButtonDisabled *,
+.soria .dijitDropDownButtonDisabled *,
+.soria .dijitComboButtonDisabled *,
+.soria .dijitComboBoxDisabled *
+{
+ cursor: not-allowed !important;
+}
+
+/* DnD avatar-specific settings */
+/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
+.soria .dojoDndItemBefore {
+ border-top: 2px solid #369;
+}
+
+.soria .dojoDndItemAfter {
+ border-bottom: 2px solid #369;
+}
+
+.soria .dojoDndItemOver {
+ cursor:pointer;
+}
+
+.soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.soria .dojoDndAvatar td { border: none; }
+.soria .dojoDndAvatar tr { border: none; }
+.soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
+.soria .dojoDndAvatarItem td { padding: 2px;}
+.soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog.css
new file mode 100644
index 00000000..ed48613c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog.css
@@ -0,0 +1,175 @@
+
+/* Dialog */
+
+.soria .dijitDialog {
+ background: #eee;
+ border: 1px solid #cbcbcb;
+ -webkit-box-shadow: 0px 5px 10px #adadad;
+ padding: 0px;
+}
+
+.soria .dijitDialog .dijitDialogTitle {
+ border-top: none;
+ border-left: none;
+ border-right: none;
+ font-size: 0.9em;
+ color: #3243C5F;
+}
+
+.soria .dijitDialog .dijitDialogPaneContent {
+ background: #ffffff;
+ border:none;
+ border-top: 1px solid #b1badf; /* #cddde9; /* w/out this, an on the top line causes a gap between the .content and .label */
+ padding:10px;
+
+}
+
+.soria .dijitDialogTitleBar {
+ /* outer container for the titlebar of the dialog */
+ background: #fafafa url("images/titleBar.png") repeat-x top left;
+ /* border: 1px solid #bfbfbf; */
+ padding: 5px 6px 3px 2px;
+ cursor: move;
+ outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
+}
+
+.soria .dijitDialogTitle {
+ /* typography and styling of the dialog title */
+ font-weight: bold;
+ padding: 8px 12px 8px 12px;
+ outline:0;
+}
+
+.soria .dijitDialogCloseIcon {
+ /* the default close icon for the dialog */
+ background : url("images/spriteRoundedIconsSmallBl.png") no-repeat right top;
+ float: right;
+ position: absolute;
+ vertical-align: middle;
+ right: 6px;
+ top: 4px;
+ height: 15px;
+ width: 15px;
+ cursor: pointer;
+}
+.dj_ie6 .soria .dijitDialogCloseIcon {
+ background : url("images/spriteRoundedIconsSmallBl.gif") no-repeat right top;
+}
+
+.soria .dijitDialogContent {
+ /* the body of the dialog */
+ padding: 8px;
+}
+
+
+/* Tooltip and TooltipDialog */
+
+.soria .dijitTooltip,
+.soria .dijitTooltipDialog {
+ /* the outermost dom node, holding the connector and container */
+ opacity: 0.95;
+ background: transparent; /* make the area on the sides of the arrow transparent */
+}
+
+.dijitTooltipBelow {
+ /* leave room for arrow above content */
+ padding-top: 10px;
+}
+
+.dijitTooltipAbove {
+ /* leave room for arrow below content */
+ padding-bottom: 10px;
+}
+
+.soria .dijitTooltipContainer {
+ /*
+ The part with the text.
+
+ NOTE:
+ FF doesn't clip images used as CSS bgs if you specify a border
+ radius. If you use a solid color, it does. Webkit gets it right.
+ Sigh.
+ background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
+ */
+ background-color: #fff;
+ border:1px solid #cbcbcb;
+ padding:0.45em;
+ /*
+ border-radius: 6px;
+ -moz-border-radius: 7px;
+ -webkit-border-radius: 6px;
+ */
+}
+
+.soria .dijitTooltipConnector {
+ /* the arrow piece */
+ border:0px;
+ z-index: 2;
+}
+
+.soria .dijitTooltipABRight .dijitTooltipConnector {
+ /* above or below tooltip, but the arrow appears on the right,
+ and the right edges of target and tooltip are aligned rather than the left */
+ left: auto !important;
+ right: 6px;
+}
+
+.soria .dijitTooltipBelow .dijitTooltipConnector {
+ /* the arrow piece for tooltips below an element */
+ top: 0px;
+ left: 6px;
+ background:url("images/tooltipConnectorUp.png") no-repeat top left;
+ width:17px;
+ height:11px;
+}
+
+.dj_ie6 .soria .dijitTooltipBelow .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorUp.gif");
+}
+
+.soria .dijitTooltipAbove .dijitTooltipConnector {
+ /* the arrow piece for tooltips above an element */
+ bottom: 0px;
+ left: 6px;
+ background:url("images/tooltipConnectorDown.png") no-repeat top left;
+ width:17px;
+ height:11px;
+}
+.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorDown.gif");
+ bottom: -5px;
+}
+
+.soria .dijitTooltipLeft {
+ padding-right: 10px;
+}
+.dj_ie6 .soria .dijitTooltipLeft {
+ padding-left: 11px;
+}
+.soria .dijitTooltipLeft .dijitTooltipConnector {
+ /* the arrow piece for tooltips to the left of an element, bottom borders aligned */
+ right: 0px;
+ bottom: 7px;
+ background:url("images/tooltipConnectorRight.png") no-repeat top left;
+ width:11px;
+ height:17px;
+}
+.dj_ie6 .soria .dijitTooltipLeft .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorRight.gif");
+}
+
+.soria .dijitTooltipRight {
+ padding-left: 10px;
+}
+.soria .dijitTooltipRight .dijitTooltipConnector {
+ /* the arrow piece for tooltips to the right of an element, bottom borders aligned */
+ left: 0px;
+ bottom: 7px;
+ background:url("images/tooltipConnectorLeft.png") no-repeat top left;
+ width:11px;
+ height:17px;
+}
+.dj_ie6 .soria .dijitTooltipRight .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorLeft.gif");
+}
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog_rtl.css
new file mode 100644
index 00000000..ea85d497
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Dialog_rtl.css
@@ -0,0 +1,29 @@
+/* Dialog */
+.dijitRtl .dijitDialogTitleBar .dijitDialogCloseIcon {
+ background-position: -60px top;
+ float: left;
+ right: auto;
+ left: 5px;
+}
+
+/*FIXME: redundant?*/
+.dj_ie6 .dijitRtl .dijitDialogTitleBar .dijitDialogCloseIcon {
+ background-position: -60px top;
+}
+
+
+/* ToolTip */
+
+.dj_ie .dijitRtl .dijitTooltipLeft {
+ margin-right: 0px;
+ margin-left: 13px;
+}
+
+.dj_ie .dijitRtl .dijitTooltipRight {
+ margin-left: 26px;
+ margin-right: -13px;
+}
+
+.dj_ie .dijitRtl .dijitTooltipDialog {
+ zoom:1 !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor.css
new file mode 100644
index 00000000..b044e56a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor.css
@@ -0,0 +1,60 @@
+.dijitIEFixedToolbar {
+ position:absolute;
+ /* top:0; */
+ top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+
+.soria .dijitToolbar .dijitToolbarSeparator {
+ background: url('images/editor.gif');
+}
+
+/**** ICONS *****/
+
+.soria .dijitEditorIcon {
+ background-image: url('images/editor.gif'); /* editor icons sprite image */
+ background-repeat: no-repeat;
+ width: 18px;
+ height: 18px;
+ text-align: center;
+}
+.soria .dijitEditorIconSep { background-position: 0px; }
+.soria .dijitEditorIconBackColor { background-position: -18px; }
+.soria .dijitEditorIconBold { background-position: -36px; }
+.soria .dijitEditorIconCancel { background-position: -54px; }
+.soria .dijitEditorIconCopy { background-position: -72px; }
+.soria .dijitEditorIconCreateLink { background-position: -90px; }
+.soria .dijitEditorIconCut { background-position: -108px; }
+.soria .dijitEditorIconDelete { background-position: -126px; }
+.soria .dijitEditorIconForeColor { background-position: -144px; }
+.soria .dijitEditorIconHiliteColor { background-position: -162px; }
+.soria .dijitEditorIconIndent { background-position: -180px; }
+.soria .dijitEditorIconInsertHorizontalRule { background-position: -198px; }
+.soria .dijitEditorIconInsertImage { background-position: -216px; }
+.soria .dijitEditorIconInsertOrderedList { background-position: -234px; }
+.soria .dijitEditorIconInsertTable { background-position: -252px; }
+.soria .dijitEditorIconInsertUnorderedList { background-position: -270px; }
+.soria .dijitEditorIconItalic { background-position: -288px; }
+.soria .dijitEditorIconJustifyCenter { background-position: -306px; }
+.soria .dijitEditorIconJustifyFull { background-position: -324px; }
+.soria .dijitEditorIconJustifyLeft { background-position: -342px; }
+.soria .dijitEditorIconJustifyRight { background-position: -360px; }
+.soria .dijitEditorIconLeftToRight { background-position: -378px; }
+.soria .dijitEditorIconListBulletIndent { background-position: -396px; }
+.soria .dijitEditorIconListBulletOutdent { background-position: -414px; }
+.soria .dijitEditorIconListNumIndent { background-position: -432px; }
+.soria .dijitEditorIconListNumOutdent { background-position: -450px; }
+.soria .dijitEditorIconOutdent { background-position: -468px; }
+.soria .dijitEditorIconPaste { background-position: -486px; }
+.soria .dijitEditorIconRedo { background-position: -504px; }
+.soria .dijitEditorIconRemoveFormat { background-position: -522px; }
+.soria .dijitEditorIconRightToLeft { background-position: -540px; }
+.soria .dijitEditorIconSave { background-position: -558px; }
+.soria .dijitEditorIconSpace { background-position: -576px; }
+.soria .dijitEditorIconStrikethrough { background-position: -594px; }
+.soria .dijitEditorIconSubscript { background-position: -612px; }
+.soria .dijitEditorIconSuperscript { background-position: -630px; }
+.soria .dijitEditorIconUnderline { background-position: -648px; }
+.soria .dijitEditorIconUndo { background-position: -666px; }
+.soria .dijitEditorIconWikiword { background-position: -684px; }
+.soria .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555;
+ font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor_rtl.css
new file mode 100644
index 00000000..2a2df3e7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Editor_rtl.css
@@ -0,0 +1,9 @@
+/* Editor */
+.dijitRtl .dijitEditorIcon {
+ background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */
+}
+
+/* Toolbar */
+.dijitRtl .dijitToolbar .dijitToolbarSeparator {
+ background-image: url('images/editor_rtl.gif');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu.css
new file mode 100644
index 00000000..41f8626e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu.css
@@ -0,0 +1,63 @@
+
+/* Menu */
+.soria .dijitMenu {
+ border: 1px solid #cbcbcb;
+ margin: 0px;
+ padding: 0px;
+ background-color: #fff;
+}
+
+.soria .dijitMenuItem {
+ background-color: #fff;
+ font: menu;
+ margin: 0px;
+ color: #243C5F;
+}
+.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {
+ font-style: italic;
+}
+.soria .dijitMenuItem TD {
+ padding:1px;
+}
+
+.soria .dijitMenuItemHover {
+ background-color: #d9e6f9; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */
+ color: #243C5F;
+}
+
+.soria .dijitMenuItemIcon {
+ width: 15px;
+ height: 15px;
+ /* padding-right: 3px; */
+}
+
+.soria .dijitMenuExpand {
+ display:none;
+}
+.soria .dijitMenuExpandEnabled {
+ /* margin-top:4px; */
+ width:15px;
+ height:15px;
+ background:url('images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+ display:block;
+}
+.dj_ie6 .soria .dijitMenuExpandEnabled {
+ background-image:url('images/spriteRoundedIconsSmall.gif');
+}
+.soria .dijitMenuExpandInner {
+ display:none;
+}
+
+.soria .dijitMenuSeparator {
+ background-color: #fff;
+ height: 1px;
+}
+
+/* separator can be two pixels -- set border of either one to 0px to have only one */
+.soria .dijitMenuSeparatorTop {
+ border-bottom: 1px solid #fff; /*97adcb; */
+}
+
+.soria .dijitMenuSeparatorBottom {
+ border-top: 1px solid #8ba0bd;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu_rtl.css
new file mode 100644
index 00000000..ac66852f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Menu_rtl.css
@@ -0,0 +1,15 @@
+
+/* Menu */
+
+.dijitRtl .dijitMenuItem .dijitMenuItemIcon {
+ padding-left: 3px;
+ padding-right: 0px;
+}
+
+.dijitRtl .dijitMenuItem .dijitMenuExpandEnabled {
+ background-image:url('images/arrowLeft.png');
+}
+
+.dj_ie6 .dijitRtl .dijitMenuItem .dijitMenuExpandEnabled {
+ background-image:url('images/arrowLeft.gif');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/ProgressBar.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/ProgressBar.css
new file mode 100644
index 00000000..7919cf34
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/ProgressBar.css
@@ -0,0 +1,33 @@
+
+/****
+ dijit.ProgressBar
+ ****/
+
+.soria .dijitProgressBar {
+ margin:2px 0px 2px 0px;
+}
+
+.soria .dijitProgressBarEmpty{
+ /* outer container and background of the bar that's not finished yet*/
+ background:#fff url("images/progressBarEmpty.png") repeat-x center center;
+ border-color: #8ba0bd;
+}
+
+.soria .dijitProgressBarTile{
+ /* inner container for finished portion when in 'tile' (image) mode */
+ background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
+}
+
+.soria .dijitProgressBarFull {
+ border-right:1px solid #8ba0bd;
+}
+
+.soria .dijitProgressBarLabel {
+ /* Set to a color that contrasts with both the "Empty" and "Full" parts. */
+ color:#293a4b;
+}
+
+.soria .dijitProgressBarIndeterminate .dijitProgressBarTile {
+ /* use an animated gif for the progress bar in 'indeterminate' mode */
+ background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane.css
new file mode 100644
index 00000000..a312a229
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane.css
@@ -0,0 +1,77 @@
+/**
+ * dijit.layout.TitlePane
+ *
+ */
+
+.soria .dijitTitlePane .dijitTitlePaneTitle {
+ background: #cccccc;
+ background:#fff url("images/titleBar.png") repeat-x top left;
+ border:1px solid #bfbfbf;
+ padding:4px 4px 2px 4px;
+ cursor: pointer;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #6d6d6d;
+}
+
+/* TODO: merge these, and all other icons to a series of background-image:() and background-position: -16*n px styles */
+.soria .dijitTitlePane .dijitArrowNode {
+ width:15px;
+ height:15px;
+ float:right;
+ margin-top: -2px;
+}
+
+.soria .dijitTitlePaneFocused .dijitTitlePaneTextNode {
+ color: #243C5F;
+}
+
+
+.soria .dijitOpen .dijitTitlePaneTextNode {
+ color: #243C5F;
+}
+
+.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background: url('images/spriteRoundedIconsSmall.png') no-repeat top left;
+}
+.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background:url('images/spriteRoundedIconsSmall.gif') no-repeat top left;
+}
+.soria .dijitTitlePane .dijitOpen .dijitArrowNode {
+ background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+}
+.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode {
+ background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
+}
+.soria .dijitTitlePane .dijitArrowNodeInner {
+ visibility:hidden;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+ visibility:visible;
+}
+
+.soria .dijitTitlePaneTitle .dijitOpenCloseArrowOuter {
+ margin-right:5px;
+}
+
+.soria .dijitOpen .dijitTitlePaneTitle .dijitOpenCloseArrowOuter {
+ position:relative;
+ top:2px;
+}
+
+.soria .dijitTitlePaneContentOuter {
+ background: #ffffff;
+ border:1px solid #bfbfbf;
+ border-top: 0px solid #3d3d3d; /* w/out this, an on the top line causes a gap between the .content and .label */
+}
+.soria .dijitTitlePaneContentInner {
+ padding:10px;
+}
+/* force hasLayout to ensure borders etc, show up */
+.dj_ie6 .soria .dijitTitlePaneContentOuter,
+.dj_ie6 .soria .dijitTitlePane .dijitTitlePaneTitle {
+ zoom: 1;
+}
+.soria .dijitClickableRegion {
+ background-color : #ffc !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane_rtl.css
new file mode 100644
index 00000000..52286bcd
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/TitlePane_rtl.css
@@ -0,0 +1,6 @@
+.dijitRtl .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background-position: -30px top;
+}
+.dj_ie6 .dijitRtl .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background-position: -30px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Toolbar.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Toolbar.css
new file mode 100644
index 00000000..d6141b55
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Toolbar.css
@@ -0,0 +1,95 @@
+.soria .dijitToolbar {
+ padding: 3px 0 1px 3px;
+ border-bottom: 1px solid #ccc;
+ background:#eaeaea url("images/titleBar.png") repeat-x top left;
+}
+
+.soria .dijitToolbar .dijitButtonNode {
+ background: none;
+ margin: 0px !important;
+ padding: 0px !important;
+ border: none;
+ font-size: 12px;
+}
+
+.soria .dijitToolbar .dijitButton,
+.soria .dijitToolbar .dijitToggleButton,
+.soria .dijitToolbar .dijitDropDownButton {
+ background: none;
+ margin: 1px;
+ padding: 0px;
+ border: 1px solid transparent;
+}
+
+.soria .dijitToolbar .dijitButtonChecked,
+.soria .dijitToolbar .dijitToggleButtonChecked {
+ background-color:#d8e5f8;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px !important;
+}
+
+.soria .dijitToolbar .dijitButtonCheckedHover,
+.soria .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+ background-color:#9abbea;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px !important;
+}
+
+.soria .dijitToolbar .dijitButtonHover,
+.soria .dijitToolbar .dijitToggleButtonHover,
+.soria .dijitToolbar .dijitDropDownButtonHover {
+ /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
+ border: 1px solid #316ac5;
+ background-color:#9abbea;
+}
+
+.soria .dijitToolbar label {
+ padding: 3px 3px 0 6px;
+}
+
+.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused,
+.dj_ff2 .soria.dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ff2 .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+ border: 1px black dotted !important;
+}
+
+/* IE6 specific rules */
+.dj_ie6 .soria .dijitToolbar .dijitButton,
+.dj_ie6 .soria .dijitToolbar .dijitToggleButton,
+.dj_ie6 .soria .dijitToolbar .dijitDropDownButton {
+ /* workaround no transparent border support in IE6 */
+ margin: 2px;
+ padding: 0px 2px;
+ border: 0px;
+}
+
+.dj_ie6 .soria .dijitToolbar .dijitButtonChecked,
+.dj_ie6 .soria .dijitToolbar .dijitToggleButtonChecked,
+.dj_ie6 .soria .dijitToolbar .dijitDropDownButtonChecked {
+ background-color:#d8e5f8;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
+
+.dj_ie6 .soria .dijitToolbar .dijitButtonCheckedHover,
+.dj_ie6 .soria .dijitToolbar .dijitToggleButtonCheckedHover,
+.dj_ie6 .soria .dijitToolbar .dijitDropDownButtonCheckedHover {
+ background-color:#9abbea;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
+
+.dj_ie6 .soria .dijitToolbar .dijitButtonHover,
+.dj_ie6 .soria .dijitToolbar .dijitToggleButtonHover,
+.dj_ie6 .soria .dijitToolbar .dijitDropDownButtonHover {
+ background-color:#9abbea;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree.css
new file mode 100644
index 00000000..13fd98d0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree.css
@@ -0,0 +1,90 @@
+
+/* Tree */
+
+.soria .dijitTreeNode {
+ background : url('images/treeI.gif') no-repeat;
+ background-position : top left;
+ background-repeat : repeat-y;
+ margin-left: 19px;
+ zoom: 1; /* MOW: what the heck is this doing in here? */
+}
+
+/* left vertical line (grid) for all nodes */
+.soria .dijitTreeIsLast {
+ background: url('images/treeI_half.gif') no-repeat;
+}
+
+.soria .dijitTreeLabel {
+ font-weight: normal;
+ margin-left: 3px;
+}
+
+.soria .dijitTreeIsRoot {
+ margin-left: 0;
+ background-image: none;
+}
+
+.soria .dijitTreeExpando {
+ width: 18px;
+ height: 18px;
+}
+
+.soria .dijitTreeContent {
+ min-height: 18px;
+ min-width: 18px;
+ margin-left:18px;
+ padding-top:3px;
+ padding-left:1px;
+}
+
+
+.soria .dijitTreeExpand {
+ width: 18px;
+ height: 18px;
+ background-repeat : no-repeat;
+}
+
+/* same style as IE selection */
+.soria .dijitTreeNodeEmphasized {
+ background-color: Highlight;
+ color: HighlightText;
+}
+
+/* don't use :focus due to opera and IE's lack of support on div's */
+.soria .dijitTreeLabelFocused {
+ outline: 1px invert dotted;
+ background:#dde7f2;
+}
+
+.soria .dijitTreeExpandoOpened {
+ background: url('images/spriteTree.gif') no-repeat -18px top;
+}
+
+.soria .dijitTreeExpandoClosed {
+ background-image: url('images/spriteTree.gif');
+}
+
+.soria .dijitTreeExpandoLeaf {
+ background: url('images/spriteTree.gif') no-repeat -36px top;
+}
+
+.soria .dijitTreeExpandoLoading {
+ background-image: url('images/treeExpand_loading.gif');
+}
+
+.soria .dijitTreeIcon {
+ width: 16px;
+ height: 16px;
+}
+
+.soria .dijitFolderOpened {
+ background: url('images/spriteDivIcons.gif') no-repeat -16px top;
+}
+
+.soria .dijitFolderClosed {
+ background: url('images/spriteDivIcons.gif') no-repeat top left;
+}
+
+.soria .dijitLeaf {
+ background: url('images/spriteDivIcons.gif') no-repeat -32px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree_rtl.css
new file mode 100644
index 00000000..a35d56d6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/Tree_rtl.css
@@ -0,0 +1,38 @@
+
+
+/* Tree */
+.dijitRtl .dijitTreeContainer .dijitTreeNode {
+ background-image : url('images/treeI_rtl.gif');
+ background-position : top right;
+ margin-left: auto;
+ margin-right: 19px;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeIsRoot {
+ margin-left: auto;
+ margin-right: 0;
+ background-image: none;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeIsLast {
+ background-image: url('images/treeI_half_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeContent {
+ margin-left: auto;
+ margin-right: 18px;
+ padding-left: auto;
+ padding-right: 1px;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoOpened {
+ background: url('images/spriteTree_rtl.gif') no-repeat -18px top;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoClosed {
+ background-image: url('images/spriteTree_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoLeaf {
+ background: url('images/spriteTree_rtl.gif') no-repeat -36px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button.css
new file mode 100644
index 00000000..54ccdf1d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button.css
@@ -0,0 +1,109 @@
+
+/*****
+ dijit.form.Button
+ dijit.form.DropDownButton
+ dijit.form.ComboButton
+ dijit.form.ComboBox (partial)
+ *****/
+
+.soria .dijitButtonNode {
+ /* enabled state - inner */
+ /* border:1px outset #a0a0a0; */
+ border:1px solid #8ba0bd;
+ border-bottom:1px solid #657c9c;
+ border-right:1px solid #657c9c;
+ padding: 0.2em;
+ background:#bcd5f0 url("../images/buttonEnabled.png") repeat-x top left;
+}
+.dj_ie .soria .dijitButtonNode {
+ zoom: 1;
+}
+
+.soria .dijitButtonText {
+ padding: 0 0.3em;
+}
+
+.soria .dijitComboBox .dijitButtonNode {
+ border-width: 0px 0px 0px 1px;
+}
+
+.soria .dijitArrowButton {
+ color: #111;
+}
+
+.soria .dijitComboButton .dijitDownArrowButton {
+ padding-right:4px;
+}
+
+.dj_ff2 .soria .dijitComboButton .dijitButtonContentsFocused,
+.dj_ff2 .soria .dijitComboButton .dijitDownArrowButtonFocused {
+ border: 1px black dotted !important;
+}
+
+.soria .dijitButtonDisabled .dijitButtonNode,
+.soria .dijitToggleButtonDisabled .dijitButtonNode,
+.soria .dijitDropDownButtonDisabled .dijitButtonNode,
+.soria .dijitComboButtonDisabled .dijitButtonNode,
+.soria .dijitComboBoxDisabled,
+.soria .dijitSpinnerDisabled,
+.soria .dijitSpinnerDisabled .dijitButtonNode {
+ /* disabled state - inner */
+ border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
+ /*color:#b4b4b4;*/
+ background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x;
+ opacity: 0.60; /* Safari, Opera and Mozilla */
+}
+.dj_ie .soria .dijitButtonDisabled .dijitButtonNode *,
+.dj_ie .soria .dijitToggleButtonDisabled .dijitButtonNode *,
+.dj_ie .soria .dijitDropDownButtonDisabled .dijitButtonNode *,
+.dj_ie .soria .dijitComboButtonDisabled .dijitButtonNode *,
+.dj_ie .soria .dijitSpinnerDisabled .dijitButtonNode * {
+ filter: gray() alpha(opacity=50); /* IE */
+}
+
+.soria .dijitButtonHover .dijitButtonNode,
+.soria .dijitToggleButtonHover .dijitButtonNode,
+.soria .dijitDropDownButtonHover .dijitButtonNode,
+.soria .dijitComboButtonHover .dijitButtonContents,
+.soria .dijitComboButtonDownArrowHover .dijitDownArrowButton,
+.soria .dijitComboBoxHover .dijitDownArrowButton,
+.soria .dijitSpinnerUpArrowHover .dijitUpArrowButton,
+.soria .dijitSpinnerDownArrowHover .dijitDownArrowButton {
+ /* hover state - inner */
+ /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */
+ color:#000;
+ background:#acc5e2 url("../images/buttonHover.png") repeat-x top left;
+}
+
+.soria .dijitSpinnerUpArrowActive .dijitUpArrowButton,
+.soria .dijitSpinnerDownArrowActive .dijitDownArrowButton,
+.soria .dijitButtonActive .dijitButtonNode,
+.soria .dijitToggleButtonActive .dijitButtonNode,
+.soria .dijitDropDownButtonActive .dijitButtonNode,
+.soria .dijitComboButtonActive .dijitButtonContents,
+.soria .dijitDownArrowActive .dijitDownArrowButton,
+.soria .dijitComboBoxActive .dijitDownArrowButton {
+ /* active state - inner (for when you are pressing a normal button, or
+ * when a toggle button is in a depressed state
+ */
+ border-color:#657c9c;
+ background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
+}
+
+
+.soria .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.png") no-repeat left top;
+ width: 11px;
+}
+.soria .dijitUpArrowButton .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.png") no-repeat -22px top;
+ width: 11px;
+}
+.dj_ie6 .soria .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.gif") no-repeat left top;
+ width: 11px;
+}
+.dj_ie6 .soria .dijitUpArrowButton .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.gif") no-repeat -22px top;
+ width: 11px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button_rtl.css
new file mode 100644
index 00000000..a99cc721
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Button_rtl.css
@@ -0,0 +1,3 @@
+.dijitRtl .dijitComboBox .dijitButtonNode {
+ border-width: 0px 0px 0px 1px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Checkbox.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Checkbox.css
new file mode 100644
index 00000000..6ba5b086
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Checkbox.css
@@ -0,0 +1,69 @@
+
+/*
+ * CheckBox and Radio Widgets,
+ * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
+ *
+ * Order of images in the default sprite (from L to R, checkbox and radio in same image):
+ * checkbox normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+ *
+ * radio normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+*/
+
+.soria .dijitToggleButton .dijitCheckBox,
+.soria .dijitToggleButton .dijitCheckBoxIcon {
+ background-image: url('../images/spriteCheckbox.gif');
+}
+
+.soria .dijitCheckBox,
+.soria .dijitCheckBoxIcon { /* inside a toggle button */
+ background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 0;
+ padding: 0;
+}
+
+.soria .dijitCheckBox,
+.soria .dijitToggleButton .dijitCheckBoxIcon {
+ /* unchecked */
+ background-position: -16px;
+}
+
+.soria .dijitCheckBoxChecked,
+.soria .dijitToggleButtonChecked .dijitCheckBoxIcon {
+ /* checked */
+ background-position: 0px;
+}
+
+.soria .dijitCheckBoxDisabled {
+ /* disabled */
+ background-position: -48px;
+}
+
+.soria .dijitCheckBoxCheckedDisabled {
+ /* disabled but checked */
+ background-position: -32px;
+}
+
+.soria .dijitCheckBoxHover,
+.soria .dijitCheckBoxFocused {
+ /* hovering over an unchecked enabled checkbox */
+ background-position: -80px;
+}
+
+.soria .dijitCheckBoxCheckedHover,
+ .soria .dijitCheckBoxCheckedFocused {
+ /* hovering over a checked enabled checkbox */
+ background-position: -64px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/ComboBox.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/ComboBox.css
new file mode 100644
index 00000000..71e79e86
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/ComboBox.css
@@ -0,0 +1,7 @@
+.soria .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
+ background:url("../images/spriteArrows.png") no-repeat left center;
+ width: 11px;
+}
+.soria .dijitComboBoxHover .dijitArrowButtonInner {
+ /* TODO: url("images/arrowDownHover.png") but in IE6 it flickers some? */
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common.css
new file mode 100644
index 00000000..1aaf6a4d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common.css
@@ -0,0 +1,82 @@
+
+/****
+ dijit.form.TextBox
+ dijit.form.ValidationTextBox
+ dijit.form.SerializableTextBox
+ dijit.form.RangeBoundTextBox
+ dijit.form.NumberTextBox
+ dijit.form.CurrencyTextBox
+ dijit.form.NumberSpinner
+ dijit.form.ComboBox (partial)
+ ****/
+
+.soria .dijitInputField INPUT,
+.soria .dijitTextBox,
+.soria .dijitComboBox,
+.soria .dijitSpinner {
+ margin: 0em 0.1em;
+}
+
+.soria .dijitTextBox,
+.soria .dijitComboBox,
+.soria .dijitSpinner,
+.soria .dijitInlineEditor input,
+.soria .dijitTextArea {
+ /* For all except dijit.form.NumberSpinner: the actual input element.
+ For TextBox, ComboBox, Spinner: the table that contains the input.
+ Otherwise the actual input element.
+ */
+ background:#fff url("../images/validationInputBg.png") repeat-x top left;
+ #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+ border:1px solid #8ba0bd;
+ line-height: normal;
+}
+
+.soria .dijitComboBox .dijitButtonNode {
+ padding: 0 0.2em;
+}
+.soria .dijitComboBox .dijitButtonNode,
+.soria .dijitSpinner .dijitButtonNode {
+ /* line between the input area and the drop down button */
+ border-color: #8ba0bd;
+ border-left: 1px solid #8ba0bd;
+}
+
+.soria .dijitTextBoxFocused,
+.soria .dijitComboBoxFocused,
+.soria .dijitSpinnerFocused {
+ /* input field when focused (ie: typing affects it) */
+ border-color:#406b9b;
+}
+.soria .dijitComboBoxFocused .dijitButtonNode, .soria .dijitSpinnerFocused .dijitButtonNode {
+ border-left-color:#8ba0bd;
+}
+.soria .dijitSpinnerFocused .dijitDownArrowButton {
+ border-top-color:#8ba0bd;
+}
+
+.soria .dijitError {
+ border-color:#f3d118;
+ background-color:#f9f7ba;
+ background-image:none;
+}
+.dj_ie6 .soria .dijitError INPUT {
+ /* background-color: transparent on an doesn't work on IE6 */
+ background-color:#f9f7ba !important;
+}
+
+.soria .dijitErrorFocused {
+ background-color:#ff6;
+ background-image:none;
+}
+.dj_ie6 .soria .dijitErrorFocused INPUT {
+ /* background-color: transparent on an doesn't work on IE6 */
+ background-color:#ff6 !important;
+}
+
+/* Validation errors */
+.soria .dijitValidationIcon {
+ /* prevent height change when widget goes from valid to invalid state */
+ width: 16px;
+ background: transparent url('../images/warning.png') no-repeat center center;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common_rtl.css
new file mode 100644
index 00000000..22d6b34b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Common_rtl.css
@@ -0,0 +1,7 @@
+.dijitRtl .dijitComboBox .dijitButtonNode,
+.dijitRtl .dijitSpinner .dijitButtonNode {
+ /* line between the input area and the drop down button */
+ border-color: #8ba0bd;
+ border-left: 0px solid #8ba0bd;
+ border-right: 1px solid #8ba0bd;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/RadioButton.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/RadioButton.css
new file mode 100644
index 00000000..0ecd7e49
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/RadioButton.css
@@ -0,0 +1,68 @@
+/*
+ * CheckBox and Radio Widgets,
+ * and the CSS to embed a checkbox or radio icon inside a ToggleButton.
+ *
+ * Order of images in the default sprite (from L to R, checkbox and radio in same image):
+ * checkbox normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+ *
+ * radio normal - checked
+ * - unchecked
+ * disabled - checked
+ * - unchecked
+ * hover - checked
+ * - unchecked
+*/
+
+.soria .dijitToggleButton .dijitRadio,
+.soria .dijitToggleButton .dijitRadioIcon {
+ background-image: url('../images/spriteRadio.gif');
+}
+
+.soria .dijitRadio,
+.soria .dijitRadioIcon { /* inside a toggle button */
+ background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 0;
+ padding: 0;
+}
+
+.soria .dijitRadio,
+.soria .dijitToggleButton .dijitRadioIcon {
+ /* unselected */
+ background-position: -16px;
+}
+
+.soria .dijitRadioChecked,
+.soria .dijitToggleButtonChecked .dijitRadioIcon {
+ /* selected */
+ background-position: 0px;
+}
+
+.soria .dijitRadioCheckedDisabled {
+ /* selected but disabled */
+ background-position: -48px;
+}
+
+.soria .dijitRadioDisabled {
+ /* unselected and disabled */
+ background-position: -32px;
+}
+
+.soria .dijitRadioHover,
+.soria .dijitRadioFocused {
+ /* hovering over an unselected enabled radio button */
+ background-position: -80px;
+}
+
+.soria .dijitRadioCheckedHover,
+.soria .dijitRadioCheckedFocused {
+ /* hovering over a selected enabled radio button */
+ background-position: -64px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider.css
new file mode 100644
index 00000000..dad393da
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider.css
@@ -0,0 +1,136 @@
+
+/****
+ SLIDER
+****/
+
+.soria .dijitSliderProgressBarH {
+ border-color: #b1badf;
+ background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+
+.soria .dijitSliderProgressBarV {
+ border-color: #b1badf;
+ background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+
+.soria .dijitSliderFocused .dijitSliderProgressBarH,
+.soria .dijitSliderFocused .dijitSliderLeftBumper {
+ background-image:url("../images/sliderFullFocus.png");
+}
+
+.soria .dijitSliderFocused .dijitSliderProgressBarV,
+.soria .dijitSliderFocused .dijitSliderBottomBumper {
+ background-image:url("../images/sliderFullVerticalFocus.png");
+}
+
+.soria .dijitSliderRemainingBarV {
+ border-color: #b4b4b4;
+ background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
+}
+
+.soria .dijitSliderRemainingBarH {
+ border-color: #b4b4b4;
+ background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+}
+
+.soria .dijitSliderBar {
+ border-style: solid;
+ outline:1px;
+ /* border-color: #b4b4b4; */
+}
+.soria .dijitSliderFocused .dijitSliderBar {
+ border-color:#8ba0bd;
+}
+
+.dijit_a11y .dijitSliderProgressBar {
+ background-color:#333 !important;
+}
+
+.soria .dijitSliderImageHandleH {
+ border:0px;
+ width:15px;
+ height:18px;
+ background:url("../images/preciseSliderThumb.png") no-repeat center top;
+ cursor:pointer;
+}
+.soria .dijitSliderFocused .dijitSliderImageHandleH {
+ background-image:url("../images/preciseSliderThumbFocus.png");
+ #background-image:url("../images/preciseSliderThumbFocus.gif");
+}
+
+.dj_ie6 .soria .dijitSliderImageHandleH {
+ background-image:url("../images/preciseSliderThumb.gif");
+}
+
+.soria .dijitSliderLeftBumper {
+ border-left-width: 1px;
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+
+.soria .dijitSliderRightBumper {
+ background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+ border-color: #b4b4b4;
+ border-right-width: 1px;
+}
+
+.soria .dijitSliderImageHandleV {
+ border:0px;
+ width:20px;
+ height:15px;
+ background:url("../images/sliderThumb.png") no-repeat center center;
+ cursor:pointer;
+}
+
+.soria .dijitSliderFocused .dijitSliderImageHandleV {
+ background-image:url("../images/sliderThumbFocus.png");
+}
+.dj_ie6 .soria .dijitSliderFocused .dijitSliderImageHandleV {
+ background-image:url("../images/sliderThumbFocus.gif");
+}
+
+.soria .dijitSliderBottomBumper {
+ border-bottom-width: 1px;
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+
+.soria .dijitSliderTopBumper {
+ background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
+ border-color: #b4b4b4;
+ border-top-width: 1px;
+}
+
+.soria .dijitSliderIncrementIconH,
+.soria .dijitSliderIncrementIconV {
+ background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top;
+ width:15px; height:15px;
+ cursor:pointer;
+}
+.soria .dijitSliderIncrementIconH {
+ background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+}
+
+.soria .dijitSliderDecrementIconH,
+.soria .dijitSliderDecrementIconV {
+ width:15px;
+ height:15px;
+ cursor:pointer;
+ background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+}
+.soria .dijitSliderDecrementIconH { background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top; }
+
+.soria .dijitSliderButtonInner {
+ visibility:hidden;
+}
+
+.soria .dijitSliderDisabled {
+ opacity:0.6 !important;
+}
+
+.dj_ie6 .soria .dijitSliderDisabled,
+.dj_ie6 .soria .dijitSliderDisabled .dijitRuleContainer,
+.dj_ie6 .soria .dijitSliderDisabled .dijitSliderRemainingBar,
+.dj_ie6 .soria .dijitSliderDisabled .dijitSliderProgressBar {
+ filter: gray() alpha(opacity=40);
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider_rtl.css
new file mode 100644
index 00000000..069d4fec
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Slider_rtl.css
@@ -0,0 +1,34 @@
+
+/* Slider */
+
+.dijitRtl .dijitSliderProgressBarH,
+.dijitRtl .dijitSliderRemainingBarH,
+.dijitRtl .dijitSliderLeftBumper,
+.dijitRtl .dijitSliderRightBumper,
+.dijitRtl .dijitSliderTopBumper {
+ background-position: top right;
+}
+
+.dijitRtl .dijitSliderProgressBarV,
+.dijitRtl .dijitSliderRemainingBarV,
+.dijitRtl .dijitSliderBottomBumper {
+ background-position: bottom right;
+}
+
+.dijitRtl .dijitSliderLeftBumper {
+ border-left-width: 0px;
+ border-right-width: 1px;
+}
+
+.dijitRtl .dijitSliderRightBumper {
+ border-left-width: 1px;
+ border-right-width: 0px;
+}
+
+.dijitRtl .dijitSliderIncrementIconH {
+ background-image:url('../images/arrowLeft.png');
+}
+
+.dijitRtl .dijitSliderDecrementIconH {
+ background-image:url('../images/arrowRight.png');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Textarea.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Textarea.css
new file mode 100644
index 00000000..79ed2b15
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/Textarea.css
@@ -0,0 +1,15 @@
+.soria .dijitTextBox {
+ margin: 0em 0.1em;
+}
+
+.soria .dijitTextBox,
+.soria .dijitTextArea {
+ /* For all except dijit.form.NumberSpinner: the actual input element.
+ For TextBox, ComboBox, Spinner: the table that contains the input.
+ Otherwise the actual input element.
+ */
+ background:#fff url("../images/validationInputBg.png") repeat-x top left;
+ #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+ border:1px solid #c4c4c4;
+ line-height: normal;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/TimeTextBox.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/TimeTextBox.css
new file mode 100644
index 00000000..bf67b66d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/form/TimeTextBox.css
@@ -0,0 +1 @@
+@CHARSET "UTF-8";
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.gif
new file mode 100644
index 00000000..249a1533
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.png
new file mode 100644
index 00000000..92c74315
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/accordionItemActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonActive.png
new file mode 100644
index 00000000..f8159838
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonDisabled.png
new file mode 100644
index 00000000..f76e4ab5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonEnabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonEnabled.png
new file mode 100644
index 00000000..3c55c834
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonEnabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonHover.png
new file mode 100644
index 00000000..a22ebdac
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/buttonHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndCopy.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndCopy.png
new file mode 100644
index 00000000..baecd7cf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndCopy.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndMove.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndMove.png
new file mode 100644
index 00000000..07f878cf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndMove.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoCopy.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoCopy.png
new file mode 100644
index 00000000..9bf9c339
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoCopy.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoMove.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoMove.png
new file mode 100644
index 00000000..cb8bd8bd
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/dndNoMove.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor.gif
new file mode 100644
index 00000000..1c96329c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor_rtl.gif
new file mode 100644
index 00000000..ef049380
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/editor_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.gif
new file mode 100644
index 00000000..53b33e54
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.png
new file mode 100644
index 00000000..045bf35e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.gif
new file mode 100644
index 00000000..8c6f92eb
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.png
new file mode 100644
index 00000000..c2358495
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/preciseSliderThumbFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarAnim.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarAnim.gif
new file mode 100644
index 00000000..73e25e17
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarAnim.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarEmpty.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarEmpty.png
new file mode 100644
index 00000000..04d81df0
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarEmpty.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarFull.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarFull.png
new file mode 100644
index 00000000..bed17b39
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/progressBarFull.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmpty.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmpty.png
new file mode 100644
index 00000000..99fbd727
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmpty.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmptyVertical.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmptyVertical.png
new file mode 100644
index 00000000..2d497e3e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderEmptyVertical.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFull.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFull.png
new file mode 100644
index 00000000..171eb54d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFull.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullFocus.png
new file mode 100644
index 00000000..0956a726
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVertical.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVertical.png
new file mode 100644
index 00000000..35845daf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVertical.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVerticalFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVerticalFocus.png
new file mode 100644
index 00000000..9b158bb0
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderFullVerticalFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumb.png
new file mode 100644
index 00000000..b6abbd2f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.gif
new file mode 100644
index 00000000..f8d306fe
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.png
new file mode 100644
index 00000000..73ee7056
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/sliderThumbFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH-thumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH-thumb.png
new file mode 100644
index 00000000..0e8f3972
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH-thumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH.png
new file mode 100644
index 00000000..7cdf79a9
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerH.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV-thumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV-thumb.png
new file mode 100644
index 00000000..7f12fed5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV-thumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV.png
new file mode 100644
index 00000000..9ff14d64
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/splitContainerSizerV.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.gif
new file mode 100644
index 00000000..fc81207e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.png
new file mode 100644
index 00000000..73aa7009
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteArrows.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.gif
new file mode 100644
index 00000000..d2c4ebfa
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.png
new file mode 100644
index 00000000..e9923307
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteCheckbox.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.gif
new file mode 100644
index 00000000..f5c58e47
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.png
new file mode 100644
index 00000000..d76325f3
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteDivIcons.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.gif
new file mode 100644
index 00000000..8dd6e578
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.png
new file mode 100644
index 00000000..14c1080e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRadio.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
new file mode 100644
index 00000000..795ea848
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.png
new file mode 100644
index 00000000..10c0d139
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmall.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
new file mode 100644
index 00000000..67581811
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
new file mode 100644
index 00000000..2c9f51a7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.gif
new file mode 100644
index 00000000..e546e281
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.png
new file mode 100644
index 00000000..33ae07be
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.gif
new file mode 100644
index 00000000..bbcc64be
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.png
new file mode 100644
index 00000000..b06afdb8
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/spriteTree_rtl.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveC.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveC.gif
new file mode 100644
index 00000000..fb61df9a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveC.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif
new file mode 100644
index 00000000..7c2ed86d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledC.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledC.gif
new file mode 100644
index 00000000..0a5f0f8e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledC.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
new file mode 100644
index 00000000..a77da39b
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverC.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverC.gif
new file mode 100644
index 00000000..47b9da29
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverC.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif
new file mode 100644
index 00000000..59f3edd6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabContainerSprite.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabContainerSprite.gif
new file mode 100644
index 00000000..f0b38421
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabContainerSprite.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabLeftChecked.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabLeftChecked.gif
new file mode 100644
index 00000000..3e7475aa
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabLeftChecked.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabRightChecked.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabRightChecked.gif
new file mode 100644
index 00000000..ec4b6593
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabRightChecked.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripe.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripe.gif
new file mode 100644
index 00000000..51a2d40a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripe.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeBottom.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeBottom.gif
new file mode 100644
index 00000000..41b1ac0f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeBottom.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeLeft.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeLeft.gif
new file mode 100644
index 00000000..b2214fa4
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeLeft.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeRight.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeRight.gif
new file mode 100644
index 00000000..bff31155
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tabStripeRight.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBar.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBar.png
new file mode 100644
index 00000000..cbf98da7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBar.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBarActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBarActive.png
new file mode 100644
index 00000000..92c74315
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/titleBarActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.gif
new file mode 100644
index 00000000..9c384955
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.png
new file mode 100644
index 00000000..d75af71f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorDown.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.gif
new file mode 100644
index 00000000..fc947e0a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.png
new file mode 100644
index 00000000..f3de66a7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorLeft.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.gif
new file mode 100644
index 00000000..b0e8097f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.png
new file mode 100644
index 00000000..ed6efc46
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorRight.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.gif
new file mode 100644
index 00000000..54bcf652
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.png
new file mode 100644
index 00000000..7f7a5d8f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/tooltipConnectorUp.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeExpand_loading.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeExpand_loading.gif
new file mode 100644
index 00000000..db9ddd02
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeExpand_loading.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI.gif
new file mode 100644
index 00000000..6f669e24
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half.gif
new file mode 100644
index 00000000..e5fd0155
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half_rtl.gif
new file mode 100644
index 00000000..44ad021a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_half_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_rtl.gif
new file mode 100644
index 00000000..0d32a2f7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/treeI_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.gif b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.gif
new file mode 100644
index 00000000..c28475c8
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.png
new file mode 100644
index 00000000..f3039f95
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/validationInputBg.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/warning.png b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/warning.png
new file mode 100644
index 00000000..c52f83dc
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/soria/images/warning.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer.css
new file mode 100644
index 00000000..903a0580
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer.css
@@ -0,0 +1,48 @@
+/**
+ * dijit.layout.Accordioncontainer
+ *
+ */
+
+.soria .dijitAccordionContainer {
+ border-color: #b1badf;
+}
+
+.soria .dijitAccordionPane {
+ background-color: #e7e7e7;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #373941;
+}
+
+.soria .dijitAccordionTitle {
+ background:#fafafa url("../images/titleBar.png") repeat-x top left;
+ border-top: 1px solid #b9bbdd;
+ padding: 5px 4px 6px 8px;
+ cursor:pointer;
+}
+
+.soria .dijitAccordionTitle-selected {
+ background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x;
+ font-weight: bold;
+ border-top: 1px solid #b9bbdd;
+ border-bottom: 1px solid #b9bbdd;
+ padding: 5px 4px 5px 8px;
+ cursor: default;
+ color: #243C5F;
+}
+
+.soria .dijitAccordionArrow {
+ background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat;
+ width:15px;
+ height:15px;
+ margin-top:-1px;
+}
+
+.soria .dijitAccordionTitle-selected .dijitAccordionArrow {
+ background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top;
+ margin-top:-1px;
+}
+
+.soria .dijitAccordionBody {
+ background: #fff;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer_rtl.css
new file mode 100644
index 00000000..4ceda54c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/AccordionContainer_rtl.css
@@ -0,0 +1,3 @@
+.dijitRtl .dijitAccordionArrow {
+ background-position: -30px top;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/BorderContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/BorderContainer.css
new file mode 100644
index 00000000..f24c7408
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/BorderContainer.css
@@ -0,0 +1,34 @@
+/**
+ * dijit.layout.BorderContainer
+ *
+ */
+
+.soria .dijitSplitterH {
+ background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+ border:0;
+ border-left:0px solid #d3d3d3;
+ border-right:0px solid #d3d3d3;
+ height:5px;
+}
+
+.soria .dijitSplitterH .dijitSplitterThumb {
+ background:url("../images/splitContainerSizerH-thumb.png") no-repeat;
+ top:1px;
+ width:19px;
+ height:2px;
+}
+
+.soria .dijitSplitterV {
+ background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+ border:0;
+ border-top:0px solid #d3d3d3;
+ border-bottom:0px solid #d3d3d3;
+ width:5px;
+}
+
+.soria .dijitSplitterV .dijitSplitterThumb {
+ background:url("../images/splitContainerSizerV-thumb.png") no-repeat;
+ left:1px;
+ height:19px;
+ width:5px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/SplitContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/SplitContainer.css
new file mode 100644
index 00000000..d350ed73
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/SplitContainer.css
@@ -0,0 +1,34 @@
+/**
+ * dijit.layout.SplitContainer
+ *
+ */
+
+.soria .dijitSplitContainerSizerH {
+ background:url("../images/splitContainerSizerV.png") repeat-y #cddef4;
+ border:0;
+ border-left:0px solid #436496;
+ border-right:0px solid #436496;
+ width:5px;
+}
+
+.soria .dijitSplitContainerSizerH .thumb {
+ background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc;
+ left:1px;
+ width:2px;
+ height:19px;
+}
+
+.soria .dijitSplitContainerSizerV {
+ background:url("../images/splitContainerSizerH.png") repeat-x #cddef4;
+ border:0;
+ border-top:0px solid #436496;
+ border-bottom:0px solid #436496;
+ height:2px;
+}
+
+.soria .dijitSplitContainerSizerV .thumb {
+ background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc;
+ top:1px;
+ width:19px;
+ height:5px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer.css
new file mode 100644
index 00000000..c559cfcf
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer.css
@@ -0,0 +1,372 @@
+/**
+ * dijit.layout.TabContainer
+ *
+ * To style TabContainer with rounded corners
+ * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right)
+ * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe
+ */
+
+/* Classes for all types of tabs (top/bottom/left/right) */
+
+.soria .dijitTabPaneWrapper { /* Container for tab content */
+ /*
+ overflow: hidden;
+ */
+ background:#fff;
+ border:1px solid #b1badf;
+}
+
+.soria .dijitTab {
+ line-height:normal;
+ margin-right:3px; /* space between one tab and the next in top/bottom mode */
+ padding:0px;
+ background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #373941;
+ margin-bottom: -1px;
+}
+
+.soria dijitTabChecked {
+ margin-bottom: -2px;
+}
+
+.soria .dijitTabInnerDiv .dijitTabContent {
+ padding:8px 10px 4px 10px;
+ background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px;
+}
+
+.soria .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabContainerSprite.gif") no-repeat;
+ background-position: right -400px;
+ border: none;
+}
+
+.soria .dijitTabHover,
+.soria .dijitTabCloseButtonHover {
+ color: #243C5F;
+ background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px;
+}
+
+.soria .dijitTabHover .dijitTabInnerDiv,
+.soria .dijitTabCloseButtonHover .dijitTabInnerDiv {
+ background: url("../images/tabContainerSprite.gif") no-repeat right -250px;
+ border: none;
+}
+
+.soria .dijitTabHover .dijitTabInnerDiv .dijitTabContent,
+.soria .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;
+ padding:8px 10px 4px 10px;
+}
+
+.soria .dijitTabChecked,
+.soria .dijitTabCloseButtonChecked
+{
+ /* the selected tab (with or without hover) */
+ background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px;
+}
+
+.soria .dijitTabChecked .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabContainerSprite.gif") no-repeat right -100px;
+ border: none;
+}
+
+.soria .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px;
+ padding:8px 10px 5px 10px;
+ color: #243C5F !important;
+}
+
+/* top specific classes */
+
+.soria .dijitTabLabels-top {
+ border-left: 1px solid #b1badf;
+ border-top: 1px solid #b1badf;
+ border-right: 1px solid #b1badf;
+ padding-top: 2px;
+ padding-left: 3px;
+ padding-right: 3px;
+ background: #F0F4FC url("../images/tabStripe.gif") repeat-x left bottom;
+ padding-bottom: 4px;
+}
+/*
+.soria .dijitAlignTop .dijitTabStripe {
+ background: url("../images/tabStripe.gif") repeat-x left bottom;
+ padding-left: 2px;
+ padding-top: 0px;
+ height: 4px;
+ clear: both;
+ font-size: 1px;
+ margin-left: -3px;
+}
+*/
+
+.soria .dijitAlignLeft .dijitTab,
+.soria .dijitAlignRight .dijitTab {
+ margin-right:0px;
+ margin-bottom:5px; /* space between one tab and the next in left/right mode */
+}
+
+/* make the active tab white on the side next to the content pane */
+.soria .dijitAlignTop .dijitTabChecked,
+.soria .dijitAlignTop .dijitTabCloseButtonChecked
+{
+ border-bottom-color:white;
+ vertical-align:bottom;
+}
+
+.soria .dijitAlignBottom .dijitTabChecked,
+.soria .dijitAlignBottom .dijitTabCloseButtonChecked
+{
+ border-top-color:white;
+ /*-moz-border-radius:2px 2px 0px 0px; eliminate some border detritrus on moz */
+}
+
+.soria .dijitAlignLeft .dijitTabChecked,
+.soria .dijitAlignLeft .dijitTabCloseButtonChecked
+{
+ border-right-color:white;
+}
+
+.soria .dijitAlignRight .dijitTabChecked,
+.soria .dijitAlignRight .dijitTabCloseButtonChecked
+{
+ border-left-color:white;
+}
+
+/* bottom specific classes */
+
+.soria .dijitTabLabels-bottom {
+ padding-bottom: 2px;
+ padding-left: 3px;
+ background-color: #f0f4fc;
+ border-left: 1px solid #b1badf;
+ border-bottom: 1px solid #b1badf;
+ border-right: 1px solid #b1badf;
+ background: #F0F4FC url("../images/tabStripeBottom.gif") repeat-x left top;
+ padding-top: 3px;
+ padding-right: 3px;
+}
+/*
+.soria .dijitAlignBottom .dijitTabStripe {
+ background: url("../images/tabStripe.gif") repeat-x left bottom;
+ padding-left: 2px;
+ padding-top: 0px;
+ height: 4px;
+ clear: both;
+ font-size: 1px;
+ margin-left: -3px;
+}
+*/
+.soria .dijitAlignBottom .dijitTab {
+ line-height:normal;
+ margin-right:3px; /* space between one tab and the next in top/bottom mode */
+ padding:0px;
+ background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left;
+ font-size: 0.9em;
+ font-weight: bold;
+ color: #373941;
+ margin-bottom: 0px;
+ margin-top: 1px;
+}
+
+.soria .dijitAlignBottom .dijitTabChecked {
+ margin-bottom: 0px;
+ margin-top: 0px !important;
+}
+
+.soria .dijitAlignBottom .dijitTabInnerDiv .dijitTabContent {
+ padding:6px 10px 6px 10px;
+ background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;
+}
+
+.soria .dijitAlignBottom .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right;
+ border: none;
+}
+
+.soria .dijitAlignBottom .dijitTabHover,
+.soria .dijitAlignBottom .dijitTabCloseButtonHover {
+ color: #243C5F;
+ background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left;
+}
+
+.soria .dijitAlignBottom .dijitTabHover .dijitTabInnerDiv,
+.soria .dijitAlignBottom .dijitTabCloseButtonHover .dijitTabInnerDiv {
+ background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right;
+ border: none;
+}
+
+.soria .dijitAlignBottom .dijitTabHover .dijitTabInnerDiv .dijitTabContent,
+.soria .dijitAlignBottom .dijitTabCloseButtonHover .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;
+ padding:6px 10px 6px 10px;
+}
+
+.dj_ie6 .soria .dijitAlignBottom .dijitTabHover,
+.dj_ie6 .soria .dijitAlignBottom .dijitTabCloseButtonHover {
+ background-image: url("../images/tabHover.gif");
+}
+
+.soria .dijitAlignBottom .dijitTabChecked,
+.soria .dijitAlignBottom .dijitTabCloseButtonChecked
+{
+ /* the selected tab (with or without hover) */
+ background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left;
+}
+
+.soria .dijitAlignBottom .dijitTabChecked .dijitTabInnerDiv {
+ padding:0px 10px 0px 10px;
+ background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right;
+ border: none;
+}
+
+.soria .dijitAlignBottom .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+ background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;
+ padding:7px 10px 6px 10px;
+}
+
+/* left specific classes */
+.soria .dijitAlignLeft .dijitTab {
+ margin-right: 1px !important;
+}
+
+.soria .dijitAlignLeft .dijitTabChecked {
+ margin-right: 0px !important;
+}
+
+.soria .dijitAlignLeft .dijitTabChecked .dijitTabInnerDiv {
+ background: url("../images/tabLeftChecked.gif") no-repeat right top !important;
+ padding-left: 10px;
+ border-bottom: 1px solid #8ba0bd !important;
+}
+
+.soria .dijitAlignLeft .dijitTabInnerDiv {
+ background: url("../images/tabContainerSprite.gif") no-repeat right -350px;
+ padding-left: 10px;
+ border-bottom: 1px solid #b9bbdd;
+}
+.soria .dijitAlignLeft .dijitTabHover .dijitTabInnerDiv {
+ background: url("../images/tabContainerSprite.gif") no-repeat right -200px;
+ padding-left: 10px;
+ border-bottom: 1px solid #b9bbdd;
+}
+
+.soria .dijitTabLabels-left-h {
+ padding-left: 2px;
+ padding-top: 3px;
+ background-color: #f0f4fc;
+ border-left: 1px solid #b1badf;
+ border-bottom: 1px solid #b1badf;
+ border-top: 1px solid #b1badf;
+ background: #F0F4FC url("../images/tabStripeLeft.gif") repeat-y right top;
+ padding-right: 3px;
+}
+
+.soria .dijitAlignLeft .dijitTabInnerDiv .dijitTabContent {
+ padding:7px 10px 6px 10px !important;
+}
+
+/* right specific classes */
+.soria .dijitTabLabels-right-h {
+ padding-right: 2px;
+ padding-top: 3px;
+ background-color: #f0f4fc;
+ border-right: 1px solid #b1badf;
+ border-bottom: 1px solid #b1badf;
+ border-top: 1px solid #b1badf;
+ background: #F0F4FC url("../images/tabStripeRight.gif") repeat-y left top;
+ padding-left: 3px;
+}
+
+.soria .dijitAlignRight .dijitTab {
+ margin-left: 1px;
+}
+
+.soria .dijitAlignRight .dijitTabChecked {
+ margin-left: 0px;
+}
+
+.soria .dijitAlignRight .dijitTabChecked {
+ background: url("../images/tabRightChecked.gif") no-repeat left top !important;
+}
+
+.soria .dijitAlignRight .dijitTab {
+ background: url("../images/tabContainerSprite.gif") no-repeat left -350px;
+}
+.soria .dijitAlignRight .dijitTabHover .dijitTab {
+ background: url("../images/tabContainerSprite.gif") no-repeat left -200px;
+}
+.soria .dijitAlignRight .dijitTabInnerDiv .dijitTabContent {
+ padding:7px 10px 6px 10px !important;
+}
+
+.soria .dijitAlignRight .dijitTabChecked .dijitTabInnerDiv {
+ border-bottom: 1px solid #8ba0bd !important;
+}
+
+.soria .dijitAlignRight .dijitTabInnerDiv {
+ border-bottom: 1px solid #b9bbdd;
+}
+.soria .dijitAlignRight .dijitTabHover .dijitTabInnerDiv {
+ border-bottom: 1px solid #b9bbdd;
+}
+
+/* make space for a positioned close button */
+.soria .dijitTab .dijitClosable {
+ position: relative;
+ padding-left: 10px !important;
+ padding-right: 20px !important;
+}
+
+.soria .dijitTab img {
+ padding: 0;
+ margin: 0;
+}
+
+.soria .dijitTab .dijitClosable .closeImage {
+ position:absolute;
+ top: 5px;
+ right: 5px;
+ height: 15px;
+ width: 15px;
+ padding: 0;
+ margin: 0;
+ background: url("../images/spriteRoundedIconsSmallBl.png") no-repeat -60px top;
+}
+.dj_ie6 .dijitTab .dijitClosable .closeImage {
+ background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -60px top;
+}
+.dj_ie6 .soria .dijitTabCloseButton .dijitClosable .closeImage {
+ background: url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -60px top;
+}
+
+.soria .dijitTabHover .dijitClosable .closeImage {
+ background: url("../images/spriteRoundedIconsSmallBl.png") no-repeat -60px -15px !important;
+}
+.dj_ie6 .soria .dijitTabHover .dijitClosable .closeImage {
+ background: url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -60px -15px !important;
+}
+
+/* correct for IE6.
+ We cant force hasLayout as that blows out the shrink wrapped tabs
+ ..so we shim in the closeImage position properties instead
+*/
+.dj_ie6 .soria .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ left:-20px;
+}
+
+.soria .dijitAlignBottom .dijitTab .dijitClosable .closeImage {
+ top: auto;
+ bottom: 7px;
+ right: 3px;
+}
+
+.soria .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ top: 7px;
+ left: 3px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer_rtl.css
new file mode 100644
index 00000000..bf6587e5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/layout/TabContainer_rtl.css
@@ -0,0 +1,69 @@
+/* TabContainer */
+
+.dijitRtl .dijitTab {
+ margin-right:0;
+ margin-left:3px; /* space between one tab and the next in top/bottom mode */
+}
+
+.dijitRtl .dijitTab .dijitTabInnerDiv {
+ border-left:none;
+}
+
+.dijitRtl .dijitTab .dijitClosable {
+ padding: 0 10px 0 20px;
+}
+
+.dijitRtl .dijitTab .closeImage {
+ position:static;
+}
+
+.dj_gecko .dijitTab .closeImage {
+ position:relative;
+ float:none;
+ padding:0;
+}
+
+.dijitRtl .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+ background-position: -60px top;
+}
+
+.dj_ie .dijitRtl .dijitTab .dijitClosable .closeImage {
+ width:12px !important;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab,
+.dijitRtl .dijitAlignRight .dijitTab {
+ margin-left:0px;
+}
+
+.dijitRtl .dijitAlignBottom .dijitTab {
+ margin-right:0;
+ margin-left:3px; /* space between one tab and the next in top/bottom mode */
+}
+
+.dijitRtl .dijitAlignBottom .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+}
+
+.dijitRtl .dijitAlignRight .dijitTab .dijitTabInnerDiv {
+ padding-left:10px;
+ padding-right:20px;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab .dijitTabInnerDiv {
+ padding-left:20px;
+ padding-right:10px;
+}
+
+.dijitRtl .dijitAlignRight .dijitTab .dijitClosable .closeImage {
+ left:auto;
+ right:3px;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria.css
new file mode 100644
index 00000000..91652bea
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria.css
@@ -0,0 +1,39 @@
+/*
+ Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
+
+ NOTES:
+ ---
+ Dialog.css contains css classes for both Dialog and Tooltip!
+ This because currently a dijit.TooltipDialog exist. Until this is resolved
+ you need to include Dialog.css for both dijits
+ ---
+ Toolbar.css contains classes also used in Editor. Until this is resolved
+ you need to include Toolbar.css for both Toolbar and Editor
+ ---
+ Button.css contains classes for combobox,
+
+*/
+
+@import url("../dijit.css");
+@import url("Common.css");
+
+@import url("layout/TabContainer.css");
+@import url("layout/AccordionContainer.css");
+@import url("layout/SplitContainer.css");
+@import url("layout/BorderContainer.css");
+@import url("form/Common.css");
+@import url("form/Button.css");
+@import url("form/ComboBox.css");
+@import url("form/Checkbox.css");
+@import url("form/RadioButton.css");
+@import url("form/Textarea.css");
+@import url("form/Slider.css");
+@import url("Tree.css");
+@import url("ProgressBar.css");
+@import url("TitlePane.css");
+@import url("Calendar.css");
+@import url("Toolbar.css");
+@import url("Dialog.css");
+@import url("Menu.css");
+@import url("Editor.css");
+@import url("ColorPalette.css");
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria_rtl.css
new file mode 100644
index 00000000..05bfa3fe
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/soria/soria_rtl.css
@@ -0,0 +1,28 @@
+/*
+ Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
+
+ NOTES:
+ ---
+ Dialog.css contains css classes for both Dialog and Tooltip!
+ This because currently a dijit.TooltipDialog exist. Until this is resolved
+ you need to include Dialog.css for both dijits
+ ---
+ Toolbar.css contains classes also used in Editor. Until this is resolved
+ you need to include Toolbar.css for both Toolbar and Editor
+ ---
+ Button.css contains classes for combobox,
+
+*/
+
+@import url("../dijit_rtl.css");
+@import url("layout/TabContainer_rtl.css");
+@import url("layout/AccordionContainer_rtl.css");
+@import url("form/Slider_rtl.css");
+@import url("form/Button_rtl.css");
+@import url("form/Common_rtl.css");
+@import url("Tree_rtl.css");
+@import url("TitlePane_rtl.css");
+@import url("Calendar_rtl.css");
+@import url("Dialog_rtl.css");
+@import url("Menu_rtl.css");
+@import url("Editor_rtl.css");
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/templateThemeTest.html b/spring-js/src/main/resources/META-INF/dijit/themes/templateThemeTest.html
new file mode 100644
index 00000000..0573ba7c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/templateThemeTest.html
@@ -0,0 +1,184 @@
+
+
+
+ Test Widget Templates in Multiple Themes
+
+
+
+
+
+
+
+
+
+ Tundra
+
+
+ Button
+
+
+ Button w/image
+
+
+ Disabled Button
+
+
+
+ Drop Down Button
+
+
+
+ Button w/image
+
+
+
+ Drop Down Disabled
+
+
+
+
+ Combo Button
+
+
+
+ Combo w/image
+
+
+
+ Combo Disabled
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Noir
+
+
+
+
+ Soria
+
+
+
+
+ a11y mode
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/themeTester.html b/spring-js/src/main/resources/META-INF/dijit/themes/themeTester.html
new file mode 100644
index 00000000..99fa6255
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/themeTester.html
@@ -0,0 +1,745 @@
+
+
+
+ Dijit Theme Tester
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tooltips:
+
+
+ rich text tooltip
+
+ Embedded bold RICH text weirdness!
+
+
+
+ anchor tooltip
+ tooltip on anchor
+
+
+
+
+
+
+
Dialogs:
+
+
+
+
Show Tooltip Dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Test color is:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Various Form Elements:
+
+
+
+
+
+
+
+
+
+
+
Sliders
+
+
+
+
+
+ lowest
+ normal
+ highest
+
+
+
+
Value:
+
+
+
+
+ small
+ medium
+
+ large
+
+
+
+
+
+
+
ProgressBar
+
+
+ Indeterminate:
+
+
+
+
+
TitlePane (nested)
+
+
This is a title pane, containing another title pane ...
+
+
+
And this is the inner title pane...
+
+
Sed sollicitudin suscipit risus. Nam
+ ullamcorper. Sed nisl lectus, pellentesque nec,
+ malesuada eget, ornare a, libero. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+
+
And this is the closing line for the outer title pane.
+
+
HTML After, check indent
+
+
+
+
+
+
Simple, drop down & combo buttons
+
Buttons can do an action, display a menu, or both:
+
+
+
+ Create
+
+
+
+ Edit
+
+
+
+
+ Save
+
+
+
+
+ Disabled
+
+
+
+
+
+
Sizing
+
Short button, tall buttons, big buttons, small buttons... These buttons
+ size to their content (just like <button>).
+
+
+
+ big
+
+
+
+
+ small
+
+
+
+ long
+
+
+
+
+ tall
+
+
+
+
+
+
+
Customized buttons
+
Dojo users can mix in their styles. Here's an example:
+
+
+
+ short
+
+
+
+ bit longer
+
+
+
+ ridiculously long
+
+
+
+
+
+
+
+
+
+
+
dijit.Editor:
+
+
+
+
+ Lorem and a link , what do you think?
+ This is the Editor with a Toolbar attached.
+
+
+
+
+
+
+
dijit.InlineEditBox + dijit.form.TextBox on <h3>
+
+ (HTML before)
+
+ Edit me - I trigger the onChange callback
+
+ (HTML after)
+
+
+
+
dijit.InlineEditBox + dijit.form.Textarea
+
+ (HTML before)
+
+ I'm one big paragraph. Go ahead and edit me. I dare you.
+ The quick brown fox jumped over the lazy dog. Blah blah blah blah blah blah blah ...
+
+ (HTML after)
+
+
+ These links will
+ disable /
+ enable
+ the text area above.
+
+
+
+
+
dijit.form.DateTextBox:
+
+ (HTML inline before)
+
12/30/2005
+ (HTML after)
+
+
+
+
dijit.form.TimeTextBox:
+
+ (HTML inline before)
+
9:00 AM
+ (HTML after)
+
+
+
+
+
dijit.form.FilteringSelect + Inline + remote data store:
+ (HTML inline before)
+
+ Indiana
+
+ (HTML after)
+
+
+
+
+
+
+
Source 1
+
+
Item X
+
Item Y
+
Item Z
+
+
+
+
Source 2
+
+
Item 1
+
Item 2
+
Item 3
+
+
+
+
+
+
+ This pane is closable, just for the icon ...
+
+
+
+
+
+
+
+
+
You can explore this single page after applying a Theme
+ for use in creation of your own theme.
+
+
I am whole slew of Widgets on a page. Jump to dijit tests to
+ test individual components.
+
+
There is a right-click [context] pop-up menu here, as well.
+
+
+
+
+
+
+
+
I am the last Tab
+
+ I am the second dialog. I am
+ parented by the Low Tab Pane #3
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterImages/blackButtonEnabled.gif b/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterImages/blackButtonEnabled.gif
new file mode 100644
index 00000000..9174efda
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterImages/blackButtonEnabled.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterImages/blackButtonHover.gif b/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterImages/blackButtonHover.gif
new file mode 100644
index 00000000..16f087cd
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterImages/blackButtonHover.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterQuirk.html b/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterQuirk.html
new file mode 100644
index 00000000..9f5e26c9
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/themeTesterQuirk.html
@@ -0,0 +1,743 @@
+
+
+ Dijit Theme Tester
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tooltips:
+
+
+ rich text tooltip
+
+ Embedded bold RICH text weirdness!
+
+
+
+ anchor tooltip
+ tooltip on anchor
+
+
+
+
+
+
+
Dialogs:
+
+
+
+
Show Tooltip Dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Test color is:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sliders
+
+
+
+
+
+ lowest
+ normal
+ highest
+
+
+
+
Value:
+
+
+
+
+ small
+ medium
+
+ large
+
+
+
+
+
+
+
ProgressBar
+
+
+ Indeterminate:
+
+
+
+
+
TitlePane (nested)
+
+
This is a title pane, containing another title pane ...
+
+
+
And this is the inner title pane...
+
+
Sed sollicitudin suscipit risus. Nam
+ ullamcorper. Sed nisl lectus, pellentesque nec,
+ malesuada eget, ornare a, libero. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+
+
And this is the closing line for the outer title pane.
+
+
HTML After, check indent
+
+
+
+
+
+
Simple, drop down & combo buttons
+
Buttons can do an action, display a menu, or both:
+
+
+
+ Create
+
+
+
+ Edit
+
+
+
+
+ Save
+
+
+
+
+ Disabled
+
+
+
+
+
+
Sizing
+
Short button, tall buttons, big buttons, small buttons... These buttons
+ size to their content (just like <button>).
+
+
+
+ big
+
+
+
+
+ small
+
+
+
+ long
+
+
+
+
+ tall
+
+
+
+
+
+
+
Customized buttons
+
Dojo users can mix in their styles. Here's an example:
+
+
+
+ short
+
+
+
+ bit longer
+
+
+
+ ridiculously long
+
+
+
+
+
+
+
+
+
+
+
dijit.Editor:
+
+
+
+
+ Lorem and a link , what do you think?
+ This is the Editor with a Toolbar attached.
+
+
+
+
+
+
+
dijit.InlineEditBox + dijit.form.TextBox on <h3>
+
+ (HTML before)
+
+ Edit me - I trigger the onChange callback
+
+ (HTML after)
+
+
+
+
dijit.InlineEditBox + dijit.form.Textarea
+
+ (HTML before)
+
+ I'm one big paragraph. Go ahead and edit me. I dare you.
+ The quick brown fox jumped over the lazy dog. Blah blah blah blah blah blah blah ...
+
+ (HTML after)
+
+
+ These links will
+ disable /
+ enable
+ the text area above.
+
+
+
+
+
dijit.form.DateTextBox:
+
+ (HTML inline before)
+
12/30/2005
+ (HTML after)
+
+
+
+
dijit.form.TimeTextBox:
+
+ (HTML inline before)
+
9:00 AM
+ (HTML after)
+
+
+
+
+
dijit.form.FilteringSelect + Inline + remote data store:
+ (HTML inline before)
+
+ Indiana
+
+ (HTML after)
+
+
+
+
+
+
+
Source 1
+
+
Item X
+
Item Y
+
Item Z
+
+
+
+
Source 2
+
+
Item 1
+
Item 2
+
Item 3
+
+
+
+
+
+
+ This pane is closable, just for the icon ...
+
+
+
+
+
+
+
+
+
You can explore this single page after applying a Theme
+ for use in creation of your own theme.
+
+
I am whole slew of Widgets on a page. Jump to dijit tests to
+ test individual components.
+
+
There is a right-click [context] pop-up menu here, as well.
+
+
+
+
+
+
+
+
I am the last Tab
+
+ I am the second dialog. I am
+ parented by the Low Tab Pane #3
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar.css
new file mode 100644
index 00000000..cfc5880e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar.css
@@ -0,0 +1,153 @@
+/* Calendar*/
+
+.tundra .dijitCalendarIncrementControl {
+ /* next/prev month buttons */
+ width:15px;
+ height:15px;
+ font-size: 1px;
+}
+.dj_ie6 .tundra .dijitCalendarIncrementControl {
+ padding:.1em;
+}
+
+.tundra .dijitCalendarIncreaseInner,
+.tundra .dijitCalendarDecreaseInner {
+ visibility:hidden;
+}
+
+.tundra .dijitCalendarDecrease {
+ background:url("images/spriteRoundedIconsSmall.png") no-repeat top left;
+}
+.dj_ie6 .tundra .dijitCalendarDecrease {
+ background:url("images/spriteRoundedIconsSmall.gif") no-repeat top left;
+}
+
+.tundra .dijitCalendarIncrease {
+ background:url("images/spriteRoundedIconsSmall.png") no-repeat -30px top;
+}
+.dj_ie6 .tundra .dijitCalendarIncrease {
+ background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;
+}
+
+.tundra table.dijitCalendarContainer {
+ font-size: 100%;
+ border-spacing: 0;
+ border-collapse: separate;
+ border: 1px solid #ccc;
+ margin: 0;
+}
+
+.tundra .dijitCalendarMonthContainer th {
+ /* month header cell */
+ background:#d3d3d3 url("images/titleBar.png") repeat-x top;
+ padding-top:.3em;
+ padding-bottom:.2em;
+ text-align:center;
+}
+.dj_ie6 .tundra .dijitCalendarMonthContainer th {
+ padding-top:.1em;
+ padding-bottom:0em;
+}
+
+.tundra .dijitCalendarDayLabelTemplate {
+ /* day of week labels */
+ background:white url("images/calendarDayLabel.png") repeat-x bottom;
+ font-weight:normal;
+ padding-top:.15em;
+ padding-bottom:0em;
+ border-top: 1px solid #eeeeee;
+ color:#293a4b;
+ text-align:center;
+}
+
+.tundra .dijitCalendarBodyContainer {
+ border-bottom: 1px solid #eeeeee;
+}
+
+.tundra .dijitCalendarMonthLabel {
+ color:#293a4b;
+ font-weight: bold;
+}
+
+.dj_ie7 .tundra .dijitCalendarDateTemplate,
+.dj_ie6 .tundra .dijitCalendarDateTemplate {
+ font-size: 0.8em;
+}
+
+.tundra .dijitCalendarDateTemplate {
+ /* style for each day cell */
+ font-size: 0.9em;
+ font-weight: bold;
+ text-align: center;
+ padding: 0.3em 0.3em 0.05em 0.3em;
+ letter-spacing: 1px;
+}
+
+
+.tundra .dijitCalendarPreviousMonth,
+.tundra .dijitCalendarNextMonth {
+ /* days that are part of the previous or next month */
+ color:#999999;
+ background-color:#f8f8f8 !important;
+}
+
+.tundra .dijitCalendarPreviousMonthDisabled,
+.tundra .dijitCalendarNextMonthDisabled {
+ /* days that are part of the previous or next month - disabled*/
+ background-color:#a4a5a6 !important;
+}
+
+.tundra .dijitCalendarCurrentMonth {
+ /* days that are part of this month */
+ background-color:white !important;
+}
+
+.tundra .dijitCalendarCurrentMonthDisabled {
+ /* days that are part of this month - disabled */
+ background-color:#bbbbbc !important;
+}
+
+.tundra .dijitCalendarCurrentDate {
+ /* cell for today's date */
+ text-decoration:underline;
+ font-weight:bold;
+}
+
+.tundra .dijitCalendarCurrentDate {
+ /* cell for today's date */
+ text-decoration:underline;
+ font-weight:bold;
+}
+
+.tundra .dijitCalendarSelectedDate {
+ /* cell for the selected date */
+ background-color:#bbc4d0 !important;
+ color:black !important;
+}
+.tundra .dijitCalendarYearContainer {
+ /* footer of the table that contains the year display/selector */
+ background:white url("images/calendarYearLabel.png") repeat-x bottom;
+ border-top:1px solid #ccc;
+}
+
+.tundra .dijitCalendarYearLabel {
+ /* container for all of 3 year labels */
+ margin:0;
+ padding:0.4em 0 0.25em 0;
+ text-align:center;
+}
+
+.tundra .dijitCalendarSelectedYear {
+ /* label for selected year */
+ color:black;
+ padding:0.2em;
+ padding-bottom:0.1em;
+ background-color:#bbc4d0 !important;
+}
+
+.tundra .dijitCalendarNextYear,
+.tundra .dijitCalendarPreviousYear {
+ /* label for next/prev years */
+ color:black !important;
+ font-weight:normal;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar_rtl.css
new file mode 100644
index 00000000..c72d43b5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Calendar_rtl.css
@@ -0,0 +1,16 @@
+
+/* Calendar */
+
+.dijitRtl .dijitCalendarDecrease {
+ background-position: -30px top;
+}
+
+.dijitRtl .dijitCalendarIncrease {
+ background-position: 0px top;
+}
+.dj_ie6 .dijitRtl .dijitCalendarIncrease {
+ background-position: 0px top;
+}
+.dj_ie6 .dijitRtl .dijitCalendarDecrease {
+ background-position: -30px top;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ColorPalette.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ColorPalette.css
new file mode 100644
index 00000000..9d3c4ccc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ColorPalette.css
@@ -0,0 +1,5 @@
+.dijitColorPalette {
+ border:1px solid #7eabcd;
+ background:#fff;
+ -moz-border-radius: 0px !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Common.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Common.css
new file mode 100644
index 00000000..6419b38b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Common.css
@@ -0,0 +1,45 @@
+/**** Disabled cursor *****/
+.tundra .dijitSliderDisabled *,
+.tundra .dijitDisabledClickableRegion, /* a region the user would be able to click on, but it's disabled */
+.tundra .dijitSpinnerDisabled *,
+.tundra .dijitButtonDisabled *,
+.tundra .dijitDropDownButtonDisabled *,
+.tundra .dijitComboButtonDisabled *,
+.tundra .dijitComboBoxDisabled *
+{
+ cursor: not-allowed !important;
+}
+
+/* DnD avatar-specific settings */
+/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
+.tundra .dojoDndItemBefore {
+ border-top: 2px solid #369;
+}
+
+.tundra .dojoDndItemAfter {
+ border-bottom: 2px solid #369;
+}
+
+.tundra .dojoDndItemOver {
+ cursor:pointer;
+}
+
+.tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.tundra .dojoDndAvatar td { border: none; }
+.tundra .dojoDndAvatar tr { border: none; }
+.tundra .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
+.tundra .dojoDndAvatarItem td { padding: 2px;}
+.tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+
+.tundra .dijitContentPaneLoading {
+ background:url('images/loading.gif') no-repeat left center;
+ padding-left:25px;
+}
+
+.tundra .dijitContentPaneError {
+ background:url('images/warning.png') no-repeat left center;
+ padding-left:25px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog.css
new file mode 100644
index 00000000..1782b550
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog.css
@@ -0,0 +1,179 @@
+
+/* Dialog */
+
+
+
+.tundra .dijitDialog {
+ background: #fff;
+ border: 1px solid #7eabcd;
+ -webkit-box-shadow: 0px 5px 10px #adadad;
+ padding: 0px;
+}
+
+.tundra .dijitDialog .dijitDialogTitle {
+ border-top: none;
+ border-left: none;
+ border-right: none;
+}
+
+.tundra .dijitDialog .dijitDialogPaneContent {
+ background: #fff;
+ border:none;
+ border-top: 1px solid #d3d3d3; /* #cddde9; /* w/out this, an on the top line causes a gap between the .content and .label */
+ padding:10px;
+
+}
+
+.tundra .dijitDialogTitleBar {
+ /* outer container for the titlebar of the dialog */
+ background: #fafafa url("images/titleBar.png") repeat-x top left;
+ /* border: 1px solid #bfbfbf; */
+ padding: 5px 6px 3px 2px;
+ cursor: move;
+ outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
+}
+
+.tundra .dijitDialogTitle {
+ /* typography and styling of the dialog title */
+ font-weight: bold;
+ padding: 8px 12px 8px 12px;
+ outline:0;
+}
+
+.tundra .dijitDialogCloseIcon {
+ /* the default close icon for the dialog */
+ background : url("images/spriteRoundedIconsSmall.png") no-repeat right top;
+ float: right;
+ position: absolute;
+ vertical-align: middle;
+ right: 6px;
+ top: 4px;
+ height: 15px;
+ width: 15px;
+ cursor: pointer;
+}
+.dj_ie6 .tundra .dijitDialogCloseIcon {
+ background : url("images/spriteRoundedIconsSmall.gif") no-repeat right top;
+}
+
+.tundra .dijitDialogContent {
+ /* the body of the dialog */
+ padding: 8px;
+}
+
+
+/* Tooltip and TooltipDialog */
+
+.tundra .dijitTooltip,
+.tundra .dijitTooltipDialog {
+ /* the outermost dom node, holding the connector and container */
+ /* opacity: 0.95; */
+ background: transparent; /* make the area on the sides of the arrow transparent */
+}
+
+.dijitTooltipBelow {
+ /* leave room for arrow above content */
+ padding-top: 13px;
+}
+
+.dijitTooltipAbove {
+ /* leave room for arrow below content */
+ padding-bottom: 13px;
+}
+
+.tundra .dijitTooltipContainer {
+ /*
+ The part with the text.
+ */
+ background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
+ border:1px solid #7eabcd;
+ padding:0.45em;
+ -webkit-border-radius: 6px;
+}
+
+.tundra .dijitTooltipConnector {
+ /* the arrow piece */
+ border:0px;
+ z-index: 2;
+}
+.tundra .dijitTooltipABRight .dijitTooltipConnector {
+ /* above or below tooltip, but the arrow appears on the right,
+ and the right edges of target and tooltip are aligned rather than the left */
+ left: auto !important;
+ right: 3px;
+}
+
+.tundra .dijitTooltipBelow .dijitTooltipConnector {
+ /* the arrow piece for tooltips below an element */
+ top: 0px;
+ left: 3px;
+ background:url("images/tooltipConnectorUp.png") no-repeat top left;
+ width:16px;
+ height:14px;
+}
+
+.dj_ie6 .tundra .dijitTooltipBelow .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorUp.gif");
+}
+
+.tundra .dijitTooltipAbove .dijitTooltipConnector {
+ /* the arrow piece for tooltips above an element */
+ bottom: 0px;
+ left: 3px;
+ background:url("images/tooltipConnectorDown.png") no-repeat top left;
+ width:16px;
+ height:14px;
+}
+.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorDown.gif");
+ bottom: -3px;
+}
+
+.tundra .dijitTooltipLeft {
+ padding-right: 14px;
+}
+.dj_ie6 .tundra .dijitTooltipLeft {
+ padding-left: 15px;
+}
+.tundra .dijitTooltipLeft .dijitTooltipConnector {
+ /* the arrow piece for tooltips to the left of an element, bottom borders aligned */
+ right: 0px;
+ bottom: 7px;
+ background:url("images/tooltipConnectorRight.png") no-repeat top left;
+ width:16px;
+ height:14px;
+}
+.dj_ie6 .tundra .dijitTooltipLeft .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorRight.gif");
+}
+
+.tundra .dijitTooltipRight {
+ padding-left: 14px;
+}
+.tundra .dijitTooltipRight .dijitTooltipConnector {
+ /* the arrow piece for tooltips to the right of an element, bottom borders aligned */
+ left: 0px;
+ bottom: 7px;
+ background:url("images/tooltipConnectorLeft.png") no-repeat top left;
+ width:16px;
+ height:14px;
+}
+.dj_ie6 .tundra .dijitTooltipRight .dijitTooltipConnector {
+ background-image: url("images/tooltipConnectorLeft.gif");
+}
+
+
+.dj_safari .tundra .dijitPopup .dijitTooltipContainer,
+.dj_safari .tundra .dijitPopup .dijitMenu {
+ /* -webkit-border-radius: 5px; */
+ -webkit-box-shadow: 0px 5px 10px #adadad;
+}
+
+
+/*
+ * Control opacity of popups
+ */
+.tundra .dijitPopup > div,
+.tundra .dijitPopup > table {
+ opacity: 0.95;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog_rtl.css
new file mode 100644
index 00000000..ea85d497
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Dialog_rtl.css
@@ -0,0 +1,29 @@
+/* Dialog */
+.dijitRtl .dijitDialogTitleBar .dijitDialogCloseIcon {
+ background-position: -60px top;
+ float: left;
+ right: auto;
+ left: 5px;
+}
+
+/*FIXME: redundant?*/
+.dj_ie6 .dijitRtl .dijitDialogTitleBar .dijitDialogCloseIcon {
+ background-position: -60px top;
+}
+
+
+/* ToolTip */
+
+.dj_ie .dijitRtl .dijitTooltipLeft {
+ margin-right: 0px;
+ margin-left: 13px;
+}
+
+.dj_ie .dijitRtl .dijitTooltipRight {
+ margin-left: 26px;
+ margin-right: -13px;
+}
+
+.dj_ie .dijitRtl .dijitTooltipDialog {
+ zoom:1 !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor.css
new file mode 100644
index 00000000..a656cf4a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor.css
@@ -0,0 +1,58 @@
+.dijitIEFixedToolbar {
+ position:absolute;
+ /* top:0; */
+ top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+
+.tundra .dijitToolbar .dijitToolbarSeparator {
+ background: url('images/editor.gif');
+}
+
+.tundra .dijitEditorIcon {
+ background-image: url('images/editor.gif'); /* editor icons sprite image */
+ background-repeat: no-repeat;
+ width: 18px;
+ height: 18px;
+ text-align: center;
+}
+.tundra .dijitEditorIconSep { background-position: 0px; }
+.tundra .dijitEditorIconBackColor { background-position: -18px; }
+.tundra .dijitEditorIconBold { background-position: -36px; }
+.tundra .dijitEditorIconCancel { background-position: -54px; }
+.tundra .dijitEditorIconCopy { background-position: -72px; }
+.tundra .dijitEditorIconCreateLink { background-position: -90px; }
+.tundra .dijitEditorIconCut { background-position: -108px; }
+.tundra .dijitEditorIconDelete { background-position: -126px; }
+.tundra .dijitEditorIconForeColor { background-position: -144px; }
+.tundra .dijitEditorIconHiliteColor { background-position: -162px; }
+.tundra .dijitEditorIconIndent { background-position: -180px; }
+.tundra .dijitEditorIconInsertHorizontalRule { background-position: -198px; }
+.tundra .dijitEditorIconInsertImage { background-position: -216px; }
+.tundra .dijitEditorIconInsertOrderedList { background-position: -234px; }
+.tundra .dijitEditorIconInsertTable { background-position: -252px; }
+.tundra .dijitEditorIconInsertUnorderedList { background-position: -270px; }
+.tundra .dijitEditorIconItalic { background-position: -288px; }
+.tundra .dijitEditorIconJustifyCenter { background-position: -306px; }
+.tundra .dijitEditorIconJustifyFull { background-position: -324px; }
+.tundra .dijitEditorIconJustifyLeft { background-position: -342px; }
+.tundra .dijitEditorIconJustifyRight { background-position: -360px; }
+.tundra .dijitEditorIconLeftToRight { background-position: -378px; }
+.tundra .dijitEditorIconListBulletIndent { background-position: -396px; }
+.tundra .dijitEditorIconListBulletOutdent { background-position: -414px; }
+.tundra .dijitEditorIconListNumIndent { background-position: -432px; }
+.tundra .dijitEditorIconListNumOutdent { background-position: -450px; }
+.tundra .dijitEditorIconOutdent { background-position: -468px; }
+.tundra .dijitEditorIconPaste { background-position: -486px; }
+.tundra .dijitEditorIconRedo { background-position: -504px; }
+.tundra .dijitEditorIconRemoveFormat { background-position: -522px; }
+.tundra .dijitEditorIconRightToLeft { background-position: -540px; }
+.tundra .dijitEditorIconSave { background-position: -558px; }
+.tundra .dijitEditorIconSpace { background-position: -576px; }
+.tundra .dijitEditorIconStrikethrough { background-position: -594px; }
+.tundra .dijitEditorIconSubscript { background-position: -612px; }
+.tundra .dijitEditorIconSuperscript { background-position: -630px; }
+.tundra .dijitEditorIconUnderline { background-position: -648px; }
+.tundra .dijitEditorIconUndo { background-position: -666px; }
+.tundra .dijitEditorIconWikiword { background-position: -684px; }
+.tundra .dijitEditorIconToggleDir { background-position: -540px; /* padding: 0; margin: 0; color:#555555;
+ font-family:verdana,arial,sans-serif; font-weight: 800; font-size: 70%; */}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor_rtl.css
new file mode 100644
index 00000000..2a2df3e7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Editor_rtl.css
@@ -0,0 +1,9 @@
+/* Editor */
+.dijitRtl .dijitEditorIcon {
+ background-image: url('images/editor_rtl.gif'); /* editor icons sprite image */
+}
+
+/* Toolbar */
+.dijitRtl .dijitToolbar .dijitToolbarSeparator {
+ background-image: url('images/editor_rtl.gif');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu.css
new file mode 100644
index 00000000..6df5e362
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu.css
@@ -0,0 +1,54 @@
+.tundra .dijitMenu {
+ border: 1px solid #7eabcd;
+ margin: 0px;
+ padding: 0px;
+}
+
+.tundra .dijitMenuItem {
+ background-color: #f7f7f7;
+ font: menu;
+ margin: 0;
+}
+.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton {
+ font-style: italic;
+}
+.tundra .dijitMenuItem td {
+ padding:2px;
+}
+
+.tundra .dijitMenuItemHover {
+ background-color: #60a1ea;
+ color:#fff;
+}
+
+.tundra .dijitMenuItemIcon {
+ width: 16px;
+ height: 16px;
+}
+
+.tundra .dijitMenuExpand {
+ display:none;
+}
+.tundra .dijitMenuExpandEnabled {
+ width:16px;
+ height:16px;
+ background:url('images/arrowRight.gif') no-repeat center center;
+ display:block;
+}
+
+.tundra .dijitMenuExpandInner {
+ display:none;
+}
+
+.tundra .dijitMenuSeparator {
+ background-color: #f7f7f7;
+}
+
+/* separator can be two pixels -- set border of either one to 0px to have only one */
+.tundra .dijitMenuSeparatorTop {
+ border-bottom: 1px solid #9b9b9b;
+}
+
+.tundra .dijitMenuSeparatorBottom {
+ border-top: 1px solid #e8e8e8;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu_rtl.css
new file mode 100644
index 00000000..289096c8
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Menu_rtl.css
@@ -0,0 +1,8 @@
+.dijitRtl .dijitMenuItem .dijitMenuItemIcon {
+ padding-left: 3px;
+ padding-right: 0px;
+}
+
+.dijitRtl .dijitMenuItem .dijitMenuExpandEnabled {
+ background-image:url('images/arrowLeft.gif');
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ProgressBar.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ProgressBar.css
new file mode 100644
index 00000000..190c517e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/ProgressBar.css
@@ -0,0 +1,28 @@
+.tundra .dijitProgressBar {
+ margin:2px 0px 2px 0px;
+}
+
+.tundra .dijitProgressBarEmpty{
+ /* outer container and background of the bar that's not finished yet*/
+ background:#fff url("images/progressBarEmpty.png") repeat-x top left;
+ border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2;
+}
+
+.tundra .dijitProgressBarTile{
+ /* inner container for finished portion when in 'tile' (image) mode */
+ background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
+}
+
+.tundra .dijitProgressBarFull {
+ border-right:1px solid #b8b8b8;
+}
+
+.tundra .dijitProgressBarLabel {
+ /* Set to a color that contrasts with both the "Empty" and "Full" parts. */
+ color:#293a4b;
+}
+
+.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile {
+ /* use an animated gif for the progress bar in 'indeterminate' mode */
+ background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane.css
new file mode 100644
index 00000000..b4fb5960
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane.css
@@ -0,0 +1,63 @@
+.tundra .dijitTitlePane .dijitTitlePaneTitle {
+ background: #cccccc;
+ background:#fff url("images/titleBar.png") repeat-x bottom left;
+ border:1px solid #bfbfbf;
+ padding:4px 4px 2px 4px;
+ cursor: pointer;
+}
+
+/* TODO: merge these, and all other icons to a series of background-image:() and background-position: -16*n px styles */
+.tundra .dijitTitlePane .dijitArrowNode {
+ width:16px;
+ height:16px;
+ float:right;
+}
+.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background:url('images/arrowRight.png') no-repeat center center;
+}
+
+.tundra .dijitTitlePaneFocused .dijitTitlePaneTextNode {
+ text-decoration:underline;
+}
+
+.dj_ie6 .tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background-image:url('images/arrowRight.gif');
+}
+.tundra .dijitTitlePane .dijitOpen .dijitArrowNode {
+ background:url('images/arrowDown.png') no-repeat center center;
+}
+.dj_ie6 .tundra .dijitTitlePane .dijitOpen .dijitArrowNode {
+ background-image:url('images/arrowDown.gif');
+}
+.tundra .dijitTitlePane .dijitArrowNodeInner {
+ visibility:hidden;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+ visibility:visible;
+}
+
+.tundra .dijitTitlePaneTitle .dijitOpenCloseArrowOuter {
+ margin-right:5px;
+}
+
+.tundra .dijitOpen .dijitTitlePaneTitle .dijitOpenCloseArrowOuter {
+ position:relative;
+ top:2px;
+}
+
+.tundra .dijitTitlePaneContentOuter {
+ background: #ffffff;
+ border:1px solid #bfbfbf;
+ border-top: 1px solid #ccc; /* w/out this, an on the top line causes a gap between the .content and .label */
+}
+.tundra .dijitTitlePaneContentInner {
+ padding:10px;
+}
+/* force hasLayout to ensure borders etc, show up */
+.dj_ie6 .tundra .dijitTitlePaneContentOuter,
+.dj_ie6 .tundra .dijitTitlePane .dijitTitlePaneTitle {
+ zoom: 1;
+}
+.tundra .dijitClickableRegion {
+ background-color : #ffc !important;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane_rtl.css
new file mode 100644
index 00000000..e80ba770
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/TitlePane_rtl.css
@@ -0,0 +1,6 @@
+.dijitRtl .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background:url('images/arrowRight.png') no-repeat center center;
+}
+.dj_ie6 .dijitRtl .dijitTitlePane .dijitClosed .dijitArrowNode {
+ background-image:url('images/arrowRight.gif');
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Toolbar.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Toolbar.css
new file mode 100644
index 00000000..42c62efa
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Toolbar.css
@@ -0,0 +1,95 @@
+.tundra .dijitToolbar {
+ padding: 3px 0 1px 3px;
+ border-bottom: 1px solid #ccc;
+ background:#eaeaea url("images/titleBar.png") repeat-x top left;
+}
+
+.tundra .dijitToolbar .dijitButtonNode {
+ background: none;
+ margin: 0px !important;
+ padding: 0px !important;
+ border: none;
+ font-size: 12px;
+}
+
+.tundra .dijitToolbar .dijitButton,
+.tundra .dijitToolbar .dijitToggleButton,
+.tundra .dijitToolbar .dijitDropDownButton {
+ background: none;
+ margin: 1px;
+ padding: 0px;
+ border: 1px solid transparent;
+}
+
+.tundra .dijitToolbar .dijitButtonChecked,
+.tundra .dijitToolbar .dijitToggleButtonChecked {
+ background-color:#d4dff2;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px !important;
+}
+
+.tundra .dijitToolbar .dijitButtonCheckedHover,
+.tundra .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+ background-color:#abc1e5;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px !important;
+}
+
+.tundra .dijitToolbar .dijitButtonHover,
+.tundra .dijitToolbar .dijitToggleButtonHover,
+.tundra .dijitToolbar .dijitDropDownButtonHover {
+ /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
+ border: 1px solid #316ac5;
+ background-color:#abc1e5;
+}
+
+.tundra .dijitToolbar label {
+ padding: 3px 3px 0 6px;
+}
+
+.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused,
+.dj_ff2 .tundra.dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ff2 .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+ border: 1px black dotted !important;
+}
+
+/* IE6 specific rules */
+.dj_ie6 .tundra .dijitToolbar .dijitButton,
+.dj_ie6 .tundra .dijitToolbar .dijitToggleButton,
+.dj_ie6 .tundra .dijitToolbar .dijitDropDownButton {
+ /* workaround no transparent border support in IE6 */
+ margin: 2px;
+ padding: 0px 2px;
+ border: 0px;
+}
+
+.dj_ie6 .tundra .dijitToolbar .dijitButtonChecked,
+.dj_ie6 .tundra .dijitToolbar .dijitToggleButtonChecked,
+.dj_ie6 .tundra .dijitToolbar .dijitDropDownButtonChecked {
+ background-color:#c1d2ee;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
+
+.dj_ie6 .tundra .dijitToolbar .dijitButtonCheckedHover,
+.dj_ie6 .tundra .dijitToolbar .dijitToggleButtonCheckedHover,
+.dj_ie6 .tundra .dijitToolbar .dijitDropDownButtonCheckedHover {
+ background-color:#c1d2ee;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
+
+.dj_ie6 .tundra .dijitToolbar .dijitButtonHover,
+.dj_ie6 .tundra .dijitToolbar .dijitToggleButtonHover,
+.dj_ie6 .tundra .dijitToolbar .dijitDropDownButtonHover {
+ background-color:#c1d2ee;
+ border:1px solid #316ac5;
+ margin: 1px !important;
+ padding: 0px 2px !important;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree.css
new file mode 100644
index 00000000..b172a66f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree.css
@@ -0,0 +1,86 @@
+
+/* Tree */
+
+.tundra .dijitTreeNode {
+ background-image : url('images/i.gif');
+ background-position : top left;
+ background-repeat : repeat-y;
+ margin-left: 19px;
+ zoom: 1; /* MOW: what the heck is this doing in here? */
+}
+
+/* left vertical line (grid) for all nodes */
+.tundra .dijitTreeIsLast {
+ background: url('images/i_half.gif') no-repeat;
+}
+
+.tundra .dijitTreeIsRoot {
+ margin-left: 0;
+ background-image: none;
+}
+
+.tundra .dijitTreeExpando {
+ width: 18px;
+ height: 18px;
+}
+
+.tundra .dijitTreeContent {
+ min-height: 18px;
+ min-width: 18px;
+ margin-left:18px;
+ padding-top:3px;
+ padding-left:1px;
+}
+
+
+.tundra .dijitTreeExpand {
+ width: 18px;
+ height: 18px;
+ background-repeat : no-repeat;
+}
+
+/* same style as IE selection */
+.tundra .dijitTreeNodeEmphasized {
+ background-color: Highlight;
+ color: HighlightText;
+}
+
+/* don't use :focus due to opera and IE's lack of support on div's */
+.tundra .dijitTreeLabelFocused {
+ outline: 1px invert dotted;
+ background:#dde7f2;
+}
+
+.tundra .dijitTreeExpandoOpened {
+ background-image: url('images/treeExpand_minus.gif');
+}
+
+.tundra .dijitTreeExpandoClosed {
+ background-image: url('images/treeExpand_plus.gif');
+}
+
+.tundra .dijitTreeExpandoLeaf {
+ background-image: url('images/treeExpand_leaf.gif');
+}
+
+.tundra .dijitTreeExpandoLoading {
+ background-image: url('images/treeExpand_loading.gif');
+}
+
+.tundra .dijitTreeIcon {
+ width: 16px;
+ height: 16px;
+ padding-right: 4px;
+}
+
+.tundra .dijitFolderOpened {
+ background: url('images/folderOpened.gif') no-repeat;
+}
+
+.tundra .dijitFolderClosed {
+ background: url('images/folderClosed.gif') no-repeat;
+}
+
+.tundra .dijitLeaf {
+ background: url('images/leaf.gif') no-repeat;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree_rtl.css
new file mode 100644
index 00000000..52e0135c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/Tree_rtl.css
@@ -0,0 +1,37 @@
+
+/* Tree */
+.dijitRtl .dijitTreeContainer .dijitTreeNode {
+ background-image : url('images/i_rtl.gif');
+ background-position : top right;
+ margin-left: auto;
+ margin-right: 19px;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeIsRoot {
+ margin-left: auto;
+ margin-right: 0;
+ background-image: none;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeIsLast {
+ background-image: url('images/i_half_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeContent {
+ margin-left: auto;
+ margin-right: 18px;
+ padding-left: auto;
+ padding-right: 1px;
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoOpened {
+ background-image: url('images/treeExpand_minus_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoClosed {
+ background-image: url('images/treeExpand_plus_rtl.gif');
+}
+
+.dijitRtl .dijitTreeContainer .dijitTreeExpandoLeaf {
+ background-image: url('images/treeExpand_leaf_rtl.gif');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Button.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Button.css
new file mode 100644
index 00000000..347d0772
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Button.css
@@ -0,0 +1,113 @@
+
+/*****
+ dijit.form.Button
+ dijit.form.DropDownButton
+ dijit.form.ComboButton
+ dijit.form.ComboBox (partial)
+ *****/
+
+.tundra .dijitButtonNode {
+ /* enabled state - inner */
+ /* border:1px outset #a0a0a0; */
+ border:1px solid #c0c0c0;
+ border-bottom:1px solid #9b9b9b;
+ border-right:1px solid #9b9b9b;
+ padding: 0.2em;
+ background:#fff url("../images/buttonEnabled.png") repeat-x bottom left;
+}
+.dj_ie .tundra .dijitButtonNode {
+ zoom: 1;
+}
+
+.tundra .dijitButtonText {
+ padding: 0 0.3em;
+}
+
+.tundra .dijitComboBox .dijitButtonNode {
+ border: 0px;
+}
+
+.tundra .dijitArrowButton {
+ color: #111;
+}
+
+.tundra .dijitComboButton .dijitDownArrowButton {
+ padding-right:4px;
+}
+
+.dj_ff2 .tundra .dijitComboButton .dijitButtonContentsFocused,
+.dj_ff2 .tundra .dijitComboButton .dijitDownArrowButtonFocused {
+ border: 1px black dotted !important;
+}
+
+.tundra .dijitButtonDisabled .dijitButtonNode,
+.tundra .dijitToggleButtonDisabled .dijitButtonNode,
+.tundra .dijitDropDownButtonDisabled .dijitButtonNode,
+.tundra .dijitComboButtonDisabled .dijitButtonNode,
+.tundra .dijitComboBoxDisabled,
+.tundra .dijitSpinnerDisabled,
+.tundra .dijitSpinnerDisabled .dijitButtonNode {
+ /* disabled state - inner */
+ border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+ /*color:#b4b4b4;*/
+ background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x;
+ opacity: 0.60; /* Safari, Opera and Mozilla */
+}
+.dj_ie .tundra .dijitButtonDisabled .dijitButtonNode *,
+.dj_ie .tundra .dijitToggleButtonDisabled .dijitButtonNode *,
+.dj_ie .tundra .dijitDropDownButtonDisabled .dijitButtonNode *,
+.dj_ie .tundra .dijitComboButtonDisabled .dijitButtonNode *,
+.dj_ie .tundra .dijitSpinnerDisabled .dijitButtonNode * {
+ filter: gray() alpha(opacity=50); /* IE */
+}
+
+.tundra .dijitButtonHover .dijitButtonNode,
+.tundra .dijitToggleButtonHover .dijitButtonNode,
+.tundra .dijitDropDownButtonHover .dijitButtonNode,
+.tundra .dijitComboButtonHover .dijitButtonContents,
+.tundra .dijitComboButtonDownArrowHover .dijitDownArrowButton,
+.tundra .dijitComboBoxHover .dijitDownArrowButton,
+.tundra .dijitSpinnerUpArrowHover .dijitUpArrowButton,
+.tundra .dijitSpinnerDownArrowHover .dijitDownArrowButton {
+ /* hover state - inner */
+ /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */
+ border-color:#a5beda;
+ border-bottom-color:#5c7590;
+ border-right-color:#5c7590;
+ color:#000;
+ background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
+}
+
+.tundra .dijitSpinnerUpArrowActive .dijitUpArrowButton,
+.tundra .dijitSpinnerDownArrowActive .dijitDownArrowButton,
+.tundra .dijitButtonActive .dijitButtonNode,
+.tundra .dijitToggleButtonActive .dijitButtonNode,
+.tundra .dijitDropDownButtonActive .dijitButtonNode,
+.tundra .dijitComboButtonActive .dijitButtonContents,
+.tundra .dijitDownArrowActive .dijitDownArrowButton,
+.tundra .dijitComboBoxActive .dijitDownArrowButton {
+ /* active state - inner (for when you are pressing a normal button, or
+ * when a toggle button is in a depressed state
+ */
+ border-color:#366dba;
+ background: #ededed url("../images/buttonActive.png") bottom repeat-x;
+}
+
+
+
+.tundra .dijitArrowButtonInner {
+ background:url("../images/arrowDown.png") no-repeat center center;
+}
+.tundra .dijitUpArrowButton .dijitArrowButtonInner { background-image:url("../images/arrowUp.png"); }
+.dj_ie6 .tundra .dijitArrowButtonInner {
+ background-image:url("../images/arrowDown.gif");
+}
+.dj_ie6 .tundra .dijitUpArrowButton .dijitArrowButtonInner {
+ background-image:url("../images/arrowUp.gif");
+}
+.tundra .dijitComboBox .dijitArrowButton .dijitArrowButtonInner {
+ background:url("../images/comboArrowDown.gif") no-repeat center center;
+}
+.tundra .dijitComboBoxHover .dijitArrowButtonInner {
+ /* TODO: url("../images/arrowDownHover.png") but in IE6 it flickers some? */
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Checkbox.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Checkbox.css
new file mode 100644
index 00000000..8b7b2cc0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Checkbox.css
@@ -0,0 +1,47 @@
+.tundra .dijitToggleButton .dijitCheckBoxIcon {
+ background-image: url('../images/checkmarkNoBorder.gif');
+}
+
+.tundra .dijitCheckBox,
+.tundra .dijitCheckBoxIcon /* inside a toggle button */ {
+ background-image: url('../images/checkmark.gif'); /* checkbox sprite image */
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 0;
+ padding: 0;
+}
+
+.tundra .dijitCheckBox,
+.tundra .dijitToggleButton .dijitCheckBoxIcon {
+ /* unchecked */
+ background-position: -16px;
+}
+
+.tundra .dijitCheckBoxChecked,
+.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon {
+ /* checked */
+ background-position: 0px;
+}
+
+.tundra .dijitCheckBoxDisabled {
+ /* disabled */
+ background-position: -48px;
+}
+
+.tundra .dijitCheckBoxCheckedDisabled {
+ /* disabled but checked */
+ background-position: -32px;
+}
+
+.tundra .dijitCheckBoxHover,
+.tundra .dijitCheckBoxFocused {
+ /* hovering over an unchecked enabled checkbox */
+ background-position: -80px;
+}
+
+.tundra .dijitCheckBoxCheckedHover,
+.tundra .dijitCheckBoxCheckedFocused {
+ /* hovering over a checked enabled checkbox */
+ background-position: -64px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Common.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Common.css
new file mode 100644
index 00000000..5bbb265b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Common.css
@@ -0,0 +1,126 @@
+
+/****
+ dijit.form.TextBox
+ dijit.form.ValidationTextBox
+ dijit.form.SerializableTextBox
+ dijit.form.RangeBoundTextBox
+ dijit.form.NumberTextBox
+ dijit.form.CurrencyTextBox
+ dijit.form.NumberSpinner
+ dijit.form.ComboBox (partial)
+ ****/
+
+.tundra .dijitInputField INPUT,
+.tundra .dijitTextBox,
+.tundra .dijitComboBox,
+.tundra .dijitSpinner {
+ margin: 0em 0.1em;
+}
+
+.tundra .dijitTextBox,
+.tundra .dijitComboBox,
+.tundra .dijitSpinner,
+.tundra .dijitInlineEditor input {
+ /* For all except dijit.form.NumberSpinner: the actual input element.
+ For TextBox, ComboBox, Spinner: the table that contains the input.
+ Otherwise the actual input element.
+ */
+ background:#fff url("../images/validationInputBg.png") repeat-x top left;
+ #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+ border:1px solid #b3b3b3;
+ line-height: normal;
+}
+
+.tundra .dijitComboBox .dijitButtonNode {
+ padding: 0 0.2em;
+}
+.tundra .dijitComboBox .dijitButtonNode,
+.tundra .dijitSpinner .dijitButtonNode {
+ /* line between the input area and the drop down button */
+ border-color: #9b9b9b;
+}
+
+.tundra .dijitTextBoxFocused,
+.tundra .dijitComboBoxFocused,
+.tundra .dijitSpinnerFocused {
+ /* input field when focused (ie: typing affects it) */
+ border-color:#406b9b;
+}
+.tundra .dijitComboBoxFocused .dijitButtonNode, .tundra .dijitSpinnerFocused .dijitButtonNode {
+ border-left-color:#366dba;
+}
+.tundra .dijitSpinnerFocused .dijitDownArrowButton {
+ border-top-color:#366dba;
+}
+
+.tundra .dijitError {
+ border-color:#f3d118;
+ background-color:#f9f7ba;
+ background-image:none;
+}
+.dj_ie6 .tundra .dijitError INPUT {
+ /* background-color: transparent on an doesn't work on IE6 */
+ background-color:#f9f7ba !important;
+}
+
+.tundra .dijitErrorFocused {
+ background-color:#ff6;
+ background-image:none;
+}
+.dj_ie6 .tundra .dijitErrorFocused INPUT {
+ /* background-color: transparent on an doesn't work on IE6 */
+ background-color:#ff6 !important;
+}
+
+/* Validation errors */
+.tundra .dijitValidationIcon {
+ /* prevent height change when widget goes from valid to invalid state */
+ width: 16px;
+ background: transparent url('../images/warning.png') no-repeat center center;
+}
+
+
+
+/* inline edit boxen */
+.tundra .dijitInlineValue {
+ /* span around an inline-editable value when NOT in edit mode */
+ padding:3px;
+ margin:4px;
+}
+
+
+/* MOW: trying to get this to look like a mini-dialog. Advised? */
+.tundra .dijitInlineEditor {
+ /* fieldset surrounding an inlineEditor in edit mode */
+ display: inline-block;
+ display: -moz-inline-stack;
+ #display:inline;
+ /*
+ border-style: solid;
+ border-color: #7788a0 #344257 #344257 #7788a0;
+ border-width:1px 2px 2px 1px;
+ -moz-border-radius:0px 2px 0px 2px; make BL and TR corners indent on Moz so it looks like we have a shadow
+ background-color:white;
+ */
+}
+
+.dijitInlineEditor .saveButton,
+.dijitInlineEditor .cancelButton {
+ margin:3px 3px 3px 0px;
+}
+
+.RichTextEditable {
+ border:1px solid #bfbfbf;
+ border-top:0;
+}
+
+/*
+ * IE6: can't display PNG images with gradient transparency.
+ * Want to use filter property for those images, but then need to specify a path relative
+ * to the main page, rather than relative to this file... using gifs for now
+ */
+
+.dj_ie6 .tundra .dijitInputField
+{
+ background: url("../images/validationInputBg.gif") repeat-x top left #fff;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/RadioButton.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/RadioButton.css
new file mode 100644
index 00000000..e1d77137
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/RadioButton.css
@@ -0,0 +1,49 @@
+.tundra .dijitToggleButton .dijitRadio,
+.tundra .dijitToggleButton .dijitRadioIcon {
+ background-image: url('../images/checkmarkNoBorder.gif');
+}
+
+.tundra .dijitRadio,
+.tundra .dijitRadioIcon { /* inside a toggle button */
+ background-image: url('../images/checkmark.gif'); /* checkbox sprite image */
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ margin: 0;
+ padding: 0;
+}
+
+.tundra .dijitRadio,
+.tundra .dijitToggleButton .dijitRadioIcon {
+ /* unselected */
+ background-position: -112px;
+}
+
+.tundra .dijitRadioChecked,
+.tundra .dijitToggleButtonChecked .dijitRadioIcon {
+ /* selected */
+ background-position: -96px;
+}
+
+.tundra .dijitRadioDisabled {
+ /* unselected and disabled */
+ background-position: -144px;
+}
+
+.tundra .dijitRadioCheckedDisabled {
+ /* selected but disabled */
+ background-position: -128px;
+}
+
+.tundra .dijitRadioHover,
+.tundra .dijitRadioFocused {
+ /* hovering over an unselected enabled radio button */
+ background-position: -176px;
+}
+
+.tundra .dijitRadioCheckedHover,
+.tundra .dijitRadioCheckedFocused {
+ /* hovering over a selected enabled radio button */
+ background-position: -160px;
+}
+
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider.css
new file mode 100644
index 00000000..47797ce1
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider.css
@@ -0,0 +1,134 @@
+.tundra .dijitSliderProgressBarH {
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+
+.tundra .dijitSliderProgressBarV {
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+
+.tundra .dijitSliderFocused .dijitSliderProgressBarH,
+.tundra .dijitSliderFocused .dijitSliderLeftBumper {
+ background-image:url("../images/sliderFullFocus.png");
+}
+
+.tundra .dijitSliderFocused .dijitSliderProgressBarV,
+.tundra .dijitSliderFocused .dijitSliderBottomBumper {
+ background-image:url("../images/sliderFullVerticalFocus.png");
+}
+
+.tundra .dijitSliderRemainingBarV {
+ border-color: #b4b4b4;
+ background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
+}
+
+.tundra .dijitSliderRemainingBarH {
+ border-color: #b4b4b4;
+ background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+}
+
+.tundra .dijitSliderBar {
+ border-style: solid;
+ outline:1px;
+}
+.tundra .dijitSliderFocused .dijitSliderBar {
+ border-color:#333;
+}
+
+.dijit_a11y .dijitSliderProgressBar {
+ background-color:#333 !important;
+}
+
+.tundra .dijitSliderImageHandleH {
+ border:0px;
+ width:16px;
+ height:16px;
+ background:url("../images/preciseSliderThumb.png") no-repeat center top;
+ cursor:pointer;
+}
+.tundra .dijitSliderFocused .dijitSliderImageHandleH {
+ background-image:url("../images/preciseSliderThumbFocus.png");
+ #background-image:url("../images/preciseSliderThumbFocus.gif");
+}
+
+.dj_ie6 .tundra .dijitSliderImageHandleH {
+ background-image:url("../images/preciseSliderThumb.gif");
+}
+
+.tundra .dijitSliderLeftBumper {
+ border-left-width: 1px;
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+
+.tundra .dijitSliderRightBumper {
+ background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+ border-color: #b4b4b4;
+ border-right-width: 1px;
+}
+
+.tundra .dijitSliderImageHandleV {
+ border:0px;
+ width:16px;
+ height:16px;
+ background:url("../images/sliderThumb.png") no-repeat center center;
+ cursor:pointer;
+}
+
+.tundra .dijitSliderFocused .dijitSliderImageHandleV {
+ background-image:url("../images/sliderThumbFocus.png");
+}
+.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV {
+ background-image:url("../images/sliderThumbFocus.gif");
+}
+
+.tundra .dijitSliderBottomBumper {
+ border-bottom-width: 1px;
+ border-color: #aab0bb;
+ background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+
+.tundra .dijitSliderTopBumper {
+ background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
+ border-color: #b4b4b4;
+ border-top-width: 1px;
+}
+
+.tundra .dijitSliderIncrementIconH,
+.tundra .dijitSliderIncrementIconV {
+ background:url('../images/arrowUp.png') no-repeat center center;
+ width:16px; height:16px;
+ cursor:pointer;
+}
+.tundra .dijitSliderIncrementIconH {
+ background-image:url('../images/arrowRight.png');
+}
+
+.tundra .dijitSliderDecrementIconH,
+.tundra .dijitSliderDecrementIconV {
+ width:16px;
+ height:16px;
+ cursor:pointer;
+ background:url('../images/arrowDown.png') no-repeat center center;
+}
+.tundra .dijitSliderDecrementIconH { background-image:url('../images/arrowLeft.png'); }
+
+.tundra .dijitSliderButtonInner {
+ visibility:hidden;
+}
+
+.tundra .dijitSliderDisabled {
+ opacity:0.6 !important;
+}
+
+.dj_ie6 .tundra .dijitSliderDisabled,
+.dj_ie6 .tundra .dijitSliderDisabled .dijitRuleContainer,
+.dj_ie6 .tundra .dijitSliderDisabled .dijitSliderRemainingBar,
+.dj_ie6 .tundra .dijitSliderDisabled .dijitSliderProgressBar {
+ filter: gray() alpha(opacity=40);
+}
+
+.tundra .dijitSliderDisabled * {
+ cursor: not-allowed !important;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider_rtl.css
new file mode 100644
index 00000000..d6b80b82
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/Slider_rtl.css
@@ -0,0 +1,31 @@
+.dijitRtl .dijitSliderProgressBarH,
+.dijitRtl .dijitSliderRemainingBarH,
+.dijitRtl .dijitSliderLeftBumper,
+.dijitRtl .dijitSliderRightBumper,
+.dijitRtl .dijitSliderTopBumper {
+ background-position: top right;
+}
+
+.dijitRtl .dijitSliderProgressBarV,
+.dijitRtl .dijitSliderRemainingBarV,
+.dijitRtl .dijitSliderBottomBumper {
+ background-position: bottom right;
+}
+
+.dijitRtl .dijitSliderLeftBumper {
+ border-left-width: 0px;
+ border-right-width: 1px;
+}
+
+.dijitRtl .dijitSliderRightBumper {
+ border-left-width: 1px;
+ border-right-width: 0px;
+}
+
+.dijitRtl .dijitSliderIncrementIconH {
+ background-image:url('../images/arrowLeft.png');
+}
+
+.dijitRtl .dijitSliderDecrementIconH {
+ background-image:url('../images/arrowRight.png');
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/TextArea.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/TextArea.css
new file mode 100644
index 00000000..2f250017
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/form/TextArea.css
@@ -0,0 +1,10 @@
+.tundra .dijitTextArea {
+ /* For all except dijit.form.NumberSpinner: the actual input element.
+ For TextBox, ComboBox, Spinner: the table that contains the input.
+ Otherwise the actual input element.
+ */
+ background:#fff url("../images/validationInputBg.png") repeat-x top left;
+ #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+ border:1px solid #b3b3b3;
+ line-height: normal;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/accordionItemActive.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/accordionItemActive.gif
new file mode 100644
index 00000000..f7e04a3b
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/accordionItemActive.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowDown.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowDown.gif
new file mode 100644
index 00000000..7a73f827
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowDown.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowDown.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowDown.png
new file mode 100644
index 00000000..148b810e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowDown.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowLeft.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowLeft.gif
new file mode 100644
index 00000000..22e86498
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowLeft.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowLeft.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowLeft.png
new file mode 100644
index 00000000..ff0dbfc9
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowLeft.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowRight.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowRight.gif
new file mode 100644
index 00000000..7e21dc08
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowRight.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowRight.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowRight.png
new file mode 100644
index 00000000..c8b64ef8
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowRight.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowUp.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowUp.gif
new file mode 100644
index 00000000..9452da05
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowUp.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowUp.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowUp.png
new file mode 100644
index 00000000..c4c06cee
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/arrowUp.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonActive.png
new file mode 100644
index 00000000..09417b1a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonDisabled.png
new file mode 100644
index 00000000..70766f4f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonEnabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonEnabled.png
new file mode 100644
index 00000000..924522a9
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonEnabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonHover.png
new file mode 100644
index 00000000..b074e4ed
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/buttonHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarDayLabel.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarDayLabel.png
new file mode 100644
index 00000000..c1a1553e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarDayLabel.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarMonthLabel.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarMonthLabel.png
new file mode 100644
index 00000000..fd2cf0ab
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarMonthLabel.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarYearLabel.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarYearLabel.png
new file mode 100644
index 00000000..dd344f54
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/calendarYearLabel.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxActive.png
new file mode 100644
index 00000000..24c935b9
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxDisabled.png
new file mode 100644
index 00000000..f02a752b
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxEnabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxEnabled.png
new file mode 100644
index 00000000..2205f075
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxEnabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxHover.png
new file mode 100644
index 00000000..1dfeea8a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkboxHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.gif
new file mode 100644
index 00000000..77237aa5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.png
new file mode 100644
index 00000000..a473c9c0
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmark.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.gif
new file mode 100644
index 00000000..11dc8002
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.png
new file mode 100644
index 00000000..7696e288
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/checkmarkNoBorder.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.gif
new file mode 100644
index 00000000..d582290a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.png
new file mode 100644
index 00000000..6f059e61
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/circleIcon.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/comboArrowDown.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/comboArrowDown.gif
new file mode 100644
index 00000000..e00a87b3
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/comboArrowDown.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.gif
new file mode 100644
index 00000000..167a3e0d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.psd b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.psd
new file mode 100644
index 00000000..0a7bf23a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dijitProgressBarAnim.psd differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndCopy.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndCopy.png
new file mode 100644
index 00000000..baecd7cf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndCopy.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndMove.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndMove.png
new file mode 100644
index 00000000..07f878cf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndMove.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoCopy.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoCopy.png
new file mode 100644
index 00000000..9bf9c339
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoCopy.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoMove.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoMove.png
new file mode 100644
index 00000000..cb8bd8bd
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dndNoMove.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.gif
new file mode 100644
index 00000000..0da12393
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.png
new file mode 100644
index 00000000..ac118dd7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/dojoTundraGradientBg.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowDown.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowDown.png
new file mode 100644
index 00000000..92678d2f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowDown.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowUp.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowUp.png
new file mode 100644
index 00000000..bba30fe9
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/doubleArrowUp.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor.gif
new file mode 100644
index 00000000..1c96329c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor_rtl.gif
new file mode 100644
index 00000000..ef049380
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/editor_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderClosed.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderClosed.gif
new file mode 100644
index 00000000..d32d3134
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderClosed.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderOpened.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderOpened.gif
new file mode 100644
index 00000000..45359fb6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/folderOpened.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i.gif
new file mode 100644
index 00000000..ebd95a7a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half.gif
new file mode 100644
index 00000000..2947c4fa
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half_rtl.gif
new file mode 100644
index 00000000..4f60ec44
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_half_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_rtl.gif
new file mode 100644
index 00000000..7dafaade
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/i_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/leaf.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/leaf.gif
new file mode 100644
index 00000000..85b01781
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/leaf.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/loading.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/loading.gif
new file mode 100644
index 00000000..6e7c8e5e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/loading.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/menu.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/menu.png
new file mode 100644
index 00000000..f5b93d11
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/menu.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/minusButton.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/minusButton.gif
new file mode 100644
index 00000000..48d51724
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/minusButton.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/no.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/no.gif
new file mode 100644
index 00000000..9021a14e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/no.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/noX.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/noX.gif
new file mode 100644
index 00000000..4a16dc79
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/noX.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/plusButton.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/plusButton.gif
new file mode 100644
index 00000000..103c021d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/plusButton.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/popupMenuBg.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/popupMenuBg.gif
new file mode 100644
index 00000000..15f4f1b8
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/popupMenuBg.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.gif
new file mode 100644
index 00000000..15d4879c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.png
new file mode 100644
index 00000000..f2fc3387
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
new file mode 100644
index 00000000..b44611c7
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.png
new file mode 100644
index 00000000..fb063237
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/preciseSliderThumbFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-1.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-1.png
new file mode 100644
index 00000000..cfc3fd2c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-1.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-2.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-2.png
new file mode 100644
index 00000000..d27981d6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-2.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-3.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-3.png
new file mode 100644
index 00000000..3b92a7db
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-3.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-4.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-4.png
new file mode 100644
index 00000000..61e4276c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-4.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-5.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-5.png
new file mode 100644
index 00000000..48b189ae
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-5.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-6.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-6.png
new file mode 100644
index 00000000..af50c4d5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-6.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-7.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-7.png
new file mode 100644
index 00000000..a4fffa30
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-7.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-8.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-8.png
new file mode 100644
index 00000000..b4c92f31
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-8.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-9.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-9.png
new file mode 100644
index 00000000..d8bff13a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim-9.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.gif
new file mode 100644
index 00000000..d3df139d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.psd b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.psd
new file mode 100644
index 00000000..0a7bf23a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarAnim.psd differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarEmpty.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarEmpty.png
new file mode 100644
index 00000000..84c0e2e1
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarEmpty.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarFull.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarFull.png
new file mode 100644
index 00000000..0ce60f55
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/progressBarFull.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActive.png
new file mode 100644
index 00000000..60840c78
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveDisabled.png
new file mode 100644
index 00000000..b49724e5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveHover.png
new file mode 100644
index 00000000..f21d4e5e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonActiveHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonDisabled.png
new file mode 100644
index 00000000..8da7e78f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonEnabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonEnabled.png
new file mode 100644
index 00000000..4342feaf
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonEnabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonHover.png
new file mode 100644
index 00000000..fcb697fb
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/radioButtonHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmpty.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmpty.png
new file mode 100644
index 00000000..070c12f5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmpty.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmptyVertical.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmptyVertical.png
new file mode 100644
index 00000000..45aceb7b
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderEmptyVertical.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFull.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFull.png
new file mode 100644
index 00000000..4b3fcbb0
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFull.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullFocus.png
new file mode 100644
index 00000000..ee193560
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVertical.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVertical.png
new file mode 100644
index 00000000..e7618e83
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVertical.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVerticalFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVerticalFocus.png
new file mode 100644
index 00000000..3ab37e6c
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderFullVerticalFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumb.png
new file mode 100644
index 00000000..fe335835
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.gif
new file mode 100644
index 00000000..15dd3d9d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.png
new file mode 100644
index 00000000..fe9763a4
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/sliderThumbFocus.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowDown.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowDown.png
new file mode 100644
index 00000000..cabd01cd
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowDown.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowUp.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowUp.png
new file mode 100644
index 00000000..a4dd6706
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/smallArrowUp.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH-thumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
new file mode 100644
index 00000000..e7bc204d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH-thumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH.png
new file mode 100644
index 00000000..0e5e4715
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerH.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV-thumb.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
new file mode 100644
index 00000000..410a0a7a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV-thumb.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV.png
new file mode 100644
index 00000000..6781f0ea
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/splitContainerSizerV.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
new file mode 100644
index 00000000..251389a2
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
new file mode 100644
index 00000000..e81ba07f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/spriteRoundedIconsSmall.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabActive.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabActive.png
new file mode 100644
index 00000000..eaf1ed48
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabActive.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.gif
new file mode 100644
index 00000000..2cb0ee1f
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.png
new file mode 100644
index 00000000..136cd220
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabClose.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.gif
new file mode 100644
index 00000000..f59471e6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.png
new file mode 100644
index 00000000..290e77f5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabCloseHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabDisabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabDisabled.png
new file mode 100644
index 00000000..ea0f6172
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabDisabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabEnabled.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabEnabled.png
new file mode 100644
index 00000000..d40cf452
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabEnabled.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.gif
new file mode 100644
index 00000000..471e0eee
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.png
new file mode 100644
index 00000000..16487f1d
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tabHover.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBar.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBar.png
new file mode 100644
index 00000000..617d9d42
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBar.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBarBg.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBarBg.gif
new file mode 100644
index 00000000..1cd57cf5
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/titleBarBg.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.gif
new file mode 100644
index 00000000..015447ee
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.png
new file mode 100644
index 00000000..c502c836
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorDown.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.gif
new file mode 100644
index 00000000..846b3b8e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.png
new file mode 100644
index 00000000..a5c27206
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorLeft.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.gif
new file mode 100644
index 00000000..2564c3ac
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.png
new file mode 100644
index 00000000..57e8be0e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorRight.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.gif
new file mode 100644
index 00000000..b8ff4c01
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.png
new file mode 100644
index 00000000..b891f882
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/tooltipConnectorUp.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf.gif
new file mode 100644
index 00000000..4b1c6c15
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
new file mode 100644
index 00000000..b563d7c6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_loading.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_loading.gif
new file mode 100644
index 00000000..424d376a
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_loading.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus.gif
new file mode 100644
index 00000000..59777823
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
new file mode 100644
index 00000000..cf50054b
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_minus_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_mius.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_mius.gif
new file mode 100644
index 00000000..59777823
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_mius.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus.gif
new file mode 100644
index 00000000..2b96a555
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus_rtl.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
new file mode 100644
index 00000000..11f99167
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/treeExpand_plus_rtl.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.gif b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.gif
new file mode 100644
index 00000000..5a9916a6
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.gif differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.png
new file mode 100644
index 00000000..d222fb4e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/validationInputBg.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/warning.png b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/warning.png
new file mode 100644
index 00000000..c52f83dc
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/images/warning.png differ
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/AccordionContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/AccordionContainer.css
new file mode 100644
index 00000000..14d46aeb
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/AccordionContainer.css
@@ -0,0 +1,37 @@
+/* Accordion */
+
+.tundra .dijitAccordionPane {
+ background-color: #e7e7e7;
+}
+
+.tundra .dijitAccordionTitle {
+ background:#fafafa url("../images/titleBar.png") repeat-x bottom left;
+ border-top: 1px solid #bfbfbf;
+ padding: 6px 4px 6px 8px;
+ cursor:pointer;
+}
+
+.tundra .dijitAccordionTitle-selected {
+ background: #f9f9f9 url("../images/accordionItemActive.gif") bottom repeat-x;
+ font-weight: bold;
+ border-top: 1px solid #aaaaaa;
+ border-bottom: 1px solid #bfbfbf;
+ padding: 6px 4px 6px 8px;
+ cursor: default;
+}
+
+.tundra .dijitAccordionArrow {
+ background:url("../images/plusButton.gif") no-repeat;
+ width:15px;
+ height:15px;
+ margin-top:2px;
+}
+
+.tundra .dijitAccordionTitle-selected .dijitAccordionArrow {
+ background:none;
+ margin-top:2px;
+}
+
+.tundra .dijitAccordionBody {
+ background: #fff;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/BorderContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/BorderContainer.css
new file mode 100644
index 00000000..da281067
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/BorderContainer.css
@@ -0,0 +1,31 @@
+/* BorderContainer */
+
+.tundra .dijitSplitterH {
+ background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+ border:0;
+ border-left:0px solid #d3d3d3;
+ border-right:0px solid #d3d3d3;
+ height:5px;
+}
+
+.tundra .dijitSplitterH .dijitSplitterThumb {
+ background:url("../images/splitContainerSizerH-thumb.png") no-repeat;
+ top:1px;
+ width:19px;
+ height:2px;
+}
+
+.tundra .dijitSplitterV {
+ background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+ border:0;
+ border-top:0px solid #d3d3d3;
+ border-bottom:0px solid #d3d3d3;
+ width:5px;
+}
+
+.tundra .dijitSplitterV .dijitSplitterThumb {
+ background:url("../images/splitContainerSizerV-thumb.png") no-repeat;
+ left:1px;
+ height:19px;
+ width:5px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/SplitContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/SplitContainer.css
new file mode 100644
index 00000000..a1e87233
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/SplitContainer.css
@@ -0,0 +1,35 @@
+.tundra .dijitSplitContainerSizerH {
+ background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+ border:0;
+ border-left:1px solid #bfbfbf;
+ border-right:1px solid #bfbfbf;
+ width:7px;
+}
+
+.tundra .dijitSplitContainerSizerH .thumb {
+ background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc;
+ left:1px;
+ width:3px;
+ height:19px;
+ overflow: hidden;
+}
+
+.tundra .dijitSplitContainerSizerV {
+ background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+ border:0;
+ border-top:1px solid #bfbfbf;
+ border-bottom:1px solid #bfbfbf;
+ height:7px;
+}
+
+.tundra .dijitSplitContainerSizerV .thumb {
+ background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc;
+ top:1px;
+ width:19px;
+ height:3px;
+ overflow: hidden;
+}
+
+.tundra .dijitSplitter {
+ border-color: #bfbfbf;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer.css
new file mode 100644
index 00000000..ee3ff6bd
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer.css
@@ -0,0 +1,138 @@
+
+/* Tabs */
+
+.tundra .dijitTabPaneWrapper {
+ /*
+ overflow: hidden;
+ */
+ background:#fff;
+ border:1px solid #ccc;
+}
+
+.tundra .dijitTab {
+ line-height:normal;
+ margin-right:5px; /* space between one tab and the next in top/bottom mode */
+ padding:0px;
+ border:1px solid #ccc;
+ background:#e2e2e2 url("../images/tabEnabled.png") repeat-x;
+}
+
+.tundra .dijitAlignLeft .dijitTab,
+.tundra .dijitAlignRight .dijitTab {
+ margin-right:0px;
+ margin-bottom:5px; /* space between one tab and the next in left/right mode */
+}
+
+.tundra .dijitTabInnerDiv {
+ padding:6px 10px 4px 10px;
+ border-left:1px solid #fff;
+ border-bottom:1px solid #fff;
+}
+
+.tundra .dijitTabHover,
+.tundra .dijitTabCloseButtonHover {
+ color: #243C5F;
+ border-top-color:#92a0b3;
+ border-left-color:#92a0b3;
+ border-right-color:#92a0b3;
+ background:#e2e2e2 url("../images/tabHover.png") repeat-x bottom;
+}
+
+.dj_ie6 .tundra .dijitTabHover,
+.dj_ie6 .tundra .dijitTabCloseButtonHover {
+ background-image: url("../images/tabHover.gif");
+}
+
+.tundra .dijitTabChecked,
+.tundra .dijitTabCloseButtonChecked
+{
+ /* the selected tab (with or without hover) */
+ background-color:#fff;
+ border-color: #ccc;
+ background-image:none;
+}
+
+/* make the active tab white on the side next to the content pane */
+.tundra .dijitAlignTop .dijitTabChecked,
+.tundra .dijitAlignTop .dijitTabCloseButtonChecked
+{
+ border-bottom-color:white;
+ vertical-align:bottom;
+}
+
+.tundra .dijitAlignBottom .dijitTabChecked,
+.tundra .dijitAlignBottom .dijitTabCloseButtonChecked
+{
+ border-top-color:white;
+ -moz-border-radius:2px 2px 0px 0px; /* eliminate some border detritrus on moz */
+}
+
+.tundra .dijitAlignLeft .dijitTabChecked,
+.tundra .dijitAlignLeft .dijitTabCloseButtonChecked
+{
+ border-right-color:white;
+}
+
+.tundra .dijitAlignRight .dijitTabChecked,
+.tundra .dijitAlignRight .dijitTabCloseButtonChecked
+{
+ border-left-color:white;
+}
+
+
+/* make space for a positioned close button */
+.tundra .dijitTab .dijitClosable {
+ position: relative;
+ padding:6px 20px 4px 10px;
+}
+
+.tundra .dijitTab .dijitClosable .closeImage {
+ position:absolute;
+ top: 7px;
+ right: 3px;
+ height: 12px;
+ width: 12px;
+ padding: 0;
+ margin: 0;
+ background: url("../images/tabClose.png") no-repeat right top;
+}
+.dj_ie6 .dijitTab .dijitClosable .closeImage {
+ background-image:url("../images/tabClose.gif");
+}
+
+.tundra .dijitTabCloseButton .dijitClosable .closeImage {
+ background-image : url("../images/tabClose.png");
+}
+.dj_ie6 .tundra .dijitTabCloseButton .dijitClosable .closeImage {
+ background-image : url("../images/tabClose.gif");
+}
+
+.tundra .dijitTabCloseButtonHover .dijitClosable .closeImage {
+ background-image : url("../images/tabCloseHover.png");
+}
+.dj_ie6 .tundra .dijitTabCloseButtonHover .dijitClosable .closeImage {
+ background-image : url("../images/tabCloseHover.gif");
+}
+
+.tundra .dijitAlignLeft .dijitTab .dijitClosable {
+ padding:6px 10px 4px 20px;
+}
+
+/* correct for IE6.
+ We cant force hasLayout as that blows out the shrink wrapped tabs
+ ..so we shim in the closeImage position properties instead
+*/
+.dj_ie6 .tundra .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ left:-20px;
+}
+
+.tundra .dijitAlignBottom .dijitTab .dijitClosable .closeImage {
+ top: auto;
+ bottom: 7px;
+ right: 3px;
+}
+
+.tundra .dijitAlignLeft .dijitTab .dijitClosable .closeImage {
+ top: 7px;
+ left: 3px;
+}
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer_rtl.css
new file mode 100644
index 00000000..4ccc03a6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/layout/TabContainer_rtl.css
@@ -0,0 +1,89 @@
+.dijitRtl .dijitTab {
+ margin-right:0;
+ margin-left:5px; /* space between one tab and the next in top/bottom mode */
+}
+
+.dijitRtl .dijitTab .dijitTabInnerDiv {
+ border-left:none;
+ border-right:1px solid #fff;
+}
+
+.dijitRtl .dijitTab .dijitClosable {
+ padding: 6px 10px 4px 20px;
+}
+
+.dijitRtl .dijitTab .closeImage {
+ position:static;
+ padding: 0px 12px 0px 0px;
+}
+
+.dj_gecko .dijitTab .closeImage {
+ position:relative;
+ float:none;
+ padding:0;
+}
+
+.dijitRtl .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+ background-position: left top;
+}
+
+.dj_ie .dijitRtl .dijitTab .dijitClosable .closeImage {
+ width:12px !important;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab,
+.dijitRtl .dijitAlignRight .dijitTab {
+ margin-left:0px;
+}
+
+.dijitRtl .dijitAlignBottom .dijitTab .dijitClosable .closeImage {
+ right:auto;
+ left:3px;
+}
+
+.dijitRtl .dijitAlignRight .dijitTab .dijitTabInnerDiv {
+ padding-left:10px;
+ padding-right:20px;
+}
+
+.dijitRtl .dijitAlignLeft .dijitTab .dijitTabInnerDiv {
+ padding-left:20px;
+ padding-right:10px;
+}
+
+.dj_ie .dijitRtl .dijitAlignLeft .dijitTab .dijitTabInnerDiv {
+ padding-left:19px;
+}
+
+.dj_gecko .dijitRtl .dijitAlignLeft .dijitTab .dijitTabInnerDiv {
+ padding-left:11px;
+}
+
+.dijitRtl .dijitAlignRight .dijitTab .dijitClosable .closeImage {
+ left:auto;
+ right:3px;
+}
+
+.dj_ie7 .dijitRtl .dijitAlignLeft .dijitTab .dijitTabContent{
+ position:relative;
+}
+
+.dj_ie7 .dijitRtl .dijitAlignLeft .dijitTab .dijitClosable .closeImage{
+ position:absolute;
+ top:2px;
+ left:3px;
+}
+
+.dj_ie6 .dijitRtl .dijitAlignLeft .dijitTab .dijitClosable .closeImage{
+ float:left;
+}
+
+.dj_ie6 .dijitRtl .dijitAlignLeft .dijitTab .dijitClosable .tabLabel{
+ float:right;
+}
+
+.dj_ie .dijitTab .dijitTabInnerDiv{
+ width : 1%;
+}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra.css
new file mode 100644
index 00000000..6b3fc7b6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra.css
@@ -0,0 +1,37 @@
+/*
+ Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file.
+
+ NOTES:
+ ---
+ Dialog.css contains css classes for both Dialog and Tooltip!
+ This because currently a dijit.TooltipDialog exist. Until this is resolved
+ you need to include Dialog.css for both dijits
+ ---
+ Toolbar.css contains classes also used in Editor. Until this is resolved
+ you need to include Toolbar.css for both Toolbar and Editor
+ ---
+ Button.css contains classes for combobox,
+
+*/
+@import url("../dijit.css");
+@import url("Common.css");
+
+@import url("layout/TabContainer.css");
+@import url("layout/AccordionContainer.css");
+@import url("layout/SplitContainer.css");
+@import url("layout/BorderContainer.css");
+@import url("form/Common.css");
+@import url("form/Button.css");
+@import url("form/Checkbox.css");
+@import url("form/RadioButton.css");
+@import url("form/TextArea.css");
+@import url("form/Slider.css");
+@import url("Tree.css");
+@import url("ProgressBar.css");
+@import url("TitlePane.css");
+@import url("Calendar.css");
+@import url("Toolbar.css");
+@import url("Dialog.css");
+@import url("Menu.css");
+@import url("Editor.css");
+@import url("ColorPalette.css");
diff --git a/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra_rtl.css b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra_rtl.css
new file mode 100644
index 00000000..8c441c9e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dijit/themes/tundra/tundra_rtl.css
@@ -0,0 +1,9 @@
+@import url("../dijit_rtl.css");
+@import url("Calendar_rtl.css");
+@import url("Dialog_rtl.css");
+@import url("Editor_rtl.css");
+@import url("Menu_rtl.css");
+@import url("Tree_rtl.css");
+@import url("TitlePane_rtl.css");
+@import url("layout/TabContainer_rtl.css");
+@import url("form/Slider_rtl.css");
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/AdapterRegistry.js b/spring-js/src/main/resources/META-INF/dojo/AdapterRegistry.js
new file mode 100644
index 00000000..66d515bb
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/AdapterRegistry.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.AdapterRegistry"]){dojo._hasResource["dojo.AdapterRegistry"]=true;dojo.provide("dojo.AdapterRegistry");dojo.AdapterRegistry=function(_1){this.pairs=[];this.returnWrappers=_1||false;};dojo.extend(dojo.AdapterRegistry,{register:function(_2,_3,_4,_5,_6){this.pairs[((_6)?"unshift":"push")]([_2,_3,_4,_5]);},match:function(){for(var i=0;i0)&&(this._pubDepth==0)){for(var i=0;i0){_33[i].cb=null;this._cleanup.push(_33[i]);}else{_33.splice(i,1);}return;}}}}};h.reinit=function(){for(var lib in OpenAjax.hub.libraries){delete OpenAjax.hub.libraries[lib];}OpenAjax.hub.registerLibrary("OpenAjax","http://openajax.org/hub","0.6",{});delete OpenAjax._subscriptions;OpenAjax._subscriptions={c:{},s:[]};delete OpenAjax._cleanup;OpenAjax._cleanup=[];OpenAjax._subIndex=0;OpenAjax._pubDepth=0;};};OpenAjax.hub.registerLibrary("OpenAjax","http://openajax.org/hub","0.6",{});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base.js b/spring-js/src/main/resources/META-INF/dojo/_base.js
new file mode 100644
index 00000000..79c8fd3a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");dojo.require("dojo._base.lang");dojo.require("dojo._base.declare");dojo.require("dojo._base.connect");dojo.require("dojo._base.Deferred");dojo.require("dojo._base.json");dojo.require("dojo._base.array");dojo.require("dojo._base.Color");dojo.requireIf(dojo.isBrowser,"dojo._base.browser");}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/Color.js b/spring-js/src/main/resources/META-INF/dojo/_base/Color.js
new file mode 100644
index 00000000..5f04cee9
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/Color.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");dojo.require("dojo._base.array");dojo.require("dojo._base.lang");dojo.Color=function(_1){if(_1){this.setColor(_1);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_7){var d=dojo;if(d.isString(_7)){d.colorFromString(_7,this);}else{if(d.isArray(_7)){d.colorFromArray(_7,this);}else{this._set(_7.r,_7.g,_7.b,_7.a);if(!(_7 instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var _b=dojo.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+_b.join("");},toCss:function(_e){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_e?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_11,end,_13,obj){var d=dojo,t=obj||new dojo.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_11[x]+(end[x]-_11[x])*_13;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_18,obj){var m=_18.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_1b,obj){var d=dojo,t=obj||new d.Color(),_1f=(_1b.length==4)?4:8,_20=(1<<_1f)-1;_1b=Number("0x"+_1b.substr(1));if(isNaN(_1b)){return null;}d.forEach(["b","g","r"],function(x){var c=_1b&_20;_1b>>=_1f;t[x]=_1f==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new dojo.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=dojo.Color.named[str];return a&&dojo.colorFromArray(a,obj)||dojo.colorFromRgb(str,obj)||dojo.colorFromHex(str,obj);};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/Deferred.js b/spring-js/src/main/resources/META-INF/dojo/_base/Deferred.js
new file mode 100644
index 00000000..7874d190
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/Deferred.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");dojo.require("dojo._base.lang");dojo.Deferred=function(_1){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=_1;this.silentlyCancelled=false;};dojo.extend(dojo.Deferred,{_nextId:(function(){var n=1;return function(){return n++;};})(),cancel:function(){var _3;if(this.fired==-1){if(this.canceller){_3=this.canceller(this);}else{this.silentlyCancelled=true;}if(this.fired==-1){if(!(_3 instanceof Error)){var _4=_3;_3=new Error("Deferred Cancelled");_3.dojoType="cancel";_3.cancelResult=_4;}this.errback(_3);}}else{if((this.fired==0)&&(this.results[0] instanceof dojo.Deferred)){this.results[0].cancel();}}},_resback:function(_5){this.fired=((_5 instanceof Error)?1:0);this.results[this.fired]=_5;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new Error("already called!");}this.silentlyCancelled=false;return;}},callback:function(_6){this._check();this._resback(_6);},errback:function(_7){this._check();if(!(_7 instanceof Error)){_7=new Error(_7);}this._resback(_7);},addBoth:function(cb,_9){var _a=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_a,_a);},addCallback:function(cb,_c){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(cb,_e){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addCallbacks:function(cb,eb){this.chain.push([cb,eb]);if(this.fired>=0){this._fire();}return this;},_fire:function(){var _11=this.chain;var _12=this.fired;var res=this.results[_12];var _14=this;var cb=null;while((_11.length>0)&&(this.paused==0)){var f=_11.shift()[_12];if(!f){continue;}try{res=f(res);_12=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){_14._resback(res);_14.paused--;if((_14.paused==0)&&(_14.fired>=0)){_14._fire();}};this.paused++;}}catch(err){console.debug(err);_12=1;res=err;}}this.fired=_12;this.results[_12]=res;if((cb)&&(this.paused)){res.addBoth(cb);}}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/NodeList.js b/spring-js/src/main/resources/META-INF/dojo/_base/NodeList.js
new file mode 100644
index 00000000..6e2e6c47
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/NodeList.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");dojo.require("dojo._base.lang");dojo.require("dojo._base.array");(function(){var d=dojo;var _2=function(_3){_3.constructor=dojo.NodeList;dojo._mixin(_3,dojo.NodeList.prototype);return _3;};var _4=function(_5,_6){return function(){var _a=arguments;var aa=d._toArray(_a,0,[null]);var s=this.map(function(i){aa[0]=i;return d[_5].apply(d,aa);});return (_6||((_a.length>1)||!d.isString(_a[0])))?this:s;};};dojo.NodeList=function(){return _2(Array.apply(null,arguments));};dojo.NodeList._wrap=_2;dojo.extend(dojo.NodeList,{slice:function(){var a=dojo._toArray(arguments);return _2(a.slice.apply(this,a));},splice:function(){var a=dojo._toArray(arguments);return _2(a.splice.apply(this,a));},concat:function(){var a=dojo._toArray(arguments,0,[this]);return _2(a.concat.apply([],a));},indexOf:function(_e,_f){return d.indexOf(this,_e,_f);},lastIndexOf:function(){return d.lastIndexOf.apply(d,d._toArray(arguments,0,[this]));},every:function(_10,_11){return d.every(this,_10,_11);},some:function(_12,_13){return d.some(this,_12,_13);},map:function(_14,obj){return d.map(this,_14,obj,d.NodeList);},forEach:function(_16,_17){d.forEach(this,_16,_17);return this;},coords:function(){return d.map(this,d.coords);},attr:_4("attr"),style:_4("style"),addClass:_4("addClass",true),removeClass:_4("removeClass",true),toggleClass:_4("toggleClass",true),connect:_4("connect",true),place:function(_18,_19){var _1a=d.query(_18)[0];return this.forEach(function(i){d.place(i,_1a,(_19||"last"));});},orphan:function(_1c){var _1d=_1c?d._filterQueryResult(this,_1c):this;_1d.forEach(function(_1e){if(_1e.parentNode){_1e.parentNode.removeChild(_1e);}});return _1d;},adopt:function(_1f,_20){var _21=this[0];return d.query(_1f).forEach(function(ai){d.place(ai,_21,_20||"last");});},query:function(_23){if(!_23){return this;}var ret=d.NodeList();this.forEach(function(_25){d.query(_23,_25).forEach(function(_26){if(_26!==undefined){ret.push(_26);}});});return ret;},filter:function(_27){var _28=this;var _a=arguments;var r=d.NodeList();var rp=function(t){if(t!==undefined){r.push(t);}};if(d.isString(_27)){_28=d._filterQueryResult(this,_a[0]);if(_a.length==1){return _28;}_a.shift();}d.forEach(d.filter(_28,_a[0],_a[1]),rp);return r;},addContent:function(_2d,_2e){var ta=d.doc.createElement("span");if(d.isString(_2d)){ta.innerHTML=_2d;}else{ta.appendChild(_2d);}if(_2e===undefined){_2e="last";}var ct=(_2e=="first"||_2e=="after")?"lastChild":"firstChild";this.forEach(function(_31){var tn=ta.cloneNode(true);while(tn[ct]){d.place(tn[ct],_31,_2e);}});return this;},empty:function(){return this.forEach("item.innerHTML='';");},instantiate:function(_33,_34){var c=d.isFunction(_33)?_33:d.getObject(_33);return this.forEach(function(i){new c(_34||{},i);});}});d.forEach(["blur","focus","click","keydown","keypress","keyup","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup"],function(evt){var _oe="on"+evt;dojo.NodeList.prototype[_oe]=function(a,b){return this.connect(_oe,a,b);};});})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/_loader/bootstrap.js b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/bootstrap.js
new file mode 100644
index 00000000..e26a0658
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/bootstrap.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+(function(){if(!this["console"]){this.console={log:function(){}};}var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _4=tn+"";console[_4]=function(){var a=Array.apply({},arguments);a.unshift(_4+":");console.log(a.join(" "));};})();}}if(typeof dojo=="undefined"){this.dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){this.dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){this.dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var _7 in djConfig){d.config[_7]=djConfig[_7];}}var _8=["Browser","Rhino","Spidermonkey","Mobile"];var t;while((t=_8.shift())){d["is"+t]=false;}dojo.locale=d.config.locale;var _a="$Rev: 13231 $".match(/\d+/);dojo.version={major:1,minor:1,patch:0,flag:"",revision:_a?+_a[0]:999999,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}dojo._mixin=function(_b,_c){var _d={};for(var x in _c){if(_d[x]===undefined||_d[x]!=_c[x]){_b[x]=_c[x];}}if(d["isIE"]&&_c){var p=_c.toString;if(typeof p=="function"&&p!=_b.toString&&p!=_d.toString&&p!="\nfunction toString() {\n [native code]\n}\n"){_b.toString=_c.toString;}}return _b;};dojo.mixin=function(obj,_11){for(var i=1,l=arguments.length;i=0)?tv:0;var _e=Math.max(_c.indexOf("WebKit"),_c.indexOf("Safari"),0);if(_e){d.isSafari=parseFloat(_c.split("Version/")[1])||((parseFloat(_c.substr(_e+7))>=419.3)?3:2)||2;}d.isAIR=(_b.indexOf("AdobeAIR")>=0)?1:0;d.isKhtml=(_c.indexOf("Konqueror")>=0||d.isSafari)?tv:0;d.isMozilla=d.isMoz=(_b.indexOf("Gecko")>=0&&!d.isKhtml)?tv:0;d.isFF=d.isIE=0;if(d.isMoz){d.isFF=parseFloat(_b.split("Firefox/")[1])||0;}if(document.all&&!d.isOpera){d.isIE=parseFloat(_c.split("MSIE ")[1])||0;}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}var cm=document.compatMode;d.isQuirks=cm=="BackCompat"||cm=="QuirksMode"||d.isIE<6;d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _10=null;var _11=null;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_10=new XMLHttpRequest();}catch(e){}}if(!_10){for(var i=0;i<3;++i){var _13=d._XMLHTTP_PROGIDS[i];try{_10=new ActiveXObject(_13);}catch(e){_11=e;}if(_10){d._XMLHTTP_PROGIDS=[_13];break;}}}if(!_10){throw new Error("XMLHTTP not available: "+_11);}return _10;};d._isDocumentOk=function(_14){var _15=_14.status||0;return (_15>=200&&_15<300)||_15==304||_15==1223||(!_15&&(location.protocol=="file:"||location.protocol=="chrome:"));};var _16=window.location+"";var _17=document.getElementsByTagName("base");var _18=(_17&&_17.length>0);d._getText=function(uri,_1a){var _1b=this._xhrObj();if(!_18&&dojo._Url){uri=(new dojo._Url(_16,uri)).toString();}if(d.config.cacheBust){uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_1b.open("GET",uri,false);try{_1b.send(null);if(!d._isDocumentOk(_1b)){var err=Error("Unable to load "+uri+" status:"+_1b.status);err.status=_1b.status;err.responseText=_1b.responseText;throw err;}}catch(e){if(_1a){return null;}throw e;}return _1b.responseText;};})();dojo._initFired=false;dojo._loadInit=function(e){dojo._initFired=true;var _1e=(e&&e.type)?e.type.toLowerCase():"load";if(arguments.callee.initialized||(_1e!="domcontentloaded"&&_1e!="load")){return;}arguments.callee.initialized=true;if("_khtmlTimer" in dojo){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount==0){dojo._modulesLoaded();}};dojo._fakeLoadInit=function(){dojo._loadInit({type:"load"});};if(dojo.config.afterOnLoad){window.setTimeout(dojo._fakeLoadInit,1000);}else{if(document.addEventListener){if(dojo.isOpera||dojo.isFF>=3||(dojo.isMoz&&dojo.config.enableMozDomContentLoaded===true)){document.addEventListener("DOMContentLoaded",dojo._loadInit,null);}window.addEventListener("load",dojo._loadInit,null);}if(dojo.isAIR){window.addEventListener("load",dojo._loadInit,null);}else{if(/(WebKit|khtml)/i.test(navigator.userAgent)){dojo._khtmlTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit();}},10);}}}(function(){var _w=window;var _20=function(_21,fp){var _23=_w[_21]||function(){};_w[_21]=function(){fp.apply(_w,arguments);_23.apply(_w,arguments);};};if(dojo.isIE){if(!dojo.config.afterOnLoad){document.write(""+" ");}var _24=true;_20("onbeforeunload",function(){_w.setTimeout(function(){_24=false;},0);});_20("onunload",function(){if(_24){dojo.unloaded();}});try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");}catch(e){}}else{_20("onbeforeunload",function(){dojo.unloaded();});}})();}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _26 in mp){dojo.registerModulePath(_26,mp[_26]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_rhino.js b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_rhino.js
new file mode 100644
index 00000000..3c1b28f5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_rhino.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(dojo.config["baseUrl"]){dojo.baseUrl=dojo.config["baseUrl"];}else{dojo.baseUrl="./";}dojo.locale=dojo.locale||String(java.util.Locale.getDefault().toString().replace("_","-").toLowerCase());dojo._name="rhino";dojo.isRhino=true;if(typeof print=="function"){console.debug=print;}if(typeof dojo["byId"]=="undefined"){dojo.byId=function(id,_2){if(id&&(typeof id=="string"||id instanceof String)){if(!_2){_2=document;}return _2.getElementById(id);}return id;};}dojo._loadUri=function(_3,cb){try{var _5=(new java.io.File(_3)).exists();if(!_5){try{var _6=(new java.net.URL(_3)).openStream();_6.close();}catch(e){return false;}}if(cb){var _7=(_5?readText:readUri)(_3,"UTF-8");cb(eval("("+_7+")"));}else{load(_3);}return true;}catch(e){console.debug("rhino load('"+_3+"') failed. Exception: "+e);return false;}};dojo.exit=function(_8){quit(_8);};dojo._rhinoCurrentScriptViaJava=function(_9){var _a=Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel();var _b=new java.io.CharArrayWriter();var pw=new java.io.PrintWriter(_b);var _d=new java.lang.Exception();var s=_b.toString();var _f=s.match(/[^\(]*\.js\)/gi);if(!_f){throw Error("cannot parse printStackTrace output: "+s);}var _10=((typeof _9!="undefined")&&(_9))?_f[_9+1]:_f[_f.length-1];var _10=_f[3];if(!_10){_10=_f[1];}if(!_10){throw Error("could not find js file in printStackTrace output: "+s);}return _10;};function readText(_11,_12){_12=_12||"utf-8";var jf=new java.io.File(_11);var is=new java.io.FileInputStream(jf);return dj_readInputStream(is,_12);};function readUri(uri,_16){var _17=(new java.net.URL(uri)).openConnection();_16=_16||_17.getContentEncoding()||"utf-8";var is=_17.getInputStream();return dj_readInputStream(is,_16);};function dj_readInputStream(is,_1a){var _1b=new java.io.BufferedReader(new java.io.InputStreamReader(is,_1a));try{var sb=new java.lang.StringBuffer();var _1d="";while((_1d=_1b.readLine())!==null){sb.append(_1d);sb.append(java.lang.System.getProperty("line.separator"));}return sb.toString();}finally{_1b.close();}};if((!dojo.config.libraryScriptUri)||(!dojo.config.libraryScriptUri.length)){try{dojo.config.libraryScriptUri=dojo._rhinoCurrentScriptViaJava(1);}catch(e){if(dojo.config["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");}dojo.config.libraryScriptUri="./";}}dojo.doc=typeof (document)!="undefined"?document:null;dojo.body=function(){return document.body;};dojo._timeouts=[];function clearTimeout(idx){if(!dojo._timeouts[idx]){return;}dojo._timeouts[idx].stop();};function setTimeout(_1f,_20){var def={sleepTime:_20,hasSlept:false,run:function(){if(!this.hasSlept){this.hasSlept=true;java.lang.Thread.currentThread().sleep(this.sleepTime);}try{_1f();}catch(e){console.debug("Error running setTimeout thread:"+e);}}};var _22=new java.lang.Runnable(def);var _23=new java.lang.Thread(_22);_23.start();return dojo._timeouts.push(_23)-1;};if(dojo.config["modulePaths"]){for(var param in dojo.config["modulePaths"]){dojo.registerModulePath(param,dojo.config["modulePaths"][param]);}}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_spidermonkey.js b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_spidermonkey.js
new file mode 100644
index 00000000..9f4b12bc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/hostenv_spidermonkey.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(dojo.config["baseUrl"]){dojo.baseUrl=dojo.config["baseUrl"];}else{dojo.baseUrl="./";}dojo._name="spidermonkey";dojo.isSpidermonkey=true;dojo.exit=function(_1){quit(_1);};if(typeof print=="function"){console.debug=print;}if(typeof line2pc=="undefined"){throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global");}dojo._spidermonkeyCurrentFile=function(_2){var s="";try{throw Error("whatever");}catch(e){s=e.stack;}var _4=s.match(/[^@]*\.js/gi);if(!_4){throw Error("could not parse stack string: '"+s+"'");}var _5=(typeof _2!="undefined"&&_2)?_4[_2+1]:_4[_4.length-1];if(!_5){throw Error("could not find file name in stack string '"+s+"'");}return _5;};dojo._loadUri=function(_6){var ok=load(_6);return 1;};if(dojo.config["modulePaths"]){for(var param in dojo.config["modulePaths"]){dojo.registerModulePath(param,dojo.config["modulePaths"][param]);}}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader.js b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader.js
new file mode 100644
index 00000000..e2f54525
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.foo"]){dojo._hasResource["dojo.foo"]=true;(function(){var d=dojo;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_2){var mp=this._modulePrefixes;return !!(mp[_2]&&mp[_2].value);},_getModulePrefix:function(_4){var mp=this._modulePrefixes;if(this._moduleHasPrefix(_4)){return mp[_4].value;}return _4;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_6,_7,cb){var _9=((_6.charAt(0)=="/"||_6.match(/^\w+:/))?"":this.baseUrl)+_6;try{return !_7?this._loadUri(_9,cb):this._loadUriAndCheck(_9,_7,cb);}catch(e){console.error(e);return false;}};dojo._loadUri=function(_a,cb){if(this._loadedUrls[_a]){return true;}var _c=this._getText(_a,true);if(!_c){return false;}this._loadedUrls[_a]=true;this._loadedUrls.push(_a);if(cb){_c="("+_c+")";}else{_c=this._scopePrefix+_c+this._scopeSuffix;}if(d.isMoz){_c+="\r\n//@ sourceURL="+_a;}var _d=d["eval"](_c);if(cb){cb(_d);}return true;};dojo._loadUriAndCheck=function(_e,_f,cb){var ok=false;try{ok=this._loadUri(_e,cb);}catch(e){console.error("failed loading "+_e+" with error: "+e);}return !!(ok&&this._loadedModules[_f]);};dojo.loaded=function(){this._loadNotifying=true;this._postLoad=true;var mll=d._loaders;this._loaders=[];for(var x=0;x0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(dojo.config.useXDomain&&d.isOpera)){if(dojo.isAIR){setTimeout(function(){dojo.loaded();},0);}else{setTimeout(dojo._scopeName+".loaded();",0);}}else{d.loaded();}};dojo._getModuleSymbols=function(_1e){var _1f=_1e.split(".");for(var i=_1f.length;i>0;i--){var _21=_1f.slice(0,i).join(".");if((i==1)&&!this._moduleHasPrefix(_21)){_1f[0]="../"+_1f[0];}else{var _22=this._getModulePrefix(_21);if(_22!=_21){_1f.splice(0,i,_22);break;}}}return _1f;};dojo._global_omit_module_check=false;dojo._loadModule=dojo.require=function(_23,_24){_24=this._global_omit_module_check||_24;var _25=this._loadedModules[_23];if(_25){return _25;}var _26=this._getModuleSymbols(_23).join("/")+".js";var _27=(!_24)?_23:null;var ok=this._loadPath(_26,_27);if(!ok&&!_24){throw new Error("Could not load '"+_23+"'; last tried '"+_26+"'");}if(!_24&&!this._isXDomain){_25=this._loadedModules[_23];if(!_25){throw new Error("symbol '"+_23+"' is not defined after loading '"+_26+"'");}}return _25;};dojo.provide=function(_29){_29=_29+"";return (d._loadedModules[_29]=d.getObject(_29,true));};dojo.platformRequire=function(_2a){var _2b=_2a.common||[];var _2c=_2b.concat(_2a[d._name]||_2a["default"]||[]);for(var x=0;x<_2c.length;x++){var _2e=_2c[x];if(_2e.constructor==Array){d._loadModule.apply(d,_2e);}else{d._loadModule(_2e);}}};dojo.requireIf=function(_2f,_30){if(_2f===true){var _31=[];for(var i=1;i0&&!(j==1&&_42[0]=="")&&_42[j]==".."&&_42[j-1]!=".."){if(j==(_42.length-1)){_42.splice(j,1);_42[j-1]="";}else{_42.splice(j-1,2);j-=2;}}}}_3f.path=_42.join("/");}}}}uri=[];if(_3f.scheme){uri.push(_3f.scheme,":");}if(_3f.authority){uri.push("//",_3f.authority);}uri.push(_3f.path);if(_3f.query){uri.push("?",_3f.query);}if(_3f.fragment){uri.push("#",_3f.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[5];this.port=r[7]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_45,url){var loc=d._getModuleSymbols(_45).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _48=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_48==-1||_48>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_debug.js b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_debug.js
new file mode 100644
index 00000000..9806b54f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_debug.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base._loader.loader_debug"]){dojo._hasResource["dojo._base._loader.loader_debug"]=true;dojo.provide("dojo._base._loader.loader_debug");dojo.nonDebugProvide=dojo.provide;dojo.provide=function(_1){var _2=dojo["_xdDebugQueue"];if(_2&&_2.length>0&&_1==_2["currentResourceName"]){if(dojo.isAIR){window.setTimeout(function(){dojo._xdDebugFileLoaded(_1);},1);}else{window.setTimeout(dojo._scopeName+"._xdDebugFileLoaded('"+_1+"')",1);}}return dojo.nonDebugProvide.apply(dojo,arguments);};dojo._xdDebugFileLoaded=function(_3){if(!this._xdDebugScopeChecked){if(dojo._scopeName!="dojo"){window.dojo=window[dojo.config.scopeMap[0][1]];window.dijit=window[dojo.config.scopeMap[1][1]];window.dojox=window[dojo.config.scopeMap[2][1]];}this._xdDebugScopeChecked=true;}var _4=this._xdDebugQueue;if(_3&&_3==_4.currentResourceName){_4.shift();}if(_4.length==0){_4.currentResourceName=null;this._xdNotifyLoaded();}else{if(_3==_4.currentResourceName){_4.currentResourceName=_4[0].resourceName;var _5=document.createElement("script");_5.type="text/javascript";_5.src=_4[0].resourcePath;document.getElementsByTagName("head")[0].appendChild(_5);}}};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_xd.js b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_xd.js
new file mode 100644
index 00000000..c2eff939
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/_loader/loader_xd.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base._loader.loader_xd"]){dojo._hasResource["dojo._base._loader.loader_xd"]=true;dojo.provide("dojo._base._loader.loader_xd");dojo._xdReset=function(){this._isXDomain=dojo.config.useXDomain||false;this._xdTimer=0;this._xdInFlight={};this._xdOrderedReqs=[];this._xdDepMap={};this._xdContents=[];this._xdDefList=[];};dojo._xdReset();dojo._xdCreateResource=function(_1,_2,_3){var _4=_1.replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"");var _5=[];var _6=/dojo.(require|requireIf|provide|requireAfterIf|platformRequire|requireLocalization)\(([\w\W]*?)\)/mg;var _7;while((_7=_6.exec(_4))!=null){if(_7[1]=="requireLocalization"){eval(_7[0]);}else{_5.push("\""+_7[1]+"\", "+_7[2]);}}var _8=[];_8.push(dojo._scopeName+"._xdResourceLoaded({\n");if(_5.length>0){_8.push("depends: [");for(var i=0;i<_5.length;i++){if(i>0){_8.push(",\n");}_8.push("["+_5[i]+"]");}_8.push("],");}_8.push("\ndefineResource: function("+dojo._scopePrefixArgs+"){");if(!dojo.config["debugAtAllCosts"]||_2=="dojo._base._loader.loader_debug"){_8.push(_1);}_8.push("\n}, resourceName: '"+_2+"', resourcePath: '"+_3+"'});");return _8.join("");};dojo._xdIsXDomainPath=function(_a){var _b=_a.indexOf(":");var _c=_a.indexOf("/");if(_b>0&&_b<_c){return true;}else{var _d=this.baseUrl;_b=_d.indexOf(":");_c=_d.indexOf("/");if(_b>0&&_b<_c&&(!location.host||_d.indexOf("http://"+location.host)!=0)){return true;}}return false;};dojo._loadPath=function(_e,_f,cb){var _11=this._xdIsXDomainPath(_e);this._isXDomain|=_11;var uri=this.baseUrl+_e;if(_11){var _13=_e.indexOf(":");var _14=_e.indexOf("/");if(_13>0&&_13<_14){uri=_e;}}try{return ((!_f||this._isXDomain)?this._loadUri(uri,cb,_11,_f):this._loadUriAndCheck(uri,_f,cb));}catch(e){console.debug(e);return false;}};dojo._loadUri=function(uri,cb,_17,_18){if(this._loadedUrls[uri]){return 1;}if(this._isXDomain&&_18&&_18!="dojo.i18n"){this._xdOrderedReqs.push(_18);if(_17||uri.indexOf("/nls/")==-1){this._xdInFlight[_18]=true;this._inFlightCount++;}if(!this._xdTimer){if(dojo.isAIR){this._xdTimer=setInterval(function(){dojo._xdWatchInFlight();},100);}else{this._xdTimer=setInterval(dojo._scopeName+"._xdWatchInFlight();",100);}}this._xdStartTime=(new Date()).getTime();}if(_17){var _19=uri.lastIndexOf(".");if(_19<=0){_19=uri.length-1;}var _1a=uri.substring(0,_19)+".xd";if(_19!=uri.length-1){_1a+=uri.substring(_19,uri.length);}if(dojo.isAIR){_1a=_1a.replace("app:/","/");}var _1b=document.createElement("script");_1b.type="text/javascript";_1b.src=_1a;if(!this.headElement){this._headElement=document.getElementsByTagName("head")[0];if(!this._headElement){this._headElement=document.getElementsByTagName("html")[0];}}this._headElement.appendChild(_1b);}else{var _1c=this._getText(uri,null,true);if(_1c==null){return 0;}if(this._isXDomain&&uri.indexOf("/nls/")==-1&&_18!="dojo.i18n"){var res=this._xdCreateResource(_1c,_18,uri);dojo.eval(res);}else{if(cb){_1c="("+_1c+")";}else{_1c=this._scopePrefix+_1c+this._scopeSuffix;}var _1e=dojo["eval"](_1c+"\r\n//@ sourceURL="+uri);if(cb){cb(_1e);}}}this._loadedUrls[uri]=true;this._loadedUrls.push(uri);return true;};dojo._xdResourceLoaded=function(res){var _20=res.depends;var _21=null;var _22=null;var _23=[];if(_20&&_20.length>0){var dep=null;var _25=0;var _26=false;for(var i=0;i<_20.length;i++){dep=_20[i];if(dep[0]=="provide"){_23.push(dep[1]);}else{if(!_21){_21=[];}if(!_22){_22=[];}var _28=this._xdUnpackDependency(dep);if(_28.requires){_21=_21.concat(_28.requires);}if(_28.requiresAfter){_22=_22.concat(_28.requiresAfter);}}var _29=dep[0];var _2a=_29.split(".");if(_2a.length==2){dojo[_2a[0]][_2a[1]].apply(dojo[_2a[0]],dep.slice(1));}else{dojo[_29].apply(dojo,dep.slice(1));}}if(_23.length==1&&_23[0]=="dojo._base._loader.loader_debug"){res.defineResource(dojo);}else{var _2b=this._xdContents.push({content:res.defineResource,resourceName:res["resourceName"],resourcePath:res["resourcePath"],isDefined:false})-1;for(var i=0;i<_23.length;i++){this._xdDepMap[_23[i]]={requires:_21,requiresAfter:_22,contentIndex:_2b};}}for(var i=0;i<_23.length;i++){this._xdInFlight[_23[i]]=false;}}};dojo._xdLoadFlattenedBundle=function(_2c,_2d,_2e,_2f){_2e=_2e||"root";var _30=dojo.i18n.normalizeLocale(_2e).replace("-","_");var _31=[_2c,"nls",_2d].join(".");var _32=dojo["provide"](_31);_32[_30]=_2f;var _33=[_2c,_30,_2d].join(".");var _34=dojo._xdBundleMap[_33];if(_34){for(var _35 in _34){_32[_35]=_2f;}}};dojo._xdInitExtraLocales=function(){var _36=dojo.config.extraLocale;if(_36){if(!_36 instanceof Array){_36=[_36];}dojo._xdReqLoc=dojo.xdRequireLocalization;dojo.xdRequireLocalization=function(m,b,_39,_3a){dojo._xdReqLoc(m,b,_39,_3a);if(_39){return;}for(var i=0;i<_36.length;i++){dojo._xdReqLoc(m,b,_36[i],_3a);}};}};dojo._xdBundleMap={};dojo.xdRequireLocalization=function(_3c,_3d,_3e,_3f){if(dojo._xdInitExtraLocales){dojo._xdInitExtraLocales();dojo._xdInitExtraLocales=null;dojo.xdRequireLocalization.apply(dojo,arguments);return;}var _40=_3f.split(",");var _41=dojo.i18n.normalizeLocale(_3e);var _42="";for(var i=0;i<_40.length;i++){if(_41.indexOf(_40[i])==0){if(_40[i].length>_42.length){_42=_40[i];}}}var _44=_42.replace("-","_");var _45=dojo.getObject([_3c,"nls",_3d].join("."));if(_45&&_45[_44]){bundle[_41.replace("-","_")]=_45[_44];}else{var _46=[_3c,(_44||"root"),_3d].join(".");var _47=dojo._xdBundleMap[_46];if(!_47){_47=dojo._xdBundleMap[_46]={};}_47[_41.replace("-","_")]=true;dojo.require(_3c+".nls"+(_42?"."+_42:"")+"."+_3d);}};dojo._xdRealRequireLocalization=dojo.requireLocalization;dojo.requireLocalization=function(_48,_49,_4a,_4b){var _4c=this.moduleUrl(_48).toString();if(this._xdIsXDomainPath(_4c)){return dojo.xdRequireLocalization.apply(dojo,arguments);}else{return dojo._xdRealRequireLocalization.apply(dojo,arguments);}};dojo._xdUnpackDependency=function(dep){var _4e=null;var _4f=null;switch(dep[0]){case "requireIf":case "requireAfterIf":if(dep[1]===true){_4e=[{name:dep[2],content:null}];}break;case "platformRequire":var _50=dep[1];var _51=_50["common"]||[];var _4e=(_50[dojo.hostenv.name_])?_51.concat(_50[dojo.hostenv.name_]||[]):_51.concat(_50["default"]||[]);if(_4e){for(var i=0;i<_4e.length;i++){if(_4e[i] instanceof Array){_4e[i]={name:_4e[i][0],content:null};}else{_4e[i]={name:_4e[i],content:null};}}}break;case "require":_4e=[{name:dep[1],content:null}];break;case "i18n._preloadLocalizations":dojo.i18n._preloadLocalizations.apply(dojo.i18n._preloadLocalizations,dep.slice(1));break;}if(dep[0]=="requireAfterIf"||dep[0]=="requireIf"){_4f=_4e;_4e=null;}return {requires:_4e,requiresAfter:_4f};};dojo._xdWalkReqs=function(){var _53=null;var req;for(var i=0;i0){var req=_56[_56.length-1];var res=this._xdDepMap[req];if(res){var _59=res.requires;if(_59&&_59.length>0){var _5a;for(var i=0;i<_59.length;i++){_5a=_59[i].name;if(_5a&&!_56[_5a]){_56.push(_5a);_56[_5a]=true;this._xdEvalReqs(_56);}}}var _5c=this._xdContents[res.contentIndex];if(!_5c.isDefined){var _5d=_5c.content;_5d["resourceName"]=_5c["resourceName"];_5d["resourcePath"]=_5c["resourcePath"];this._xdDefList.push(_5d);_5c.isDefined=true;}this._xdDepMap[req]=null;var _59=res.requiresAfter;if(_59&&_59.length>0){var _5a;for(var i=0;i<_59.length;i++){_5a=_59[i].name;if(_5a&&!_56[_5a]){_56.push(_5a);_56[_5a]=true;this._xdEvalReqs(_56);}}}}_56.pop();}};dojo._xdClearInterval=function(){clearInterval(this._xdTimer);this._xdTimer=0;};dojo._xdWatchInFlight=function(){var _5e="";var _5f=(dojo.config.xdWaitSeconds||15)*1000;var _60=(this._xdStartTime+_5f)<(new Date()).getTime();for(var _61 in this._xdInFlight){if(this._xdInFlight[_61]===true){if(_60){_5e+=_61+" ";}else{return;}}}this._xdClearInterval();if(_60){throw "Could not load cross-domain resources: "+_5e;}this._xdWalkReqs();var _62=this._xdDefList.length;for(var i=0;i<_62;i++){var _64=dojo._xdDefList[i];if(dojo.config["debugAtAllCosts"]&&_64["resourceName"]){if(!this["_xdDebugQueue"]){this._xdDebugQueue=[];}this._xdDebugQueue.push({resourceName:_64.resourceName,resourcePath:_64.resourcePath});}else{_64.apply(dojo.global,dojo._scopeArgs);}}for(var i=0;i0){this._xdDebugFileLoaded();}else{this._xdNotifyLoaded();}};dojo._xdNotifyLoaded=function(){this._inFlightCount=0;if(this._initFired&&!this._loadNotifying){this._callLoaded();}};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/array.js b/spring-js/src/main/resources/META-INF/dojo/_base/array.js
new file mode 100644
index 00000000..e2e3e5f9
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/array.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.require("dojo._base.lang");dojo.provide("dojo._base.array");(function(){var _1=function(_2,_3,cb){return [dojo.isString(_2)?_2.split(""):_2,_3||dojo.global,dojo.isString(cb)?new Function("item","index","array",cb):cb];};dojo.mixin(dojo,{indexOf:function(_5,_6,_7,_8){var _9=1,_a=_5.length||0,i=0;if(_8){i=_a-1;_9=_a=-1;}if(_7!=undefined){i=_7;}if((_8&&i>_a)||i<_a){for(;i!=_a;i+=_9){if(_5[i]==_6){return i;}}}return -1;},lastIndexOf:function(_c,_d,_e){return dojo.indexOf(_c,_d,_e,true);},forEach:function(_f,_10,_11){if(!_f||!_f.length){return;}var _p=_1(_f,_11,_10);_f=_p[0];for(var i=0,l=_p[0].length;i90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_48||evt.ctrlKey){var c=_48?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1._punctMap[c]||c;}}}}var _4a=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,_4a);evt.cancelBubble=_4a.cancelBubble;evt.returnValue=_4a.returnValue;_23(evt,_4a.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_23(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;_1._stopPropagation.call(evt);_1._preventDefault.call(evt);};}_1._synthesizeEvent=function(evt,_4d){var _4e=dojo.mixin({},evt,_4d);_1._setKeyChar(_4e);_4e.preventDefault=function(){evt.preventDefault();};_4e.stopPropagation=function(){evt.stopPropagation();};return _4e;};if(dojo.isOpera){dojo.mixin(_1,{_fixEvent:function(evt,_50){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=((c<41)&&(!evt.shiftKey)?0:c);if((evt.ctrlKey)&&(!evt.shiftKey)&&(c>=65)&&(c<=90)){c+=32;}return _1._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isSafari){dojo.mixin(_1,{_fixEvent:function(evt,_53){switch(evt.type){case "keypress":var c=evt.charCode,s=evt.shiftKey,k=evt.keyCode;k=k||_57[evt.keyIdentifier]||0;if(evt.keyIdentifier=="Enter"){c=0;}else{if((evt.ctrlKey)&&(c>0)&&(c<27)){c+=96;}else{if(c==dojo.keys.SHIFT_TAB){c=dojo.keys.TAB;s=true;}else{c=(c>=32&&c<63232?c:0);}}}return _1._synthesizeEvent(evt,{charCode:c,shiftKey:s,keyCode:k});}return evt;}});dojo.mixin(dojo.keys,{SHIFT_TAB:25,UP_ARROW:63232,DOWN_ARROW:63233,LEFT_ARROW:63234,RIGHT_ARROW:63235,F1:63236,F2:63237,F3:63238,F4:63239,F5:63240,F6:63241,F7:63242,F8:63243,F9:63244,F10:63245,F11:63246,F12:63247,PAUSE:63250,DELETE:63272,HOME:63273,END:63275,PAGE_UP:63276,PAGE_DOWN:63277,INSERT:63302,PRINT_SCREEN:63248,SCROLL_LOCK:63249,NUM_LOCK:63289});var dk=dojo.keys,_57={"Up":dk.UP_ARROW,"Down":dk.DOWN_ARROW,"Left":dk.LEFT_ARROW,"Right":dk.RIGHT_ARROW,"PageUp":dk.PAGE_UP,"PageDown":dk.PAGE_DOWN};}})();if(dojo.isIE){dojo._ieDispatcher=function(_59,_5a){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=_59.callee,ls=c._listeners,t=h[c.target];var r=t&&t.apply(_5a,_59);for(var i in ls){if(!(i in ap)){h[ls[i]].apply(_5a,_59);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/fx.js b/spring-js/src/main/resources/META-INF/dojo/_base/fx.js
new file mode 100644
index 00000000..b01ff3b1
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/fx.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");dojo.require("dojo._base.Color");dojo.require("dojo._base.connect");dojo.require("dojo._base.declare");dojo.require("dojo._base.lang");dojo.require("dojo._base.html");(function(){var d=dojo;dojo._Line=function(_2,_3){this.start=_2;this.end=_3;this.getValue=function(n){return ((this.end-this.start)*n)+this.start;};};d.declare("dojo._Animation",null,{constructor:function(_5){d.mixin(this,_5);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}},duration:350,repeat:0,rate:10,_percent:0,_startRepeatCount:0,_fire:function(_6,_7){try{if(this[_6]){this[_6].apply(this,_7||[]);}}catch(e){console.error("exception in animation handler for:",_6);console.error(e);}return this;},play:function(_8,_9){var _t=this;if(_9){_t._stopTimer();_t._active=_t._paused=false;_t._percent=0;}else{if(_t._active&&!_t._paused){return _t;}}_t._fire("beforeBegin");var de=_8||_t.delay;var _p=dojo.hitch(_t,"_play",_9);if(de>0){setTimeout(_p,de);return _t;}_p();return _t;},_play:function(_d){var _t=this;_t._startTime=new Date().valueOf();if(_t._paused){_t._startTime-=_t.duration*_t._percent;}_t._endTime=_t._startTime+_t.duration;_t._active=true;_t._paused=false;var _f=_t.curve.getValue(_t._percent);if(!_t._percent){if(!_t._startRepeatCount){_t._startRepeatCount=_t.repeat;}_t._fire("onBegin",[_f]);}_t._fire("onPlay",[_f]);_t._cycle();return _t;},pause:function(){this._stopTimer();if(!this._active){return this;}this._paused=true;this._fire("onPause",[this.curve.getValue(this._percent)]);return this;},gotoPercent:function(_10,_11){this._stopTimer();this._active=this._paused=true;this._percent=_10;if(_11){this.play();}return this;},stop:function(_12){if(!this._timer){return this;}this._stopTimer();if(_12){this._percent=1;}this._fire("onStop",[this.curve.getValue(this._percent)]);this._active=this._paused=false;return this;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _t=this;if(_t._active){var _14=new Date().valueOf();var _15=(_14-_t._startTime)/(_t._endTime-_t._startTime);if(_15>=1){_15=1;}_t._percent=_15;if(_t.easing){_15=_t.easing(_15);}_t._fire("onAnimate",[_t.curve.getValue(_15)]);if(_t._percent<1){_t._startTimer();}else{_t._active=false;if(_t.repeat>0){_t.repeat--;_t.play(null,true);}else{if(_t.repeat==-1){_t.play(null,true);}else{if(_t._startRepeatCount){_t.repeat=_t._startRepeatCount;_t._startRepeatCount=0;}}}_t._percent=0;_t._fire("onEnd");_t._stopTimer();}}return _t;}});var ctr=0;var _17=[];var _18={run:function(){}};var _19=null;dojo._Animation.prototype._startTimer=function(){if(!this._timer){this._timer=d.connect(_18,"run",this,"_cycle");ctr++;}if(!_19){_19=setInterval(d.hitch(_18,"run"),this.rate);}};dojo._Animation.prototype._stopTimer=function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_19);_19=null;ctr=0;}};var _1a=(d.isIE)?function(_1b){var ns=_1b.style;if(!ns.zoom.length&&d.style(_1b,"zoom")=="normal"){ns.zoom="1";}if(!ns.width.length&&d.style(_1b,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(_1d){_1d.node=d.byId(_1d.node);var _1e=d.mixin({properties:{}},_1d);var _1f=(_1e.properties.opacity={});_1f.start=!("start" in _1e)?function(){return Number(d.style(_1e.node,"opacity"));}:_1e.start;_1f.end=_1e.end;var _20=d.animateProperty(_1e);d.connect(_20,"beforeBegin",d.partial(_1a,_1e.node));return _20;};dojo.fadeIn=function(_21){return d._fade(d.mixin({end:1},_21));};dojo.fadeOut=function(_22){return d._fade(d.mixin({end:0},_22));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _24=function(_25){this._properties=_25;for(var p in _25){var _27=_25[p];if(_27.start instanceof d.Color){_27.tempColor=new d.Color();}}this.getValue=function(r){var ret={};for(var p in this._properties){var _2b=this._properties[p];var _2c=_2b.start;if(_2c instanceof d.Color){ret[p]=d.blendColors(_2c,_2b.end,r,_2b.tempColor).toCss();}else{if(!d.isArray(_2c)){ret[p]=((_2b.end-_2c)*r)+_2c+(p!="opacity"?_2b.units||"px":"");}}}return ret;};};dojo.animateProperty=function(_2d){_2d.node=d.byId(_2d.node);if(!_2d.easing){_2d.easing=d._defaultEasing;}var _2e=new d._Animation(_2d);d.connect(_2e,"beforeBegin",_2e,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var _31=this.properties[p];_31=pm[p]=d.mixin({},(d.isObject(_31)?_31:{end:_31}));if(d.isFunction(_31.start)){_31.start=_31.start();}if(d.isFunction(_31.end)){_31.end=_31.end();}var _32=(p.toLowerCase().indexOf("color")>=0);function getStyle(_33,p){var v=({height:_33.offsetHeight,width:_33.offsetWidth})[p];if(v!==undefined){return v;}v=d.style(_33,p);return (p=="opacity")?Number(v):(_32?v:parseFloat(v));};if(!("end" in _31)){_31.end=getStyle(this.node,p);}else{if(!("start" in _31)){_31.start=getStyle(this.node,p);}}if(_32){_31.start=new d.Color(_31.start);_31.end=new d.Color(_31.end);}else{_31.start=(p=="opacity")?Number(_31.start):parseFloat(_31.start);}}this.curve=new _24(pm);});d.connect(_2e,"onAnimate",_2e,function(_36){for(var s in _36){d.style(this.node,s,_36[s]);}});return _2e;};dojo.anim=function(_38,_39,_3a,_3b,_3c,_3d){return d.animateProperty({node:_38,duration:_3a||d._Animation.prototype.duration,properties:_39,easing:_3b,onEnd:_3c}).play(_3d||0);};})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/html.js b/spring-js/src/main/resources/META-INF/dojo/_base/html.js
new file mode 100644
index 00000000..5abd0cf0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/html.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.require("dojo._base.lang");dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,_2){if(dojo.isString(id)){var _d=_2||dojo.doc;var te=_d.getElementById(id);if(te&&te.attributes.id.value==id){return te;}else{var _5=_d.all[id];if(!_5||!_5.length){return _5;}var i=0;while((te=_5[i++])){if(te.attributes.id.value==id){return te;}}}}else{return id;}};}else{dojo.byId=function(id,_8){return dojo.isString(id)?(_8||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var _a=null;dojo.addOnUnload(function(){_a=null;});dojo._destroyElement=function(_b){_b=d.byId(_b);try{if(!_a){_a=document.createElement("div");}_a.appendChild(_b.parentNode?_b.parentNode.removeChild(_b):_b);_a.innerHTML="";}catch(e){}};dojo.isDescendant=function(_c,_d){try{_c=d.byId(_c);_d=d.byId(_d);while(_c){if(_c===_d){return true;}_c=_c.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(_e,_f){_e=d.byId(_e);if(d.isMozilla){_e.style.MozUserSelect=_f?"":"none";}else{if(d.isKhtml){_e.style.KhtmlUserSelect=_f?"auto":"none";}else{if(d.isIE){_e.unselectable=_f?"":"on";d.query("*",_e).forEach(function(_10){_10.unselectable=_f?"":"on";});}}}};var _11=function(_12,ref){ref.parentNode.insertBefore(_12,ref);return true;};var _14=function(_15,ref){var pn=ref.parentNode;if(ref==pn.lastChild){pn.appendChild(_15);}else{return _11(_15,ref.nextSibling);}return true;};dojo.place=function(_18,_19,_1a){if(!_18||!_19||_1a===undefined){return false;}_18=d.byId(_18);_19=d.byId(_19);if(typeof _1a=="number"){var cn=_19.childNodes;if((_1a==0&&cn.length==0)||cn.length==_1a){_19.appendChild(_18);return true;}if(_1a==0){return _11(_18,_19.firstChild);}return _14(_18,cn[_1a-1]);}switch(_1a.toLowerCase()){case "before":return _11(_18,_19);case "after":return _14(_18,_19);case "first":if(_19.firstChild){return _11(_18,_19.firstChild);}default:_19.appendChild(_18);return true;}};dojo.boxModel="content-box";if(d.isIE){var _1c=document.compatMode;d.boxModel=_1c=="BackCompat"||_1c=="QuirksMode"||d.isIE<6?"border-box":"content-box";}var gcs,dv=document.defaultView;if(d.isSafari){gcs=function(_1f){var s=dv.getComputedStyle(_1f,null);if(!s&&_1f.style){_1f.style.display="";s=dv.getComputedStyle(_1f,null);}return s||{};};}else{if(d.isIE){gcs=function(_21){return _21.currentStyle;};}else{gcs=function(_22){return dv.getComputedStyle(_22,null);};}}dojo.getComputedStyle=gcs;if(!d.isIE){dojo._toPixelValue=function(_23,_24){return parseFloat(_24)||0;};}else{dojo._toPixelValue=function(_25,_26){if(!_26){return 0;}if(_26=="medium"){return 4;}if(_26.slice&&(_26.slice(-2)=="px")){return parseFloat(_26);}with(_25){var _27=style.left;var _28=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_26;_26=style.pixelLeft;}catch(e){_26=0;}style.left=_27;runtimeStyle.left=_28;}return _26;};}var px=d._toPixelValue;dojo._getOpacity=d.isIE?function(_2a){try{return _2a.filters.alpha.opacity/100;}catch(e){return 1;}}:function(_2b){return gcs(_2b).opacity;};dojo._setOpacity=d.isIE?function(_2c,_2d){if(_2d==1){var _2e=/FILTER:[^;]*;?/i;_2c.style.cssText=_2c.style.cssText.replace(_2e,"");if(_2c.nodeName.toLowerCase()=="tr"){d.query("> td",_2c).forEach(function(i){i.style.cssText=i.style.cssText.replace(_2e,"");});}}else{var o="Alpha(Opacity="+_2d*100+")";_2c.style.filter=o;}if(_2c.nodeName.toLowerCase()=="tr"){d.query("> td",_2c).forEach(function(i){i.style.filter=o;});}return _2d;}:function(_32,_33){return _32.style.opacity=_33;};var _34={left:true,top:true};var _35=/margin|padding|width|height|max|min|offset/;var _36=function(_37,_38,_39){_38=_38.toLowerCase();if(d.isIE&&_39=="auto"){if(_38=="height"){return _37.offsetHeight;}if(_38=="width"){return _37.offsetWidth;}}if(!(_38 in _34)){_34[_38]=_35.test(_38);}return _34[_38]?px(_37,_39):_39;};var _3a=d.isIE?"styleFloat":"cssFloat";var _3b={"cssFloat":_3a,"styleFloat":_3a,"float":_3a};dojo.style=function(_3c,_3d,_3e){var n=d.byId(_3c),_40=arguments.length,op=(_3d=="opacity");_3d=_3b[_3d]||_3d;if(_40==3){return op?d._setOpacity(n,_3e):n.style[_3d]=_3e;}if(_40==2&&op){return d._getOpacity(n);}var s=gcs(n);if(_40==2&&!d.isString(_3d)){for(var x in _3d){d.style(_3c,x,_3d[x]);}return s;}return (_40==1)?s:_36(n,_3d,s[_3d]);};dojo._getPadExtents=function(n,_45){var s=_45||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_4a){var ne="none",s=_4a||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_50){var s=_50||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_55){var s=_55||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isSafari&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(_5b,_5c){var s=_5c||gcs(_5b),me=d._getMarginExtents(_5b,s);var l=_5b.offsetLeft-me.l,t=_5b.offsetTop-me.t;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{var p=_5b.parentNode;if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera){var p=_5b.parentNode;if(p){var be=d._getBorderExtents(p);l-=be.l,t-=be.t;}}}return {l:l,t:t,w:_5b.offsetWidth+me.w,h:_5b.offsetHeight+me.h};};dojo._getContentBox=function(_66,_67){var s=_67||gcs(_66),pe=d._getPadExtents(_66,s),be=d._getBorderExtents(_66,s),w=_66.clientWidth,h;if(!w){w=_66.offsetWidth,h=_66.offsetHeight;}else{h=_66.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(_6d,_6e){var s=_6e||gcs(_6d),pe=d._getPadExtents(_6d,s),cb=d._getContentBox(_6d,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(_72,l,t,w,h,u){u=u||"px";var s=_72.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._usesBorderBox=function(_79){var n=_79.tagName;return d.boxModel=="border-box"||n=="TABLE"||n=="BUTTON";};dojo._setContentSize=function(_7b,_7c,_7d,_7e){if(d._usesBorderBox(_7b)){var pb=d._getPadBorderExtents(_7b,_7e);if(_7c>=0){_7c+=pb.w;}if(_7d>=0){_7d+=pb.h;}}d._setBox(_7b,NaN,NaN,_7c,_7d);};dojo._setMarginBox=function(_80,_81,_82,_83,_84,_85){var s=_85||gcs(_80);var bb=d._usesBorderBox(_80),pb=bb?_89:d._getPadBorderExtents(_80,s),mb=d._getMarginExtents(_80,s);if(_83>=0){_83=Math.max(_83-pb.w-mb.w,0);}if(_84>=0){_84=Math.max(_84-pb.h-mb.h,0);}d._setBox(_80,_81,_82,_83,_84);};var _89={l:0,t:0,w:0,h:0};dojo.marginBox=function(_8b,box){var n=d.byId(_8b),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(_90,box){var n=dojo.byId(_90),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _95=function(_96,_97){if(!(_96=(_96||0).parentNode)){return 0;}var val,_99=0,_b=d.body();while(_96&&_96.style){if(gcs(_96).position=="fixed"){return 0;}val=_96[_97];if(val){_99+=val-0;if(_96==_b){break;}}_96=_96.parentNode;}return _99;};dojo._docScroll=function(){var _b=d.body(),_w=d.global,de=d.doc.documentElement;return {y:(_w.pageYOffset||de.scrollTop||_b.scrollTop||0),x:(_w.pageXOffset||d._fixIeBiDiScrollLeft(de.scrollLeft)||_b.scrollLeft||0)};};dojo._isBodyLtr=function(){return !("_bodyLtr" in d)?d._bodyLtr=gcs(d.body()).direction=="ltr":d._bodyLtr;};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;return (d.isIE>=7)?{x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top}:{x:d._isBodyLtr()||window.parent==window?de.clientLeft:de.offsetWidth-de.clientWidth-de.clientLeft,y:de.clientTop};};dojo._fixIeBiDiScrollLeft=function(_9f){var dd=d.doc;if(d.isIE&&!dojo._isBodyLtr()){var de=dd.compatMode=="BackCompat"?dd.body:dd.documentElement;return _9f+de.clientWidth-de.scrollWidth;}return _9f;};dojo._abs=function(_a2,_a3){var _a4=_a2.ownerDocument;var ret={x:0,y:0};var db=d.body();if(d.isIE||(d.isFF>=3)){var _a7=_a2.getBoundingClientRect();var _a8=(d.isIE)?d._getIeDocumentElementOffset():{x:0,y:0};ret.x=_a7.left-_a8.x;ret.y=_a7.top-_a8.y;}else{if(_a4["getBoxObjectFor"]){var bo=_a4.getBoxObjectFor(_a2),b=d._getBorderExtents(_a2);ret.x=bo.x-b.l-_95(_a2,"scrollLeft");ret.y=bo.y-b.t-_95(_a2,"scrollTop");}else{if(_a2["offsetParent"]){var _ab;if(d.isSafari&&(gcs(_a2).position=="absolute")&&(_a2.parentNode==db)){_ab=db;}else{_ab=db.parentNode;}if(_a2.parentNode!=db){var nd=_a2;if(d.isOpera){nd=db;}ret.x-=_95(nd,"scrollLeft");ret.y-=_95(nd,"scrollTop");}var _ad=_a2;do{var n=_ad.offsetLeft;if(!d.isOpera||n>0){ret.x+=isNaN(n)?0:n;}var t=_ad.offsetTop;ret.y+=isNaN(t)?0:t;if(d.isSafari&&_ad!=_a2){var cs=gcs(_ad);ret.x+=px(_ad,cs.borderLeftWidth);ret.y+=px(_ad,cs.borderTopWidth);}_ad=_ad.offsetParent;}while((_ad!=_ab)&&_ad);}else{if(_a2.x&&_a2.y){ret.x+=isNaN(_a2.x)?0:_a2.x;ret.y+=isNaN(_a2.y)?0:_a2.y;}}}}if(_a3){var _b1=d._docScroll();ret.y+=_b1.y;ret.x+=_b1.x;}return ret;};dojo.coords=function(_b2,_b3){var n=d.byId(_b2),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d._abs(n,_b3);mb.x=abs.x;mb.y=abs.y;return mb;};var _b8=function(_b9){switch(_b9.toLowerCase()){case "tabindex":return (d.isIE&&d.isIE<8)?"tabIndex":"tabindex";default:return _b9;}};var _ba={colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType"};dojo.hasAttr=function(_bb,_bc){var _bd=d.byId(_bb).getAttributeNode(_b8(_bc));return _bd?_bd.specified:false;};var _be={};var _bf=0;var _c0=dojo._scopeName+"attrid";dojo.attr=function(_c1,_c2,_c3){var _c4=arguments.length;if(_c4==2&&!d.isString(_c2)){for(var x in _c2){d.attr(_c1,x,_c2[x]);}return;}_c1=d.byId(_c1);_c2=_b8(_c2);if(_c4==3){if(d.isFunction(_c3)){var _c6=d.attr(_c1,_c0);if(!_c6){_c6=_bf++;d.attr(_c1,_c0,_c6);}if(!_be[_c6]){_be[_c6]={};}var h=_be[_c6][_c2];if(h){d.disconnect(h);}else{try{delete _c1[_c2];}catch(e){}}_be[_c6][_c2]=d.connect(_c1,_c2,_c3);}else{if(typeof _c3=="boolean"){_c1[_c2]=_c3;}else{_c1.setAttribute(_c2,_c3);}}return;}else{var _c8=_ba[_c2.toLowerCase()];if(_c8){return _c1[_c8];}else{var _c3=_c1[_c2];return (typeof _c3=="boolean"||typeof _c3=="function")?_c3:(d.hasAttr(_c1,_c2)?_c1.getAttribute(_c2):null);}}};dojo.removeAttr=function(_c9,_ca){d.byId(_c9).removeAttribute(_b8(_ca));};})();dojo.hasClass=function(_cb,_cc){return ((" "+dojo.byId(_cb).className+" ").indexOf(" "+_cc+" ")>=0);};dojo.addClass=function(_cd,_ce){_cd=dojo.byId(_cd);var cls=_cd.className;if((" "+cls+" ").indexOf(" "+_ce+" ")<0){_cd.className=cls+(cls?" ":"")+_ce;}};dojo.removeClass=function(_d0,_d1){_d0=dojo.byId(_d0);var t=dojo.trim((" "+_d0.className+" ").replace(" "+_d1+" "," "));if(_d0.className!=t){_d0.className=t;}};dojo.toggleClass=function(_d3,_d4,_d5){if(_d5===undefined){_d5=!dojo.hasClass(_d3,_d4);}dojo[_d5?"addClass":"removeClass"](_d3,_d4);};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/json.js b/spring-js/src/main/resources/META-INF/dojo/_base/json.js
new file mode 100644
index 00000000..d2cc7840
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/json.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(_1){return eval("("+_1+")");};dojo._escapeString=function(_2){return ("\""+_2.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_4,_5){if(it===undefined){return "undefined";}var _6=typeof it;if(_6=="number"||_6=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}if(it.nodeType&&it.cloneNode){return "";}var _7=arguments.callee;var _8;_5=_5||"";var _9=_4?_5+dojo.toJsonIndentStr:"";if(typeof it.__json__=="function"){_8=it.__json__();if(it!==_8){return _7(_8,_4,_9);}}if(typeof it.json=="function"){_8=it.json();if(it!==_8){return _7(_8,_4,_9);}}var _a=_4?" ":"";var _b=_4?"\n":"";if(dojo.isArray(it)){var _c=dojo.map(it,function(_d){var _e=_7(_d,_4,_9);if(typeof _e!="string"){_e="undefined";}return _b+_9+_e;});return "["+_c.join(","+_a)+_b+_5+"]";}if(_6=="function"){return null;}var _f=[];for(var key in it){var _11;if(typeof key=="number"){_11="\""+key+"\"";}else{if(typeof key=="string"){_11=dojo._escapeString(key);}else{continue;}}val=_7(it[key],_4,_9);if(typeof val!="string"){continue;}_f.push(_b+_9+_11+":"+_a+val);}return "{"+_f.join(","+_a)+_b+_5+"}";};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/lang.js b/spring-js/src/main/resources/META-INF/dojo/_base/lang.js
new file mode 100644
index 00000000..11ebc9fe
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/lang.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");dojo.isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=(function(){var _3=function(it){return it&&(typeof it=="function"||it instanceof Function);};return dojo.isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false;}return _3(it);}:_3;})();dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||dojo.isArray(it)||dojo.isFunction(it));};dojo.isArrayLike=function(it){var d=dojo;return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!dojo.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_a,_b){for(var i=1,l=arguments.length;i2){return dojo._hitchArgs.apply(dojo,arguments);}if(!_15){_15=_14;_14=null;}if(dojo.isString(_15)){_14=_14||dojo.global;if(!_14[_15]){throw (["dojo.hitch: scope[\"",_15,"\"] is null (scope=\"",_14,"\")"].join(""));}return function(){return _14[_15].apply(_14,arguments||[]);};}return !_14?_15:function(){return _15.apply(_14,arguments||[]);};};dojo.delegate=dojo._delegate=function(obj,_17){function TMP(){};TMP.prototype=obj;var tmp=new TMP();if(_17){dojo.mixin(tmp,_17);}return tmp;};dojo.partial=function(_19){var arr=[null];return dojo.hitch.apply(dojo,arr.concat(dojo._toArray(arguments)));};dojo._toArray=function(obj,_1c,_1d){var arr=_1d||[];for(var x=_1c||0;x~+".indexOf(_5.charAt(_5.length-1))>=0){_5+=" *";}_5+=" ";var ts=function(s,e){return d.trim(_5.slice(s,e));};var _9=[];var _a=-1;var _b=-1;var _c=-1;var _d=-1;var _e=-1;var _f=-1;var _10=-1;var lc="";var cc="";var _13;var x=0;var ql=_5.length;var _16=null;var _cp=null;var _18=function(){if(_10>=0){var tv=(_10==x)?null:ts(_10,x).toLowerCase();_16[(">~+".indexOf(tv)<0)?"tag":"oper"]=tv;_10=-1;}};var _1a=function(){if(_f>=0){_16.id=ts(_f,x).replace(/\\/g,"");_f=-1;}};var _1b=function(){if(_e>=0){_16.classes.push(ts(_e+1,x).replace(/\\/g,""));_e=-1;}};var _1c=function(){_1a();_18();_1b();};for(;lc=cc,cc=_5.charAt(x),x=0){if(cc=="]"){if(!_cp.attr){_cp.attr=ts(_a+1,x);}else{_cp.matchFor=ts((_c||_a+1),x);}var cmf=_cp.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_cp.matchFor=cmf.substring(1,cmf.length-1);}}_16.attrs.push(_cp);_cp=null;_a=_c=-1;}else{if(cc=="="){var _1e=("|~^$*".indexOf(lc)>=0)?lc:"";_cp.type=_1e+cc;_cp.attr=ts(_a+1,x-_1e.length);_c=x+1;}}}else{if(_b>=0){if(cc==")"){if(_d>=0){_cp.value=ts(_b+1,x);}_d=_b=-1;}}else{if(cc=="#"){_1c();_f=x+1;}else{if(cc=="."){_1c();_e=x;}else{if(cc==":"){_1c();_d=x;}else{if(cc=="["){_1c();_a=x;_cp={};}else{if(cc=="("){if(_d>=0){_cp={name:ts(_d+1,x),value:null};_16.pseudos.push(_cp);}_b=x;}else{if(cc==" "&&lc!=cc){_1c();if(_d>=0){_16.pseudos.push({name:ts(_d+1,x)});}_16.hasLoops=(_16.pseudos.length||_16.attrs.length||_16.classes.length);_16.query=ts(_13,x);_16.tag=(_16["oper"])?null:(_16.tag||"*");_9.push(_16);_16=null;}}}}}}}}}return _9;};var _1f={"*=":function(_20,_21){return "[contains(@"+_20+", '"+_21+"')]";},"^=":function(_22,_23){return "[starts-with(@"+_22+", '"+_23+"')]";},"$=":function(_24,_25){return "[substring(@"+_24+", string-length(@"+_24+")-"+(_25.length-1)+")='"+_25+"']";},"~=":function(_26,_27){return "[contains(concat(' ',@"+_26+",' '), ' "+_27+" ')]";},"|=":function(_28,_29){return "[contains(concat(' ',@"+_28+",' '), ' "+_29+"-')]";},"=":function(_2a,_2b){return "[@"+_2a+"='"+_2b+"']";}};var _2c=function(_2d,_2e,_2f,_30){d.forEach(_2e.attrs,function(_31){var _32;if(_31.type&&_2d[_31.type]){_32=_2d[_31.type](_31.attr,_31.matchFor);}else{if(_31.attr.length){_32=_2f(_31.attr);}}if(_32){_30(_32);}});};var _33=function(_34){var _35=".";var _36=_4(d.trim(_34));while(_36.length){var tqp=_36.shift();var _38;var _39="";if(tqp.oper==">"){_38="/";tqp=_36.shift();}else{if(tqp.oper=="~"){_38="/following-sibling::";tqp=_36.shift();}else{if(tqp.oper=="+"){_38="/following-sibling::";_39="[position()=1]";tqp=_36.shift();}else{_38="//";}}}_35+=_38+tqp.tag+_39;if(tqp.id){_35+="[@id='"+tqp.id+"'][1]";}d.forEach(tqp.classes,function(cn){var cnl=cn.length;var _3c=" ";if(cn.charAt(cnl-1)=="*"){_3c="";cn=cn.substr(0,cnl-1);}_35+="[contains(concat(' ',@class,' '), ' "+cn+_3c+"')]";});_2c(_1f,tqp,function(_3d){return "[@"+_3d+"]";},function(_3e){_35+=_3e;});}return _35;};var _3f={};var _40=function(_41){if(_3f[_41]){return _3f[_41];}var doc=d.doc;var _43=_33(_41);var tf=function(_45){var ret=[];var _47;try{_47=doc.evaluate(_43,_45,null,XPathResult.ANY_TYPE,null);}catch(e){console.debug("failure in exprssion:",_43,"under:",_45);console.debug(e);}var _48=_47.iterateNext();while(_48){ret.push(_48);_48=_47.iterateNext();}return ret;};return _3f[_41]=tf;};var _49={};var _4a={};var _4b=function(_4c,_4d){if(!_4c){return _4d;}if(!_4d){return _4c;}return function(){return _4c.apply(window,arguments)&&_4d.apply(window,arguments);};};var _4e=function(_4f){var ret=[];var te,x=0,_53=_4f[_2];while(te=_53[x++]){if(te.nodeType==1){ret.push(te);}}return ret;};var _54=function(_55,_56){var ret=[];var te=_55;while(te=te.nextSibling){if(te.nodeType==1){ret.push(te);if(_56){break;}}}return ret;};var _59=function(_5a,_5b,_5c,idx){var _5e=idx+1;var _5f=(_5b.length==_5e);var tqp=_5b[idx];if(tqp.oper){var ecn=(tqp.oper==">")?_4e(_5a):_54(_5a,(tqp.oper=="+"));if(!ecn||!ecn.length){return;}_5e++;_5f=(_5b.length==_5e);var tf=_63(_5b[idx+1]);for(var x=0,_65=ecn.length,te;x<_65,te=ecn[x];x++){if(tf(te)){if(_5f){_5c.push(te);}else{_59(te,_5b,_5c,_5e);}}}}var _67=_68(tqp)(_5a);if(_5f){while(_67.length){_5c.push(_67.shift());}}else{while(_67.length){_59(_67.shift(),_5b,_5c,_5e);}}};var _69=function(_6a,_6b){var ret=[];var x=_6a.length-1,te;while(te=_6a[x--]){_59(te,_6b,ret,0);}return ret;};var _63=function(q){if(_49[q.query]){return _49[q.query];}var ff=null;if(q.tag){if(q.tag=="*"){ff=_4b(ff,function(_71){return (_71.nodeType==1);});}else{ff=_4b(ff,function(_72){return ((_72.nodeType==1)&&(q.tag==_72.tagName.toLowerCase()));});}}if(q.id){ff=_4b(ff,function(_73){return ((_73.nodeType==1)&&(_73.id==q.id));});}if(q.hasLoops){ff=_4b(ff,_74(q));}return _49[q.query]=ff;};var _75=function(_76){var pn=_76.parentNode;var pnc=pn.childNodes;var _79=-1;var _7a=pn.firstChild;if(!_7a){return _79;}var ci=_76["__cachedIndex"];var cl=pn["__cachedLength"];if(((typeof cl=="number")&&(cl!=pnc.length))||(typeof ci!="number")){pn["__cachedLength"]=pnc.length;var idx=1;do{if(_7a===_76){_79=idx;}if(_7a.nodeType==1){_7a["__cachedIndex"]=idx;idx++;}_7a=_7a.nextSibling;}while(_7a);}else{_79=ci;}return _79;};var _7e=0;var _7f="";var _80=function(_81,_82){if(_82=="class"){return _81.className||_7f;}if(_82=="for"){return _81.htmlFor||_7f;}return _81.getAttribute(_82,2)||_7f;};var _83={"*=":function(_84,_85){return function(_86){return (_80(_86,_84).indexOf(_85)>=0);};},"^=":function(_87,_88){return function(_89){return (_80(_89,_87).indexOf(_88)==0);};},"$=":function(_8a,_8b){var _8c=" "+_8b;return function(_8d){var ea=" "+_80(_8d,_8a);return (ea.lastIndexOf(_8b)==(ea.length-_8b.length));};},"~=":function(_8f,_90){var _91=" "+_90+" ";return function(_92){var ea=" "+_80(_92,_8f)+" ";return (ea.indexOf(_91)>=0);};},"|=":function(_94,_95){var _96=" "+_95+"-";return function(_97){var ea=" "+(_97.getAttribute(_94,2)||"");return ((ea==_95)||(ea.indexOf(_96)==0));};},"=":function(_99,_9a){return function(_9b){return (_80(_9b,_99)==_9a);};}};var _9c={"first-child":function(_9d,_9e){return function(_9f){if(_9f.nodeType!=1){return false;}var fc=_9f.previousSibling;while(fc&&(fc.nodeType!=1)){fc=fc.previousSibling;}return (!fc);};},"last-child":function(_a1,_a2){return function(_a3){if(_a3.nodeType!=1){return false;}var nc=_a3.nextSibling;while(nc&&(nc.nodeType!=1)){nc=nc.nextSibling;}return (!nc);};},"empty":function(_a5,_a6){return function(_a7){var cn=_a7.childNodes;var cnl=_a7.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt==1)||(nt==3)){return false;}}return true;};},"contains":function(_ac,_ad){return function(_ae){return (_ae.innerHTML.indexOf(_ad)>=0);};},"not":function(_af,_b0){var ntf=_63(_4(_b0)[0]);return function(_b2){return (!ntf(_b2));};},"nth-child":function(_b3,_b4){var pi=parseInt;if(_b4=="odd"){return function(_b6){return (((_75(_b6))%2)==1);};}else{if((_b4=="2n")||(_b4=="even")){return function(_b7){return ((_75(_b7)%2)==0);};}else{if(_b4.indexOf("0n+")==0){var _b8=pi(_b4.substr(3));return function(_b9){return (_b9.parentNode[_2][_b8-1]===_b9);};}else{if((_b4.indexOf("n+")>0)&&(_b4.length>3)){var _ba=_b4.split("n+",2);var _bb=pi(_ba[0]);var idx=pi(_ba[1]);return function(_bd){return ((_75(_bd)%_bb)==idx);};}else{if(_b4.indexOf("n")==-1){var _b8=pi(_b4);return function(_be){return (_75(_be)==_b8);};}}}}}}};var _bf=(d.isIE)?function(_c0){var clc=_c0.toLowerCase();return function(_c2){return _c2[_c0]||_c2[clc];};}:function(_c3){return function(_c4){return (_c4&&_c4.getAttribute&&_c4.hasAttribute(_c3));};};var _74=function(_c5){var _c6=(_4a[_c5.query]||_49[_c5.query]);if(_c6){return _c6;}var ff=null;if(_c5.id){if(_c5.tag!="*"){ff=_4b(ff,function(_c8){return (_c8.tagName.toLowerCase()==_c5.tag);});}}d.forEach(_c5.classes,function(_c9,idx,arr){var _cc=_c9.charAt(_c9.length-1)=="*";if(_cc){_c9=_c9.substr(0,_c9.length-1);}var re=new RegExp("(?:^|\\s)"+_c9+(_cc?".*":"")+"(?:\\s|$)");ff=_4b(ff,function(_ce){return re.test(_ce.className);});ff.count=idx;});d.forEach(_c5.pseudos,function(_cf){if(_9c[_cf.name]){ff=_4b(ff,_9c[_cf.name](_cf.name,_cf.value));}});_2c(_83,_c5,_bf,function(_d0){ff=_4b(ff,_d0);});if(!ff){ff=function(){return true;};}return _4a[_c5.query]=ff;};var _d1={};var _68=function(_d2,_d3){var _d4=_d1[_d2.query];if(_d4){return _d4;}if(_d2.id&&!_d2.hasLoops&&!_d2.tag){return _d1[_d2.query]=function(_d5){return [d.byId(_d2.id)];};}var _d6=_74(_d2);var _d7;if(_d2.tag&&_d2.id&&!_d2.hasLoops){_d7=function(_d8){var te=d.byId(_d2.id);if(_d6(te)){return [te];}};}else{var _da;if(!_d2.hasLoops){_d7=function(_db){var ret=[];var te,x=0,_da=_db.getElementsByTagName(_d2.tag);while(te=_da[x++]){ret.push(te);}return ret;};}else{_d7=function(_df){var ret=[];var te,x=0,_da=_df.getElementsByTagName(_d2.tag);while(te=_da[x++]){if(_d6(te)){ret.push(te);}}return ret;};}}return _d1[_d2.query]=_d7;};var _e3={};var _e4={"*":d.isIE?function(_e5){return _e5.all;}:function(_e6){return _e6.getElementsByTagName("*");},"~":_54,"+":function(_e7){return _54(_e7,true);},">":_4e};var _e8=function(_e9){var _ea=_4(d.trim(_e9));if(_ea.length==1){var tt=_68(_ea[0]);tt.nozip=true;return tt;}var sqf=function(_ed){var _ee=_ea.slice(0);var _ef;if(_ee[0].oper==">"){_ef=[_ed];}else{_ef=_68(_ee.shift())(_ed);}return _69(_ef,_ee);};return sqf;};var _f0=((document["evaluate"]&&!d.isSafari)?function(_f1){var _f2=_f1.split(" ");if((document["evaluate"])&&(_f1.indexOf(":")==-1)&&(_f1.indexOf("+")==-1)){if(((_f2.length>2)&&(_f1.indexOf(">")==-1))||(_f2.length>3)||(_f1.indexOf("[")>=0)||((1==_f2.length)&&(0<=_f1.indexOf(".")))){return _40(_f1);}}return _e8(_f1);}:_e8);var _f3=function(_f4){var qcz=_f4.charAt(0);if(d.doc["querySelectorAll"]&&((!d.isSafari)||(d.isSafari>3.1))&&(">+~".indexOf(qcz)==-1)){return function(_f6){var r=_f6.querySelectorAll(_f4);r.nozip=true;return r;};}if(_e4[_f4]){return _e4[_f4];}if(0>_f4.indexOf(",")){return _e4[_f4]=_f0(_f4);}else{var _f8=_f4.split(/\s*,\s*/);var tf=function(_fa){var _fb=0;var ret=[];var tp;while(tp=_f8[_fb++]){ret=ret.concat(_f0(tp,tp.indexOf(" "))(_fa));}return ret;};return _e4[_f4]=tf;}};var _fe=0;var _ff=function(arr){if(arr&&arr.nozip){return d.NodeList._wrap(arr);}var ret=new d.NodeList();if(!arr){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_fe++;arr[0]["_zipIdx"]=_fe;for(var x=1,te;te=arr[x];x++){if(arr[x]["_zipIdx"]!=_fe){ret.push(te);}te["_zipIdx"]=_fe;}return ret;};d.query=function(_104,root){if(_104.constructor==d.NodeList){return _104;}if(!d.isString(_104)){return new d.NodeList(_104);}if(d.isString(root)){root=d.byId(root);}return _ff(_f3(_104)(root||d.doc));};d.query.pseudos=_9c;d._filterQueryResult=function(_106,_107){var tnl=new d.NodeList();var ff=(_107)?_63(_4(_107)[0]):function(){return true;};for(var x=0,te;te=_106[x];x++){if(ff(te)){tnl.push(te);}}return tnl;};})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/window.js b/spring-js/src/main/resources/META-INF/dojo/_base/window.js
new file mode 100644
index 00000000..86147005
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/window.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo._gearsObject=function(){var _1;var _2;var _3=dojo.getObject("google.gears");if(_3){return _3;}if(typeof GearsFactory!="undefined"){_1=new GearsFactory();}else{if(dojo.isIE){try{_1=new ActiveXObject("Gears.Factory");}catch(e){}}else{if(navigator.mimeTypes["application/x-googlegears"]){_1=document.createElement("object");_1.setAttribute("type","application/x-googlegears");_1.setAttribute("width",0);_1.setAttribute("height",0);_1.style.display="none";document.documentElement.appendChild(_1);}}}if(!_1){return null;}dojo.setObject("google.gears.factory",_1);return dojo.getObject("google.gears");};dojo.isGears=(!!dojo._gearsObject())||0;dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_4,_5){dojo.global=_4;dojo.doc=_5;};dojo._fireCallback=function(_6,_7,_8){if(_7&&dojo.isString(_6)){_6=_7[_6];}return _6.apply(_7,_8||[]);};dojo.withGlobal=function(_9,_a,_b,_c){var _d;var _e=dojo.global;var _f=dojo.doc;try{dojo.setContext(_9,_9.document);_d=dojo._fireCallback(_a,_b,_c);}finally{dojo.setContext(_e,_f);}return _d;};dojo.withDoc=function(_10,_11,_12,_13){var _14;var _15=dojo.doc;try{dojo.doc=_10;_14=dojo._fireCallback(_11,_12,_13);}finally{dojo.doc=_15;}return _14;};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_base/xhr.js b/spring-js/src/main/resources/META-INF/dojo/_base/xhr.js
new file mode 100644
index 00000000..8fe39b70
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/_base/xhr.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");dojo.require("dojo._base.Deferred");dojo.require("dojo._base.json");dojo.require("dojo._base.lang");dojo.require("dojo._base.query");(function(){var _d=dojo;function setValue(_2,_3,_4){var _5=_2[_3];if(_d.isString(_5)){_2[_3]=[_5,_4];}else{if(_d.isArray(_5)){_5.push(_4);}else{_2[_3]=_4;}}};dojo.formToObject=function(_6){var _7={};var iq="input:not([type=file]):not([type=submit]):not([type=image]):not([type=reset]):not([type=button]), select, textarea";_d.query(iq,_6).filter(function(_9){return !_9.disabled&&_9.name;}).forEach(function(_a){var _b=_a.name;var _c=(_a.type||"").toLowerCase();if(_c=="radio"||_c=="checkbox"){if(_a.checked){setValue(_7,_b,_a.value);}}else{if(_a.multiple){_7[_b]=[];_d.query("option",_a).forEach(function(_d){if(_d.selected){setValue(_7,_b,_d.value);}});}else{setValue(_7,_b,_a.value);if(_c=="image"){_7[_b+".x"]=_7[_b+".y"]=_7[_b].x=_7[_b].y=0;}}}});return _7;};dojo.objectToQuery=function(_e){var _f=encodeURIComponent;var _10=[];var _11={};for(var _12 in _e){var _13=_e[_12];if(_13!=_11[_12]){var _14=_f(_12)+"=";if(_d.isArray(_13)){for(var i=0;i<_13.length;i++){_10.push(_14+_f(_13[i]));}}else{_10.push(_14+_f(_13));}}}return _10.join("&");};dojo.formToQuery=function(_16){return _d.objectToQuery(_d.formToObject(_16));};dojo.formToJson=function(_17,_18){return _d.toJson(_d.formToObject(_17),_18);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_d.forEach(qp,function(_1d){if(_1d.length){var _1e=_1d.split("=");var _1f=dec(_1e.shift());var val=dec(_1e.join("="));if(_d.isString(ret[_1f])){ret[_1f]=[ret[_1f]];}if(_d.isArray(ret[_1f])){ret[_1f].push(val);}else{ret[_1f]=val;}}});return ret;};dojo._blockAsync=false;dojo._contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){if(!dojo.config.usePlainJson){console.warn("Consider using mimetype:text/json-comment-filtered"+" to avoid potential security issues with JSON endpoints"+" (use djConfig.usePlainJson=true to turn off this message)");}return _d.fromJson(xhr.responseText);},"json-comment-filtered":function(xhr){var _24=xhr.responseText;var _25=_24.indexOf("/*");var _26=_24.lastIndexOf("*/");if(_25==-1||_26==-1){throw new Error("JSON was not comment filtered");}return _d.fromJson(_24.substring(_25+2,_26));},"javascript":function(xhr){return _d.eval(xhr.responseText);},"xml":function(xhr){var _29=xhr.responseXML;if(_d.isIE&&(!_29||window.location.protocol=="file:")){_d.forEach(["MSXML2","Microsoft","MSXML","MSXML3"],function(_2a){try{var dom=new ActiveXObject(_2a+".XMLDOM");dom.async=false;dom.loadXML(xhr.responseText);_29=dom;}catch(e){}});}return _29;}};dojo._contentHandlers["json-comment-optional"]=function(xhr){var _2d=_d._contentHandlers;try{return _2d["json-comment-filtered"](xhr);}catch(e){return _2d["json"](xhr);}};dojo._ioSetArgs=function(_2e,_2f,_30,_31){var _32={args:_2e,url:_2e.url};var _33=null;if(_2e.form){var _34=_d.byId(_2e.form);var _35=_34.getAttributeNode("action");_32.url=_32.url||(_35?_35.value:null);_33=_d.formToObject(_34);}var _36=[{}];if(_33){_36.push(_33);}if(_2e.content){_36.push(_2e.content);}if(_2e.preventCache){_36.push({"dojo.preventCache":new Date().valueOf()});}_32.query=_d.objectToQuery(_d.mixin.apply(null,_36));_32.handleAs=_2e.handleAs||"text";var d=new _d.Deferred(_2f);d.addCallbacks(_30,function(_38){return _31(_38,d);});var ld=_2e.load;if(ld&&_d.isFunction(ld)){d.addCallback(function(_3a){return ld.call(_2e,_3a,_32);});}var err=_2e.error;if(err&&_d.isFunction(err)){d.addErrback(function(_3c){return err.call(_2e,_3c,_32);});}var _3d=_2e.handle;if(_3d&&_d.isFunction(_3d)){d.addBoth(function(_3e){return _3d.call(_2e,_3e,_32);});}d.ioArgs=_32;return d;};var _3f=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _at=typeof xhr.abort;if(_at=="function"||_at=="unknown"){xhr.abort();}var err=new Error("xhr cancelled");err.dojoType="cancel";return err;};var _44=function(dfd){return _d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);};var _46=function(_47,dfd){console.debug(_47);return _47;};var _49=function(_4a){var dfd=_d._ioSetArgs(_4a,_3f,_44,_46);dfd.ioArgs.xhr=_d._xhrObj(dfd.ioArgs.args);return dfd;};var _4c=null;var _4d=[];var _4e=function(){var now=(new Date()).getTime();if(!_d._blockAsync){for(var i=0,tif;i<_4d.length&&(tif=_4d[i]);i++){var dfd=tif.dfd;try{if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_4d.splice(i--,1);}else{if(tif.ioCheck(dfd)){_4d.splice(i--,1);tif.resHandle(dfd);}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)"];for(var i=0;i<_d.length;++i){var _13=_d[i][0],_14=_d[i][1];_11.push("","",escapeHTML(_13)," ","");appendObject(_14,_11);_11.push(" ");}_11.push("");logRow(_11,"dir");},dirxml:function(_15){var _16=[];appendNode(_15,_16);logRow(_16,"dirxml");},group:function(){logRow(arguments,"group",pushGroup);},groupEnd:function(){logRow(arguments,"",popGroup);},time:function(_17){_18[_17]=(new Date()).getTime();},timeEnd:function(_19){if(_19 in _18){var _1a=(new Date()).getTime()-_18[_19];logFormatted([_19+":",_1a+"ms"]);delete _18[_19];}},count:function(){this.warn(["count() not supported."]);},trace:function(){this.warn(["trace() not supported."]);},profile:function(){this.warn(["profile() not supported."]);},profileEnd:function(){},clear:function(){while(_1b.childNodes.length){dojo._destroyElement(_1b.firstChild);}dojo.forEach(this._connects,dojo.disconnect);},open:function(){toggleConsole(true);},close:function(){if(_1c){toggleConsole();}},closeObjectInspector:function(){consoleObjectInspector.innerHTML="";consoleObjectInspector.style.display="none";_1b.style.display="block";}};var _1d=document;var _1e=window;var _1f=0;var _20=null;var _1b=null;var _21=null;var _22=null;var _1c=false;var _23=[];var _24=[];var _18={};var _25=">>> ";function toggleConsole(_26){_1c=_26||!_1c;if(_20){_20.style.display=_1c?"block":"none";}};function focusCommandLine(){toggleConsole(true);if(_21){_21.focus();}};function openWin(x,y,w,h){var win=window.open("","_firebug","status=0,menubar=0,resizable=1,top="+y+",left="+x+",width="+w+",height="+h+",scrollbars=1,addressbar=0");if(!win){var msg="Firebug Lite could not open a pop-up window, most likely because of a blocker.\n"+"Either enable pop-ups for this domain, or change the djConfig to popup=false.";alert(msg);}createResizeHandler(win);var _2d=win.document;HTMLstring="Firebug Lite \n"+"\n"+"
"+"";_2d.write(HTMLstring);_2d.close();return win;};function createResizeHandler(wn){var d=new Date();d.setTime(d.getTime()+(60*24*60*60*1000));d=d.toUTCString();var dc=wn.document,_31;if(wn.innerWidth){_31=function(){return {w:wn.innerWidth,h:wn.innerHeight};};}else{if(dc.documentElement&&dc.documentElement.clientWidth){_31=function(){return {w:dc.documentElement.clientWidth,h:dc.documentElement.clientHeight};};}else{if(dc.body){_31=function(){return {w:dc.body.clientWidth,h:dc.body.clientHeight};};}}}window.onFirebugResize=function(){layout(_31().h);clearInterval(wn._firebugWin_resize);wn._firebugWin_resize=setTimeout(function(){var x=wn.screenLeft,y=wn.screenTop,w=wn.outerWidth||wn.document.body.offsetWidth,h=wn.outerHeight||wn.document.body.offsetHeight;document.cookie="_firebugPosition="+[x,y,w,h].join(",")+"; expires="+d+"; path=/";},5000);};};function createFrame(){if(_20){return;}if(dojo.config.popup){var _36="100%";var _37=document.cookie.match(/(?:^|; )_firebugPosition=([^;]*)/);var p=_37?_37[1].split(","):[2,2,320,480];_1e=openWin(p[0],p[1],p[2],p[3]);_1d=_1e.document;djConfig.debugContainerId="fb";_1e.console=window.console;_1e.dojo=window.dojo;}else{_1d=document;_36=(dojo.config.debugHeight||300)+"px";}var _39=_1d.createElement("link");_39.href=dojo.moduleUrl("dojo._firebug","firebug.css");_39.rel="stylesheet";_39.type="text/css";var _3a=_1d.getElementsByTagName("head");if(_3a){_3a=_3a[0];}if(!_3a){_3a=_1d.getElementsByTagName("html")[0];}if(dojo.isIE){window.setTimeout(function(){_3a.appendChild(_39);},0);}else{_3a.appendChild(_39);}if(dojo.config.debugContainerId){_20=_1d.getElementById(dojo.config.debugContainerId);}if(!_20){_20=_1d.createElement("div");_1d.body.appendChild(_20);}_20.className+=" firebug";_20.style.height=_36;_20.style.display=(_1c?"block":"none");var _3b=dojo.config.popup?"":" Close ";_20.innerHTML=""+" "+"
"+"
";_22=_1d.getElementById("firebugToolbar");_22.onmousedown=onSplitterMouseDown;_21=_1d.getElementById("firebugCommandLine");addEvent(_21,"keydown",onCommandLineKeyDown);addEvent(_1d,dojo.isIE||dojo.isSafari?"keydown":"keypress",onKeyDown);_1b=_1d.getElementById("firebugLog");consoleObjectInspector=_1d.getElementById("objectLog");layout();flush();};dojo.addOnLoad(createFrame);function clearFrame(){_1d=null;if(_1e.console){_1e.console.clear();}_1e=null;_20=null;_1b=null;consoleObjectInspector=null;_21=null;_23=[];_24=[];_18={};};dojo.addOnUnload(clearFrame);function evalCommandLine(){var _3c=_21.value;_21.value="";logRow([_25,_3c],"command");var _3d;try{_3d=eval(_3c);}catch(e){console.debug(e);}console.log(_3d);};function layout(h){var _3f=h?h-(_22.offsetHeight+_21.offsetHeight+25+(h*0.01))+"px":_20.offsetHeight-(_22.offsetHeight+_21.offsetHeight)+"px";_1b.style.top=_22.offsetHeight+"px";_1b.style.height=_3f;consoleObjectInspector.style.height=_3f;consoleObjectInspector.style.top=_22.offsetHeight+"px";_21.style.bottom=0;};function logRow(_40,_41,_42){if(_1b){writeMessage(_40,_41,_42);}else{_23.push([_40,_41,_42]);}};function flush(){var _43=_23;_23=[];for(var i=0;i<_43.length;++i){writeMessage(_43[i][0],_43[i][1],_43[i][2]);}};function writeMessage(_45,_46,_47){var _48=_1b.scrollTop+_1b.offsetHeight>=_1b.scrollHeight;_47=_47||writeRow;_47(_45,_46);if(_48){_1b.scrollTop=_1b.scrollHeight-_1b.offsetHeight;}};function appendRow(row){var _4a=_24.length?_24[_24.length-1]:_1b;_4a.appendChild(row);};function writeRow(_4b,_4c){var row=_1b.ownerDocument.createElement("div");row.className="logRow"+(_4c?" logRow-"+_4c:"");row.innerHTML=_4b.join("");appendRow(row);};function pushGroup(_4e,_4f){logFormatted(_4e,_4f);var _50=_1b.ownerDocument.createElement("div");_50.className="logGroupBox";appendRow(_50);_24.push(_50);};function popGroup(){_24.pop();};function logFormatted(_51,_52){var _53=[];var _54=_51[0];var _55=0;if(typeof (_54)!="string"){_54="";_55=-1;}var _56=parseFormat(_54);for(var i=0;i<_56.length;++i){var _58=_56[i];if(_58&&typeof _58=="object"){_58.appender(_51[++_55],_53);}else{appendText(_58,_53);}}var ids=[];var obs=[];for(i=_55+1;i<_51.length;++i){appendText(" ",_53);var _5b=_51[i];if(_5b===undefined||_5b===null){appendNull(_5b,_53);}else{if(typeof (_5b)=="string"){appendText(_5b,_53);}else{if(_5b.nodeType==9){appendText("[ XmlDoc ]",_53);}else{if(_5b.nodeType==1){appendText("< "+_5b.tagName+" id=\""+_5b.id+"\" />",_53);}else{var id="_a"+_1f++;ids.push(id);obs.push(_5b);var str=""+getObjectAbbr(_5b)+" ";appendLink(str,_53);}}}}}logRow(_53,_52);for(i=0;i << Back";try{printObject(this.obj);}catch(e){this.obj=e;}consoleObjectInspector.innerHTML=_5f+""+printObject(this.obj)+" ";}));}};function parseFormat(_60){var _61=[];var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;var _63={s:appendText,d:appendInteger,i:appendInteger,f:appendFloat};for(var m=reg.exec(_60);m;m=reg.exec(_60)){var _65=m[8]?m[8]:m[5];var _66=_65 in _63?_63[_65]:appendObject;var _67=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);_61.push(_60.substr(0,m[0][0]=="%"?m.index:m.index+1));_61.push({appender:_66,precision:_67});_60=_60.substr(m.index+m[0].length);}_61.push(_60);return _61;};function escapeHTML(_68){function replaceChars(ch){switch(ch){case "<":return "<";case ">":return ">";case "&":return "&";case "'":return "'";case "\"":return """;}return "?";};return String(_68).replace(/[<>&"']/g,replaceChars);};function objectToString(_6a){try{return _6a+"";}catch(e){return null;}};function appendLink(_6b,_6c){_6c.push(objectToString(_6b));};function appendText(_6d,_6e){_6e.push(escapeHTML(objectToString(_6d)));};function appendNull(_6f,_70){_70.push("",escapeHTML(objectToString(_6f))," ");};function appendString(_71,_72){_72.push(""",escapeHTML(objectToString(_71)),"" ");};function appendInteger(_73,_74){_74.push("",escapeHTML(objectToString(_73))," ");};function appendFloat(_75,_76){_76.push("",escapeHTML(objectToString(_75))," ");};function appendFunction(_77,_78){_78.push("",getObjectAbbr(_77)," ");};function appendObject(_79,_7a){try{if(_79===undefined){appendNull("undefined",_7a);}else{if(_79===null){appendNull("null",_7a);}else{if(typeof _79=="string"){appendString(_79,_7a);}else{if(typeof _79=="number"){appendInteger(_79,_7a);}else{if(typeof _79=="function"){appendFunction(_79,_7a);}else{if(_79.nodeType==1){appendSelector(_79,_7a);}else{if(typeof _79=="object"){appendObjectFormatted(_79,_7a);}else{appendText(_79,_7a);}}}}}}}}catch(e){}};function appendObjectFormatted(_7b,_7c){var _7d=objectToString(_7b);var _7e=/\[object (.*?)\]/;var m=_7e.exec(_7d);_7c.push("",m?m[1]:_7d," ");};function appendSelector(_80,_81){_81.push("");_81.push("",escapeHTML(_80.nodeName.toLowerCase())," ");if(_80.id){_81.push("#",escapeHTML(_80.id)," ");}if(_80.className){_81.push(".",escapeHTML(_80.className)," ");}_81.push(" ");};function appendNode(_82,_83){if(_82.nodeType==1){_83.push("","<",_82.nodeName.toLowerCase()," ");for(var i=0;i<_82.attributes.length;++i){var _85=_82.attributes[i];if(!_85.specified){continue;}_83.push(" ",_85.nodeName.toLowerCase()," ="",escapeHTML(_85.nodeValue)," "");}if(_82.firstChild){_83.push(">
");for(var _86=_82.firstChild;_86;_86=_86.nextSibling){appendNode(_86,_83);}_83.push("
</",_82.nodeName.toLowerCase(),">
");}else{_83.push("/>");}}else{if(_82.nodeType==3){_83.push("",escapeHTML(_82.nodeValue),"
");}}};function addEvent(_87,_88,_89){if(document.all){_87.attachEvent("on"+_88,_89);}else{_87.addEventListener(_88,_89,false);}};function removeEvent(_8a,_8b,_8c){if(document.all){_8a.detachEvent("on"+_8b,_8c);}else{_8a.removeEventListener(_8b,_8c,false);}};function cancelEvent(_8d){if(document.all){_8d.cancelBubble=true;}else{_8d.stopPropagation();}};function onError(msg,_8f,_90){var _91=_8f.lastIndexOf("/");var _92=_91==-1?_8f:_8f.substr(_91+1);var _93=["",msg," ","",_92," (line ",_90,")
"];logRow(_93,"error");};var _94=(new Date()).getTime();function onKeyDown(_95){var _96=(new Date()).getTime();if(_96>_94+200){_95=dojo.fixEvent(_95);var _97=dojo.keys;var ekc=_95.keyCode;_94=_96;if(ekc==_97.F12){toggleConsole();}else{if((ekc==_97.NUMPAD_ENTER||ekc==76)&&_95.shiftKey&&(_95.metaKey||_95.ctrlKey)){focusCommandLine();}else{return;}}cancelEvent(_95);}};function onSplitterMouseDown(_99){if(dojo.isSafari||dojo.isOpera){return;}addEvent(document,"mousemove",onSplitterMouseMove);addEvent(document,"mouseup",onSplitterMouseUp);for(var i=0;i_a9.length){_a3=_a9.length;}}}if(_a3==_a9.length){_21.value=_a4;_a4=null;}else{_21.value=_a9[_a3];}};function cookie(_aa,_ab){var c=document.cookie;if(arguments.length==1){var _ad=c.match(new RegExp("(?:^|; )"+_aa+"=([^;]*)"));return _ad?decodeURIComponent(_ad[1]):undefined;}else{var d=new Date();d.setMonth(d.getMonth()+1);document.cookie=_aa+"="+encodeURIComponent(_ab)+((d.toUtcString)?"; expires="+d.toUTCString():"");}};function isArray(it){return it&&it instanceof Array||typeof it=="array";};function getAtts(o){if(isArray(o)){return "[array with "+o.length+" slots]";}else{var i=0;for(var nm in o){i++;}return "{object with "+i+" items}";}};function printObject(o,i,txt,_b6){var br="\n";var ind=" ";txt=txt||"";i=i||ind;_b6=_b6||[];looking:for(var nm in o){if(o[nm]===window||o[nm]===document){continue;}else{if(o[nm]&&o[nm].nodeType){if(o[nm].nodeType==1){txt+=i+nm+" : < "+o[nm].tagName+" id=\""+o[nm].id+"\" />"+br;}else{if(o[nm].nodeType==3){txt+=i+nm+" : [ TextNode "+o[nm].data+" ]"+br;}}}else{if(typeof o[nm]=="object"&&(o[nm] instanceof String||o[nm] instanceof Number||o[nm] instanceof Boolean)){txt+=i+nm+" : "+o[nm]+br;}else{if(typeof (o[nm])=="object"&&o[nm]){for(var j=0,_bb;_bb=_b6[j];j++){if(o[nm]===_bb){txt+=i+nm+" : RECURSION"+br;continue looking;}}_b6.push(o[nm]);txt+=i+nm+" -> "+getAtts(o[nm])+br;txt+=printObject(o[nm],i+ind,"",_b6);}else{if(typeof o[nm]=="undefined"){txt+=i+nm+" : undefined"+br;}else{if(nm=="toString"&&typeof o[nm]=="function"){var _bc=o[nm]();if(typeof _bc=="string"&&_bc.match(/function ?(.*?)\(/)){_bc=escapeHTML(getObjectAbbr(o[nm]));}txt+=i+nm+" : "+_bc+br;}else{txt+=i+nm+" : "+escapeHTML(getObjectAbbr(o[nm]))+br;}}}}}}}txt+=br;return txt;};function getObjectAbbr(obj){var _be=(obj instanceof Error);var nm=(obj&&(obj.id||obj.name||obj.ObjectID||obj.widgetId));if(!_be&&nm){return "{"+nm+"}";}var _c0=2;var _c1=4;var cnt=0;if(_be){nm="[ Error: "+(obj.message||obj.description||obj)+" ]";}else{if(isArray(obj)){nm="["+obj.slice(0,_c1).join(",");if(obj.length>_c1){nm+=" ... ("+obj.length+" items)";}nm+="]";}else{if(typeof obj=="function"){nm=obj+"";var reg=/function\s*([^\(]*)(\([^\)]*\))[^\{]*\{/;var m=reg.exec(nm);if(m){if(!m[1]){m[1]="function";}nm=m[1]+m[2];}else{nm="function()";}}else{if(typeof obj!="object"||typeof obj=="string"){nm=obj+"";}else{nm="{";for(var i in obj){cnt++;if(cnt>_c0){break;}nm+=i+"="+obj[i]+" ";}nm+="}";}}}}return nm;};window.onerror=onError;addEvent(document,dojo.isIE||dojo.isSafari?"keydown":"keypress",onKeyDown);if((document.documentElement.getAttribute("debug")=="true")||(dojo.config.isDebug)){toggleConsole(true);}})();}}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/_firebug/infoIcon.png b/spring-js/src/main/resources/META-INF/dojo/_firebug/infoIcon.png
new file mode 100644
index 00000000..da1e5334
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dojo/_firebug/infoIcon.png differ
diff --git a/spring-js/src/main/resources/META-INF/dojo/_firebug/warningIcon.png b/spring-js/src/main/resources/META-INF/dojo/_firebug/warningIcon.png
new file mode 100644
index 00000000..de51084e
Binary files /dev/null and b/spring-js/src/main/resources/META-INF/dojo/_firebug/warningIcon.png differ
diff --git a/spring-js/src/main/resources/META-INF/dojo/back.js b/spring-js/src/main/resources/META-INF/dojo/back.js
new file mode 100644
index 00000000..07c2a69e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/back.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.back"]){dojo._hasResource["dojo.back"]=true;dojo.provide("dojo.back");(function(){var _1=dojo.back;function getHash(){var h=window.location.hash;if(h.charAt(0)=="#"){h=h.substring(1);}return dojo.isMozilla?h:decodeURIComponent(h);};function setHash(h){if(!h){h="";}window.location.hash=encodeURIComponent(h);_4=history.length;};if(dojo.exists("tests.back-hash")){_1.getHash=getHash;_1.setHash=setHash;}var _5=(typeof (window)!=="undefined")?window.location.href:"";var _6=(typeof (window)!=="undefined")?getHash():"";var _7=null;var _8=null;var _9=null;var _a=null;var _b=[];var _c=[];var _d=false;var _e=false;var _4;function handleBackButton(){var _f=_c.pop();if(!_f){return;}var _10=_c[_c.length-1];if(!_10&&_c.length==0){_10=_7;}if(_10){if(_10.kwArgs["back"]){_10.kwArgs["back"]();}else{if(_10.kwArgs["backButton"]){_10.kwArgs["backButton"]();}else{if(_10.kwArgs["handle"]){_10.kwArgs.handle("back");}}}}_b.push(_f);};_1.goBack=handleBackButton;function handleForwardButton(){var _11=_b.pop();if(!_11){return;}if(_11.kwArgs["forward"]){_11.kwArgs.forward();}else{if(_11.kwArgs["forwardButton"]){_11.kwArgs.forwardButton();}else{if(_11.kwArgs["handle"]){_11.kwArgs.handle("forward");}}}_c.push(_11);};_1.goForward=handleForwardButton;function createState(url,_13,_14){return {"url":url,"kwArgs":_13,"urlHash":_14};};function getUrlQuery(url){var _16=url.split("?");if(_16.length<2){return null;}else{return _16[1];}};function loadIframeHistory(){var url=(dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"))+"?"+(new Date()).getTime();_d=true;if(_a){dojo.isSafari?_a.location=url:window.frames[_a.name].location=url;}else{}return url;};function checkLocation(){if(!_e){var hsl=_c.length;var _19=getHash();if((_19===_6||window.location.href==_5)&&(hsl==1)){handleBackButton();return;}if(_b.length>0){if(_b[_b.length-1].urlHash===_19){handleForwardButton();return;}}if((hsl>=2)&&(_c[hsl-2])){if(_c[hsl-2].urlHash===_19){handleBackButton();return;}}if(dojo.isSafari&&dojo.isSafari<3){var _1a=history.length;if(_1a>_4){handleForwardButton();}else{if(_1a<_4){handleBackButton();}}_4=_1a;}}};_1.init=function(){if(dojo.byId("dj_history")){return;}var src=dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html");document.write("");};_1.setInitialState=function(_1c){_7=createState(_5,_1c,_6);};_1.addToHistory=function(_1d){_b=[];var _1e=null;var url=null;if(!_a){if(dojo.config["useXDomain"]&&!dojo.config["dojoIframeHistoryUrl"]){console.debug("dojo.back: 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");}_a=window.frames["dj_history"];}if(!_9){_9=document.createElement("a");dojo.body().appendChild(_9);_9.style.display="none";}if(_1d["changeUrl"]){_1e=""+((_1d["changeUrl"]!==true)?_1d["changeUrl"]:(new Date()).getTime());if(_c.length==0&&_7.urlHash==_1e){_7=createState(url,_1d,_1e);return;}else{if(_c.length>0&&_c[_c.length-1].urlHash==_1e){_c[_c.length-1]=createState(url,_1d,_1e);return;}}_e=true;setTimeout(function(){setHash(_1e);_e=false;},1);_9.href=_1e;if(dojo.isIE){url=loadIframeHistory();var _20=_1d["back"]||_1d["backButton"]||_1d["handle"];var tcb=function(_22){if(getHash()!=""){setTimeout(function(){setHash(_1e);},1);}_20.apply(this,[_22]);};if(_1d["back"]){_1d.back=tcb;}else{if(_1d["backButton"]){_1d.backButton=tcb;}else{if(_1d["handle"]){_1d.handle=tcb;}}}var _23=_1d["forward"]||_1d["forwardButton"]||_1d["handle"];var tfw=function(_25){if(getHash()!=""){setHash(_1e);}if(_23){_23.apply(this,[_25]);}};if(_1d["forward"]){_1d.forward=tfw;}else{if(_1d["forwardButton"]){_1d.forwardButton=tfw;}else{if(_1d["handle"]){_1d.handle=tfw;}}}}else{if(!dojo.isIE){if(!_8){_8=setInterval(checkLocation,200);}}}}else{url=loadIframeHistory();}_c.push(createState(url,_1d,_1e));};_1._iframeLoaded=function(evt,_27){var _28=getUrlQuery(_27.href);if(_28==null){if(_c.length==1){handleBackButton();}return;}if(_d){_d=false;return;}if(_c.length>=2&&_28==getUrlQuery(_c[_c.length-2].url)){handleBackButton();}else{if(_b.length>0&&_28==getUrlQuery(_b[_b.length-1].url)){handleForwardButton();}}};})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/behavior.js b/spring-js/src/main/resources/META-INF/dojo/behavior.js
new file mode 100644
index 00000000..51db1d06
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/behavior.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.behavior"]){dojo._hasResource["dojo.behavior"]=true;dojo.provide("dojo.behavior");dojo.behavior=new function(){function arrIn(_1,_2){if(!_1[_2]){_1[_2]=[];}return _1[_2];};var _3=0;function forIn(_4,_5,_6){var _7={};for(var x in _4){if(typeof _7[x]=="undefined"){if(!_6){_5(_4[x],x);}else{_6.call(_5,_4[x],x);}}}};this._behaviors={};this.add=function(_9){var _a={};forIn(_9,this,function(_b,_c){var _d=arrIn(this._behaviors,_c);if(typeof _d["id"]!="number"){_d.id=_3++;}var _e=[];_d.push(_e);if((dojo.isString(_b))||(dojo.isFunction(_b))){_b={found:_b};}forIn(_b,function(_f,_10){arrIn(_e,_10).push(_f);});});};var _11=function(_12,_13,_14){if(dojo.isString(_13)){if(_14=="found"){dojo.publish(_13,[_12]);}else{dojo.connect(_12,_14,function(){dojo.publish(_13,arguments);});}}else{if(dojo.isFunction(_13)){if(_14=="found"){_13(_12);}else{dojo.connect(_12,_14,_13);}}}};this.apply=function(){forIn(this._behaviors,function(_15,id){dojo.query(id).forEach(function(_17){var _18=0;var bid="_dj_behavior_"+_15.id;if(typeof _17[bid]=="number"){_18=_17[bid];if(_18==(_15.length)){return;}}for(var x=_18,_1b;_1b=_15[x];x++){forIn(_1b,function(_1c,_1d){if(dojo.isArray(_1c)){dojo.forEach(_1c,function(_1e){_11(_17,_1e,_1d);});}});}_17[bid]=_15.length;});});};};dojo.addOnLoad(dojo.behavior,"apply");}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/build.txt b/spring-js/src/main/resources/META-INF/dojo/build.txt
new file mode 100644
index 00000000..fb42e8ae
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/build.txt
@@ -0,0 +1,68 @@
+Files baked into this build:
+
+dojo.js:
+./jslib/dojoGuardStart.jsfrag
+./../../dojo/_base/_loader/bootstrap.js
+./../../dojo/_base/_loader/loader.js
+./../../dojo/_base/_loader/hostenv_browser.js
+./../../release/dojo/dojo/_base/lang.js
+./../../release/dojo/dojo/_base/declare.js
+./../../release/dojo/dojo/_base/connect.js
+./../../release/dojo/dojo/_base/Deferred.js
+./../../release/dojo/dojo/_base/json.js
+./../../release/dojo/dojo/_base/array.js
+./../../release/dojo/dojo/_base/Color.js
+./../../release/dojo/dojo/_base.js
+./../../release/dojo/dojo/_base/window.js
+./../../release/dojo/dojo/_base/event.js
+./../../release/dojo/dojo/_base/html.js
+./../../release/dojo/dojo/_base/NodeList.js
+./../../release/dojo/dojo/_base/query.js
+./../../release/dojo/dojo/_base/xhr.js
+./../../release/dojo/dojo/_base/fx.js
+./../../release/dojo/dojo/_base/browser.js
+./../../release/dojo/dojo/i18n.js
+./../../release/dojo/dijit/_base/focus.js
+./../../release/dojo/dijit/_base/manager.js
+./../../release/dojo/dijit/_base/place.js
+./../../release/dojo/dijit/_base/window.js
+./../../release/dojo/dijit/_base/popup.js
+./../../release/dojo/dijit/_base/scroll.js
+./../../release/dojo/dijit/_base/sniff.js
+./../../release/dojo/dijit/_base/bidi.js
+./../../release/dojo/dijit/_base/typematic.js
+./../../release/dojo/dijit/_base/wai.js
+./../../release/dojo/dijit/_base.js
+./../../release/dojo/dijit/_Widget.js
+./../../release/dojo/dojo/string.js
+./../../release/dojo/dojo/date/stamp.js
+./../../release/dojo/dojo/parser.js
+./../../release/dojo/dijit/_Templated.js
+./../../release/dojo/dijit/form/_FormWidget.js
+./../../release/dojo/dijit/form/TextBox.js
+./../../release/dojo/dijit/Tooltip.js
+./../../release/dojo/dijit/form/ValidationTextBox.js
+./../../release/dojo/dojo/regexp.js
+./../../release/dojo/dojo/number.js
+./../../release/dojo/dijit/form/NumberTextBox.js
+./../../release/dojo/dojo/cldr/supplemental.js
+./../../release/dojo/dojo/date.js
+./../../release/dojo/dojo/date/locale.js
+./../../release/dojo/dijit/_Calendar.js
+./../../release/dojo/dijit/form/_DateTimeTextBox.js
+./../../release/dojo/dijit/form/DateTextBox.js
+./../../release/dojo/dojo/cldr/monetary.js
+./../../release/dojo/dojo/currency.js
+./../../release/dojo/dijit/form/CurrencyTextBox.js
+./../../release/dojo/dojo/dnd/common.js
+./../../release/dojo/dojo/dnd/autoscroll.js
+./../../release/dojo/dojo/dnd/Mover.js
+./../../release/dojo/dojo/dnd/Moveable.js
+./../../release/dojo/dojo/dnd/TimedMoveable.js
+./../../release/dojo/dojo/fx.js
+./../../release/dojo/dijit/_Container.js
+./../../release/dojo/dijit/layout/_LayoutWidget.js
+./../../release/dojo/dijit/layout/ContentPane.js
+./../../release/dojo/dijit/form/Form.js
+./../../release/dojo/dijit/Dialog.js
+./jslib/dojoGuardEnd.jsfrag
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/LICENSE b/spring-js/src/main/resources/META-INF/dojo/cldr/LICENSE
new file mode 100644
index 00000000..7aeb1dd5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/LICENSE
@@ -0,0 +1,29 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+and http://www.unicode.org/cldr/data/ . Unicode Software includes any source code published in the Unicode Standard or under
+the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/.
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR
+OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU
+UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS
+AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+Copyright 1991-2007 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated
+documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data
+Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided
+that (a) the above copyright notice(s) and this permission notice appear with all copies of the Data Files or Software, (b) both the
+above copyright notice(s) and this permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File
+or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified.
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
+INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written authorization of the copyright holder.
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/README b/spring-js/src/main/resources/META-INF/dojo/cldr/README
new file mode 100644
index 00000000..36876766
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/README
@@ -0,0 +1,18 @@
+All files within this directory were derived from the Common Locale
+Data Repository (see http://unicode.org/cldr) The CLDR project is
+responsible for the accuracy and maintenance of this data. A copy
+of this data is checked into the Dojo util project as a zip file.
+The XML data is transformed to the JSON-style Javascript you see
+under the nls/ directory. These Javascript files include data
+necessary to do things like format and parse dates, numbers, and
+currencies in different locales to consider cultural differences.
+They are used by other modules in core Dojo such as dojo.date,
+dojo.number and dojo.currency. It usually is not necessary to use
+dojo.cldr directly.
+
+An arbitrary subset of locales have been checked in to dojo/cldr
+under svn. To support other locales, the full set may be generated
+by using xslt scripts in the util/buildscripts/cldr/ ant script.
+Hundreds of locales are supported by the CLDR project.
+
+See terms of use: http://www.unicode.org/copyright.html#Exhibit1
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/monetary.js b/spring-js/src/main/resources/META-INF/dojo/cldr/monetary.js
new file mode 100644
index 00000000..f5d732d6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/monetary.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.cldr.monetary"]){dojo._hasResource["dojo.cldr.monetary"]=true;dojo.provide("dojo.cldr.monetary");dojo.cldr.monetary.getData=function(_1){var _2={ADP:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,DJF:0,ESP:0,GNF:0,IQD:3,ITL:0,JOD:3,JPY:0,KMF:0,KRW:0,KWD:3,LUF:0,LYD:3,MGA:0,MGF:0,OMR:3,PYG:0,RWF:0,TND:3,TRL:0,VUV:0,XAF:0,XOF:0,XPF:0};var _3={CHF:5};var _4=_2[_1],_5=_3[_1];if(typeof _4=="undefined"){_4=2;}if(typeof _5=="undefined"){_5=0;}return {places:_4,round:_5};};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/currency.js
new file mode 100644
index 00000000..742b390e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/currency.js
@@ -0,0 +1 @@
+({"USD_symbol":"US$","EUR_displayName":"EUR","GBP_displayName":"GBP","JPY_displayName":"JPY","GBP_symbol":"UK£","JPY_symbol":"JP¥","EUR_symbol":"€","USD_displayName":"USD"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de-de/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de-de/number.js
new file mode 100644
index 00000000..35a2d9b5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de-de/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"#,##0.00 ¤","decimalFormat":"#,##0.###","group":".","scientificFormat":"#E0","percentFormat":"#,##0 %","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/currency.js
new file mode 100644
index 00000000..4e7a9543
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkong-Dollar","CHF_displayName":"Schweizer Franken","CHF_symbol":"SFr.","CAD_displayName":"Kanadischer Dollar","CNY_displayName":"Renminbi Yuan","USD_symbol":"$","AUD_displayName":"Australischer Dollar","JPY_displayName":"Yen","USD_displayName":"US-Dollar","GBP_displayName":"Pfund Sterling","EUR_displayName":"Euro","GBP_symbol":"UK£","JPY_symbol":"JP¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/gregorian.js
new file mode 100644
index 00000000..2cd17a96
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"dateFormat-medium":"dd.MM.yyyy","field-second":"Sekunde","field-week":"Woche","pm":"nachm.","timeFormat-full":"HH:mm:ss v","dateTimeAvailableFormats":["E d","H","HH:mm","HH:mm:ss","E MMM d","d. MMMM","dd.MM.","d.M.","mm:ss","MM.yy","MMM yy","Q yy","yyyy","MMMM yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["v. Chr.","n. Chr."],"am":"vorm.","days-standAlone-narrow":["S","M","D","M","D","F","S"],"field-year":"Jahr","field-minute":"Minute","timeFormat-medium":"HH:mm:ss","quarters-stand-alone-narrow":["1","2","3","4"],"field-hour":"Stunde","dateFormat-long":"d. MMMM yyyy","field-day":"Tag","field-dayperiod":"Tageshälfte","field-month":"Monat","dateFormat-short":"dd.MM.yy","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"field-era":"Epoche","timeFormat-short":"HH:mm","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"],"eraAbbr":["v. Chr.","n. Chr."],"timeFormat-long":"HH:mm:ss z","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormat-full":"EEEE, d. MMMM yyyy","field-weekday":"Wochentag","days-format-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"field-zone":"Zone","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/number.js
new file mode 100644
index 00000000..e6e47f8f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/de/number.js
@@ -0,0 +1 @@
+({"decimalFormat":"#,##0.###","group":".","scientificFormat":"#E0","percentFormat":"#,##0 %","currencyFormat":"#,##0.00 ¤","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/currency.js
new file mode 100644
index 00000000..a65a14b2
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/currency.js
@@ -0,0 +1 @@
+({"AUD_symbol":"$","USD_symbol":"US$","HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","CHF_symbol":"SwF","JPY_symbol":"¥","HKD_symbol":"HK$","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","CAD_symbol":"Can$","USD_displayName":"US Dollar","CNY_symbol":"Y","GBP_displayName":"British Pound Sterling","GBP_symbol":"£","EUR_displayName":"Euro","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/gregorian.js
new file mode 100644
index 00000000..6612d6c8
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/gregorian.js
@@ -0,0 +1 @@
+({"dateFormat-short":"d/MM/yy","dateFormat-medium":"dd/MM/yyyy","dateFormat-long":"d MMMM yyyy","dateFormat-full":"EEEE, d MMMM yyyy","quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"pm":"PM","timeFormat-full":"h:mm:ss a v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","MMMM d","M/d","mm:ss","MM/yy","Q yy","QQQQ yy","MMM yyyy","yy MMM","yy Q","yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Before Christ","Anno Domini"],"am":"AM","days-standAlone-narrow":["S","M","T","W","T","F","S"],"timeFormat-medium":"h:mm:ss a","field-dayperiod":"AM/PM","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"timeFormat-short":"h:mm a","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"eraAbbr":["BC","AD"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"timeFormat-long":"h:mm:ss a z","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-minute":"Minute","field-weekday":"Day of the Week","dateTimeFormats-appendItem-Year":"{0} {1}","field-era":"Era","field-hour":"Hour","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-zone":"Zone","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-year":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-week":"Week","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-second":"Second","field-day":"Day","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/number.js
new file mode 100644
index 00000000..a2232796
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-au/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","group":",","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-ca/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-ca/currency.js
new file mode 100644
index 00000000..af033250
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-ca/currency.js
@@ -0,0 +1 @@
+({"CAD_symbol":"$","USD_symbol":"US$","HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","CHF_symbol":"SwF","JPY_symbol":"¥","HKD_symbol":"HK$","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","CNY_symbol":"Y","GBP_displayName":"British Pound Sterling","GBP_symbol":"£","AUD_symbol":"$A","EUR_displayName":"Euro","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-ca/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-ca/gregorian.js
new file mode 100644
index 00000000..b161f0c1
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-ca/gregorian.js
@@ -0,0 +1 @@
+({"dateFormat-medium":"yyyy-MM-dd","dateFormat-short":"yy-MM-dd","quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"pm":"PM","timeFormat-full":"h:mm:ss a v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","MMMM d","M/d","mm:ss","MM/yy","Q yy","QQQQ yy","MMM yyyy","yy MMM","yy Q","yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Before Christ","Anno Domini"],"am":"AM","days-standAlone-narrow":["S","M","T","W","T","F","S"],"timeFormat-medium":"h:mm:ss a","dateFormat-long":"MMMM d, yyyy","field-dayperiod":"AM/PM","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"timeFormat-short":"h:mm a","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"eraAbbr":["BC","AD"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"timeFormat-long":"h:mm:ss a z","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormat-full":"EEEE, MMMM d, yyyy","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-minute":"Minute","field-weekday":"Day of the Week","dateTimeFormats-appendItem-Year":"{0} {1}","field-era":"Era","field-hour":"Hour","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-zone":"Zone","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-year":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-week":"Week","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-second":"Second","field-day":"Day","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-gb/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-gb/gregorian.js
new file mode 100644
index 00000000..df55d7f0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-gb/gregorian.js
@@ -0,0 +1 @@
+({"dateFormat-short":"dd/MM/yyyy","timeFormat-long":"HH:mm:ss z","dateFormat-medium":"d MMM yyyy","dateFormat-long":"d MMMM yyyy","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm","timeFormat-full":"HH:mm:ss v","dateFormat-full":"EEEE, d MMMM yyyy","quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"pm":"PM","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","MMMM d","M/d","mm:ss","MM/yy","Q yy","QQQQ yy","MMM yyyy","yy MMM","yy Q","yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Before Christ","Anno Domini"],"am":"AM","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-dayperiod":"AM/PM","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"eraAbbr":["BC","AD"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-minute":"Minute","field-weekday":"Day of the Week","dateTimeFormats-appendItem-Year":"{0} {1}","field-era":"Era","field-hour":"Hour","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-zone":"Zone","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-year":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-week":"Week","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-second":"Second","field-day":"Day","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-gb/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-gb/number.js
new file mode 100644
index 00000000..a2232796
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-gb/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","group":",","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-us/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-us/currency.js
new file mode 100644
index 00000000..8b793f68
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-us/currency.js
@@ -0,0 +1 @@
+({"USD_symbol":"$","HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","CHF_symbol":"SwF","JPY_symbol":"¥","HKD_symbol":"HK$","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","CAD_symbol":"Can$","USD_displayName":"US Dollar","CNY_symbol":"Y","GBP_displayName":"British Pound Sterling","GBP_symbol":"£","AUD_symbol":"$A","EUR_displayName":"Euro","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-us/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-us/number.js
new file mode 100644
index 00000000..24c0ad04
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en-us/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00;(¤#,##0.00)","group":",","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/currency.js
new file mode 100644
index 00000000..36d441e5
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","CHF_symbol":"SwF","JPY_symbol":"¥","HKD_symbol":"HK$","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","USD_symbol":"$","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","CAD_symbol":"Can$","USD_displayName":"US Dollar","CNY_symbol":"Y","GBP_displayName":"British Pound Sterling","GBP_symbol":"£","AUD_symbol":"$A","EUR_displayName":"Euro","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/gregorian.js
new file mode 100644
index 00000000..e9943276
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"dateFormat-medium":"MMM d, yyyy","pm":"PM","timeFormat-full":"h:mm:ss a v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","MMMM d","M/d","mm:ss","MM/yy","Q yy","QQQQ yy","MMM yyyy","yy MMM","yy Q","yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Before Christ","Anno Domini"],"am":"AM","days-standAlone-narrow":["S","M","T","W","T","F","S"],"timeFormat-medium":"h:mm:ss a","dateFormat-long":"MMMM d, yyyy","field-dayperiod":"AM/PM","dateFormat-short":"M/d/yy","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"timeFormat-short":"h:mm a","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"eraAbbr":["BC","AD"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"timeFormat-long":"h:mm:ss a z","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormat-full":"EEEE, MMMM d, yyyy","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-minute":"Minute","field-weekday":"Day of the Week","dateTimeFormats-appendItem-Year":"{0} {1}","field-era":"Era","field-hour":"Hour","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-zone":"Zone","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-year":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-week":"Week","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-second":"Second","field-day":"Day","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/number.js
new file mode 100644
index 00000000..24c0ad04
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/en/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00;(¤#,##0.00)","group":",","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es-es/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es-es/gregorian.js
new file mode 100644
index 00000000..ed856e20
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es-es/gregorian.js
@@ -0,0 +1 @@
+({"timeFormat-medium":"H:mm:ss","timeFormat-full":"HH'H'mm''ss\" v","timeFormat-short":"H:mm","quarters-format-abbreviated":["T1","T2","T3","T4"],"dateFormat-medium":"dd/MM/yyyy","field-second":"segundo","field-week":"semana","pm":"p.m.","dateTimeAvailableFormats":"QQQQ 'de' yy","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["antes de Cristo","anno Dómini"],"am":"a.m.","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-year":"año","field-minute":"minuto","field-hour":"hora","dateFormat-long":"d 'de' MMMM 'de' yyyy","field-day":"día","field-dayperiod":"periodo del día","field-month":"mes","dateFormat-short":"dd/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ércoles","jueves","viernes","sábado"],"eraAbbr":["a.C.","d.C."],"quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"dateFormat-full":"EEEE d 'de' MMMM 'de' yyyy","field-weekday":"día de la semana","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-zone":"zona","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","timeFormat-long":"HH:mm:ss z","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es-es/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es-es/number.js
new file mode 100644
index 00000000..336afa85
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es-es/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"#,##0.00 ¤","group":".","decimal":",","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/currency.js
new file mode 100644
index 00000000..40b46616
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"dólar de Hong Kong","CHF_displayName":"franco suizo","CHF_symbol":"SwF","HKD_symbol":"HK$","CAD_displayName":"dólar canadiense","CNY_displayName":"yuan renminbi chino","AUD_displayName":"dólar australiano","JPY_displayName":"yen japonés","CAD_symbol":"Can$","USD_displayName":"dólar estadounidense","CNY_symbol":"Y","GBP_displayName":"libra esterlina británica","AUD_symbol":"$A","EUR_displayName":"euro","USD_symbol":"US$","GBP_symbol":"UK£","JPY_symbol":"JP¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/gregorian.js
new file mode 100644
index 00000000..d17374d6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["T1","T2","T3","T4"],"dateFormat-medium":"dd/MM/yyyy","field-second":"segundo","field-week":"semana","pm":"p.m.","timeFormat-full":"hh:mm:ss a v","dateTimeAvailableFormats":"QQQQ 'de' yy","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["antes de Cristo","anno Dómini"],"am":"a.m.","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-year":"año","field-minute":"minuto","field-hour":"hora","dateFormat-long":"d 'de' MMMM 'de' yyyy","field-day":"día","field-dayperiod":"periodo del día","field-month":"mes","dateFormat-short":"dd/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ércoles","jueves","viernes","sábado"],"eraAbbr":["a.C.","d.C."],"quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"dateFormat-full":"EEEE d 'de' MMMM 'de' yyyy","field-weekday":"día de la semana","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-zone":"zona","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","timeFormat-medium":"HH:mm:ss","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","timeFormat-long":"HH:mm:ss z","timeFormat-short":"HH:mm","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/number.js
new file mode 100644
index 00000000..fa366d83
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/es/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤ #,##0.00","group":".","decimal":",","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/currency.js
new file mode 100644
index 00000000..f85f1d5d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"dollar de Hong Kong","CHF_displayName":"franc suisse","CHF_symbol":"sFr.","JPY_symbol":"¥JP","HKD_symbol":"$HK","CAD_displayName":"dollar canadien","CNY_displayName":"Yuan Ren-min-bi","USD_symbol":"$US","AUD_displayName":"dollar australien","JPY_displayName":"yen","CAD_symbol":"$Ca","USD_displayName":"dollars américains","GBP_displayName":"livre sterling","GBP_symbol":"£UK","AUD_symbol":"$A","EUR_displayName":"euro","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/gregorian.js
new file mode 100644
index 00000000..e605b4db
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["T1","T2","T3","T4"],"dateFormat-medium":"d MMM yyyy","field-second":"seconde","field-week":"semaine","pm":"PM","timeFormat-full":"HH:mm:ss v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","E d MMM","d MMMM","dd/MM","d/M","mm:ss","MM/yy","MMM yy","Q yy","QQQQ yy","MMMM yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["avant Jésus-Christ","après Jésus-Christ"],"am":"AM","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-year":"année","field-minute":"minute","timeFormat-medium":"HH:mm:ss","quarters-stand-alone-narrow":["1","2","3","4"],"field-hour":"heure","dateFormat-long":"d MMMM yyyy","field-day":"jour","field-dayperiod":"cadran","field-month":"mois","dateFormat-short":"dd/MM/yy","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"field-era":"ère","timeFormat-short":"HH:mm","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"eraAbbr":["av. J.-C.","ap. J.-C."],"timeFormat-long":"HH:mm:ss z","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormat-full":"EEEE d MMMM yyyy","field-weekday":"jour de la semaine","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-zone":"fuseau horaire","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/number.js
new file mode 100644
index 00000000..e729e2e7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/fr/number.js
@@ -0,0 +1 @@
+({"decimalFormat":"#,##0.###","group":" ","scientificFormat":"#E0","percentFormat":"#,##0 %","currencyFormat":"#,##0.00 ¤","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/gregorian.js
new file mode 100644
index 00000000..9a0fd203
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/gregorian.js
@@ -0,0 +1 @@
+({"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-dayperiod":"Dayperiod","field-minute":"Minute","eraNames":["BCE","CE"],"field-weekday":"Day of the Week","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Year":"{0} {1}","field-era":"Era","field-hour":"Hour","timeFormat-full":"HH:mm:ss v","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","days-standAlone-narrow":["1","2","3","4","5","6","7"],"eraAbbr":["BCE","CE"],"dateFormat-long":"yyyy MMMM d","timeFormat-medium":"HH:mm:ss","field-zone":"Zone","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-medium":"yyyy MMM d","quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"dateTimeFormat":"{1} {0}","field-year":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-week":"Week","timeFormat-long":"HH:mm:ss z","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","days-format-abbr":["1","2","3","4","5","6","7"],"pm":"PM","field-second":"Second","field-day":"Day","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","am":"AM","quarters-stand-alone-narrow":["1","2","3","4"],"dateFormat-short":"yyyy-MM-dd","dateFormat-full":"EEEE, yyyy MMMM dd","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeAvailableFormats":["E d","H","HH:mm","HH:mm:ss","E MMM d","MMMM d","M-d","mm:ss","yy-MM","yy MMM","yy Q","yyyy"],"dateTimeFormats-appendItem-Era":"{0} {1}","quarters-format-wide":["Q1","Q2","Q3","Q4"],"days-format-wide":["1","2","3","4","5","6","7"],"eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it-it/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it-it/gregorian.js
new file mode 100644
index 00000000..cc717b93
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it-it/gregorian.js
@@ -0,0 +1 @@
+({"timeFormat-long":"H:mm:ss z","quarters-format-abbreviated":["T1","T2","T3","T4"],"dateFormat-medium":"dd/MMM/yyyy","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","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ì","martedì","mercoledì","giovedì","venerdì","sabato"],"eraAbbr":["aC","dC"],"quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"dateFormat-full":"EEEE d MMMM yyyy","field-weekday":"giorno della settimana","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-zone":"zona","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","eraNames":["BCE","CE"],"dateTimeFormats-appendItem-Year":"{0} {1}","timeFormat-full":"HH:mm:ss v","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","timeFormat-medium":"HH:mm:ss","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","timeFormat-short":"HH:mm","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeAvailableFormats":["E d","H","HH:mm","HH:mm:ss","E MMM d","MMMM d","M-d","mm:ss","yy-MM","yy MMM","yy Q","yyyy"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/currency.js
new file mode 100644
index 00000000..375ec675
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"Dollaro di Hong Kong","CHF_displayName":"Franco Svizzero","CHF_symbol":"SFr.","CAD_displayName":"Dollaro Canadese","CNY_displayName":"Renmimbi Cinese","AUD_displayName":"Dollaro Australiano","JPY_displayName":"Yen Giapponese","USD_displayName":"Dollaro Statunitense","GBP_displayName":"Sterlina Inglese","EUR_displayName":"Euro","USD_symbol":"US$","GBP_symbol":"UK£","JPY_symbol":"JP¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/gregorian.js
new file mode 100644
index 00000000..78ebae9c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["T1","T2","T3","T4"],"dateFormat-medium":"dd/MMM/yyyy","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","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ì","martedì","mercoledì","giovedì","venerdì","sabato"],"eraAbbr":["aC","dC"],"quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"dateFormat-full":"EEEE d MMMM yyyy","field-weekday":"giorno della settimana","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-zone":"zona","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","eraNames":["BCE","CE"],"dateTimeFormats-appendItem-Year":"{0} {1}","timeFormat-full":"HH:mm:ss v","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","timeFormat-medium":"HH:mm:ss","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","timeFormat-long":"HH:mm:ss z","timeFormat-short":"HH:mm","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeAvailableFormats":["E d","H","HH:mm","HH:mm:ss","E MMM d","MMMM d","M-d","mm:ss","yy-MM","yy MMM","yy Q","yyyy"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/number.js
new file mode 100644
index 00000000..fab013b7
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/it/number.js
@@ -0,0 +1 @@
+({"group":".","decimal":",","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja-jp/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja-jp/number.js
new file mode 100644
index 00000000..4b501746
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja-jp/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/currency.js
new file mode 100644
index 00000000..76cd3d99
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"香港ドル","CHF_displayName":"スイス フラン","JPY_symbol":"¥","CAD_displayName":"カナダ ドル","CNY_displayName":"中国人民元","AUD_displayName":"オーストラリア ドル","JPY_displayName":"日本円","USD_displayName":"米ドル","CNY_symbol":"元","GBP_displayName":"英国ポンド","EUR_displayName":"ユーロ","USD_symbol":"US$","GBP_symbol":"UK£","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/gregorian.js
new file mode 100644
index 00000000..523fa7bf
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"dateFormat-medium":"yyyy/MM/dd","field-second":"秒","field-week":"週","pm":"午後","timeFormat-full":"H時mm分ss秒v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["d 日(E)","GGGGy年M月d日","H 時","MMM/d(E)","MMMM d 日","MM/dd","M/d","mm:ss","yy 年 MMM","yy/Q","yy Q","yyyy"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["紀元前","西暦"],"am":"午前","days-standAlone-narrow":["日","月","火","水","木","金","土"],"field-year":"年","field-minute":"分","timeFormat-medium":"H:mm:ss","field-hour":"時","dateFormat-long":"yyyy年M月d日","field-day":"日","field-dayperiod":"午前/午後","field-month":"月","dateFormat-short":"yy/MM/dd","months-format-wide":["1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月"],"field-era":"時代","timeFormat-short":"H:mm","months-format-abbr":["1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月"],"eraAbbr":["紀元前","西暦"],"days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"timeFormat-long":"H:mm:ss:z","quarters-format-wide":["第 1 四半期","第 2 四半期","第 3 四半期","第 4 四半期"],"dateFormat-full":"yyyy年M月d日EEEE","field-weekday":"曜日","field-zone":"時間帯","days-format-abbr":["日","月","火","水","木","金","土"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/number.js
new file mode 100644
index 00000000..4b501746
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ja/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko-kr/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko-kr/gregorian.js
new file mode 100644
index 00000000..03a85107
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko-kr/gregorian.js
@@ -0,0 +1 @@
+({"timeFormat-medium":"a h:mm:ss","timeFormat-short":"a h:mm","quarters-format-abbreviated":["1분기","2분기","3분기","4분기"],"dateFormat-medium":"yyyy. M. d.","field-second":"초","field-week":"주","pm":"오후","timeFormat-full":"a hh시 mm분 ss초 v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["d일 (E)","HH:mm","HH:mm:ss","H시 m분 s초","MMM d일 (E)","MMMM d일","M. d.","mm:ss","yy년 MMM","yy년 Q분기","yyyy. MM","yyyy"],"months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"eraNames":["서력기원전","서력기원"],"am":"오전","days-standAlone-narrow":["일","월","화","수","목","금","토"],"field-year":"년","field-minute":"분","quarters-stand-alone-narrow":["1","2","3","4"],"field-hour":"시","dateFormat-long":"yyyy년 M월 d일","field-day":"일","field-dayperiod":"오전/오후","field-month":"월","dateFormat-short":"yy. M. d.","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-era":"연호","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"eraAbbr":["기원전","서기"],"days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"timeFormat-long":"a hh시 mm분 ss초 z","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormat-full":"yyyy년 M월 d일 EEEE","field-weekday":"요일","field-zone":"시간대","days-format-abbr":["일","월","화","수","목","금","토"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko-kr/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko-kr/number.js
new file mode 100644
index 00000000..4b501746
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko-kr/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/currency.js
new file mode 100644
index 00000000..8ae77f3c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"홍콩 달러","JPY_symbol":"¥","HKD_symbol":"HK$","CAD_displayName":"캐나다 달러","CNY_displayName":"중국 위안 인민폐","AUD_displayName":"호주 달러","JPY_displayName":"일본 엔화","CAD_symbol":"Can$","USD_displayName":"미국 달러","GBP_displayName":"영국령 파운드 스털링","EUR_displayName":"유로화","USD_symbol":"US$","GBP_symbol":"UK£","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/gregorian.js
new file mode 100644
index 00000000..a1353997
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["1분기","2분기","3분기","4분기"],"dateFormat-medium":"yyyy. M. d.","field-second":"초","field-week":"주","pm":"오후","timeFormat-full":"a hh시 mm분 ss초 v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["d일 (E)","HH:mm","HH:mm:ss","H시 m분 s초","MMM d일 (E)","MMMM d일","M. d.","mm:ss","yy년 MMM","yy년 Q분기","yyyy. MM","yyyy"],"months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"eraNames":["서력기원전","서력기원"],"am":"오전","days-standAlone-narrow":["일","월","화","수","목","금","토"],"field-year":"년","field-minute":"분","timeFormat-medium":"a h:mm:ss","quarters-stand-alone-narrow":["1","2","3","4"],"field-hour":"시","dateFormat-long":"yyyy년 M월 d일","field-day":"일","field-dayperiod":"오전/오후","field-month":"월","dateFormat-short":"yy. M. d.","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-era":"연호","timeFormat-short":"a h:mm","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"eraAbbr":["기원전","서기"],"days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"timeFormat-long":"a hh시 mm분 ss초 z","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormat-full":"yyyy년 M월 d일 EEEE","field-weekday":"요일","field-zone":"시간대","days-format-abbr":["일","월","화","수","목","금","토"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/number.js
new file mode 100644
index 00000000..4b501746
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/ko/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/number.js
new file mode 100644
index 00000000..bfec12fa
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/number.js
@@ -0,0 +1 @@
+({"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat":"#,##0.###","decimal":".","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt-br/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt-br/gregorian.js
new file mode 100644
index 00000000..aeb5946c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt-br/gregorian.js
@@ -0,0 +1 @@
+({"field-hour":"Hora","field-dayperiod":"Período do dia","field-minute":"Minuto","timeFormat-full":"HH'h'mm'min'ss's' z","field-week":"Semana","field-weekday":"Dia da semana","field-second":"Segundo","dateFormat-medium":"dd/MM/yyyy","field-day":"Dia","timeFormat-long":"H'h'm'min's's' z","field-month":"Mês","field-year":"Ano","dateFormat-short":"dd/MM/yy","field-zone":"Fuso","quarters-format-abbreviated":["T1","T2","T3","T4"],"pm":"PM","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","d MMMM","d/M","mm:ss","MM/yy","MMM yy","Q yy","MMM/yyyy","yy MMM","yy Q","yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Antes de Cristo","Ano do Senhor"],"am":"AM","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"timeFormat-medium":"HH:mm:ss","quarters-stand-alone-narrow":["1","2","3","4"],"dateFormat-long":"d 'de' MMMM 'de' yyyy","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"field-era":"Era","timeFormat-short":"HH:mm","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"eraAbbr":["a.C.","d.C."],"days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' yyyy","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/currency.js
new file mode 100644
index 00000000..5d84294a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","CAD_displayName":"Dólar canadense","CNY_displayName":"Yuan Renminbi chinês","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","USD_displayName":"Dólar norte-americano","GBP_displayName":"Libra esterlina britânica","EUR_displayName":"Euro","USD_symbol":"US$","GBP_symbol":"UK£","JPY_symbol":"JP¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/gregorian.js
new file mode 100644
index 00000000..109062fe
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["T1","T2","T3","T4"],"dateFormat-medium":"dd/MM/yyyy","field-second":"Segundo","field-week":"Semana","pm":"PM","timeFormat-full":"HH'h'mm'min'ss's' v","dateTimeFormat":"{1} {0}","dateTimeAvailableFormats":["HH:mm","HH:mm:ss","d MMMM","d/M","mm:ss","MM/yy","MMM yy","Q yy","MMM/yyyy","yy MMM","yy Q","yyyy"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Antes de Cristo","Ano do Senhor"],"am":"AM","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-year":"Ano","field-minute":"Minuto","timeFormat-medium":"HH:mm:ss","quarters-stand-alone-narrow":["1","2","3","4"],"field-hour":"Hora","dateFormat-long":"d 'de' MMMM 'de' yyyy","field-day":"Dia","field-dayperiod":"Período do dia","field-month":"Mês","dateFormat-short":"dd/MM/yy","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"field-era":"Era","timeFormat-short":"HH:mm","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"eraAbbr":["a.C.","d.C."],"days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' yyyy","field-weekday":"Dia da semana","field-zone":"Fuso","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","timeFormat-long":"HH:mm:ss z","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/number.js
new file mode 100644
index 00000000..f41a5a80
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/pt/number.js
@@ -0,0 +1 @@
+({"decimalFormat":"#,##0.###","group":".","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00;(¤#,##0.00)","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-cn/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-cn/gregorian.js
new file mode 100644
index 00000000..6c9e6c9f
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-cn/gregorian.js
@@ -0,0 +1 @@
+({"dateFormat-short":"yy-M-d","timeFormat-long":"ahh'时'mm'分'ss'秒'","dateFormat-medium":"yyyy-M-d","dateFormat-long":"yyyy'年'M'月'd'日'","timeFormat-medium":"ahh:mm:ss","timeFormat-short":"ah:mm","timeFormat-full":"ahh'时'mm'分'ss'秒' z","dateFormat-full":"yyyy'年'M'月'd'日'EEEE","field-second":"秒钟","field-week":"周","pm":"下午","dateTimeAvailableFormats":"M-d","months-standAlone-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"am":"上午","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-year":"年","months-standAlone-abbr":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-minute":"分钟","field-hour":"小时","field-day":"日","field-dayperiod":"上午/下午","field-month":"月","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"时期","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"eraAbbr":["公元前","公元"],"field-weekday":"周天","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-zone":"区域","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","eraNames":["BCE","CE"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","quarters-format-wide":["Q1","Q2","Q3","Q4"],"eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-cn/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-cn/number.js
new file mode 100644
index 00000000..a2232796
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-cn/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","group":",","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/currency.js
new file mode 100644
index 00000000..98b36404
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/currency.js
@@ -0,0 +1 @@
+({"EUR_displayName":"歐元","CAD_displayName":"加幣","GBP_displayName":"英鎊","JPY_displayName":"日圓","GBP_symbol":"GBP","AUD_displayName":"澳幣","EUR_symbol":"EUR","CNY_displayName":"人民幣","HKD_displayName":"港元","CHF_displayName":"瑞士法郎","HKD_symbol":"HK$","USD_displayName":"美元","CNY_symbol":"¥","USD_symbol":"US$","JPY_symbol":"JP¥"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/gregorian.js
new file mode 100644
index 00000000..90e37764
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/gregorian.js
@@ -0,0 +1 @@
+({"quarters-format-abbreviated":["1季","2季","3季","4季"],"dateFormat-medium":"yyyy/M/d","field-second":"秒","field-week":"週","timeFormat-full":"ahh時mm分ss秒 v","dateTimeAvailableFormats":"M/d","eraNames":["西元前","西元"],"field-minute":"分鐘","timeFormat-medium":"a h:mm:ss","field-hour":"小時","dateFormat-short":"yyyy/M/d","field-era":"年代","timeFormat-short":"a h:mm","timeFormat-long":"ahh時mm分ss秒 z","quarters-format-wide":["第1季","第2季","第3季","第4季"],"quarters-stand-alone-abbreviated":["1季","2季","3季","4季"],"field-weekday":"週天","field-zone":"區域","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"pm":"下午","months-standAlone-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"am":"上午","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-year":"年","months-standAlone-abbr":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-long":"yyyy年M月d日","field-day":"日","field-dayperiod":"上午/下午","field-month":"月","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"eraAbbr":["公元前","公元"],"dateFormat-full":"yyyy年M月d日EEEE","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/number.js
new file mode 100644
index 00000000..0ab604d6
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh-tw/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","group":",","list":";","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/currency.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/currency.js
new file mode 100644
index 00000000..50efc23d
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/currency.js
@@ -0,0 +1 @@
+({"HKD_displayName":"港元","CHF_displayName":"瑞士法郎","HKD_symbol":"HK$","CAD_displayName":"加拿大元","CNY_displayName":"人民币","AUD_displayName":"澳大利亚元","JPY_displayName":"日元","USD_displayName":"美元","CNY_symbol":"¥","GBP_displayName":"英镑","EUR_displayName":"欧元","USD_symbol":"US$","GBP_symbol":"UK£","JPY_symbol":"JP¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/gregorian.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/gregorian.js
new file mode 100644
index 00000000..c99ce7be
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/gregorian.js
@@ -0,0 +1 @@
+({"dateFormat-medium":"yyyy-M-d","field-second":"秒钟","field-week":"周","pm":"下午","timeFormat-full":"ahh时mm分ss秒 v","dateTimeAvailableFormats":"M-d","months-standAlone-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"am":"上午","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-year":"年","months-standAlone-abbr":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-minute":"分钟","timeFormat-medium":"ahh:mm:ss","field-hour":"小时","dateFormat-long":"yyyy年M月d日","field-day":"日","field-dayperiod":"上午/下午","field-month":"月","dateFormat-short":"yy-M-d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"时期","timeFormat-short":"ah:mm","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"timeFormat-long":"ahh时mm分ss秒 z","eraAbbr":["公元前","公元"],"dateFormat-full":"yyyy年M月d日EEEE","field-weekday":"周天","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-zone":"区域","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","eraNames":["BCE","CE"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","quarters-format-abbreviated":["Q1","Q2","Q3","Q4"],"dateTimeFormat":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","quarters-stand-alone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Era":"{0} {1}","quarters-format-wide":["Q1","Q2","Q3","Q4"],"eraNarrow":["BCE","CE"]})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/number.js b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/number.js
new file mode 100644
index 00000000..a2232796
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/nls/zh/number.js
@@ -0,0 +1 @@
+({"currencyFormat":"¤#,##0.00","group":",","decimal":".","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","percentFormat":"#,##0%","decimalFormat":"#,##0.###","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cldr/supplemental.js b/spring-js/src/main/resources/META-INF/dojo/cldr/supplemental.js
new file mode 100644
index 00000000..6560f495
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cldr/supplemental.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.cldr.supplemental"]){dojo._hasResource["dojo.cldr.supplemental"]=true;dojo.provide("dojo.cldr.supplemental");dojo.require("dojo.i18n");dojo.cldr.supplemental.getFirstDayOfWeek=function(_1){var _2={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,sy:4};var _3=dojo.cldr.supplemental._region(_1);var _4=_2[_3];return (_4===undefined)?1:_4;};dojo.cldr.supplemental._region=function(_5){_5=dojo.i18n.normalizeLocale(_5);var _6=_5.split("-");var _7=_6[1];if(!_7){_7={de:"de",en:"us",es:"es",fi:"fi",fr:"fr",hu:"hu",it:"it",ja:"jp",ko:"kr",nl:"nl",pt:"br",sv:"se",zh:"cn"}[_6[0]];}else{if(_7.length==4){_7=_6[2];}}return _7;};dojo.cldr.supplemental.getWeekend=function(_8){var _9={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 _a={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};var _b=dojo.cldr.supplemental._region(_8);var _c=_9[_b];var _d=_a[_b];if(_c===undefined){_c=6;}if(_d===undefined){_d=0;}return {start:_c,end:_d};};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/colors.js b/spring-js/src/main/resources/META-INF/dojo/colors.js
new file mode 100644
index 00000000..4fa51a92
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/colors.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.colors"]){dojo._hasResource["dojo.colors"]=true;dojo.provide("dojo.colors");(function(){var _1=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};dojo.colorFromRgb=function(_6,_7){var m=_6.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1];if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){var a=dojo.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return dojo.colorFromArray(a,_7);}return dojo.colorFromArray(c,_7);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2,a=[_1(m1,m2,H+1/3)*256,_1(m1,m2,H)*256,_1(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return dojo.colorFromArray(a,_7);}}return null;};var _14=function(c,low,_17){c=Number(c);return isNaN(c)?_17:c_17?_17:c;};dojo.Color.prototype.sanitize=function(){var t=this;t.r=Math.round(_14(t.r,0,255));t.g=Math.round(_14(t.g,0,255));t.b=Math.round(_14(t.b,0,255));t.a=_14(t.a,0,1);return this;};})();dojo.colors.makeGrey=function(g,a){return dojo.colorFromArray([g,g,g,a]);};dojo.Color.named=dojo.mixin({aliceblue:[240,248,255],antiquewhite:[250,235,215],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],blanchedalmond:[255,235,205],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],oldlace:[253,245,230],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],thistle:[216,191,216],tomato:[255,99,71],transparent:[0,0,0,0],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]},dojo.Color.named);}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/cookie.js b/spring-js/src/main/resources/META-INF/dojo/cookie.js
new file mode 100644
index 00000000..8030fd1e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/cookie.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.cookie"]){dojo._hasResource["dojo.cookie"]=true;dojo.provide("dojo.cookie");dojo.require("dojo.regexp");dojo.cookie=function(_1,_2,_3){var c=document.cookie;if(arguments.length==1){var _5=c.match(new RegExp("(?:^|; )"+dojo.regexp.escapeString(_1)+"=([^;]*)"));return _5?decodeURIComponent(_5[1]):undefined;}else{_3=_3||{};var _6=_3.expires;if(typeof _6=="number"){var d=new Date();d.setTime(d.getTime()+_6*24*60*60*1000);_6=_3.expires=d;}if(_6&&_6.toUTCString){_3.expires=_6.toUTCString();}_2=encodeURIComponent(_2);var _8=_1+"="+_2;for(propName in _3){_8+="; "+propName;var _9=_3[propName];if(_9!==true){_8+="="+_9;}}document.cookie=_8;}};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/currency.js b/spring-js/src/main/resources/META-INF/dojo/currency.js
new file mode 100644
index 00000000..28bcf03e
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/currency.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.currency"]){dojo._hasResource["dojo.currency"]=true;dojo.provide("dojo.currency");dojo.require("dojo.number");dojo.require("dojo.i18n");dojo.requireLocalization("dojo.cldr","currency",null,"ROOT,de,en,en-au,en-ca,en-us,es,fr,it,ja,ko,pt,zh,zh-tw");dojo.require("dojo.cldr.monetary");dojo.currency._mixInDefaults=function(_1){_1=_1||{};_1.type="currency";var _2=dojo.i18n.getLocalization("dojo.cldr","currency",_1.locale)||{};var _3=_1.currency;var _4=dojo.cldr.monetary.getData(_3);dojo.forEach(["displayName","symbol","group","decimal"],function(_5){_4[_5]=_2[_3+"_"+_5];});_4.fractional=[true,false];return dojo.mixin(_4,_1);};dojo.currency.format=function(_6,_7){return dojo.number.format(_6,dojo.currency._mixInDefaults(_7));};dojo.currency.regexp=function(_8){return dojo.number.regexp(dojo.currency._mixInDefaults(_8));};dojo.currency.parse=function(_9,_a){return dojo.number.parse(_9,dojo.currency._mixInDefaults(_a));};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/data/ItemFileReadStore.js b/spring-js/src/main/resources/META-INF/dojo/data/ItemFileReadStore.js
new file mode 100644
index 00000000..fe0ac40a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/data/ItemFileReadStore.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.data.ItemFileReadStore"]){dojo._hasResource["dojo.data.ItemFileReadStore"]=true;dojo.provide("dojo.data.ItemFileReadStore");dojo.require("dojo.data.util.filter");dojo.require("dojo.data.util.simpleFetch");dojo.require("dojo.date.stamp");dojo.declare("dojo.data.ItemFileReadStore",null,{constructor:function(_1){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_1.url;this._jsonData=_1.data;this._datatypeMap=_1.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_2){return dojo.date.stamp.fromISOString(_2);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];},url:"",_assertIsItem:function(_3){if(!this.isItem(_3)){throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");}},_assertIsAttribute:function(_4){if(typeof _4!=="string"){throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");}},getValue:function(_5,_6,_7){var _8=this.getValues(_5,_6);return (_8.length>0)?_8[0]:_7;},getValues:function(_9,_a){this._assertIsItem(_9);this._assertIsAttribute(_a);return _9[_a]||[];},getAttributes:function(_b){this._assertIsItem(_b);var _c=[];for(var _d in _b){if((_d!==this._storeRefPropName)&&(_d!==this._itemNumPropName)&&(_d!==this._rootItemPropName)&&(_d!==this._reverseRefMap)){_c.push(_d);}}return _c;},hasAttribute:function(_e,_f){return this.getValues(_e,_f).length>0;},containsValue:function(_10,_11,_12){var _13=undefined;if(typeof _12==="string"){_13=dojo.data.util.filter.patternToRegExp(_12,false);}return this._containsValue(_10,_11,_12,_13);},_containsValue:function(_14,_15,_16,_17){return dojo.some(this.getValues(_14,_15),function(_18){if(_18!==null&&!dojo.isObject(_18)&&_17){if(_18.toString().match(_17)){return true;}}else{if(_16===_18){return true;}}});},isItem:function(_19){if(_19&&_19[this._storeRefPropName]===this){if(this._arrayOfAllItems[_19[this._itemNumPropName]]===_19){return true;}}return false;},isItemLoaded:function(_1a){return this.isItem(_1a);},loadItem:function(_1b){this._assertIsItem(_1b.item);},getFeatures:function(){return this._features;},getLabel:function(_1c){if(this._labelAttr&&this.isItem(_1c)){return this.getValue(_1c,this._labelAttr);}return undefined;},getLabelAttributes:function(_1d){if(this._labelAttr){return [this._labelAttr];}return null;},_fetchItems:function(_1e,_1f,_20){var _21=this;var _22=function(_23,_24){var _25=[];if(_23.query){var _26=_23.queryOptions?_23.queryOptions.ignoreCase:false;var _27={};for(var key in _23.query){var _29=_23.query[key];if(typeof _29==="string"){_27[key]=dojo.data.util.filter.patternToRegExp(_29,_26);}}for(var i=0;i<_24.length;++i){var _2b=true;var _2c=_24[i];if(_2c===null){_2b=false;}else{for(var key in _23.query){var _29=_23.query[key];if(!_21._containsValue(_2c,key,_29,_27[key])){_2b=false;}}}if(_2b){_25.push(_2c);}}_1f(_25,_23);}else{for(var i=0;i<_24.length;++i){var _2d=_24[i];if(_2d!==null){_25.push(_2d);}}_1f(_25,_23);}};if(this._loadFinished){_22(_1e,this._getItemsArray(_1e.queryOptions));}else{if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_1e,filter:_22});}else{this._loadInProgress=true;var _2e={url:_21._jsonFileUrl,handleAs:"json-comment-optional"};var _2f=dojo.xhrGet(_2e);_2f.addCallback(function(_30){try{_21._getItemsFromLoadedData(_30);_21._loadFinished=true;_21._loadInProgress=false;_22(_1e,_21._getItemsArray(_1e.queryOptions));_21._handleQueuedFetches();}catch(e){_21._loadFinished=true;_21._loadInProgress=false;_20(e,_1e);}});_2f.addErrback(function(_31){_21._loadInProgress=false;_20(_31,_1e);});}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_22(_1e,this._getItemsArray(_1e.queryOptions));}catch(e){_20(e,_1e);}}else{_20(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_1e);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i0){var _c=_b.slice(0,_b.length);if(_b.length===1){_a.oldValue=_b[0];}else{_a.oldValue=_b.slice(0,_b.length);}_c.push(_9);this._setValueOrValues(_6.parent,_6.attribute,_c,false);_a.newValue=this.getValues(_6.parent,_6.attribute);}else{this._setValueOrValues(_6.parent,_6.attribute,_9,false);_a.newValue=_9;}}else{_9[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_9);}this._pending._newItems[_7]=_9;for(var _d in _5){if(_d===this._storeRefPropName||_d===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _e=_5[_d];if(!dojo.isArray(_e)){_e=[_e];}_9[_d]=_e;if(this.referenceIntegrity){for(var i=0;i<_e.length;i++){var val=_e[i];if(this.isItem(val)){this._addReferenceToMap(val,_9,_d);}}}}this.onNew(_9,_a);return _9;},_removeArrayElement:function(_11,_12){var _13=dojo.indexOf(_11,_12);if(_13!=-1){_11.splice(_13,1);return true;}return false;},deleteItem:function(_14){this._assert(!this._saveInProgress);this._assertIsItem(_14);var _15=_14[this._itemNumPropName];var _16=this.getIdentity(_14);if(this.referenceIntegrity){var _17=this.getAttributes(_14);if(_14[this._reverseRefMap]){_14["backup_"+this._reverseRefMap]=dojo.clone(_14[this._reverseRefMap]);}dojo.forEach(_17,function(_18){dojo.forEach(this.getValues(_14,_18),function(_19){if(this.isItem(_19)){if(!_14["backupRefs_"+this._reverseRefMap]){_14["backupRefs_"+this._reverseRefMap]=[];}_14["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_19),attr:_18});this._removeReferenceFromMap(_19,_14,_18);}},this);},this);var _1a=_14[this._reverseRefMap];if(_1a){for(var _1b in _1a){var _1c=null;if(this._itemsByIdentity){_1c=this._itemsByIdentity[_1b];}else{_1c=this._arrayOfAllItems[_1b];}if(_1c){for(var _1d in _1a[_1b]){var _1e=this.getValues(_1c,_1d)||[];var _1f=dojo.filter(_1e,function(_20){return !(this.isItem(_20)&&this.getIdentity(_20)==_16);},this);this._removeReferenceFromMap(_14,_1c,_1d);if(_1f.length<_1e.length){this.setValues(_1c,_1d,_1f);}}}}}}this._arrayOfAllItems[_15]=null;_14[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_16];}this._pending._deletedItems[_16]=_14;if(_14[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_14);}this.onDelete(_14);return true;},setValue:function(_21,_22,_23){return this._setValueOrValues(_21,_22,_23,true);},setValues:function(_24,_25,_26){return this._setValueOrValues(_24,_25,_26,true);},unsetAttribute:function(_27,_28){return this._setValueOrValues(_27,_28,[],true);},_setValueOrValues:function(_29,_2a,_2b,_2c){this._assert(!this._saveInProgress);this._assertIsItem(_29);this._assert(dojo.isString(_2a));this._assert(typeof _2b!=="undefined");var _2d=this._getIdentifierAttribute();if(_2a==_2d){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _2e=this._getValueOrValues(_29,_2a);var _2f=this.getIdentity(_29);if(!this._pending._modifiedItems[_2f]){var _30={};for(var key in _29){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_30[key]=_29[key];}else{if(key===this._reverseRefMap){_30[key]=dojo.clone(_29[key]);}else{_30[key]=_29[key].slice(0,_29[key].length);}}}this._pending._modifiedItems[_2f]=_30;}var _32=false;if(dojo.isArray(_2b)&&_2b.length===0){_32=delete _29[_2a];_2b=undefined;if(this.referenceIntegrity&&_2e){var _33=_2e;if(!dojo.isArray(_33)){_33=[_33];}for(var i=0;i<_33.length;i++){var _35=_33[i];if(this.isItem(_35)){this._removeReferenceFromMap(_35,_29,_2a);}}}}else{var _36;if(dojo.isArray(_2b)){var _37=_2b;_36=_2b.slice(0,_2b.length);}else{_36=[_2b];}if(this.referenceIntegrity){if(_2e){var _33=_2e;if(!dojo.isArray(_33)){_33=[_33];}var map={};dojo.forEach(_33,function(_39){if(this.isItem(_39)){var id=this.getIdentity(_39);map[id.toString()]=true;}},this);dojo.forEach(_36,function(_3b){if(this.isItem(_3b)){var id=this.getIdentity(_3b);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_3b,_29,_2a);}}},this);for(var rId in map){var _3e;if(this._itemsByIdentity){_3e=this._itemsByIdentity[rId];}else{_3e=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_3e,_29,_2a);}}else{for(var i=0;i<_36.length;i++){var _35=_36[i];if(this.isItem(_35)){this._addReferenceToMap(_35,_29,_2a);}}}}_29[_2a]=_36;_32=true;}if(_2c){this.onSet(_29,_2a,_2e,_2b);}return _32;},_addReferenceToMap:function(_3f,_40,_41){var _42=this.getIdentity(_40);var _43=_3f[this._reverseRefMap];if(!_43){_43=_3f[this._reverseRefMap]={};}var _44=_43[_42];if(!_44){_44=_43[_42]={};}_44[_41]=true;},_removeReferenceFromMap:function(_45,_46,_47){var _48=this.getIdentity(_46);var _49=_45[this._reverseRefMap];var _4a;if(_49){for(_4a in _49){if(_4a==_48){delete _49[_4a][_47];if(this._isEmpty(_49[_4a])){delete _49[_4a];}}}if(this._isEmpty(_49)){delete _45[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i0){_63=false;}}}return _63;},save:function(_65){this._assert(!this._saveInProgress);this._saveInProgress=true;var _66=this;var _67=function(){_66._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};_66._saveInProgress=false;if(_65&&_65.onComplete){var _68=_65.scope||dojo.global;_65.onComplete.call(_68);}};var _69=function(){_66._saveInProgress=false;if(_65&&_65.onError){var _6a=_65.scope||dojo.global;_65.onError.call(_6a);}};if(this._saveEverything){var _6b=this._getNewFileContentString();this._saveEverything(_67,_69,_6b);}if(this._saveCustom){this._saveCustom(_67,_69);}if(!this._saveEverything&&!this._saveCustom){_67();}},revert:function(){this._assert(!this._saveInProgress);var _6c;for(_6c in this._pending._newItems){var _6d=this._pending._newItems[_6c];_6d[this._storeRefPropName]=null;this._arrayOfAllItems[_6d[this._itemNumPropName]]=null;if(_6d[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_6d);}if(this._itemsByIdentity){delete this._itemsByIdentity[_6c];}}for(_6c in this._pending._modifiedItems){var _6e=this._pending._modifiedItems[_6c];var _6f=null;if(this._itemsByIdentity){_6f=this._itemsByIdentity[_6c];}else{_6f=this._arrayOfAllItems[_6c];}_6e[this._storeRefPropName]=this;_6f[this._storeRefPropName]=null;var _70=_6f[this._itemNumPropName];this._arrayOfAllItems[_70]=_6e;if(_6f[this._rootItemPropName]){var i;for(i=0;ib||typeof a==="undefined"||a===null){_3=1;}else{if(a-1){tz=_7.substring(++_a,_7.indexOf(")"));}else{var _b=/([A-Z\/]+) \d{4}$/;if((_9=_7.match(_b))){tz=_9[1];}else{_7=_6.toLocaleString();_b=/ ([A-Z\/]+)$/;if((_9=_7.match(_b))){tz=_9[1];}}}return (tz=="AM"||tz=="PM")?"":tz;};dojo.date.compare=function(_c,_d,_e){_c=new Date(Number(_c));_d=new Date(Number(_d||new Date()));if(_e!=="undefined"){if(_e=="date"){_c.setHours(0,0,0,0);_d.setHours(0,0,0,0);}else{if(_e=="time"){_c.setFullYear(0,0,0);_d.setFullYear(0,0,0);}}}if(_c>_d){return 1;}if(_c<_d){return -1;}return 0;};dojo.date.add=function(_f,_10,_11){var sum=new Date(Number(_f));var _13=false;var _14="Date";switch(_10){case "day":break;case "weekday":var _15,_16;var mod=_11%5;if(!mod){_15=(_11>0)?5:-5;_16=(_11>0)?((_11-5)/5):((_11+5)/5);}else{_15=mod;_16=parseInt(_11/5);}var _18=_f.getDay();var adj=0;if(_18==6&&_11>0){adj=1;}else{if(_18==0&&_11<0){adj=-1;}}var _1a=_18+_15;if(_1a==0||_1a==6){adj=(_11>0)?2:-2;}_11=(7*_16)+_15+adj;break;case "year":_14="FullYear";_13=true;break;case "week":_11*=7;break;case "quarter":_11*=3;case "month":_13=true;_14="Month";break;case "hour":case "minute":case "second":case "millisecond":_14="UTC"+_10.charAt(0).toUpperCase()+_10.substring(1)+"s";}if(_14){sum["set"+_14](sum["get"+_14]()+_11);}if(_13&&(sum.getDate()<_f.getDate())){sum.setDate(0);}return sum;};dojo.date.difference=function(_1b,_1c,_1d){_1c=_1c||new Date();_1d=_1d||"day";var _1e=_1c.getFullYear()-_1b.getFullYear();var _1f=1;switch(_1d){case "quarter":var m1=_1b.getMonth();var m2=_1c.getMonth();var q1=Math.floor(m1/3)+1;var q2=Math.floor(m2/3)+1;q2+=(_1e*4);_1f=q2-q1;break;case "weekday":var _24=Math.round(dojo.date.difference(_1b,_1c,"day"));var _25=parseInt(dojo.date.difference(_1b,_1c,"week"));var mod=_24%7;if(mod==0){_24=_25*5;}else{var adj=0;var _28=_1b.getDay();var _29=_1c.getDay();_25=parseInt(_24/7);mod=_24%7;var _2a=new Date(_1b);_2a.setDate(_2a.getDate()+(_25*7));var _2b=_2a.getDay();if(_24>0){switch(true){case _28==6:adj=-1;break;case _28==0:adj=0;break;case _29==6:adj=-1;break;case _29==0:adj=-2;break;case (_2b+mod)>5:adj=-2;}}else{if(_24<0){switch(true){case _28==6:adj=0;break;case _28==0:adj=1;break;case _29==6:adj=2;break;case _29==0:adj=1;break;case (_2b+mod)<0:adj=2;}}}_24+=adj;_24-=(_25*2);}_1f=_24;break;case "year":_1f=_1e;break;case "month":_1f=(_1c.getMonth()-_1b.getMonth())+(_1e*12);break;case "week":_1f=parseInt(dojo.date.difference(_1b,_1c,"day")/7);break;case "day":_1f/=24;case "hour":_1f/=60;case "minute":_1f/=60;case "second":_1f/=1000;case "millisecond":_1f*=_1c.getTime()-_1b.getTime();}return Math.round(_1f);};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/date/locale.js b/spring-js/src/main/resources/META-INF/dojo/date/locale.js
new file mode 100644
index 00000000..4580da39
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/date/locale.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.date.locale"]){dojo._hasResource["dojo.date.locale"]=true;dojo.provide("dojo.date.locale");dojo.require("dojo.date");dojo.require("dojo.cldr.supplemental");dojo.require("dojo.regexp");dojo.require("dojo.string");dojo.require("dojo.i18n");dojo.requireLocalization("dojo.cldr","gregorian",null,"de,en,en-au,en-ca,en-gb,es,es-es,fr,ROOT,it,it-it,ja,ko,ko-kr,pt,pt-br,zh,zh-cn,zh-tw");(function(){function formatPattern(_1,_2,_3,_4){return _4.replace(/([a-z])\1*/ig,function(_5){var s,_7;var c=_5.charAt(0);var l=_5.length;var _a=["abbr","wide","narrow"];switch(c){case "G":s=_2[(l<4)?"eraAbbr":"eraNames"][_1.getFullYear()<0?0:1];break;case "y":s=_1.getFullYear();switch(l){case 1:break;case 2:if(!_3){s=String(s);s=s.substr(s.length-2);break;}default:_7=true;}break;case "Q":case "q":s=Math.ceil((_1.getMonth()+1)/3);_7=true;break;case "M":case "L":var m=_1.getMonth();var _c;switch(l){case 1:case 2:s=m+1;_7=true;break;case 3:case 4:case 5:_c=_a[l-3];break;}if(_c){var _d=(c=="L")?"standalone":"format";var _e=["months",_d,_c].join("-");s=_2[_e][m];}break;case "w":var _f=0;s=dojo.date.locale._getWeekOfYear(_1,_f);_7=true;break;case "d":s=_1.getDate();_7=true;break;case "D":s=dojo.date.locale._getDayOfYear(_1);_7=true;break;case "E":case "e":case "c":var d=_1.getDay();var _11;switch(l){case 1:case 2:if(c=="e"){var _12=dojo.cldr.supplemental.getFirstDayOfWeek(options.locale);d=(d-_12+7)%7;}if(c!="c"){s=d+1;_7=true;break;}case 3:case 4:case 5:_11=_a[l-3];break;}if(_11){var _13=(c=="c")?"standalone":"format";var _14=["days",_13,_11].join("-");s=_2[_14][d];}break;case "a":var _15=(_1.getHours()<12)?"am":"pm";s=_2[_15];break;case "h":case "H":case "K":case "k":var h=_1.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;}_7=true;break;case "m":s=_1.getMinutes();_7=true;break;case "s":s=_1.getSeconds();_7=true;break;case "S":s=Math.round(_1.getMilliseconds()*Math.pow(10,l-3));_7=true;break;case "v":case "z":s=dojo.date.getTimezoneName(_1);if(s){break;}l=4;case "Z":var _17=_1.getTimezoneOffset();var tz=[(_17<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_17)/60),2),dojo.string.pad(Math.abs(_17)%60,2)];if(l==4){tz.splice(0,0,"GMT");tz.splice(3,0,":");}s=tz.join("");break;default:throw new Error("dojo.date.locale.format: invalid pattern char: "+_4);}if(_7){s=dojo.string.pad(s,l);}return s;});};dojo.date.locale.format=function(_19,_1a){_1a=_1a||{};var _1b=dojo.i18n.normalizeLocale(_1a.locale);var _1c=_1a.formatLength||"short";var _1d=dojo.date.locale._getGregorianBundle(_1b);var str=[];var _1f=dojo.hitch(this,formatPattern,_19,_1d,_1a.fullYear);if(_1a.selector=="year"){var _20=_19.getFullYear();if(_1b.match(/^zh|^ja/)){_20+="年";}return _20;}if(_1a.selector!="time"){var _21=_1a.datePattern||_1d["dateFormat-"+_1c];if(_21){str.push(_processPattern(_21,_1f));}}if(_1a.selector!="date"){var _22=_1a.timePattern||_1d["timeFormat-"+_1c];if(_22){str.push(_processPattern(_22,_1f));}}var _23=str.join(" ");return _23;};dojo.date.locale.regexp=function(_24){return dojo.date.locale._parseInfo(_24).regexp;};dojo.date.locale._parseInfo=function(_25){_25=_25||{};var _26=dojo.i18n.normalizeLocale(_25.locale);var _27=dojo.date.locale._getGregorianBundle(_26);var _28=_25.formatLength||"short";var _29=_25.datePattern||_27["dateFormat-"+_28];var _2a=_25.timePattern||_27["timeFormat-"+_28];var _2b;if(_25.selector=="date"){_2b=_29;}else{if(_25.selector=="time"){_2b=_2a;}else{_2b=_29+" "+_2a;}}var _2c=[];var re=_processPattern(_2b,dojo.hitch(this,_buildDateTimeRE,_2c,_27,_25));return {regexp:re,tokens:_2c,bundle:_27};};dojo.date.locale.parse=function(_2e,_2f){var _30=dojo.date.locale._parseInfo(_2f);var _31=_30.tokens,_32=_30.bundle;var re=new RegExp("^"+_30.regexp+"$");var _34=re.exec(_2e);if(!_34){return null;}var _35=["abbr","wide","narrow"];var _36=[1970,0,1,0,0,0,0];var _37="";var _38=dojo.every(_34,function(v,i){if(!i){return true;}var _3b=_31[i-1];var l=_3b.length;switch(_3b.charAt(0)){case "y":if(l!=2&&_2f.strict){_36[0]=v;}else{if(v<100){v=Number(v);var _3d=""+new Date().getFullYear();var _3e=_3d.substring(0,2)*100;var _3f=Math.min(Number(_3d.substring(2,4))+20,99);var num=(v<_3f)?_3e+v:_3e-100+v;_36[0]=num;}else{if(_2f.strict){return false;}_36[0]=v;}}break;case "M":if(l>2){var _41=_32["months-format-"+_35[l-3]].concat();if(!_2f.strict){v=v.replace(".","").toLowerCase();_41=dojo.map(_41,function(s){return s.replace(".","").toLowerCase();});}v=dojo.indexOf(_41,v);if(v==-1){return false;}}else{v--;}_36[1]=v;break;case "E":case "e":var _43=_32["days-format-"+_35[l-3]].concat();if(!_2f.strict){v=v.toLowerCase();_43=dojo.map(_43,function(d){return d.toLowerCase();});}v=dojo.indexOf(_43,v);if(v==-1){return false;}break;case "D":_36[1]=0;case "d":_36[2]=v;break;case "a":var am=_2f.am||_32.am;var pm=_2f.pm||_32.pm;if(!_2f.strict){var _47=/\./g;v=v.replace(_47,"").toLowerCase();am=am.replace(_47,"").toLowerCase();pm=pm.replace(_47,"").toLowerCase();}if(_2f.strict&&v!=am&&v!=pm){return false;}_37=(v==pm)?"p":(v==am)?"a":"";break;case "K":if(v==24){v=0;}case "h":case "H":case "k":if(v>23){return false;}_36[3]=v;break;case "m":_36[4]=v;break;case "s":_36[5]=v;break;case "S":_36[6]=v;}return true;});var _48=+_36[3];if(_37==="p"&&_48<12){_36[3]=_48+12;}else{if(_37==="a"&&_48==12){_36[3]=0;}}var _49=new Date(_36[0],_36[1],_36[2],_36[3],_36[4],_36[5],_36[6]);if(_2f.strict){_49.setFullYear(_36[0]);}var _4a=_31.join("");if(!_38||(_4a.indexOf("M")!=-1&&_49.getMonth()!=_36[1])||(_4a.indexOf("d")!=-1&&_49.getDate()!=_36[2])){return null;}return _49;};function _processPattern(_4b,_4c,_4d,_4e){var _4f=function(x){return x;};_4c=_4c||_4f;_4d=_4d||_4f;_4e=_4e||_4f;var _51=_4b.match(/(''|[^'])+/g);var _52=false;dojo.forEach(_51,function(_53,i){if(!_53){_51[i]="";}else{_51[i]=(_52?_4d:_4c)(_53);_52=!_52;}});return _4e(_51.join(""));};function _buildDateTimeRE(_55,_56,_57,_58){_58=dojo.regexp.escapeString(_58);if(!_57.strict){_58=_58.replace(" a"," ?a");}return _58.replace(/([a-z])\1*/ig,function(_59){var s;var c=_59.charAt(0);var l=_59.length;var p2="",p3="";if(_57.strict){if(l>1){p2="0"+"{"+(l-1)+"}";}if(l>2){p3="0"+"{"+(l-2)+"}";}}else{p2="0?";p3="0{0,2}";}switch(c){case "y":s="\\d{2,4}";break;case "M":s=(l>2)?"\\S+":p2+"[1-9]|1[0-2]";break;case "D":s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";break;case "d":s=p2+"[1-9]|[12]\\d|3[01]";break;case "w":s=p2+"[1-9]|[1-4][0-9]|5[0-3]";break;case "E":s="\\S+";break;case "h":s=p2+"[1-9]|1[0-2]";break;case "k":s=p2+"\\d|1[01]";break;case "H":s=p2+"\\d|1\\d|2[0-3]";break;case "K":s=p2+"[1-9]|1\\d|2[0-4]";break;case "m":case "s":s="[0-5]\\d";break;case "S":s="\\d{"+l+"}";break;case "a":var am=_57.am||_56.am||"AM";var pm=_57.pm||_56.pm||"PM";if(_57.strict){s=am+"|"+pm;}else{s=am+"|"+pm;if(am!=am.toLowerCase()){s+="|"+am.toLowerCase();}if(pm!=pm.toLowerCase()){s+="|"+pm.toLowerCase();}}break;default:s=".*";}if(_55){_55.push(_59);}return "("+s+")";}).replace(/[\xa0 ]/g,"[\\s\\xa0]");};})();(function(){var _61=[];dojo.date.locale.addCustomFormats=function(_62,_63){_61.push({pkg:_62,name:_63});};dojo.date.locale._getGregorianBundle=function(_64){var _65={};dojo.forEach(_61,function(_66){var _67=dojo.i18n.getLocalization(_66.pkg,_66.name,_64);_65=dojo.mixin(_65,_67);},this);return _65;};})();dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");dojo.date.locale.getNames=function(_68,_69,use,_6b){var _6c;var _6d=dojo.date.locale._getGregorianBundle(_6b);var _6e=[_68,use,_69];if(use=="standAlone"){_6c=_6d[_6e.join("-")];}_6e[1]="format";return (_6c||_6d[_6e.join("-")]).concat();};dojo.date.locale.isWeekend=function(_6f,_70){var _71=dojo.cldr.supplemental.getWeekend(_70);var day=(_6f||new Date()).getDay();if(_71.end<_71.start){_71.end+=7;if(day<_71.start){day+=7;}}return day>=_71.start&&day<=_71.end;};dojo.date.locale._getDayOfYear=function(_73){return dojo.date.difference(new Date(_73.getFullYear(),0,1),_73)+1;};dojo.date.locale._getWeekOfYear=function(_74,_75){if(arguments.length==1){_75=0;}var _76=new Date(_74.getFullYear(),0,1).getDay();var adj=(_76-_75+7)%7;var _78=Math.floor((dojo.date.locale._getDayOfYear(_74)+adj-1)/7);if(_76==_75){_78++;}return _78;};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/date/stamp.js b/spring-js/src/main/resources/META-INF/dojo/date/stamp.js
new file mode 100644
index 00000000..0aa727f9
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/date/stamp.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.date.stamp"]){dojo._hasResource["dojo.date.stamp"]=true;dojo.provide("dojo.date.stamp");dojo.date.stamp.fromISOString=function(_1,_2){if(!dojo.date.stamp._isoRegExp){dojo.date.stamp._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _3=dojo.date.stamp._isoRegExp.exec(_1);var _4=null;if(_3){_3.shift();if(_3[1]){_3[1]--;}if(_3[6]){_3[6]*=1000;}if(_2){_2=new Date(_2);dojo.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_5){return _2["get"+_5]();}).forEach(function(_6,_7){if(_3[_7]===undefined){_3[_7]=_6;}});}_4=new Date(_3[0]||1970,_3[1]||0,_3[2]||1,_3[3]||0,_3[4]||0,_3[5]||0,_3[6]||0);var _8=0;var _9=_3[7]&&_3[7].charAt(0);if(_9!="Z"){_8=((_3[8]||0)*60)+(Number(_3[9])||0);if(_9!="-"){_8*=-1;}}if(_9){_8-=_4.getTimezoneOffset();}if(_8){_4.setTime(_4.getTime()+_8*60000);}}return _4;};dojo.date.stamp.toISOString=function(_a,_b){var _=function(n){return (n<10)?"0"+n:n;};_b=_b||{};var _e=[];var _f=_b.zulu?"getUTC":"get";var _10="";if(_b.selector!="time"){var _11=_a[_f+"FullYear"]();_10=["0000".substr((_11+"").length)+_11,_(_a[_f+"Month"]()+1),_(_a[_f+"Date"]())].join("-");}_e.push(_10);if(_b.selector!="date"){var _12=[_(_a[_f+"Hours"]()),_(_a[_f+"Minutes"]()),_(_a[_f+"Seconds"]())].join(":");var _13=_a[_f+"Milliseconds"]();if(_b.milliseconds){_12+="."+(_13<100?"0":"")+_(_13);}if(_b.zulu){_12+="Z";}else{if(_b.selector!="time"){var _14=_a.getTimezoneOffset();var _15=Math.abs(_14);_12+=(_14>0?"-":"+")+_(Math.floor(_15/60))+":"+_(_15%60);}}_e.push(_12);}return _e.join("T");};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/Avatar.js b/spring-js/src/main/resources/META-INF/dojo/dnd/Avatar.js
new file mode 100644
index 00000000..4b5beb6b
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/Avatar.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.Avatar"]){dojo._hasResource["dojo.dnd.Avatar"]=true;dojo.provide("dojo.dnd.Avatar");dojo.require("dojo.dnd.common");dojo.declare("dojo.dnd.Avatar",null,{constructor:function(_1){this.manager=_1;this.construct();},construct:function(){var a=dojo.doc.createElement("table");a.className="dojoDndAvatar";a.style.position="absolute";a.style.zIndex=1999;a.style.margin="0px";var b=dojo.doc.createElement("tbody");var tr=dojo.doc.createElement("tr");tr.className="dojoDndAvatarHeader";var td=dojo.doc.createElement("td");td.innerHTML=this._generateText();tr.appendChild(td);dojo.style(tr,"opacity",0.9);b.appendChild(tr);var k=Math.min(5,this.manager.nodes.length);var _7=this.manager.source;for(var i=0;i .dojoDndItem",this.parent);},insertNodes:function(_c,_d,_e){if(!this.parent.firstChild){_e=null;}else{if(_d){if(!_e){_e=this.parent.firstChild;}}else{if(_e){_e=_e.nextSibling;}}}if(_e){for(var i=0;i<_c.length;++i){var t=this._normalizedCreator(_c[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.insertBefore(t.node,_e);}}else{for(var i=0;i<_c.length;++i){var t=this._normalizedCreator(_c[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.appendChild(t.node);}}return this;},destroy:function(){dojo.forEach(this.events,dojo.disconnect);this.clearItems();this.node=this.parent=this.current;},markupFactory:function(_11,_12){_11._skipStartup=true;return new dojo.dnd.Container(_12,_11);},startup:function(){this.parent=this.node;if(this.parent.tagName.toLowerCase()=="table"){var c=this.parent.getElementsByTagName("tbody");if(c&&c.length){this.parent=c[0];}}this.getAllNodes().forEach(function(_14){if(!_14.id){_14.id=dojo.dnd.getUniqueId();}var _15=_14.getAttribute("dndType"),_16=_14.getAttribute("dndData");this.setItem(_14.id,{data:_16?_16:_14.innerHTML,type:_15?_15.split(/\s*,\s*/):["text"]});},this);},onMouseOver:function(e){var n=e.relatedTarget;while(n){if(n==this.node){break;}try{n=n.parentNode;}catch(x){n=null;}}if(!n){this._changeState("Container","Over");this.onOverEvent();}n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}if(n){this._addItemClass(n,"Over");}this.current=n;},onMouseOut:function(e){for(var n=e.relatedTarget;n;){if(n==this.node){return;}try{n=n.parentNode;}catch(x){n=null;}}if(this.current){this._removeItemClass(this.current,"Over");this.current=null;}this._changeState("Container","");this.onOutEvent();},onSelectStart:function(e){if(!this.skipForm||!dojo.dnd.isFormElement(e)){dojo.stopEvent(e);}},onOverEvent:function(){},onOutEvent:function(){},_changeState:function(_1c,_1d){var _1e="dojoDnd"+_1c;var _1f=_1c.toLowerCase()+"State";dojo.removeClass(this.node,_1e+this[_1f]);dojo.addClass(this.node,_1e+_1d);this[_1f]=_1d;},_addItemClass:function(_20,_21){dojo.addClass(_20,"dojoDndItem"+_21);},_removeItemClass:function(_22,_23){dojo.removeClass(_22,"dojoDndItem"+_23);},_getChildByEvent:function(e){var _25=e.target;if(_25){for(var _26=_25.parentNode;_26;_25=_26,_26=_25.parentNode){if(_26==this.parent&&dojo.hasClass(_25,"dojoDndItem")){return _25;}}}return null;},_normalizedCreator:function(_27,_28){var t=(this.creator?this.creator:this.defaultCreator)(_27,_28);if(!dojo.isArray(t.type)){t.type=["text"];}if(!t.node.id){t.node.id=dojo.dnd.getUniqueId();}dojo.addClass(t.node,"dojoDndItem");return t;}});dojo.dnd._createNode=function(tag){if(!tag){return dojo.dnd._createSpan;}return function(_2b){var n=dojo.doc.createElement(tag);n.innerHTML=_2b;return n;};};dojo.dnd._createTrTd=function(_2d){var tr=dojo.doc.createElement("tr");var td=dojo.doc.createElement("td");td.innerHTML=_2d;tr.appendChild(td);return tr;};dojo.dnd._createSpan=function(_30){var n=dojo.doc.createElement("span");n.innerHTML=_30;return n;};dojo.dnd._defaultCreatorNodes={ul:"li",ol:"li",div:"div",p:"div"};dojo.dnd._defaultCreator=function(_32){var tag=_32.tagName.toLowerCase();var c=tag=="table"?dojo.dnd._createTrTd:dojo.dnd._createNode(dojo.dnd._defaultCreatorNodes[tag]);return function(_35,_36){var _37=dojo.isObject(_35)&&_35;var _38=(_37&&_35.data)?_35.data:_35;var _39=(_37&&_35.type)?_35.type:["text"];var t=String(_38),n=(_36=="avatar"?dojo.dnd._createSpan:c)(t);n.id=dojo.dnd.getUniqueId();return {node:n,data:_38,type:_39};};};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/Manager.js b/spring-js/src/main/resources/META-INF/dojo/dnd/Manager.js
new file mode 100644
index 00000000..69acf3e0
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/Manager.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.Manager"]){dojo._hasResource["dojo.dnd.Manager"]=true;dojo.provide("dojo.dnd.Manager");dojo.require("dojo.dnd.common");dojo.require("dojo.dnd.autoscroll");dojo.require("dojo.dnd.Avatar");dojo.declare("dojo.dnd.Manager",null,{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:16,OFFSET_Y:16,overSource:function(_1){if(this.avatar){this.target=(_1&&_1.targetState!="Disabled")?_1:null;this.avatar.update();}dojo.publish("/dnd/source/over",[_1]);},outSource:function(_2){if(this.avatar){if(this.target==_2){this.target=null;this.canDropFlag=false;this.avatar.update();dojo.publish("/dnd/source/over",[null]);}}else{dojo.publish("/dnd/source/over",[null]);}},startDrag:function(_3,_4,_5){this.source=_3;this.nodes=_4;this.copy=Boolean(_5);this.avatar=this.makeAvatar();dojo.body().appendChild(this.avatar.node);dojo.publish("/dnd/start",[_3,_4,this.copy]);this.events=[dojo.connect(dojo.doc,"onmousemove",this,"onMouseMove"),dojo.connect(dojo.doc,"onmouseup",this,"onMouseUp"),dojo.connect(dojo.doc,"onkeydown",this,"onKeyDown"),dojo.connect(dojo.doc,"onkeyup",this,"onKeyUp")];var c="dojoDnd"+(_5?"Copy":"Move");dojo.addClass(dojo.body(),c);},canDrop:function(_7){var _8=Boolean(this.target&&_7);if(this.canDropFlag!=_8){this.canDropFlag=_8;this.avatar.update();}},stopDrag:function(){dojo.removeClass(dojo.body(),"dojoDndCopy");dojo.removeClass(dojo.body(),"dojoDndMove");dojo.forEach(this.events,dojo.disconnect);this.events=[];this.avatar.destroy();this.avatar=null;this.source=null;this.nodes=[];},makeAvatar:function(){return new dojo.dnd.Avatar(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){dojo.dnd.autoScroll(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var _c=Boolean(this.source.copyState(dojo.dnd.getCopyKeyState(e)));if(this.copy!=_c){this._setCopyStatus(_c);}}},onMouseUp:function(e){if(this.avatar&&(!("mouseButton" in this.source)||this.source.mouseButton==e.button)){if(this.target&&this.canDropFlag){var _e=[this.source,this.nodes,Boolean(this.source.copyState(dojo.dnd.getCopyKeyState(e))),this.target];dojo.publish("/dnd/drop/before",_e);dojo.publish("/dnd/drop",_e);}else{dojo.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case dojo.keys.CTRL:var _10=Boolean(this.source.copyState(true));if(this.copy!=_10){this._setCopyStatus(_10);}break;case dojo.keys.ESCAPE:dojo.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==dojo.keys.CTRL){var _12=Boolean(this.source.copyState(false));if(this.copy!=_12){this._setCopyStatus(_12);}}},_setCopyStatus:function(_13){this.copy=_13;this.source._markDndStatus(this.copy);this.updateAvatar();dojo.removeClass(dojo.body(),"dojoDnd"+(this.copy?"Move":"Copy"));dojo.addClass(dojo.body(),"dojoDnd"+(this.copy?"Copy":"Move"));}});dojo.dnd._manager=null;dojo.dnd.manager=function(){if(!dojo.dnd._manager){dojo.dnd._manager=new dojo.dnd.Manager();}return dojo.dnd._manager;};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/Moveable.js b/spring-js/src/main/resources/META-INF/dojo/dnd/Moveable.js
new file mode 100644
index 00000000..dca3198a
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/Moveable.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.Moveable"]){dojo._hasResource["dojo.dnd.Moveable"]=true;dojo.provide("dojo.dnd.Moveable");dojo.require("dojo.dnd.Mover");dojo.declare("dojo.dnd.Moveable",null,{handle:"",delay:0,skip:false,constructor:function(_1,_2){this.node=dojo.byId(_1);if(!_2){_2={};}this.handle=_2.handle?dojo.byId(_2.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_2.delay>0?_2.delay:0;this.skip=_2.skip;this.mover=_2.mover?_2.mover:dojo.dnd.Mover;this.events=[dojo.connect(this.handle,"onmousedown",this,"onMouseDown"),dojo.connect(this.handle,"ondragstart",this,"onSelectStart"),dojo.connect(this.handle,"onselectstart",this,"onSelectStart")];},markupFactory:function(_3,_4){return new dojo.dnd.Moveable(_4,_3);},destroy:function(){dojo.forEach(this.events,dojo.disconnect);this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&dojo.dnd.isFormElement(e)){return;}if(this.delay){this.events.push(dojo.connect(this.handle,"onmousemove",this,"onMouseMove"));this.events.push(dojo.connect(this.handle,"onmouseup",this,"onMouseUp"));this._lastX=e.pageX;this._lastY=e.pageY;}else{new this.mover(this.node,e,this);}dojo.stopEvent(e);},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){this.onMouseUp(e);new this.mover(this.node,e,this);}dojo.stopEvent(e);},onMouseUp:function(e){dojo.disconnect(this.events.pop());dojo.disconnect(this.events.pop());},onSelectStart:function(e){if(!this.skip||!dojo.dnd.isFormElement(e)){dojo.stopEvent(e);}},onMoveStart:function(_9){dojo.publish("/dnd/move/start",[_9]);dojo.addClass(dojo.body(),"dojoMove");dojo.addClass(this.node,"dojoMoveItem");},onMoveStop:function(_a){dojo.publish("/dnd/move/stop",[_a]);dojo.removeClass(dojo.body(),"dojoMove");dojo.removeClass(this.node,"dojoMoveItem");},onFirstMove:function(_b){},onMove:function(_c,_d){this.onMoving(_c,_d);var s=_c.node.style;s.left=_d.l+"px";s.top=_d.t+"px";this.onMoved(_c,_d);},onMoving:function(_f,_10){},onMoved:function(_11,_12){}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/Mover.js b/spring-js/src/main/resources/META-INF/dojo/dnd/Mover.js
new file mode 100644
index 00000000..45720f4c
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/Mover.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.Mover"]){dojo._hasResource["dojo.dnd.Mover"]=true;dojo.provide("dojo.dnd.Mover");dojo.require("dojo.dnd.common");dojo.require("dojo.dnd.autoscroll");dojo.declare("dojo.dnd.Mover",null,{constructor:function(_1,e,_3){this.node=dojo.byId(_1);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=this.host=_3,d=_1.ownerDocument,_6=dojo.connect(d,"onmousemove",this,"onFirstMove");this.events=[dojo.connect(d,"onmousemove",this,"onMouseMove"),dojo.connect(d,"onmouseup",this,"onMouseUp"),dojo.connect(d,"ondragstart",dojo,"stopEvent"),dojo.connect(d,"onselectstart",dojo,"stopEvent"),_6];if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){dojo.dnd.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.pageY});},onMouseUp:function(e){if(this.mouseButton==e.button){this.destroy();}},onFirstMove:function(){var s=this.node.style,l,t;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left));t=Math.round(parseFloat(s.top));break;default:s.position="absolute";var m=dojo.marginBox(this.node);l=m.l;t=m.t;break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;this.host.onFirstMove(this);dojo.disconnect(this.events.pop());},destroy:function(){dojo.forEach(this.events,dojo.disconnect);var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=null;}});}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/Selector.js b/spring-js/src/main/resources/META-INF/dojo/dnd/Selector.js
new file mode 100644
index 00000000..bff080dc
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/Selector.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.Selector"]){dojo._hasResource["dojo.dnd.Selector"]=true;dojo.provide("dojo.dnd.Selector");dojo.require("dojo.dnd.common");dojo.require("dojo.dnd.Container");dojo.declare("dojo.dnd.Selector",dojo.dnd.Container,{constructor:function(_1,_2){if(!_2){_2={};}this.singular=_2.singular;this.selection={};this.anchor=null;this.simpleSelection=false;this.events.push(dojo.connect(this.node,"onmousedown",this,"onMouseDown"),dojo.connect(this.node,"onmouseup",this,"onMouseUp"));},singular:false,getSelectedNodes:function(){var t=new dojo.NodeList();var e=dojo.dnd._empty;for(var i in this.selection){if(i in e){continue;}t.push(dojo.byId(i));}return t;},selectNone:function(){return this._removeSelection()._removeAnchor();},selectAll:function(){this.forInItems(function(_6,id){this._addItemClass(dojo.byId(id),"Selected");this.selection[id]=1;},this);return this._removeAnchor();},deleteSelectedNodes:function(){var e=dojo.dnd._empty;for(var i in this.selection){if(i in e){continue;}var n=dojo.byId(i);this.delItem(i);dojo._destroyElement(n);}this.anchor=null;this.selection={};return this;},insertNodes:function(_b,_c,_d,_e){var _f=this._normalizedCreator;this._normalizedCreator=function(_10,_11){var t=_f.call(this,_10,_11);if(_b){if(!this.anchor){this.anchor=t.node;this._removeItemClass(t.node,"Selected");this._addItemClass(this.anchor,"Anchor");}else{if(this.anchor!=t.node){this._removeItemClass(t.node,"Anchor");this._addItemClass(t.node,"Selected");}}this.selection[t.node.id]=1;}else{this._removeItemClass(t.node,"Selected");this._removeItemClass(t.node,"Anchor");}return t;};dojo.dnd.Selector.superclass.insertNodes.call(this,_c,_d,_e);this._normalizedCreator=_f;return this;},destroy:function(){dojo.dnd.Selector.superclass.destroy.call(this);this.selection=this.anchor=null;},markupFactory:function(_13,_14){_13._skipStartup=true;return new dojo.dnd.Selector(_14,_13);},onMouseDown:function(e){if(!this.current){return;}if(!this.singular&&!dojo.dnd.getCopyKeyState(e)&&!e.shiftKey&&(this.current.id in this.selection)){this.simpleSelection=true;dojo.stopEvent(e);return;}if(!this.singular&&e.shiftKey){if(!dojo.dnd.getCopyKeyState(e)){this._removeSelection();}var c=this.getAllNodes();if(c.length){if(!this.anchor){this.anchor=c[0];this._addItemClass(this.anchor,"Anchor");}this.selection[this.anchor.id]=1;if(this.anchor!=this.current){var i=0;for(;i=0){this.timeout=_3.timeout;}},markupFactory:function(_4,_5){return new dojo.dnd.TimedMoveable(_5,_4);},onMoveStop:function(_6){if(_6._timer){clearTimeout(_6._timer);_1.call(this,_6,_6._leftTop);}dojo.dnd.Moveable.prototype.onMoveStop.apply(this,arguments);},onMove:function(_7,_8){_7._leftTop=_8;if(!_7._timer){var _t=this;_7._timer=setTimeout(function(){_7._timer=null;_1.call(_t,_7,_7._leftTop);},this.timeout);}}});})();}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/autoscroll.js b/spring-js/src/main/resources/META-INF/dojo/dnd/autoscroll.js
new file mode 100644
index 00000000..24d321ca
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/autoscroll.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.autoscroll"]){dojo._hasResource["dojo.dnd.autoscroll"]=true;dojo.provide("dojo.dnd.autoscroll");dojo.dnd.getViewport=function(){var d=dojo.doc,dd=d.documentElement,w=window,b=dojo.body();if(dojo.isMozilla){return {w:dd.clientWidth,h:w.innerHeight};}else{if(!dojo.isOpera&&w.innerWidth){return {w:w.innerWidth,h:w.innerHeight};}else{if(!dojo.isOpera&&dd&&dd.clientWidth){return {w:dd.clientWidth,h:dd.clientHeight};}else{if(b.clientWidth){return {w:b.clientWidth,h:b.clientHeight};}}}}return null;};dojo.dnd.V_TRIGGER_AUTOSCROLL=32;dojo.dnd.H_TRIGGER_AUTOSCROLL=32;dojo.dnd.V_AUTOSCROLL_VALUE=16;dojo.dnd.H_AUTOSCROLL_VALUE=16;dojo.dnd.autoScroll=function(e){var v=dojo.dnd.getViewport(),dx=0,dy=0;if(e.clientXv.w-dojo.dnd.H_TRIGGER_AUTOSCROLL){dx=dojo.dnd.H_AUTOSCROLL_VALUE;}}if(e.clientYv.h-dojo.dnd.V_TRIGGER_AUTOSCROLL){dy=dojo.dnd.V_AUTOSCROLL_VALUE;}}window.scrollBy(dx,dy);};dojo.dnd._validNodes={"div":1,"p":1,"td":1};dojo.dnd._validOverflow={"auto":1,"scroll":1};dojo.dnd.autoScrollNodes=function(e){for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in dojo.dnd._validNodes)){var s=dojo.getComputedStyle(n);if(s.overflow.toLowerCase() in dojo.dnd._validOverflow){var b=dojo._getContentBox(n,s),t=dojo._abs(n,true);b.l+=t.x+n.scrollLeft;b.t+=t.y+n.scrollTop;var w=Math.min(dojo.dnd.H_TRIGGER_AUTOSCROLL,b.w/2),h=Math.min(dojo.dnd.V_TRIGGER_AUTOSCROLL,b.h/2),rx=e.pageX-b.l,ry=e.pageY-b.t,dx=0,dy=0;if(rx>0&&rxb.w-w){dx=dojo.dnd.H_AUTOSCROLL_VALUE;}}}if(ry>0&&ryb.h-h){dy=dojo.dnd.V_AUTOSCROLL_VALUE;}}}var _14=n.scrollLeft,_15=n.scrollTop;n.scrollLeft=n.scrollLeft+dx;n.scrollTop=n.scrollTop+dy;if(_14!=n.scrollLeft||_15!=n.scrollTop){return;}}}try{n=n.parentNode;}catch(x){n=null;}}dojo.dnd.autoScroll(e);};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/common.js b/spring-js/src/main/resources/META-INF/dojo/dnd/common.js
new file mode 100644
index 00000000..7f06ea12
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/common.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.common"]){dojo._hasResource["dojo.dnd.common"]=true;dojo.provide("dojo.dnd.common");dojo.dnd._copyKey=navigator.appVersion.indexOf("Macintosh")<0?"ctrlKey":"metaKey";dojo.dnd.getCopyKeyState=function(e){return e[dojo.dnd._copyKey];};dojo.dnd._uniqueId=0;dojo.dnd.getUniqueId=function(){var id;do{id=dojo._scopeName+"Unique"+(++dojo.dnd._uniqueId);}while(dojo.byId(id));return id;};dojo.dnd._empty={};dojo.dnd.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};}
\ No newline at end of file
diff --git a/spring-js/src/main/resources/META-INF/dojo/dnd/move.js b/spring-js/src/main/resources/META-INF/dojo/dnd/move.js
new file mode 100644
index 00000000..2f813677
--- /dev/null
+++ b/spring-js/src/main/resources/META-INF/dojo/dnd/move.js
@@ -0,0 +1,12 @@
+/*
+ Copyright (c) 2004-2008, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.move"]){dojo._hasResource["dojo.dnd.move"]=true;dojo.provide("dojo.dnd.move");dojo.require("dojo.dnd.Mover");dojo.require("dojo.dnd.Moveable");dojo.declare("dojo.dnd.move.constrainedMoveable",dojo.dnd.Moveable,{constraints:function(){},within:false,markupFactory:function(_1,_2){return new dojo.dnd.move.constrainedMoveable(_2,_1);},constructor:function(_3,_4){if(!_4){_4={};}this.constraints=_4.constraints;this.within=_4.within;},onFirstMove:function(_5){var c=this.constraintBox=this.constraints.call(this,_5);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=dojo.marginBox(_5.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_8,_9){var c=this.constraintBox,s=_8.node.style;s.left=(_9.l0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(dojo.config.useXDomain&&d.isOpera)){if(dojo.isAIR){setTimeout(function(){dojo.loaded();},0);}else{setTimeout(dojo._scopeName+".loaded();",0);}}else{d.loaded();}};dojo._getModuleSymbols=function(_4b){var _4c=_4b.split(".");for(var i=_4c.length;i>0;i--){var _4e=_4c.slice(0,i).join(".");if((i==1)&&!this._moduleHasPrefix(_4e)){_4c[0]="../"+_4c[0];}else{var _4f=this._getModulePrefix(_4e);if(_4f!=_4e){_4c.splice(0,i,_4f);break;}}}return _4c;};dojo._global_omit_module_check=false;dojo._loadModule=dojo.require=function(_50,_51){_51=this._global_omit_module_check||_51;var _52=this._loadedModules[_50];if(_52){return _52;}var _53=this._getModuleSymbols(_50).join("/")+".js";var _54=(!_51)?_50:null;var ok=this._loadPath(_53,_54);if(!ok&&!_51){throw new Error("Could not load '"+_50+"'; last tried '"+_53+"'");}if(!_51&&!this._isXDomain){_52=this._loadedModules[_50];if(!_52){throw new Error("symbol '"+_50+"' is not defined after loading '"+_53+"'");}}return _52;};dojo.provide=function(_56){_56=_56+"";return (d._loadedModules[_56]=d.getObject(_56,true));};dojo.platformRequire=function(_57){var _58=_57.common||[];var _59=_58.concat(_57[d._name]||_57["default"]||[]);for(var x=0;x<_59.length;x++){var _5b=_59[x];if(_5b.constructor==Array){d._loadModule.apply(d,_5b);}else{d._loadModule(_5b);}}};dojo.requireIf=function(_5c,_5d){if(_5c===true){var _5e=[];for(var i=1;i0&&!(j==1&&_6f[0]=="")&&_6f[j]==".."&&_6f[j-1]!=".."){if(j==(_6f.length-1)){_6f.splice(j,1);_6f[j-1]="";}else{_6f.splice(j-1,2);j-=2;}}}}_6c.path=_6f.join("/");}}}}uri=[];if(_6c.scheme){uri.push(_6c.scheme,":");}if(_6c.authority){uri.push("//",_6c.authority);}uri.push(_6c.path);if(_6c.query){uri.push("?",_6c.query);}if(_6c.fragment){uri.push("#",_6c.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[5];this.port=r[7]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_72,url){var loc=d._getModuleSymbols(_72).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _75=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_75==-1||_75>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _77=document.getElementsByTagName("script");var _78=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_77.length;i++){var src=_77[i].getAttribute("src");if(!src){continue;}var m=src.match(_78);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=_77[i].getAttribute("djConfig");if(cfg){var _7d=eval("({ "+cfg+" })");for(var x in _7d){dojo.config[x]=_7d[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent;var dav=n.appVersion;var tv=parseFloat(dav);d.isOpera=(dua.indexOf("Opera")>=0)?tv:0;var idx=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(idx){d.isSafari=parseFloat(dav.split("Version/")[1])||((parseFloat(dav.substr(idx+7))>=419.3)?3:2)||2;}d.isAIR=(dua.indexOf("AdobeAIR")>=0)?1:0;d.isKhtml=(dav.indexOf("Konqueror")>=0||d.isSafari)?tv:0;d.isMozilla=d.isMoz=(dua.indexOf("Gecko")>=0&&!d.isKhtml)?tv:0;d.isFF=d.isIE=0;if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1])||0;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||0;}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}var cm=document.compatMode;d.isQuirks=cm=="BackCompat"||cm=="QuirksMode"||d.isIE<6;d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _85=null;var _86=null;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_85=new XMLHttpRequest();}catch(e){}}if(!_85){for(var i=0;i<3;++i){var _88=d._XMLHTTP_PROGIDS[i];try{_85=new ActiveXObject(_88);}catch(e){_86=e;}if(_85){d._XMLHTTP_PROGIDS=[_88];break;}}}if(!_85){throw new Error("XMLHTTP not available: "+_86);}return _85;};d._isDocumentOk=function(_89){var _8a=_89.status||0;return (_8a>=200&&_8a<300)||_8a==304||_8a==1223||(!_8a&&(location.protocol=="file:"||location.protocol=="chrome:"));};var _8b=window.location+"";var _8c=document.getElementsByTagName("base");var _8d=(_8c&&_8c.length>0);d._getText=function(uri,_8f){var _90=this._xhrObj();if(!_8d&&dojo._Url){uri=(new dojo._Url(_8b,uri)).toString();}if(d.config.cacheBust){uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_90.open("GET",uri,false);try{_90.send(null);if(!d._isDocumentOk(_90)){var err=Error("Unable to load "+uri+" status:"+_90.status);err.status=_90.status;err.responseText=_90.responseText;throw err;}}catch(e){if(_8f){return null;}throw e;}return _90.responseText;};})();dojo._initFired=false;dojo._loadInit=function(e){dojo._initFired=true;var _93=(e&&e.type)?e.type.toLowerCase():"load";if(arguments.callee.initialized||(_93!="domcontentloaded"&&_93!="load")){return;}arguments.callee.initialized=true;if("_khtmlTimer" in dojo){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount==0){dojo._modulesLoaded();}};dojo._fakeLoadInit=function(){dojo._loadInit({type:"load"});};if(dojo.config.afterOnLoad){window.setTimeout(dojo._fakeLoadInit,1000);}else{if(document.addEventListener){if(dojo.isOpera||dojo.isFF>=3||(dojo.isMoz&&dojo.config.enableMozDomContentLoaded===true)){document.addEventListener("DOMContentLoaded",dojo._loadInit,null);}window.addEventListener("load",dojo._loadInit,null);}if(dojo.isAIR){window.addEventListener("load",dojo._loadInit,null);}else{if(/(WebKit|khtml)/i.test(navigator.userAgent)){dojo._khtmlTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit();}},10);}}}(function(){var _w=window;var _95=function(_96,fp){var _98=_w[_96]||function(){};_w[_96]=function(){fp.apply(_w,arguments);_98.apply(_w,arguments);};};if(dojo.isIE){if(!dojo.config.afterOnLoad){document.write(""+" ");}var _99=true;_95("onbeforeunload",function(){_w.setTimeout(function(){_99=false;},0);});_95("onunload",function(){if(_99){dojo.unloaded();}});try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");}catch(e){}}else{_95("onbeforeunload",function(){dojo.unloaded();});}})();}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _9b in mp){dojo.registerModulePath(_9b,mp[_9b]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");dojo.isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=(function(){var _9e=function(it){return it&&(typeof it=="function"||it instanceof Function);};return dojo.isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false;}return _9e(it);}:_9e;})();dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||dojo.isArray(it)||dojo.isFunction(it));};dojo.isArrayLike=function(it){var d=dojo;return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!dojo.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_a5,_a6){for(var i=1,l=arguments.length;i2){return dojo._hitchArgs.apply(dojo,arguments);}if(!_b0){_b0=_af;_af=null;}if(dojo.isString(_b0)){_af=_af||dojo.global;if(!_af[_b0]){throw (["dojo.hitch: scope[\"",_b0,"\"] is null (scope=\"",_af,"\")"].join(""));}return function(){return _af[_b0].apply(_af,arguments||[]);};}return !_af?_b0:function(){return _b0.apply(_af,arguments||[]);};};dojo.delegate=dojo._delegate=function(obj,_b2){function TMP(){};TMP.prototype=obj;var tmp=new TMP();if(_b2){dojo.mixin(tmp,_b2);}return tmp;};dojo.partial=function(_b4){var arr=[null];return dojo.hitch.apply(dojo,arr.concat(dojo._toArray(arguments)));};dojo._toArray=function(obj,_b7,_b8){var arr=_b8||[];for(var x=_b7||0;x=0){this._fire();}return this;},_fire:function(){var _12b=this.chain;var _12c=this.fired;var res=this.results[_12c];var self=this;var cb=null;while((_12b.length>0)&&(this.paused==0)){var f=_12b.shift()[_12c];if(!f){continue;}try{res=f(res);_12c=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused==0)&&(self.fired>=0)){self._fire();}};this.paused++;}}catch(err){console.debug(err);_12c=1;res=err;}}this.fired=_12c;this.results[_12c]=res;if((cb)&&(this.paused)){res.addBoth(cb);}}});}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(json){return eval("("+json+")");};dojo._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.toJsonIndentStr="\t";dojo.toJson=function(it,_135,_136){if(it===undefined){return "undefined";}var _137=typeof it;if(_137=="number"||_137=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}if(it.nodeType&&it.cloneNode){return "";}var _138=arguments.callee;var _139;_136=_136||"";var _13a=_135?_136+dojo.toJsonIndentStr:"";if(typeof it.__json__=="function"){_139=it.__json__();if(it!==_139){return _138(_139,_135,_13a);}}if(typeof it.json=="function"){_139=it.json();if(it!==_139){return _138(_139,_135,_13a);}}var sep=_135?" ":"";var _13c=_135?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_138(obj,_135,_13a);if(typeof val!="string"){val="undefined";}return _13c+_13a+val;});return "["+res.join(","+sep)+_13c+_136+"]";}if(_137=="function"){return null;}var _140=[];for(var key in it){var _142;if(typeof key=="number"){_142="\""+key+"\"";}else{if(typeof key=="string"){_142=dojo._escapeString(key);}else{continue;}}val=_138(it[key],_135,_13a);if(typeof val!="string"){continue;}_140.push(_13c+_13a+_142+":"+sep+val);}return "{"+_140.join(","+sep)+_13c+_136+"}";};}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _143=function(arr,obj,cb){return [dojo.isString(arr)?arr.split(""):arr,obj||dojo.global,dojo.isString(cb)?new Function("item","index","array",cb):cb];};dojo.mixin(dojo,{indexOf:function(_147,_148,_149,_14a){var step=1,end=_147.length||0,i=0;if(_14a){i=end-1;step=end=-1;}if(_149!=undefined){i=_149;}if((_14a&&i>end)||i>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new dojo.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=dojo.Color.named[str];return a&&dojo.colorFromArray(a,obj)||dojo.colorFromRgb(str,obj)||dojo.colorFromHex(str,obj);};}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo._gearsObject=function(){var _198;var _199;var _19a=dojo.getObject("google.gears");if(_19a){return _19a;}if(typeof GearsFactory!="undefined"){_198=new GearsFactory();}else{if(dojo.isIE){try{_198=new ActiveXObject("Gears.Factory");}catch(e){}}else{if(navigator.mimeTypes["application/x-googlegears"]){_198=document.createElement("object");_198.setAttribute("type","application/x-googlegears");_198.setAttribute("width",0);_198.setAttribute("height",0);_198.style.display="none";document.documentElement.appendChild(_198);}}}if(!_198){return null;}dojo.setObject("google.gears.factory",_198);return dojo.getObject("google.gears");};dojo.isGears=(!!dojo._gearsObject())||0;dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_19b,_19c){dojo.global=_19b;dojo.doc=_19c;};dojo._fireCallback=function(_19d,_19e,_19f){if(_19e&&dojo.isString(_19d)){_19d=_19e[_19d];}return _19d.apply(_19e,_19f||[]);};dojo.withGlobal=function(_1a0,_1a1,_1a2,_1a3){var rval;var _1a5=dojo.global;var _1a6=dojo.doc;try{dojo.setContext(_1a0,_1a0.document);rval=dojo._fireCallback(_1a1,_1a2,_1a3);}finally{dojo.setContext(_1a5,_1a6);}return rval;};dojo.withDoc=function(_1a7,_1a8,_1a9,_1aa){var rval;var _1ac=dojo.doc;try{dojo.doc=_1a7;rval=dojo._fireCallback(_1a8,_1a9,_1aa);}finally{dojo.doc=_1ac;}return rval;};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);var _1b1=name;if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_1b5,_1b6){if(node){node.removeEventListener(del._normalizeEventName(_1b5),_1b6,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_1bc){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";}});dojo.fixEvent=function(evt,_1bf){return del._fixEvent(evt,_1bf);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _1c1=dojo._listener;dojo._connect=function(obj,_1c3,_1c4,_1c5,_1c6){var _1c7=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=!_1c7?0:(!_1c6?1:2),l=[dojo._listener,del,_1c1][lid];var h=l.add(obj,_1c3,dojo.hitch(_1c4,_1c5));return [obj,_1c3,h,lid];};dojo._disconnect=function(obj,_1cc,_1cd,_1ce){([dojo._listener,del,_1c1][_1ce]).remove(obj,_1cc,_1cd);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145};if(dojo.isIE){var _1cf=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;if(!dojo.config._allow_leaks){_1c1=iel=dojo._ie_listener={handlers:[],add:function(_1d3,_1d4,_1d5){_1d3=_1d3||dojo.global;var f=_1d3[_1d4];if(!f||!f._listeners){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d._listeners=[];f=_1d3[_1d4]=d;}return f._listeners.push(ieh.push(_1d5)-1);},remove:function(_1d9,_1da,_1db){var f=(_1d9||dojo.global)[_1da],l=f&&f._listeners;if(f&&l&&_1db--){delete ieh[l[_1db]];delete l[_1db];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_1df,fp){if(!node){return;}_1df=del._normalizeEventName(_1df);if(_1df=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd._listeners||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_1df,del._fixCallback(fp));},remove:function(node,_1e4,_1e5){_1e4=del._normalizeEventName(_1e4);iel.remove(node,_1e4,_1e5);if(_1e4=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_1e7){return _1e7.slice(0,2)!="on"?"on"+_1e7:_1e7;},_nop:function(){},_fixEvent:function(evt,_1e9){if(!evt){var w=_1e9&&(_1e9.ownerDocument||_1e9.document||_1e9).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_1e9||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _1ed=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _1ee=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_1ed.scrollLeft||0)-_1ee.x;evt.pageY=evt.clientY+(_1ed.scrollTop||0)-_1ee.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp._listeners){return;}var k=evt.keyCode;var _1f4=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_1f4||evt.ctrlKey){var c=_1f4?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);evt.cancelBubble=faux.cancelBubble;evt.returnValue=faux.returnValue;_1cf(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_1cf(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);};}del._synthesizeEvent=function(evt,_1f9){var faux=dojo.mixin({},evt,_1f9);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_1fc){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=((c<41)&&(!evt.shiftKey)?0:c);if((evt.ctrlKey)&&(!evt.shiftKey)&&(c>=65)&&(c<=90)){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isSafari){dojo.mixin(del,{_fixEvent:function(evt,_1ff){switch(evt.type){case "keypress":var c=evt.charCode,s=evt.shiftKey,k=evt.keyCode;k=k||_203[evt.keyIdentifier]||0;if(evt.keyIdentifier=="Enter"){c=0;}else{if((evt.ctrlKey)&&(c>0)&&(c<27)){c+=96;}else{if(c==dojo.keys.SHIFT_TAB){c=dojo.keys.TAB;s=true;}else{c=(c>=32&&c<63232?c:0);}}}return del._synthesizeEvent(evt,{charCode:c,shiftKey:s,keyCode:k});}return evt;}});dojo.mixin(dojo.keys,{SHIFT_TAB:25,UP_ARROW:63232,DOWN_ARROW:63233,LEFT_ARROW:63234,RIGHT_ARROW:63235,F1:63236,F2:63237,F3:63238,F4:63239,F5:63240,F6:63241,F7:63242,F8:63243,F9:63244,F10:63245,F11:63246,F12:63247,PAUSE:63250,DELETE:63272,HOME:63273,END:63275,PAGE_UP:63276,PAGE_DOWN:63277,INSERT:63302,PRINT_SCREEN:63248,SCROLL_LOCK:63249,NUM_LOCK:63289});var dk=dojo.keys,_203={"Up":dk.UP_ARROW,"Down":dk.DOWN_ARROW,"Left":dk.LEFT_ARROW,"Right":dk.RIGHT_ARROW,"PageUp":dk.PAGE_UP,"PageDown":dk.PAGE_DOWN};}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_206){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c._listeners,t=h[c.target];var r=t&&t.apply(_206,args);for(var i in ls){if(!(i in ap)){h[ls[i]].apply(_206,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,doc){if(dojo.isString(id)){var _d=doc||dojo.doc;var te=_d.getElementById(id);if(te&&te.attributes.id.value==id){return te;}else{var eles=_d.all[id];if(!eles||!eles.length){return eles;}var i=0;while((te=eles[i++])){if(te.attributes.id.value==id){return te;}}}}else{return id;}};}else{dojo.byId=function(id,doc){return dojo.isString(id)?(doc||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var _21a=null;dojo.addOnUnload(function(){_21a=null;});dojo._destroyElement=function(node){node=d.byId(node);try{if(!_21a){_21a=document.createElement("div");}_21a.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_21a.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_21d){try{node=d.byId(node);_21d=d.byId(_21d);while(node){if(node===_21d){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_21f){node=d.byId(node);if(d.isMozilla){node.style.MozUserSelect=_21f?"":"none";}else{if(d.isKhtml){node.style.KhtmlUserSelect=_21f?"auto":"none";}else{if(d.isIE){node.unselectable=_21f?"":"on";d.query("*",node).forEach(function(_220){_220.unselectable=_21f?"":"on";});}}}};var _221=function(node,ref){ref.parentNode.insertBefore(node,ref);return true;};var _224=function(node,ref){var pn=ref.parentNode;if(ref==pn.lastChild){pn.appendChild(node);}else{return _221(node,ref.nextSibling);}return true;};dojo.place=function(node,_229,_22a){if(!node||!_229||_22a===undefined){return false;}node=d.byId(node);_229=d.byId(_229);if(typeof _22a=="number"){var cn=_229.childNodes;if((_22a==0&&cn.length==0)||cn.length==_22a){_229.appendChild(node);return true;}if(_22a==0){return _221(node,_229.firstChild);}return _224(node,cn[_22a-1]);}switch(_22a.toLowerCase()){case "before":return _221(node,_229);case "after":return _224(node,_229);case "first":if(_229.firstChild){return _221(node,_229.firstChild);}default:_229.appendChild(node);return true;}};dojo.boxModel="content-box";if(d.isIE){var _dcm=document.compatMode;d.boxModel=_dcm=="BackCompat"||_dcm=="QuirksMode"||d.isIE<6?"border-box":"content-box";}var gcs,dv=document.defaultView;if(d.isSafari){gcs=function(node){var s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}return s||{};};}else{if(d.isIE){gcs=function(node){return node.currentStyle;};}else{gcs=function(node){return dv.getComputedStyle(node,null);};}}dojo.getComputedStyle=gcs;if(!d.isIE){dojo._toPixelValue=function(_233,_234){return parseFloat(_234)||0;};}else{dojo._toPixelValue=function(_235,_236){if(!_236){return 0;}if(_236=="medium"){return 4;}if(_236.slice&&(_236.slice(-2)=="px")){return parseFloat(_236);}with(_235){var _237=style.left;var _238=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_236;_236=style.pixelLeft;}catch(e){_236=0;}style.left=_237;runtimeStyle.left=_238;}return _236;};}var px=d._toPixelValue;dojo._getOpacity=d.isIE?function(node){try{return node.filters.alpha.opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE?function(node,_23d){if(_23d==1){var _23e=/FILTER:[^;]*;?/i;node.style.cssText=node.style.cssText.replace(_23e,"");if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){i.style.cssText=i.style.cssText.replace(_23e,"");});}}else{var o="Alpha(Opacity="+_23d*100+")";node.style.filter=o;}if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){i.style.filter=o;});}return _23d;}:function(node,_243){return node.style.opacity=_243;};var _244={left:true,top:true};var _245=/margin|padding|width|height|max|min|offset/;var _246=function(node,type,_249){type=type.toLowerCase();if(d.isIE&&_249=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(!(type in _244)){_244[type]=_245.test(type);}return _244[type]?px(node,_249):_249;};var _24a=d.isIE?"styleFloat":"cssFloat";var _24b={"cssFloat":_24a,"styleFloat":_24a,"float":_24a};dojo.style=function(node,_24d,_24e){var n=d.byId(node),args=arguments.length,op=(_24d=="opacity");_24d=_24b[_24d]||_24d;if(args==3){return op?d._setOpacity(n,_24e):n.style[_24d]=_24e;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&!d.isString(_24d)){for(var x in _24d){d.style(node,x,_24d[x]);}return s;}return (args==1)?s:_246(n,_24d,s[_24d]);};dojo._getPadExtents=function(n,_255){var s=_255||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_25a){var ne="none",s=_25a||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_260){var s=_260||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_265){var s=_265||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isSafari&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_26c){var s=_26c||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{var p=node.parentNode;if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera){var p=node.parentNode;if(p){var be=d._getBorderExtents(p);l-=be.l,t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getContentBox=function(node,_277){var s=_277||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_27e){var s=_27e||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||n=="BUTTON";};dojo._setContentSize=function(node,_28c,_28d,_28e){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_28e);if(_28c>=0){_28c+=pb.w;}if(_28d>=0){_28d+=pb.h;}}d._setBox(node,NaN,NaN,_28c,_28d);};dojo._setMarginBox=function(node,_291,_292,_293,_294,_295){var s=_295||gcs(node);var bb=d._usesBorderBox(node),pb=bb?_299:d._getPadBorderExtents(node,s),mb=d._getMarginExtents(node,s);if(_293>=0){_293=Math.max(_293-pb.w-mb.w,0);}if(_294>=0){_294=Math.max(_294-pb.h-mb.h,0);}d._setBox(node,_291,_292,_293,_294);};var _299={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=d.byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=dojo.byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _2a5=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_2a9=0,_b=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_2a9+=val-0;if(node==_b){break;}}node=node.parentNode;}return _2a9;};dojo._docScroll=function(){var _b=d.body(),_w=d.global,de=d.doc.documentElement;return {y:(_w.pageYOffset||de.scrollTop||_b.scrollTop||0),x:(_w.pageXOffset||d._fixIeBiDiScrollLeft(de.scrollLeft)||_b.scrollLeft||0)};};dojo._isBodyLtr=function(){return !("_bodyLtr" in d)?d._bodyLtr=gcs(d.body()).direction=="ltr":d._bodyLtr;};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;return (d.isIE>=7)?{x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top}:{x:d._isBodyLtr()||window.parent==window?de.clientLeft:de.offsetWidth-de.clientWidth-de.clientLeft,y:de.clientTop};};dojo._fixIeBiDiScrollLeft=function(_2af){var dd=d.doc;if(d.isIE&&!dojo._isBodyLtr()){var de=dd.compatMode=="BackCompat"?dd.body:dd.documentElement;return _2af+de.clientWidth-de.scrollWidth;}return _2af;};dojo._abs=function(node,_2b3){var _2b4=node.ownerDocument;var ret={x:0,y:0};var db=d.body();if(d.isIE||(d.isFF>=3)){var _2b7=node.getBoundingClientRect();var _2b8=(d.isIE)?d._getIeDocumentElementOffset():{x:0,y:0};ret.x=_2b7.left-_2b8.x;ret.y=_2b7.top-_2b8.y;}else{if(_2b4["getBoxObjectFor"]){var bo=_2b4.getBoxObjectFor(node),b=d._getBorderExtents(node);ret.x=bo.x-b.l-_2a5(node,"scrollLeft");ret.y=bo.y-b.t-_2a5(node,"scrollTop");}else{if(node["offsetParent"]){var _2bb;if(d.isSafari&&(gcs(node).position=="absolute")&&(node.parentNode==db)){_2bb=db;}else{_2bb=db.parentNode;}if(node.parentNode!=db){var nd=node;if(d.isOpera){nd=db;}ret.x-=_2a5(nd,"scrollLeft");ret.y-=_2a5(nd,"scrollTop");}var _2bd=node;do{var n=_2bd.offsetLeft;if(!d.isOpera||n>0){ret.x+=isNaN(n)?0:n;}var t=_2bd.offsetTop;ret.y+=isNaN(t)?0:t;if(d.isSafari&&_2bd!=node){var cs=gcs(_2bd);ret.x+=px(_2bd,cs.borderLeftWidth);ret.y+=px(_2bd,cs.borderTopWidth);}_2bd=_2bd.offsetParent;}while((_2bd!=_2bb)&&_2bd);}else{if(node.x&&node.y){ret.x+=isNaN(node.x)?0:node.x;ret.y+=isNaN(node.y)?0:node.y;}}}}if(_2b3){var _2c1=d._docScroll();ret.y+=_2c1.y;ret.x+=_2c1.x;}return ret;};dojo.coords=function(node,_2c3){var n=d.byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d._abs(n,_2c3);mb.x=abs.x;mb.y=abs.y;return mb;};var _2c8=function(name){switch(name.toLowerCase()){case "tabindex":return (d.isIE&&d.isIE<8)?"tabIndex":"tabindex";default:return name;}};var _2ca={colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType"};dojo.hasAttr=function(node,name){var attr=d.byId(node).getAttributeNode(_2c8(name));return attr?attr.specified:false;};var _2ce={};var _ctr=0;var _2d0=dojo._scopeName+"attrid";dojo.attr=function(node,name,_2d3){var args=arguments.length;if(args==2&&!d.isString(name)){for(var x in name){d.attr(node,x,name[x]);}return;}node=d.byId(node);name=_2c8(name);if(args==3){if(d.isFunction(_2d3)){var _2d6=d.attr(node,_2d0);if(!_2d6){_2d6=_ctr++;d.attr(node,_2d0,_2d6);}if(!_2ce[_2d6]){_2ce[_2d6]={};}var h=_2ce[_2d6][name];if(h){d.disconnect(h);}else{try{delete node[name];}catch(e){}}_2ce[_2d6][name]=d.connect(node,name,_2d3);}else{if(typeof _2d3=="boolean"){node[name]=_2d3;}else{node.setAttribute(name,_2d3);}}return;}else{var prop=_2ca[name.toLowerCase()];if(prop){return node[prop];}else{var _2d3=node[name];return (typeof _2d3=="boolean"||typeof _2d3=="function")?_2d3:(d.hasAttr(node,name)?node.getAttribute(name):null);}}};dojo.removeAttr=function(node,name){d.byId(node).removeAttribute(_2c8(name));};})();dojo.hasClass=function(node,_2dc){return ((" "+dojo.byId(node).className+" ").indexOf(" "+_2dc+" ")>=0);};dojo.addClass=function(node,_2de){node=dojo.byId(node);var cls=node.className;if((" "+cls+" ").indexOf(" "+_2de+" ")<0){node.className=cls+(cls?" ":"")+_2de;}};dojo.removeClass=function(node,_2e1){node=dojo.byId(node);var t=dojo.trim((" "+node.className+" ").replace(" "+_2e1+" "," "));if(node.className!=t){node.className=t;}};dojo.toggleClass=function(node,_2e4,_2e5){if(_2e5===undefined){_2e5=!dojo.hasClass(node,_2e4);}dojo[_2e5?"addClass":"removeClass"](node,_2e4);};}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var tnl=function(arr){arr.constructor=dojo.NodeList;dojo._mixin(arr,dojo.NodeList.prototype);return arr;};var _2e9=function(func,_2eb){return function(){var _a=arguments;var aa=d._toArray(_a,0,[null]);var s=this.map(function(i){aa[0]=i;return d[func].apply(d,aa);});return (_2eb||((_a.length>1)||!d.isString(_a[0])))?this:s;};};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};dojo.NodeList._wrap=tnl;dojo.extend(dojo.NodeList,{slice:function(){var a=dojo._toArray(arguments);return tnl(a.slice.apply(this,a));},splice:function(){var a=dojo._toArray(arguments);return tnl(a.splice.apply(this,a));},concat:function(){var a=dojo._toArray(arguments,0,[this]);return tnl(a.concat.apply([],a));},indexOf:function(_2f3,_2f4){return d.indexOf(this,_2f3,_2f4);},lastIndexOf:function(){return d.lastIndexOf.apply(d,d._toArray(arguments,0,[this]));},every:function(_2f5,_2f6){return d.every(this,_2f5,_2f6);},some:function(_2f7,_2f8){return d.some(this,_2f7,_2f8);},map:function(func,obj){return d.map(this,func,obj,d.NodeList);},forEach:function(_2fb,_2fc){d.forEach(this,_2fb,_2fc);return this;},coords:function(){return d.map(this,d.coords);},attr:_2e9("attr"),style:_2e9("style"),addClass:_2e9("addClass",true),removeClass:_2e9("removeClass",true),toggleClass:_2e9("toggleClass",true),connect:_2e9("connect",true),place:function(_2fd,_2fe){var item=d.query(_2fd)[0];return this.forEach(function(i){d.place(i,item,(_2fe||"last"));});},orphan:function(_301){var _302=_301?d._filterQueryResult(this,_301):this;_302.forEach(function(item){if(item.parentNode){item.parentNode.removeChild(item);}});return _302;},adopt:function(_304,_305){var item=this[0];return d.query(_304).forEach(function(ai){d.place(ai,item,_305||"last");});},query:function(_308){if(!_308){return this;}var ret=d.NodeList();this.forEach(function(item){d.query(_308,item).forEach(function(_30b){if(_30b!==undefined){ret.push(_30b);}});});return ret;},filter:function(_30c){var _30d=this;var _a=arguments;var r=d.NodeList();var rp=function(t){if(t!==undefined){r.push(t);}};if(d.isString(_30c)){_30d=d._filterQueryResult(this,_a[0]);if(_a.length==1){return _30d;}_a.shift();}d.forEach(d.filter(_30d,_a[0],_a[1]),rp);return r;},addContent:function(_312,_313){var ta=d.doc.createElement("span");if(d.isString(_312)){ta.innerHTML=_312;}else{ta.appendChild(_312);}if(_313===undefined){_313="last";}var ct=(_313=="first"||_313=="after")?"lastChild":"firstChild";this.forEach(function(item){var tn=ta.cloneNode(true);while(tn[ct]){d.place(tn[ct],item,_313);}});return this;},empty:function(){return this.forEach("item.innerHTML='';");},instantiate:function(_318,_319){var c=d.isFunction(_318)?_318:d.getObject(_318);return this.forEach(function(i){new c(_319||{},i);});}});d.forEach(["blur","focus","click","keydown","keypress","keyup","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup"],function(evt){var _oe="on"+evt;dojo.NodeList.prototype[_oe]=function(a,b){return this.connect(_oe,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;dojo.provide("dojo._base.query");(function(){var d=dojo;var _321=dojo.isIE?"children":"childNodes";var _322=false;var _323=function(_324){if(">~+".indexOf(_324.charAt(_324.length-1))>=0){_324+=" *";}_324+=" ";var ts=function(s,e){return d.trim(_324.slice(s,e));};var _328=[];var _329=-1;var _32a=-1;var _32b=-1;var _32c=-1;var _32d=-1;var inId=-1;var _32f=-1;var lc="";var cc="";var _332;var x=0;var ql=_324.length;var _335=null;var _cp=null;var _337=function(){if(_32f>=0){var tv=(_32f==x)?null:ts(_32f,x).toLowerCase();_335[(">~+".indexOf(tv)<0)?"tag":"oper"]=tv;_32f=-1;}};var _339=function(){if(inId>=0){_335.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _33a=function(){if(_32d>=0){_335.classes.push(ts(_32d+1,x).replace(/\\/g,""));_32d=-1;}};var _33b=function(){_339();_337();_33a();};for(;lc=cc,cc=_324.charAt(x),x=0){if(cc=="]"){if(!_cp.attr){_cp.attr=ts(_329+1,x);}else{_cp.matchFor=ts((_32b||_329+1),x);}var cmf=_cp.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_cp.matchFor=cmf.substring(1,cmf.length-1);}}_335.attrs.push(_cp);_cp=null;_329=_32b=-1;}else{if(cc=="="){var _33d=("|~^$*".indexOf(lc)>=0)?lc:"";_cp.type=_33d+cc;_cp.attr=ts(_329+1,x-_33d.length);_32b=x+1;}}}else{if(_32a>=0){if(cc==")"){if(_32c>=0){_cp.value=ts(_32a+1,x);}_32c=_32a=-1;}}else{if(cc=="#"){_33b();inId=x+1;}else{if(cc=="."){_33b();_32d=x;}else{if(cc==":"){_33b();_32c=x;}else{if(cc=="["){_33b();_329=x;_cp={};}else{if(cc=="("){if(_32c>=0){_cp={name:ts(_32c+1,x),value:null};_335.pseudos.push(_cp);}_32a=x;}else{if(cc==" "&&lc!=cc){_33b();if(_32c>=0){_335.pseudos.push({name:ts(_32c+1,x)});}_335.hasLoops=(_335.pseudos.length||_335.attrs.length||_335.classes.length);_335.query=ts(_332,x);_335.tag=(_335["oper"])?null:(_335.tag||"*");_328.push(_335);_335=null;}}}}}}}}}return _328;};var _33e={"*=":function(attr,_340){return "[contains(@"+attr+", '"+_340+"')]";},"^=":function(attr,_342){return "[starts-with(@"+attr+", '"+_342+"')]";},"$=":function(attr,_344){return "[substring(@"+attr+", string-length(@"+attr+")-"+(_344.length-1)+")='"+_344+"']";},"~=":function(attr,_346){return "[contains(concat(' ',@"+attr+",' '), ' "+_346+" ')]";},"|=":function(attr,_348){return "[contains(concat(' ',@"+attr+",' '), ' "+_348+"-')]";},"=":function(attr,_34a){return "[@"+attr+"='"+_34a+"']";}};var _34b=function(_34c,_34d,_34e,_34f){d.forEach(_34d.attrs,function(attr){var _351;if(attr.type&&_34c[attr.type]){_351=_34c[attr.type](attr.attr,attr.matchFor);}else{if(attr.attr.length){_351=_34e(attr.attr);}}if(_351){_34f(_351);}});};var _352=function(_353){var _354=".";var _355=_323(d.trim(_353));while(_355.length){var tqp=_355.shift();var _357;var _358="";if(tqp.oper==">"){_357="/";tqp=_355.shift();}else{if(tqp.oper=="~"){_357="/following-sibling::";tqp=_355.shift();}else{if(tqp.oper=="+"){_357="/following-sibling::";_358="[position()=1]";tqp=_355.shift();}else{_357="//";}}}_354+=_357+tqp.tag+_358;if(tqp.id){_354+="[@id='"+tqp.id+"'][1]";}d.forEach(tqp.classes,function(cn){var cnl=cn.length;var _35b=" ";if(cn.charAt(cnl-1)=="*"){_35b="";cn=cn.substr(0,cnl-1);}_354+="[contains(concat(' ',@class,' '), ' "+cn+_35b+"')]";});_34b(_33e,tqp,function(_35c){return "[@"+_35c+"]";},function(_35d){_354+=_35d;});}return _354;};var _35e={};var _35f=function(path){if(_35e[path]){return _35e[path];}var doc=d.doc;var _362=_352(path);var tf=function(_364){var ret=[];var _366;try{_366=doc.evaluate(_362,_364,null,XPathResult.ANY_TYPE,null);}catch(e){console.debug("failure in exprssion:",_362,"under:",_364);console.debug(e);}var _367=_366.iterateNext();while(_367){ret.push(_367);_367=_366.iterateNext();}return ret;};return _35e[path]=tf;};var _368={};var _369={};var _36a=function(_36b,_36c){if(!_36b){return _36c;}if(!_36c){return _36b;}return function(){return _36b.apply(window,arguments)&&_36c.apply(window,arguments);};};var _36d=function(root){var ret=[];var te,x=0,tret=root[_321];while(te=tret[x++]){if(te.nodeType==1){ret.push(te);}}return ret;};var _373=function(root,_375){var ret=[];var te=root;while(te=te.nextSibling){if(te.nodeType==1){ret.push(te);if(_375){break;}}}return ret;};var _378=function(_379,_37a,_37b,idx){var nidx=idx+1;var _37e=(_37a.length==nidx);var tqp=_37a[idx];if(tqp.oper){var ecn=(tqp.oper==">")?_36d(_379):_373(_379,(tqp.oper=="+"));if(!ecn||!ecn.length){return;}nidx++;_37e=(_37a.length==nidx);var tf=_382(_37a[idx+1]);for(var x=0,ecnl=ecn.length,te;x=0);};},"^=":function(attr,_3a7){return function(elem){return (_39f(elem,attr).indexOf(_3a7)==0);};},"$=":function(attr,_3aa){var tval=" "+_3aa;return function(elem){var ea=" "+_39f(elem,attr);return (ea.lastIndexOf(_3aa)==(ea.length-_3aa.length));};},"~=":function(attr,_3af){var tval=" "+_3af+" ";return function(elem){var ea=" "+_39f(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_3b4){var _3b5=" "+_3b4+"-";return function(elem){var ea=" "+(elem.getAttribute(attr,2)||"");return ((ea==_3b4)||(ea.indexOf(_3b5)==0));};},"=":function(attr,_3b9){return function(elem){return (_39f(elem,attr)==_3b9);};}};var _3bb={"first-child":function(name,_3bd){return function(elem){if(elem.nodeType!=1){return false;}var fc=elem.previousSibling;while(fc&&(fc.nodeType!=1)){fc=fc.previousSibling;}return (!fc);};},"last-child":function(name,_3c1){return function(elem){if(elem.nodeType!=1){return false;}var nc=elem.nextSibling;while(nc&&(nc.nodeType!=1)){nc=nc.nextSibling;}return (!nc);};},"empty":function(name,_3c5){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt==1)||(nt==3)){return false;}}return true;};},"contains":function(name,_3cc){return function(elem){return (elem.innerHTML.indexOf(_3cc)>=0);};},"not":function(name,_3cf){var ntf=_382(_323(_3cf)[0]);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_3d3){var pi=parseInt;if(_3d3=="odd"){return function(elem){return (((_394(elem))%2)==1);};}else{if((_3d3=="2n")||(_3d3=="even")){return function(elem){return ((_394(elem)%2)==0);};}else{if(_3d3.indexOf("0n+")==0){var _3d7=pi(_3d3.substr(3));return function(elem){return (elem.parentNode[_321][_3d7-1]===elem);};}else{if((_3d3.indexOf("n+")>0)&&(_3d3.length>3)){var _3d9=_3d3.split("n+",2);var pred=pi(_3d9[0]);var idx=pi(_3d9[1]);return function(elem){return ((_394(elem)%pred)==idx);};}else{if(_3d3.indexOf("n")==-1){var _3d7=pi(_3d3);return function(elem){return (_394(elem)==_3d7);};}}}}}}};var _3de=(d.isIE)?function(cond){var clc=cond.toLowerCase();return function(elem){return elem[cond]||elem[clc];};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _393=function(_3e4){var _3e5=(_369[_3e4.query]||_368[_3e4.query]);if(_3e5){return _3e5;}var ff=null;if(_3e4.id){if(_3e4.tag!="*"){ff=_36a(ff,function(elem){return (elem.tagName.toLowerCase()==_3e4.tag);});}}d.forEach(_3e4.classes,function(_3e8,idx,arr){var _3eb=_3e8.charAt(_3e8.length-1)=="*";if(_3eb){_3e8=_3e8.substr(0,_3e8.length-1);}var re=new RegExp("(?:^|\\s)"+_3e8+(_3eb?".*":"")+"(?:\\s|$)");ff=_36a(ff,function(elem){return re.test(elem.className);});ff.count=idx;});d.forEach(_3e4.pseudos,function(_3ee){if(_3bb[_3ee.name]){ff=_36a(ff,_3bb[_3ee.name](_3ee.name,_3ee.value));}});_34b(_3a2,_3e4,_3de,function(_3ef){ff=_36a(ff,_3ef);});if(!ff){ff=function(){return true;};}return _369[_3e4.query]=ff;};var _3f0={};var _387=function(_3f1,root){var fHit=_3f0[_3f1.query];if(fHit){return fHit;}if(_3f1.id&&!_3f1.hasLoops&&!_3f1.tag){return _3f0[_3f1.query]=function(root){return [d.byId(_3f1.id)];};}var _3f5=_393(_3f1);var _3f6;if(_3f1.tag&&_3f1.id&&!_3f1.hasLoops){_3f6=function(root){var te=d.byId(_3f1.id);if(_3f5(te)){return [te];}};}else{var tret;if(!_3f1.hasLoops){_3f6=function(root){var ret=[];var te,x=0,tret=root.getElementsByTagName(_3f1.tag);while(te=tret[x++]){ret.push(te);}return ret;};}else{_3f6=function(root){var ret=[];var te,x=0,tret=root.getElementsByTagName(_3f1.tag);while(te=tret[x++]){if(_3f5(te)){ret.push(te);}}return ret;};}}return _3f0[_3f1.query]=_3f6;};var _402={};var _403={"*":d.isIE?function(root){return root.all;}:function(root){return root.getElementsByTagName("*");},"~":_373,"+":function(root){return _373(root,true);},">":_36d};var _407=function(_408){var _409=_323(d.trim(_408));if(_409.length==1){var tt=_387(_409[0]);tt.nozip=true;return tt;}var sqf=function(root){var _40d=_409.slice(0);var _40e;if(_40d[0].oper==">"){_40e=[root];}else{_40e=_387(_40d.shift())(root);}return _388(_40e,_40d);};return sqf;};var _40f=((document["evaluate"]&&!d.isSafari)?function(_410){var _411=_410.split(" ");if((document["evaluate"])&&(_410.indexOf(":")==-1)&&(_410.indexOf("+")==-1)){if(((_411.length>2)&&(_410.indexOf(">")==-1))||(_411.length>3)||(_410.indexOf("[")>=0)||((1==_411.length)&&(0<=_410.indexOf(".")))){return _35f(_410);}}return _407(_410);}:_407);var _412=function(_413){var qcz=_413.charAt(0);if(d.doc["querySelectorAll"]&&((!d.isSafari)||(d.isSafari>3.1))&&(">+~".indexOf(qcz)==-1)){return function(root){var r=root.querySelectorAll(_413);r.nozip=true;return r;};}if(_403[_413]){return _403[_413];}if(0>_413.indexOf(",")){return _403[_413]=_40f(_413);}else{var _417=_413.split(/\s*,\s*/);var tf=function(root){var _41a=0;var ret=[];var tp;while(tp=_417[_41a++]){ret=ret.concat(_40f(tp,tp.indexOf(" "))(root));}return ret;};return _403[_413]=tf;}};var _41d=0;var _zip=function(arr){if(arr&&arr.nozip){return d.NodeList._wrap(arr);}var ret=new d.NodeList();if(!arr){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_41d++;arr[0]["_zipIdx"]=_41d;for(var x=1,te;te=arr[x];x++){if(arr[x]["_zipIdx"]!=_41d){ret.push(te);}te["_zipIdx"]=_41d;}return ret;};d.query=function(_423,root){if(_423.constructor==d.NodeList){return _423;}if(!d.isString(_423)){return new d.NodeList(_423);}if(d.isString(root)){root=d.byId(root);}return _zip(_412(_423)(root||d.doc));};d.query.pseudos=_3bb;d._filterQueryResult=function(_425,_426){var tnl=new d.NodeList();var ff=(_426)?_382(_323(_426)[0]):function(){return true;};for(var x=0,te;te=_425[x];x++){if(ff(te)){tnl.push(te);}}return tnl;};})();}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _d=dojo;function setValue(obj,name,_42e){var val=obj[name];if(_d.isString(val)){obj[name]=[val,_42e];}else{if(_d.isArray(val)){val.push(_42e);}else{obj[name]=_42e;}}};dojo.formToObject=function(_430){var ret={};var iq="input:not([type=file]):not([type=submit]):not([type=image]):not([type=reset]):not([type=button]), select, textarea";_d.query(iq,_430).filter(function(node){return !node.disabled&&node.name;}).forEach(function(item){var _in=item.name;var type=(item.type||"").toLowerCase();if(type=="radio"||type=="checkbox"){if(item.checked){setValue(ret,_in,item.value);}}else{if(item.multiple){ret[_in]=[];_d.query("option",item).forEach(function(opt){if(opt.selected){setValue(ret,_in,opt.value);}});}else{setValue(ret,_in,item.value);if(type=="image"){ret[_in+".x"]=ret[_in+".y"]=ret[_in].x=ret[_in].y=0;}}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _43a=[];var _43b={};for(var name in map){var _43d=map[name];if(_43d!=_43b[name]){var _43e=enc(name)+"=";if(_d.isArray(_43d)){for(var i=0;i<_43d.length;i++){_43a.push(_43e+enc(_43d[i]));}}else{_43a.push(_43e+enc(_43d));}}}return _43a.join("&");};dojo.formToQuery=function(_440){return _d.objectToQuery(_d.formToObject(_440));};dojo.formToJson=function(_441,_442){return _d.toJson(_d.formToObject(_441),_442);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_d.forEach(qp,function(item){if(item.length){var _448=item.split("=");var name=dec(_448.shift());var val=dec(_448.join("="));if(_d.isString(ret[name])){ret[name]=[ret[name]];}if(_d.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;dojo._contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){if(!dojo.config.usePlainJson){console.warn("Consider using mimetype:text/json-comment-filtered"+" to avoid potential security issues with JSON endpoints"+" (use djConfig.usePlainJson=true to turn off this message)");}return _d.fromJson(xhr.responseText);},"json-comment-filtered":function(xhr){var _44e=xhr.responseText;var _44f=_44e.indexOf("/*");var _450=_44e.lastIndexOf("*/");if(_44f==-1||_450==-1){throw new Error("JSON was not comment filtered");}return _d.fromJson(_44e.substring(_44f+2,_450));},"javascript":function(xhr){return _d.eval(xhr.responseText);},"xml":function(xhr){var _453=xhr.responseXML;if(_d.isIE&&(!_453||window.location.protocol=="file:")){_d.forEach(["MSXML2","Microsoft","MSXML","MSXML3"],function(_454){try{var dom=new ActiveXObject(_454+".XMLDOM");dom.async=false;dom.loadXML(xhr.responseText);_453=dom;}catch(e){}});}return _453;}};dojo._contentHandlers["json-comment-optional"]=function(xhr){var _457=_d._contentHandlers;try{return _457["json-comment-filtered"](xhr);}catch(e){return _457["json"](xhr);}};dojo._ioSetArgs=function(args,_459,_45a,_45b){var _45c={args:args,url:args.url};var _45d=null;if(args.form){var form=_d.byId(args.form);var _45f=form.getAttributeNode("action");_45c.url=_45c.url||(_45f?_45f.value:null);_45d=_d.formToObject(form);}var _460=[{}];if(_45d){_460.push(_45d);}if(args.content){_460.push(args.content);}if(args.preventCache){_460.push({"dojo.preventCache":new Date().valueOf()});}_45c.query=_d.objectToQuery(_d.mixin.apply(null,_460));_45c.handleAs=args.handleAs||"text";var d=new _d.Deferred(_459);d.addCallbacks(_45a,function(_462){return _45b(_462,d);});var ld=args.load;if(ld&&_d.isFunction(ld)){d.addCallback(function(_464){return ld.call(args,_464,_45c);});}var err=args.error;if(err&&_d.isFunction(err)){d.addErrback(function(_466){return err.call(args,_466,_45c);});}var _467=args.handle;if(_467&&_d.isFunction(_467)){d.addBoth(function(_468){return _467.call(args,_468,_45c);});}d.ioArgs=_45c;return d;};var _469=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _at=typeof xhr.abort;if(_at=="function"||_at=="unknown"){xhr.abort();}var err=new Error("xhr cancelled");err.dojoType="cancel";return err;};var _46e=function(dfd){return _d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);};var _470=function(_471,dfd){console.debug(_471);return _471;};var _473=function(args){var dfd=_d._ioSetArgs(args,_469,_46e,_470);dfd.ioArgs.xhr=_d._xhrObj(dfd.ioArgs.args);return dfd;};var _476=null;var _477=[];var _478=function(){var now=(new Date()).getTime();if(!_d._blockAsync){for(var i=0,tif;i<_477.length&&(tif=_477[i]);i++){var dfd=tif.dfd;try{if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_477.splice(i--,1);}else{if(tif.ioCheck(dfd)){_477.splice(i--,1);tif.resHandle(dfd);}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)0){setTimeout(_p,de);return _t;}_p();return _t;},_play:function(_4ad){var _t=this;_t._startTime=new Date().valueOf();if(_t._paused){_t._startTime-=_t.duration*_t._percent;}_t._endTime=_t._startTime+_t.duration;_t._active=true;_t._paused=false;var _4af=_t.curve.getValue(_t._percent);if(!_t._percent){if(!_t._startRepeatCount){_t._startRepeatCount=_t.repeat;}_t._fire("onBegin",[_4af]);}_t._fire("onPlay",[_4af]);_t._cycle();return _t;},pause:function(){this._stopTimer();if(!this._active){return this;}this._paused=true;this._fire("onPause",[this.curve.getValue(this._percent)]);return this;},gotoPercent:function(_4b0,_4b1){this._stopTimer();this._active=this._paused=true;this._percent=_4b0;if(_4b1){this.play();}return this;},stop:function(_4b2){if(!this._timer){return this;}this._stopTimer();if(_4b2){this._percent=1;}this._fire("onStop",[this.curve.getValue(this._percent)]);this._active=this._paused=false;return this;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _t=this;if(_t._active){var curr=new Date().valueOf();var step=(curr-_t._startTime)/(_t._endTime-_t._startTime);if(step>=1){step=1;}_t._percent=step;if(_t.easing){step=_t.easing(step);}_t._fire("onAnimate",[_t.curve.getValue(step)]);if(_t._percent<1){_t._startTimer();}else{_t._active=false;if(_t.repeat>0){_t.repeat--;_t.play(null,true);}else{if(_t.repeat==-1){_t.play(null,true);}else{if(_t._startRepeatCount){_t.repeat=_t._startRepeatCount;_t._startRepeatCount=0;}}}_t._percent=0;_t._fire("onEnd");_t._stopTimer();}}return _t;}});var ctr=0;var _4b7=[];var _4b8={run:function(){}};var _4b9=null;dojo._Animation.prototype._startTimer=function(){if(!this._timer){this._timer=d.connect(_4b8,"run",this,"_cycle");ctr++;}if(!_4b9){_4b9=setInterval(d.hitch(_4b8,"run"),this.rate);}};dojo._Animation.prototype._stopTimer=function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_4b9);_4b9=null;ctr=0;}};var _4ba=(d.isIE)?function(node){var ns=node.style;if(!ns.zoom.length&&d.style(node,"zoom")=="normal"){ns.zoom="1";}if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _4be=d.mixin({properties:{}},args);var _4bf=(_4be.properties.opacity={});_4bf.start=!("start" in _4be)?function(){return Number(d.style(_4be.node,"opacity"));}:_4be.start;_4bf.end=_4be.end;var anim=d.animateProperty(_4be);d.connect(anim,"beforeBegin",d.partial(_4ba,_4be.node));return anim;};dojo.fadeIn=function(args){return d._fade(d.mixin({end:1},args));};dojo.fadeOut=function(args){return d._fade(d.mixin({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _4c4=function(_4c5){this._properties=_4c5;for(var p in _4c5){var prop=_4c5[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}this.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p];var _4cc=prop.start;if(_4cc instanceof d.Color){ret[p]=d.blendColors(_4cc,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_4cc)){ret[p]=((prop.end-_4cc)*r)+_4cc+(p!="opacity"?prop.units||"px":"");}}}return ret;};};dojo.animateProperty=function(args){args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d._Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];prop=pm[p]=d.mixin({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start();}if(d.isFunction(prop.end)){prop.end=prop.end();}var _4d2=(p.toLowerCase().indexOf("color")>=0);function getStyle(node,p){var v=({height:node.offsetHeight,width:node.offsetWidth})[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?Number(v):(_4d2?v:parseFloat(v));};if(!("end" in prop)){prop.end=getStyle(this.node,p);}else{if(!("start" in prop)){prop.start=getStyle(this.node,p);}}if(_4d2){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?Number(prop.start):parseFloat(prop.start);}}this.curve=new _4c4(pm);});d.connect(anim,"onAnimate",anim,function(_4d6){for(var s in _4d6){d.style(this.node,s,_4d6[s]);}});return anim;};dojo.anim=function(node,_4d9,_4da,_4db,_4dc,_4dd){return d.animateProperty({node:node,duration:_4da||d._Animation.prototype.duration,properties:_4d9,easing:_4db,onEnd:_4dc}).play(_4dd||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");if(dojo.config.require){dojo.forEach(dojo.config.require,"dojo['require'](item);");}}if(!dojo._hasResource["dojo.i18n"]){dojo._hasResource["dojo.i18n"]=true;dojo.provide("dojo.i18n");dojo.i18n.getLocalization=function(_4de,_4df,_4e0){_4e0=dojo.i18n.normalizeLocale(_4e0);var _4e1=_4e0.split("-");var _4e2=[_4de,"nls",_4df].join(".");var _4e3=dojo._loadedModules[_4e2];if(_4e3){var _4e4;for(var i=_4e1.length;i>0;i--){var loc=_4e1.slice(0,i).join("_");if(_4e3[loc]){_4e4=_4e3[loc];break;}}if(!_4e4){_4e4=_4e3.ROOT;}if(_4e4){var _4e7=function(){};_4e7.prototype=_4e4;return new _4e7();}}throw new Error("Bundle not found: "+_4df+" in "+_4de+" , locale="+_4e0);};dojo.i18n.normalizeLocale=function(_4e8){var _4e9=_4e8?_4e8.toLowerCase():dojo.locale;if(_4e9=="root"){_4e9="ROOT";}return _4e9;};dojo.i18n._requireLocalization=function(_4ea,_4eb,_4ec,_4ed){var _4ee=dojo.i18n.normalizeLocale(_4ec);var _4ef=[_4ea,"nls",_4eb].join(".");var _4f0="";if(_4ed){var _4f1=_4ed.split(",");for(var i=0;i<_4f1.length;i++){if(_4ee.indexOf(_4f1[i])==0){if(_4f1[i].length>_4f0.length){_4f0=_4f1[i];}}}if(!_4f0){_4f0="ROOT";}}var _4f3=_4ed?_4f0:_4ee;var _4f4=dojo._loadedModules[_4ef];var _4f5=null;if(_4f4){if(dojo.config.localizationComplete&&_4f4._built){return;}var _4f6=_4f3.replace(/-/g,"_");var _4f7=_4ef+"."+_4f6;_4f5=dojo._loadedModules[_4f7];}if(!_4f5){_4f4=dojo["provide"](_4ef);var syms=dojo._getModuleSymbols(_4ea);var _4f9=syms.concat("nls").join("/");var _4fa;dojo.i18n._searchLocalePath(_4f3,_4ed,function(loc){var _4fc=loc.replace(/-/g,"_");var _4fd=_4ef+"."+_4fc;var _4fe=false;if(!dojo._loadedModules[_4fd]){dojo["provide"](_4fd);var _4ff=[_4f9];if(loc!="ROOT"){_4ff.push(loc);}_4ff.push(_4eb);var _500=_4ff.join("/")+".js";_4fe=dojo._loadPath(_500,null,function(hash){var _502=function(){};_502.prototype=_4fa;_4f4[_4fc]=new _502();for(var j in hash){_4f4[_4fc][j]=hash[j];}});}else{_4fe=true;}if(_4fe&&_4f4[_4fc]){_4fa=_4f4[_4fc];}else{_4f4[_4fc]=_4fa;}if(_4ed){return true;}});}if(_4ed&&_4ee!=_4f0){_4f4[_4ee.replace(/-/g,"_")]=_4f4[_4f0.replace(/-/g,"_")];}};(function(){var _504=dojo.config.extraLocale;if(_504){if(!_504 instanceof Array){_504=[_504];}var req=dojo.i18n._requireLocalization;dojo.i18n._requireLocalization=function(m,b,_508,_509){req(m,b,_508,_509);if(_508){return;}for(var i=0;i<_504.length;i++){req(m,b,_504[i],_509);}};}})();dojo.i18n._searchLocalePath=function(_50b,down,_50d){_50b=dojo.i18n.normalizeLocale(_50b);var _50e=_50b.split("-");var _50f=[];for(var i=_50e.length;i>0;i--){_50f.push(_50e.slice(0,i).join("-"));}_50f.push(false);if(down){_50f.reverse();}for(var j=_50f.length-1;j>=0;j--){var loc=_50f[j]||"ROOT";var stop=_50d(loc);if(stop){break;}}};dojo.i18n._preloadLocalizations=function(_514,_515){function preload(_516){_516=dojo.i18n.normalizeLocale(_516);dojo.i18n._searchLocalePath(_516,true,function(loc){for(var i=0;i<_515.length;i++){if(_515[i]==loc){dojo["require"](_514+"_"+loc);return true;}}return false;});};preload();var _519=dojo.config.extraLocale||[];for(var i=0;i<_519.length;i++){preload(_519[i]);}};}if(!dojo._hasResource["dijit._base.focus"]){dojo._hasResource["dijit._base.focus"]=true;dojo.provide("dijit._base.focus");dojo.mixin(dijit,{_curFocus:null,_prevFocus:null,isCollapsed:function(){var _51b=dojo.global;var _51c=dojo.doc;if(_51c.selection){return !_51c.selection.createRange().text;}else{var _51d=_51b.getSelection();if(dojo.isString(_51d)){return !_51d;}else{return _51d.isCollapsed||!_51d.toString();}}},getBookmark:function(){var _51e,_51f=dojo.doc.selection;if(_51f){var _520=_51f.createRange();if(_51f.type.toUpperCase()=="CONTROL"){if(_520.length){_51e=[];var i=0,len=_520.length;while(i=_53c;i--){var _53e=dijit.byId(_53b[i]);if(_53e){_53e._focused=false;_53e._hasBeenBlurred=true;if(_53e._onBlur){_53e._onBlur();}if(_53e._setStateClass){_53e._setStateClass();}dojo.publish("widgetBlur",[_53e]);}}for(i=_53c;i<_53a.length;i++){_53e=dijit.byId(_53a[i]);if(_53e){_53e._focused=true;if(_53e._onFocus){_53e._onFocus();}if(_53e._setStateClass){_53e._setStateClass();}dojo.publish("widgetFocus",[_53e]);}}}});dojo.addOnLoad(dijit.registerWin);}if(!dojo._hasResource["dijit._base.manager"]){dojo._hasResource["dijit._base.manager"]=true;dojo.provide("dijit._base.manager");dojo.declare("dijit.WidgetSet",null,{constructor:function(){this._hash={};},add:function(_53f){if(this._hash[_53f.id]){throw new Error("Tried to register widget with id=="+_53f.id+" but that id is already registered");}this._hash[_53f.id]=_53f;},remove:function(id){delete this._hash[id];},forEach:function(func){for(var id in this._hash){func(this._hash[id]);}},filter:function(_543){var res=new dijit.WidgetSet();this.forEach(function(_545){if(_543(_545)){res.add(_545);}});return res;},byId:function(id){return this._hash[id];},byClass:function(cls){return this.filter(function(_548){return _548.declaredClass==cls;});}});dijit.registry=new dijit.WidgetSet();dijit._widgetTypeCtr={};dijit.getUniqueId=function(_549){var id;do{id=_549+"_"+(_549 in dijit._widgetTypeCtr?++dijit._widgetTypeCtr[_549]:dijit._widgetTypeCtr[_549]=0);}while(dijit.byId(id));return id;};if(dojo.isIE){dojo.addOnUnload(function(){dijit.registry.forEach(function(_54b){_54b.destroy();});});}dijit.byId=function(id){return (dojo.isString(id))?dijit.registry.byId(id):id;};dijit.byNode=function(node){return dijit.registry.byId(node.getAttribute("widgetId"));};dijit.getEnclosingWidget=function(node){while(node){if(node.getAttribute&&node.getAttribute("widgetId")){return dijit.registry.byId(node.getAttribute("widgetId"));}node=node.parentNode;}return null;};dijit._tabElements={area:true,button:true,input:true,object:true,select:true,textarea:true};dijit._isElementShown=function(elem){var _550=dojo.style(elem);return (_550.visibility!="hidden")&&(_550.visibility!="collapsed")&&(_550.display!="none");};dijit.isTabNavigable=function(elem){if(dojo.hasAttr(elem,"disabled")){return false;}var _552=dojo.hasAttr(elem,"tabindex");var _553=dojo.attr(elem,"tabindex");if(_552&&_553>=0){return true;}var name=elem.nodeName.toLowerCase();if(((name=="a"&&dojo.hasAttr(elem,"href"))||dijit._tabElements[name])&&(!_552||_553>=0)){return true;}return false;};dijit._getTabNavigable=function(root){var _556,last,_558,_559,_55a,_55b;var _55c=function(_55d){dojo.query("> *",_55d).forEach(function(_55e){var _55f=dijit._isElementShown(_55e);if(_55f&&dijit.isTabNavigable(_55e)){var _560=dojo.attr(_55e,"tabindex");if(!dojo.hasAttr(_55e,"tabindex")||_560==0){if(!_556){_556=_55e;}last=_55e;}else{if(_560>0){if(!_558||_560<_559){_559=_560;_558=_55e;}if(!_55a||_560>=_55b){_55b=_560;_55a=_55e;}}}}if(_55f){_55c(_55e);}});};if(dijit._isElementShown(root)){_55c(root);}return {first:_556,last:last,lowest:_558,highest:_55a};};dijit.getFirstInTabbingOrder=function(root){var _562=dijit._getTabNavigable(dojo.byId(root));return _562.lowest?_562.lowest:_562.first;};dijit.getLastInTabbingOrder=function(root){var _564=dijit._getTabNavigable(dojo.byId(root));return _564.last?_564.last:_564.highest;};}if(!dojo._hasResource["dijit._base.place"]){dojo._hasResource["dijit._base.place"]=true;dojo.provide("dijit._base.place");dijit.getViewport=function(){var _565=dojo.global;var _566=dojo.doc;var w=0,h=0;var de=_566.documentElement;var dew=de.clientWidth,deh=de.clientHeight;if(dojo.isMozilla){var minw,minh,maxw,maxh;var dbw=_566.body.clientWidth;if(dbw>dew){minw=dew;maxw=dbw;}else{maxw=dew;minw=dbw;}var dbh=_566.body.clientHeight;if(dbh>deh){minh=deh;maxh=dbh;}else{maxh=deh;minh=dbh;}w=(maxw>_565.innerWidth)?minw:maxw;h=(maxh>_565.innerHeight)?minh:maxh;}else{if(!dojo.isOpera&&_565.innerWidth){w=_565.innerWidth;h=_565.innerHeight;}else{if(dojo.isIE&&de&&deh){w=dew;h=deh;}else{if(dojo.body().clientWidth){w=dojo.body().clientWidth;h=dojo.body().clientHeight;}}}}var _572=dojo._docScroll();return {w:w,h:h,l:_572.x,t:_572.y};};dijit.placeOnScreen=function(node,pos,_575,_576){var _577=dojo.map(_575,function(_578){return {corner:_578,pos:pos};});return dijit._place(node,_577);};dijit._place=function(node,_57a,_57b){var view=dijit.getViewport();if(!node.parentNode||String(node.parentNode.tagName).toLowerCase()!="body"){dojo.body().appendChild(node);}var best=null;dojo.some(_57a,function(_57e){var _57f=_57e.corner;var pos=_57e.pos;if(_57b){_57b(node,_57e.aroundCorner,_57f);}var _581=node.style;var _582=_581.display;var _583=_581.visibility;_581.visibility="hidden";_581.display="";var mb=dojo.marginBox(node);_581.display=_582;_581.visibility=_583;var _585=(_57f.charAt(1)=="L"?pos.x:Math.max(view.l,pos.x-mb.w)),_586=(_57f.charAt(0)=="T"?pos.y:Math.max(view.t,pos.y-mb.h)),endX=(_57f.charAt(1)=="L"?Math.min(view.l+view.w,_585+mb.w):pos.x),endY=(_57f.charAt(0)=="T"?Math.min(view.t+view.h,_586+mb.h):pos.y),_589=endX-_585,_58a=endY-_586,_58b=(mb.w-_589)+(mb.h-_58a);if(best==null||_58b0&&_59b[pi].parent===_59b[pi-1].widget;pi--){}return _59b[pi];};_5a9.push(dojo.connect(_5a5,"onkeypress",this,function(evt){if(evt.keyCode==dojo.keys.ESCAPE&&args.onCancel){dojo.stopEvent(evt);args.onCancel();}else{if(evt.keyCode==dojo.keys.TAB){dojo.stopEvent(evt);var _5ad=_5aa();if(_5ad&&_5ad.onCancel){_5ad.onCancel();}}}}));if(_5a1.onCancel){_5a9.push(dojo.connect(_5a1,"onCancel",null,args.onCancel));}_5a9.push(dojo.connect(_5a1,_5a1.onExecute?"onExecute":"onChange",null,function(){var _5ae=_5aa();if(_5ae&&_5ae.onExecute){_5ae.onExecute();}}));_59b.push({wrapper:_5a5,iframe:_5a7,widget:_5a1,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_5a9});if(_5a1.onOpen){_5a1.onOpen(best);}return best;};this.close=function(_5af){while(dojo.some(_59b,function(elem){return elem.widget==_5af;})){var top=_59b.pop(),_5b2=top.wrapper,_5b3=top.iframe,_5b4=top.widget,_5b5=top.onClose;if(_5b4.onClose){_5b4.onClose();}dojo.forEach(top.handlers,dojo.disconnect);if(!_5b4||!_5b4.domNode){return;}this.prepare(_5b4.domNode);_5b3.destroy();dojo._destroyElement(_5b2);if(_5b5){_5b5();}}};}();dijit._frames=new function(){var _5b6=[];this.pop=function(){var _5b7;if(_5b6.length){_5b7=_5b6.pop();_5b7.style.display="";}else{if(dojo.isIE){var html="